Imported Upstream version 4.2.2
authorHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 02:24:00 +0000 (11:24 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 02:24:35 +0000 (11:24 +0900)
Change-Id: I6802d573ab74c0c112f26ff9c67875d38ba00251
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
456 files changed:
CHANGES.txt
MANIFEST.in
PKG-INFO
README.rst
doc/FAQ.txt
doc/build.txt
doc/html/FAQ.html
doc/html/api.html
doc/html/api/abc.ABCMeta-class.html
doc/html/api/class-tree.html
doc/html/api/cssselect.parser.SelectorError-class.html
doc/html/api/cssselect.parser.SelectorSyntaxError-class.html
doc/html/api/cssselect.xpath.ExpressionError-class.html
doc/html/api/cssselect.xpath.XPathExpr-class.html
doc/html/api/deprecated-index.html
doc/html/api/exceptions.AssertionError-class.html
doc/html/api/help.html
doc/html/api/identifier-index-A.html
doc/html/api/identifier-index-B.html
doc/html/api/identifier-index-C.html
doc/html/api/identifier-index-D.html
doc/html/api/identifier-index-E.html
doc/html/api/identifier-index-F.html
doc/html/api/identifier-index-G.html
doc/html/api/identifier-index-H.html
doc/html/api/identifier-index-I.html
doc/html/api/identifier-index-J.html
doc/html/api/identifier-index-K.html
doc/html/api/identifier-index-L.html
doc/html/api/identifier-index-M.html
doc/html/api/identifier-index-N.html
doc/html/api/identifier-index-O.html
doc/html/api/identifier-index-P.html
doc/html/api/identifier-index-Q.html
doc/html/api/identifier-index-R.html
doc/html/api/identifier-index-S.html
doc/html/api/identifier-index-T.html
doc/html/api/identifier-index-U.html
doc/html/api/identifier-index-V.html
doc/html/api/identifier-index-W.html
doc/html/api/identifier-index-X.html
doc/html/api/identifier-index-Y.html
doc/html/api/identifier-index-Z.html
doc/html/api/identifier-index-_.html
doc/html/api/identifier-index.html
doc/html/api/lxml-module.html
doc/html/api/lxml-pysrc.html
doc/html/api/lxml.ElementInclude-module.html
doc/html/api/lxml.ElementInclude-pysrc.html
doc/html/api/lxml.ElementInclude.FatalIncludeError-class.html
doc/html/api/lxml.builder-module.html
doc/html/api/lxml.builder-pysrc.html
doc/html/api/lxml.builder.ElementMaker-class.html
doc/html/api/lxml.cssselect-module.html
doc/html/api/lxml.cssselect-pysrc.html
doc/html/api/lxml.cssselect.CSSSelector-class.html
doc/html/api/lxml.cssselect.LxmlHTMLTranslator-class.html
doc/html/api/lxml.cssselect.LxmlTranslator-class.html
doc/html/api/lxml.doctestcompare-module.html
doc/html/api/lxml.doctestcompare-pysrc.html
doc/html/api/lxml.doctestcompare.LHTMLOutputChecker-class.html
doc/html/api/lxml.doctestcompare.LXMLOutputChecker-class.html
doc/html/api/lxml.doctestcompare._RestoreChecker-class.html
doc/html/api/lxml.etree-module.html
doc/html/api/lxml.etree.AncestorsIterator-class.html
doc/html/api/lxml.etree.AttributeBasedElementClassLookup-class.html
doc/html/api/lxml.etree.C14NError-class.html
doc/html/api/lxml.etree.CDATA-class.html
doc/html/api/lxml.etree.CommentBase-class.html
doc/html/api/lxml.etree.CustomElementClassLookup-class.html
doc/html/api/lxml.etree.DTD-class.html
doc/html/api/lxml.etree.DTDError-class.html
doc/html/api/lxml.etree.DTDParseError-class.html
doc/html/api/lxml.etree.DTDValidateError-class.html
doc/html/api/lxml.etree.DocInfo-class.html
doc/html/api/lxml.etree.DocumentInvalid-class.html
doc/html/api/lxml.etree.ETCompatXMLParser-class.html
doc/html/api/lxml.etree.ETXPath-class.html
doc/html/api/lxml.etree.ElementBase-class.html
doc/html/api/lxml.etree.ElementChildIterator-class.html
doc/html/api/lxml.etree.ElementClassLookup-class.html
doc/html/api/lxml.etree.ElementDefaultClassLookup-class.html
doc/html/api/lxml.etree.ElementDepthFirstIterator-class.html
doc/html/api/lxml.etree.ElementNamespaceClassLookup-class.html
doc/html/api/lxml.etree.ElementTextIterator-class.html
doc/html/api/lxml.etree.EntityBase-class.html
doc/html/api/lxml.etree.Error-class.html
doc/html/api/lxml.etree.ErrorDomains-class.html
doc/html/api/lxml.etree.ErrorLevels-class.html
doc/html/api/lxml.etree.ErrorTypes-class.html
doc/html/api/lxml.etree.FallbackElementClassLookup-class.html
doc/html/api/lxml.etree.HTMLParser-class.html
doc/html/api/lxml.etree.HTMLPullParser-class.html
doc/html/api/lxml.etree.LxmlError-class.html
doc/html/api/lxml.etree.LxmlRegistryError-class.html
doc/html/api/lxml.etree.LxmlSyntaxError-class.html
doc/html/api/lxml.etree.NamespaceRegistryError-class.html
doc/html/api/lxml.etree.PIBase-class.html
doc/html/api/lxml.etree.ParseError-class.html
doc/html/api/lxml.etree.ParserBasedElementClassLookup-class.html
doc/html/api/lxml.etree.ParserError-class.html
doc/html/api/lxml.etree.PyErrorLog-class.html
doc/html/api/lxml.etree.PythonElementClassLookup-class.html
doc/html/api/lxml.etree.QName-class.html
doc/html/api/lxml.etree.RelaxNG-class.html
doc/html/api/lxml.etree.RelaxNGError-class.html
doc/html/api/lxml.etree.RelaxNGErrorTypes-class.html
doc/html/api/lxml.etree.RelaxNGParseError-class.html
doc/html/api/lxml.etree.RelaxNGValidateError-class.html
doc/html/api/lxml.etree.Resolver-class.html
doc/html/api/lxml.etree.Schematron-class.html
doc/html/api/lxml.etree.SchematronError-class.html
doc/html/api/lxml.etree.SchematronParseError-class.html
doc/html/api/lxml.etree.SchematronValidateError-class.html
doc/html/api/lxml.etree.SerialisationError-class.html
doc/html/api/lxml.etree.SiblingsIterator-class.html
doc/html/api/lxml.etree.TreeBuilder-class.html
doc/html/api/lxml.etree.XInclude-class.html
doc/html/api/lxml.etree.XIncludeError-class.html
doc/html/api/lxml.etree.XMLParser-class.html
doc/html/api/lxml.etree.XMLPullParser-class.html
doc/html/api/lxml.etree.XMLSchema-class.html
doc/html/api/lxml.etree.XMLSchemaError-class.html
doc/html/api/lxml.etree.XMLSchemaParseError-class.html
doc/html/api/lxml.etree.XMLSchemaValidateError-class.html
doc/html/api/lxml.etree.XMLSyntaxError-class.html
doc/html/api/lxml.etree.XPath-class.html
doc/html/api/lxml.etree.XPathDocumentEvaluator-class.html
doc/html/api/lxml.etree.XPathElementEvaluator-class.html
doc/html/api/lxml.etree.XPathError-class.html
doc/html/api/lxml.etree.XPathEvalError-class.html
doc/html/api/lxml.etree.XPathFunctionError-class.html
doc/html/api/lxml.etree.XPathResultError-class.html
doc/html/api/lxml.etree.XPathSyntaxError-class.html
doc/html/api/lxml.etree.XSLT-class.html
doc/html/api/lxml.etree.XSLTAccessControl-class.html
doc/html/api/lxml.etree.XSLTApplyError-class.html
doc/html/api/lxml.etree.XSLTError-class.html
doc/html/api/lxml.etree.XSLTExtension-class.html
doc/html/api/lxml.etree.XSLTExtensionError-class.html
doc/html/api/lxml.etree.XSLTParseError-class.html
doc/html/api/lxml.etree.XSLTSaveError-class.html
doc/html/api/lxml.etree._Attrib-class.html
doc/html/api/lxml.etree._BaseErrorLog-class.html
doc/html/api/lxml.etree._Comment-class.html
doc/html/api/lxml.etree._Document-class.html
doc/html/api/lxml.etree._DomainErrorLog-class.html
doc/html/api/lxml.etree._Element-class.html
doc/html/api/lxml.etree._ElementIterator-class.html
doc/html/api/lxml.etree._ElementMatchIterator-class.html
doc/html/api/lxml.etree._ElementStringResult-class.html
doc/html/api/lxml.etree._ElementTagMatcher-class.html
doc/html/api/lxml.etree._ElementTree-class.html
doc/html/api/lxml.etree._ElementUnicodeResult-class.html
doc/html/api/lxml.etree._Entity-class.html
doc/html/api/lxml.etree._ErrorLog-class.html
doc/html/api/lxml.etree._FeedParser-class.html
doc/html/api/lxml.etree._IDDict-class.html
doc/html/api/lxml.etree._ListErrorLog-class.html
doc/html/api/lxml.etree._LogEntry-class.html
doc/html/api/lxml.etree._ProcessingInstruction-class.html
doc/html/api/lxml.etree._RotatingErrorLog-class.html
doc/html/api/lxml.etree._SaxParserTarget-class.html
doc/html/api/lxml.etree._TargetParserResult-class.html
doc/html/api/lxml.etree._Validator-class.html
doc/html/api/lxml.etree._XPathEvaluatorBase-class.html
doc/html/api/lxml.etree._XSLTProcessingInstruction-class.html
doc/html/api/lxml.etree._XSLTResultTree-class.html
doc/html/api/lxml.etree.htmlfile-class.html
doc/html/api/lxml.etree.iterparse-class.html
doc/html/api/lxml.etree.iterwalk-class.html
doc/html/api/lxml.etree.xmlfile-class.html
doc/html/api/lxml.html-module.html
doc/html/api/lxml.html-pysrc.html
doc/html/api/lxml.html.CheckboxGroup-class.html
doc/html/api/lxml.html.CheckboxValues-class.html
doc/html/api/lxml.html.Classes-class.html
doc/html/api/lxml.html.ElementSoup-module.html
doc/html/api/lxml.html.ElementSoup-pysrc.html
doc/html/api/lxml.html.FieldsDict-class.html
doc/html/api/lxml.html.FormElement-class.html
doc/html/api/lxml.html.HTMLParser-class.html
doc/html/api/lxml.html.HtmlComment-class.html
doc/html/api/lxml.html.HtmlElement-class.html
doc/html/api/lxml.html.HtmlElementClassLookup-class.html
doc/html/api/lxml.html.HtmlEntity-class.html
doc/html/api/lxml.html.HtmlMixin-class.html
doc/html/api/lxml.html.HtmlProcessingInstruction-class.html
doc/html/api/lxml.html.InputElement-class.html
doc/html/api/lxml.html.InputGetter-class.html
doc/html/api/lxml.html.InputMixin-class.html
doc/html/api/lxml.html.LabelElement-class.html
doc/html/api/lxml.html.MultipleSelectOptions-class.html
doc/html/api/lxml.html.RadioGroup-class.html
doc/html/api/lxml.html.SelectElement-class.html
doc/html/api/lxml.html.TextareaElement-class.html
doc/html/api/lxml.html.XHTMLParser-class.html
doc/html/api/lxml.html._MethodFunc-class.html
doc/html/api/lxml.html.builder-module.html
doc/html/api/lxml.html.builder-pysrc.html
doc/html/api/lxml.html.clean-module.html
doc/html/api/lxml.html.clean-pysrc.html
doc/html/api/lxml.html.clean.Cleaner-class.html
doc/html/api/lxml.html.defs-module.html
doc/html/api/lxml.html.defs-pysrc.html
doc/html/api/lxml.html.diff-module.html
doc/html/api/lxml.html.diff-pysrc.html
doc/html/api/lxml.html.diff.DEL_END-class.html
doc/html/api/lxml.html.diff.DEL_START-class.html
doc/html/api/lxml.html.diff.InsensitiveSequenceMatcher-class.html
doc/html/api/lxml.html.diff.NoDeletes-class.html
doc/html/api/lxml.html.diff.href_token-class.html
doc/html/api/lxml.html.diff.tag_token-class.html
doc/html/api/lxml.html.diff.token-class.html
doc/html/api/lxml.html.formfill-module.html
doc/html/api/lxml.html.formfill-pysrc.html
doc/html/api/lxml.html.formfill.DefaultErrorCreator-class.html
doc/html/api/lxml.html.formfill.FormNotFound-class.html
doc/html/api/lxml.html.html5parser-module.html
doc/html/api/lxml.html.html5parser-pysrc.html
doc/html/api/lxml.html.html5parser.HTMLParser-class.html
doc/html/api/lxml.html.html5parser.XHTMLParser-class.html
doc/html/api/lxml.html.soupparser-module.html
doc/html/api/lxml.html.soupparser-pysrc.html
doc/html/api/lxml.html.soupparser._PseudoTag-class.html
doc/html/api/lxml.html.usedoctest-module.html
doc/html/api/lxml.html.usedoctest-pysrc.html
doc/html/api/lxml.includes-module.html
doc/html/api/lxml.includes-pysrc.html
doc/html/api/lxml.isoschematron-module.html
doc/html/api/lxml.isoschematron-pysrc.html
doc/html/api/lxml.isoschematron.Schematron-class.html
doc/html/api/lxml.objectify-module.html
doc/html/api/lxml.objectify.BoolElement-class.html
doc/html/api/lxml.objectify.ElementMaker-class.html
doc/html/api/lxml.objectify.FloatElement-class.html
doc/html/api/lxml.objectify.IntElement-class.html
doc/html/api/lxml.objectify.LongElement-class.html
doc/html/api/lxml.objectify.NoneElement-class.html
doc/html/api/lxml.objectify.NumberElement-class.html
doc/html/api/lxml.objectify.ObjectPath-class.html
doc/html/api/lxml.objectify.ObjectifiedDataElement-class.html
doc/html/api/lxml.objectify.ObjectifiedElement-class.html
doc/html/api/lxml.objectify.ObjectifyElementClassLookup-class.html
doc/html/api/lxml.objectify.PyType-class.html
doc/html/api/lxml.objectify.StringElement-class.html
doc/html/api/lxml.pyclasslookup-module.html
doc/html/api/lxml.pyclasslookup-pysrc.html
doc/html/api/lxml.sax-module.html
doc/html/api/lxml.sax-pysrc.html
doc/html/api/lxml.sax.ElementTreeContentHandler-class.html
doc/html/api/lxml.sax.ElementTreeProducer-class.html
doc/html/api/lxml.sax.SaxError-class.html
doc/html/api/lxml.tests-module.html
doc/html/api/lxml.tests-pysrc.html
doc/html/api/lxml.tests.common_imports-module.html
doc/html/api/lxml.tests.common_imports-pysrc.html
doc/html/api/lxml.tests.common_imports.HelperTestCase-class.html
doc/html/api/lxml.tests.common_imports.LargeFileLike-class.html
doc/html/api/lxml.tests.common_imports.LargeFileLikeUnicode-class.html
doc/html/api/lxml.tests.common_imports.SillyFileLike-class.html
doc/html/api/lxml.tests.common_imports.skipif-class.html
doc/html/api/lxml.tests.dummy_http_server-module.html
doc/html/api/lxml.tests.dummy_http_server-pysrc.html
doc/html/api/lxml.tests.dummy_http_server.HTTPRequestCollector-class.html
doc/html/api/lxml.tests.dummy_http_server.WebServer-class.html
doc/html/api/lxml.tests.dummy_http_server._RequestHandler-class.html
doc/html/api/lxml.tests.selftest-module.html
doc/html/api/lxml.tests.selftest-pysrc.html
doc/html/api/lxml.tests.selftest2-module.html
doc/html/api/lxml.tests.selftest2-pysrc.html
doc/html/api/lxml.tests.test_builder-module.html
doc/html/api/lxml.tests.test_builder-pysrc.html
doc/html/api/lxml.tests.test_builder.BuilderTestCase-class.html
doc/html/api/lxml.tests.test_classlookup-module.html
doc/html/api/lxml.tests.test_classlookup-pysrc.html
doc/html/api/lxml.tests.test_classlookup.ClassLookupTestCase-class.html
doc/html/api/lxml.tests.test_classlookup.ProxyTestCase-class.html
doc/html/api/lxml.tests.test_css-module.html
doc/html/api/lxml.tests.test_css-pysrc.html
doc/html/api/lxml.tests.test_css.CSSTestCase-class.html
doc/html/api/lxml.tests.test_doctestcompare-module.html
doc/html/api/lxml.tests.test_doctestcompare-pysrc.html
doc/html/api/lxml.tests.test_doctestcompare.DoctestCompareTest-class.html
doc/html/api/lxml.tests.test_doctestcompare.DummyInput-class.html
doc/html/api/lxml.tests.test_dtd-module.html
doc/html/api/lxml.tests.test_dtd-pysrc.html
doc/html/api/lxml.tests.test_dtd.ETreeDtdTestCase-class.html
doc/html/api/lxml.tests.test_elementpath-module.html
doc/html/api/lxml.tests.test_elementpath-pysrc.html
doc/html/api/lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html
doc/html/api/lxml.tests.test_elementtree-module.html
doc/html/api/lxml.tests.test_elementtree-pysrc.html
doc/html/api/lxml.tests.test_elementtree.CElementTreeTestCase-class.html
doc/html/api/lxml.tests.test_elementtree.ETreePullTestCase-class.html
doc/html/api/lxml.tests.test_elementtree.ETreeTestCase-class.html
doc/html/api/lxml.tests.test_elementtree.ElementTreeTestCase-class.html
doc/html/api/lxml.tests.test_elementtree._ETreeTestCaseBase-class.html
doc/html/api/lxml.tests.test_elementtree._XMLPullParserTest-class.html
doc/html/api/lxml.tests.test_errors-module.html
doc/html/api/lxml.tests.test_errors-pysrc.html
doc/html/api/lxml.tests.test_errors.ErrorTestCase-class.html
doc/html/api/lxml.tests.test_etree-module.html
doc/html/api/lxml.tests.test_etree-pysrc.html
doc/html/api/lxml.tests.test_etree.ETreeC14NTestCase-class.html
doc/html/api/lxml.tests.test_etree.ETreeErrorLogTest-class.html
doc/html/api/lxml.tests.test_etree.ETreeOnlyTestCase-class.html
doc/html/api/lxml.tests.test_etree.ETreeWriteTestCase-class.html
doc/html/api/lxml.tests.test_etree.ETreeXIncludeTestCase-class.html
doc/html/api/lxml.tests.test_etree.ElementIncludeTestCase-class.html
doc/html/api/lxml.tests.test_etree.XMLPullParserTest-class.html
doc/html/api/lxml.tests.test_etree._XIncludeTestCase-class.html
doc/html/api/lxml.tests.test_external_document-module.html
doc/html/api/lxml.tests.test_external_document-pysrc.html
doc/html/api/lxml.tests.test_external_document.ExternalDocumentTestCase-class.html
doc/html/api/lxml.tests.test_htmlparser-module.html
doc/html/api/lxml.tests.test_htmlparser-pysrc.html
doc/html/api/lxml.tests.test_htmlparser.HtmlParserTestCase-class.html
doc/html/api/lxml.tests.test_http_io-module.html
doc/html/api/lxml.tests.test_http_io-pysrc.html
doc/html/api/lxml.tests.test_http_io.HttpIOTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile-module.html
doc/html/api/lxml.tests.test_incremental_xmlfile-pysrc.html
doc/html/api/lxml.tests.test_incremental_xmlfile.AsyncXmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile.TempXmlFileTestCase-class.html
doc/html/api/lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html
doc/html/api/lxml.tests.test_io-module.html
doc/html/api/lxml.tests.test_io-pysrc.html
doc/html/api/lxml.tests.test_io.ETreeIOTestCase-class.html
doc/html/api/lxml.tests.test_io.ElementTreeIOTestCase-class.html
doc/html/api/lxml.tests.test_io._IOTestCaseBase-class.html
doc/html/api/lxml.tests.test_isoschematron-module.html
doc/html/api/lxml.tests.test_isoschematron-pysrc.html
doc/html/api/lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html
doc/html/api/lxml.tests.test_nsclasses-module.html
doc/html/api/lxml.tests.test_nsclasses-pysrc.html
doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html
doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
doc/html/api/lxml.tests.test_objectify-module.html
doc/html/api/lxml.tests.test_objectify-pysrc.html
doc/html/api/lxml.tests.test_objectify.ObjectifyTestCase-class.html
doc/html/api/lxml.tests.test_pyclasslookup-module.html
doc/html/api/lxml.tests.test_pyclasslookup-pysrc.html
doc/html/api/lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html
doc/html/api/lxml.tests.test_relaxng-module.html
doc/html/api/lxml.tests.test_relaxng-pysrc.html
doc/html/api/lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html
doc/html/api/lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html
doc/html/api/lxml.tests.test_sax-module.html
doc/html/api/lxml.tests.test_sax-pysrc.html
doc/html/api/lxml.tests.test_sax.ETreeSaxTestCase-class.html
doc/html/api/lxml.tests.test_schematron-module.html
doc/html/api/lxml.tests.test_schematron-pysrc.html
doc/html/api/lxml.tests.test_schematron.ETreeSchematronTestCase-class.html
doc/html/api/lxml.tests.test_threading-module.html
doc/html/api/lxml.tests.test_threading-pysrc.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.Validate-class.html
doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
doc/html/api/lxml.tests.test_threading.ThreadingTestCase-class.html
doc/html/api/lxml.tests.test_unicode-module.html
doc/html/api/lxml.tests.test_unicode-pysrc.html
doc/html/api/lxml.tests.test_unicode.EncodingsTestCase-class.html
doc/html/api/lxml.tests.test_unicode.UnicodeTestCase-class.html
doc/html/api/lxml.tests.test_xmlschema-module.html
doc/html/api/lxml.tests.test_xmlschema-pysrc.html
doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html
doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html
doc/html/api/lxml.tests.test_xpathevaluator-module.html
doc/html/api/lxml.tests.test_xpathevaluator-pysrc.html
doc/html/api/lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html
doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html
doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html
doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html
doc/html/api/lxml.tests.test_xslt-module.html
doc/html/api/lxml.tests.test_xslt-pysrc.html
doc/html/api/lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html
doc/html/api/lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html
doc/html/api/lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html
doc/html/api/lxml.tests.test_xslt.ETreeXSLTTestCase-class.html
doc/html/api/lxml.tests.test_xslt.Py3XSLTTestCase-class.html
doc/html/api/lxml.usedoctest-module.html
doc/html/api/lxml.usedoctest-pysrc.html
doc/html/api/mimetools.Message-class.html
doc/html/api/module-tree.html
doc/html/api/str-class.html
doc/html/api/xml.etree.ElementTree-module.html
doc/html/api/xml.etree.ElementTree-pysrc.html
doc/html/api/xml.etree.ElementTree.Element-class.html
doc/html/api/xml.etree.ElementTree.ElementTree-class.html
doc/html/api/xml.etree.ElementTree.ParseError-class.html
doc/html/api/xml.etree.ElementTree.QName-class.html
doc/html/api/xml.etree.ElementTree.TreeBuilder-class.html
doc/html/api/xml.etree.ElementTree.XMLParser-class.html
doc/html/api/xml.etree.ElementTree._IterParseIterator-class.html
doc/html/api/xml.etree.ElementTree._SimpleElementPath-class.html
doc/html/build.html
doc/html/capi.html
doc/html/changes-4.2.2.html [moved from doc/html/changes-4.2.1.html with 99% similarity]
doc/html/compatibility.html
doc/html/credits.html
doc/html/cssselect.html
doc/html/element_classes.html
doc/html/elementsoup.html
doc/html/extensions.html
doc/html/html5parser.html
doc/html/index.html
doc/html/installation.html
doc/html/intro.html
doc/html/lxml-source-howto.html
doc/html/lxmlhtml.html
doc/html/objectify.html
doc/html/parsing.html
doc/html/performance.html
doc/html/resolvers.html
doc/html/sax.html
doc/html/sitemap.html
doc/html/tutorial.html
doc/html/validation.html
doc/html/xpathxslt.html
doc/main.txt
doc/mkhtml.py
ez_setup.py [deleted file]
setup.cfg
setupinfo.py
src/lxml.egg-info/PKG-INFO
src/lxml.egg-info/SOURCES.txt
src/lxml/_elementpath.c
src/lxml/builder.c
src/lxml/etree.c
src/lxml/etree.h
src/lxml/etree_api.h
src/lxml/html/clean.c
src/lxml/html/diff.c
src/lxml/includes/lxml-version.h
src/lxml/lxml.etree.h
src/lxml/lxml.etree_api.h
src/lxml/objectify.c
src/lxml/parser.pxi
src/lxml/parsertarget.pxi
src/lxml/saxparser.pxi
version.txt

index 1a017ee..ce8ef9a 100644 (file)
@@ -2,6 +2,20 @@
 lxml changelog
 ==============
 
+4.2.2 (2018-06-22)
+==================
+
+Bugs fixed
+----------
+
+* GH#266: Fix sporadic crash during GC when parse-time schema validation is used
+  and the parser participates in a reference cycle.
+  Original patch by Julien Greard.
+
+* GH#265: lxml no longer links against zlib as a shared library, only on static builds.
+  Patch by Nehal J Wani.
+
+
 4.2.1 (2018-03-21)
 ==================
 
index d1a2965..47abd12 100644 (file)
@@ -1,5 +1,5 @@
 exclude *.py
-include setup.py ez_setup.py setupinfo.py versioninfo.py buildlibxml.py
+include setup.py setupinfo.py versioninfo.py buildlibxml.py
 include test.py
 include update-error-constants.py
 include MANIFEST.in Makefile version.txt requirements.txt
index 2f2eaf6..876d8bf 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 4.2.1
+Version: 4.2.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,18 +36,18 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
         as soon as a maintenance branch has been established.  Note that this
         requires Cython to be installed at an appropriate version for the build.
         
-        4.2.1 (2018-03-21)
+        4.2.2 (2018-06-22)
         ==================
         
         Bugs fixed
         ----------
         
-        * LP#1755825: ``iterwalk()`` failed to return the 'start' event for the initial
-          element if a tag selector is used.
+        * GH#266: Fix sporadic crash during GC when parse-time schema validation is used
+          and the parser participates in a reference cycle.
+          Original patch by Julien Greard.
         
-        * LP#1756314: Failure to import 4.2.0 into PyPy due to a missing library symbol.
-        
-        * LP#1727864, GH#258: Add "-isysroot" linker option on MacOS as needed by XCode 9.
+        * GH#265: lxml no longer links against zlib as a shared library, only on static builds.
+          Patch by Nehal J Wani.
         
         
         
index c99ee62..9cb4a7d 100644 (file)
@@ -13,8 +13,8 @@ For issue tracker, see https://bugs.launchpad.net/lxml
 Support the project
 -------------------
 
-lxml has been downloaded from the `Python Package Index`_ more than
-two million times and is also available directly in many package
+lxml has been downloaded from the `Python Package Index`_
+millions of times and is also available directly in many package
 distributions, e.g. for Linux or MacOS-X.
 
 .. _`Python Package Index`: https://pypi.python.org/pypi/lxml
@@ -35,19 +35,24 @@ Notice below, at the bottom of this page.  Thank you for your support.
 
 .. _Donate: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R56JE3VCPDA9N
 
-Please `contact Stefan Behnel`_ for other ways to support the lxml project,
+Please `contact Stefan Behnel <http://consulting.behnel.de/>`_
+for other ways to support the lxml project,
 as well as commercial consulting, customisations and trainings on lxml and
 fast Python XML processing.
 
-.. |Donate| image:: http://lxml.de/paypal_btn_donateCC_LG.png
+.. |Donate| image:: https://lxml.de/paypal_btn_donateCC_LG.png
             :width: 160
             :height: 47
             :alt: Donate to the lxml project
 
-.. _`contact Stefan Behnel`: http://consulting.behnel.de/
 .. _`doc/main.txt`: http://lxml.de/
 .. _`INSTALL.txt`: http://lxml.de/installation.html
 
+`Travis-CI <https://travis-ci.org/>`_ and `AppVeyor <https://www.appveyor.com/>`_
+support the lxml project with their build and CI servers.
+Jetbrains supports the lxml project by donating free licenses of their
+`PyCharm IDE <https://www.jetbrains.com/pycharm/>`_.
+
 
 Legal Notice for Donations
 --------------------------
index b151ff5..1c110e1 100644 (file)
@@ -28,6 +28,7 @@ ElementTree_.
      1.9  How can I map an XML tree into a dict of dicts?
      1.10 Why does lxml sometimes return 'str' values for text in Python 2?
      1.11 Why do I get XInclude or DTD lookup failures on some systems but not on others?
+     1.12 How do namespaces work in lxml?
    2  Installation
      2.1  Which version of libxml2 and libxslt should I use or require?
      2.2  Where are the binary builds?
@@ -406,6 +407,12 @@ See the `libxml2 catalogue documentation <http://xmlsoft.org/catalog.html>`_
 for further information.
 
 
+How do namespaces work in lxml?
+-------------------------------
+
+The same as in ElementTree.  See the `tutorial <tutorial.html#namespaces>`_.
+
+
 Installation
 ============
 
index f8b2cea..61ba375 100644 (file)
@@ -60,10 +60,15 @@ developer version using::
 
   hg clone git+ssh://git@github.com/lxml/lxml.git lxml
 
+Or, using git::
+
+  git clone ssh://git@github.com/lxml/lxml.git lxml
+
 This will create a directory ``lxml`` and download the source into it,
 including the complete development history.  Don't be afraid, the
-download is fairly quick.  You can also browse the `lxml repository`_
-through the web.
+repository download is fairly quick.  You can also browse the
+`lxml repository`_ through the web or download a ZIP archive with the
+`latest master branch <https://github.com/lxml/lxml/archive/master.zip>`_.
 
 .. _Github: https://github.com/lxml/
 .. _Mercurial: http://mercurial.selenic.com/
index e2f5bd0..f8edf18 100644 (file)
@@ -26,7 +26,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml-faq-frequently-asked-questions">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
 
 <p>Frequently asked questions on lxml.  See also the notes on <a class="reference external" href="compatibility.html">compatibility</a> to
 <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a>.</p>
@@ -45,51 +45,52 @@ function hide_menu() {
 <li><a class="reference internal" href="#how-can-i-map-an-xml-tree-into-a-dict-of-dicts" id="id11">How can I map an XML tree into a dict of dicts?</a></li>
 <li><a class="reference internal" href="#why-does-lxml-sometimes-return-str-values-for-text-in-python-2" id="id12">Why does lxml sometimes return 'str' values for text in Python 2?</a></li>
 <li><a class="reference internal" href="#why-do-i-get-xinclude-or-dtd-lookup-failures-on-some-systems-but-not-on-others" id="id13">Why do I get XInclude or DTD lookup failures on some systems but not on others?</a></li>
+<li><a class="reference internal" href="#how-do-namespaces-work-in-lxml" id="id14">How do namespaces work in lxml?</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#installation" id="id14">Installation</a><ul>
-<li><a class="reference internal" href="#which-version-of-libxml2-and-libxslt-should-i-use-or-require" id="id15">Which version of libxml2 and libxslt should I use or require?</a></li>
-<li><a class="reference internal" href="#where-are-the-binary-builds" id="id16">Where are the binary builds?</a></li>
-<li><a class="reference internal" href="#why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml" id="id17">Why do I get errors about missing UCS4 symbols when installing lxml?</a></li>
-<li><a class="reference internal" href="#my-c-compiler-crashes-on-installation" id="id18">My C compiler crashes on installation</a></li>
+<li><a class="reference internal" href="#installation" id="id15">Installation</a><ul>
+<li><a class="reference internal" href="#which-version-of-libxml2-and-libxslt-should-i-use-or-require" id="id16">Which version of libxml2 and libxslt should I use or require?</a></li>
+<li><a class="reference internal" href="#where-are-the-binary-builds" id="id17">Where are the binary builds?</a></li>
+<li><a class="reference internal" href="#why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml" id="id18">Why do I get errors about missing UCS4 symbols when installing lxml?</a></li>
+<li><a class="reference internal" href="#my-c-compiler-crashes-on-installation" id="id19">My C compiler crashes on installation</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#contributing" id="id19">Contributing</a><ul>
-<li><a class="reference internal" href="#why-is-lxml-not-written-in-python" id="id20">Why is lxml not written in Python?</a></li>
-<li><a class="reference internal" href="#how-can-i-contribute" id="id21">How can I contribute?</a></li>
+<li><a class="reference internal" href="#contributing" id="id20">Contributing</a><ul>
+<li><a class="reference internal" href="#why-is-lxml-not-written-in-python" id="id21">Why is lxml not written in Python?</a></li>
+<li><a class="reference internal" href="#how-can-i-contribute" id="id22">How can I contribute?</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#bugs" id="id22">Bugs</a><ul>
-<li><a class="reference internal" href="#my-application-crashes" id="id23">My application crashes!</a></li>
-<li><a class="reference internal" href="#my-application-crashes-on-macos-x" id="id24">My application crashes on MacOS-X!</a></li>
-<li><a class="reference internal" href="#i-think-i-have-found-a-bug-in-lxml-what-should-i-do" id="id25">I think I have found a bug in lxml. What should I do?</a></li>
-<li><a class="reference internal" href="#how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2" id="id26">How do I know a bug is really in lxml and not in libxml2?</a></li>
+<li><a class="reference internal" href="#bugs" id="id23">Bugs</a><ul>
+<li><a class="reference internal" href="#my-application-crashes" id="id24">My application crashes!</a></li>
+<li><a class="reference internal" href="#my-application-crashes-on-macos-x" id="id25">My application crashes on MacOS-X!</a></li>
+<li><a class="reference internal" href="#i-think-i-have-found-a-bug-in-lxml-what-should-i-do" id="id26">I think I have found a bug in lxml. What should I do?</a></li>
+<li><a class="reference internal" href="#how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2" id="id27">How do I know a bug is really in lxml and not in libxml2?</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#id1" id="id27">Threading</a><ul>
-<li><a class="reference internal" href="#can-i-use-threads-to-concurrently-access-the-lxml-api" id="id28">Can I use threads to concurrently access the lxml API?</a></li>
-<li><a class="reference internal" href="#does-my-program-run-faster-if-i-use-threads" id="id29">Does my program run faster if I use threads?</a></li>
-<li><a class="reference internal" href="#would-my-single-threaded-program-run-faster-if-i-turned-off-threading" id="id30">Would my single-threaded program run faster if I turned off threading?</a></li>
-<li><a class="reference internal" href="#why-can-t-i-reuse-xslt-stylesheets-in-other-threads" id="id31">Why can't I reuse XSLT stylesheets in other threads?</a></li>
-<li><a class="reference internal" href="#my-program-crashes-when-run-with-mod-python-pyro-zope-plone" id="id32">My program crashes when run with mod_python/Pyro/Zope/Plone/...</a></li>
+<li><a class="reference internal" href="#id1" id="id28">Threading</a><ul>
+<li><a class="reference internal" href="#can-i-use-threads-to-concurrently-access-the-lxml-api" id="id29">Can I use threads to concurrently access the lxml API?</a></li>
+<li><a class="reference internal" href="#does-my-program-run-faster-if-i-use-threads" id="id30">Does my program run faster if I use threads?</a></li>
+<li><a class="reference internal" href="#would-my-single-threaded-program-run-faster-if-i-turned-off-threading" id="id31">Would my single-threaded program run faster if I turned off threading?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-reuse-xslt-stylesheets-in-other-threads" id="id32">Why can't I reuse XSLT stylesheets in other threads?</a></li>
+<li><a class="reference internal" href="#my-program-crashes-when-run-with-mod-python-pyro-zope-plone" id="id33">My program crashes when run with mod_python/Pyro/Zope/Plone/...</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#parsing-and-serialisation" id="id33">Parsing and Serialisation</a><ul>
-<li><a class="reference internal" href="#why-doesn-t-the-pretty-print-option-reformat-my-xml-output" id="id34">Why doesn't the <tt class="docutils literal">pretty_print</tt> option reformat my XML output?</a></li>
-<li><a class="reference internal" href="#why-can-t-lxml-parse-my-xml-from-unicode-strings" id="id35">Why can't lxml parse my XML from unicode strings?</a></li>
-<li><a class="reference internal" href="#can-lxml-parse-from-file-objects-opened-in-unicode-text-mode" id="id36">Can lxml parse from file objects opened in unicode/text mode?</a></li>
-<li><a class="reference internal" href="#what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write" id="id37">What is the difference between str(xslt(doc)) and xslt(doc).write() ?</a></li>
-<li><a class="reference internal" href="#why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse" id="id38">Why can't I just delete parents or clear the root node in iterparse()?</a></li>
-<li><a class="reference internal" href="#how-do-i-output-null-characters-in-xml-text" id="id39">How do I output null characters in XML text?</a></li>
-<li><a class="reference internal" href="#is-lxml-vulnerable-to-xml-bombs" id="id40">Is lxml vulnerable to XML bombs?</a></li>
-<li><a class="reference internal" href="#how-do-i-use-lxml-safely-as-a-web-service-endpoint" id="id41">How do I use lxml safely as a web-service endpoint?</a></li>
+<li><a class="reference internal" href="#parsing-and-serialisation" id="id34">Parsing and Serialisation</a><ul>
+<li><a class="reference internal" href="#why-doesn-t-the-pretty-print-option-reformat-my-xml-output" id="id35">Why doesn't the <tt class="docutils literal">pretty_print</tt> option reformat my XML output?</a></li>
+<li><a class="reference internal" href="#why-can-t-lxml-parse-my-xml-from-unicode-strings" id="id36">Why can't lxml parse my XML from unicode strings?</a></li>
+<li><a class="reference internal" href="#can-lxml-parse-from-file-objects-opened-in-unicode-text-mode" id="id37">Can lxml parse from file objects opened in unicode/text mode?</a></li>
+<li><a class="reference internal" href="#what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write" id="id38">What is the difference between str(xslt(doc)) and xslt(doc).write() ?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse" id="id39">Why can't I just delete parents or clear the root node in iterparse()?</a></li>
+<li><a class="reference internal" href="#how-do-i-output-null-characters-in-xml-text" id="id40">How do I output null characters in XML text?</a></li>
+<li><a class="reference internal" href="#is-lxml-vulnerable-to-xml-bombs" id="id41">Is lxml vulnerable to XML bombs?</a></li>
+<li><a class="reference internal" href="#how-do-i-use-lxml-safely-as-a-web-service-endpoint" id="id42">How do I use lxml safely as a web-service endpoint?</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#xpath-and-document-traversal" id="id42">XPath and Document Traversal</a><ul>
-<li><a class="reference internal" href="#what-are-the-findall-and-xpath-methods-on-element-tree" id="id43">What are the <tt class="docutils literal">findall()</tt> and <tt class="docutils literal">xpath()</tt> methods on Element(Tree)?</a></li>
-<li><a class="reference internal" href="#why-doesn-t-findall-support-full-xpath-expressions" id="id44">Why doesn't <tt class="docutils literal">findall()</tt> support full XPath expressions?</a></li>
-<li><a class="reference internal" href="#how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document" id="id45">How can I find out which namespace prefixes are used in a document?</a></li>
-<li><a class="reference internal" href="#how-can-i-specify-a-default-namespace-for-xpath-expressions" id="id46">How can I specify a default namespace for XPath expressions?</a></li>
+<li><a class="reference internal" href="#xpath-and-document-traversal" id="id43">XPath and Document Traversal</a><ul>
+<li><a class="reference internal" href="#what-are-the-findall-and-xpath-methods-on-element-tree" id="id44">What are the <tt class="docutils literal">findall()</tt> and <tt class="docutils literal">xpath()</tt> methods on Element(Tree)?</a></li>
+<li><a class="reference internal" href="#why-doesn-t-findall-support-full-xpath-expressions" id="id45">Why doesn't <tt class="docutils literal">findall()</tt> support full XPath expressions?</a></li>
+<li><a class="reference internal" href="#how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document" id="id46">How can I find out which namespace prefixes are used in a document?</a></li>
+<li><a class="reference internal" href="#how-can-i-specify-a-default-namespace-for-xpath-expressions" id="id47">How can I specify a default namespace for XPath expressions?</a></li>
 </ul>
 </li>
 </ul>
@@ -349,6 +350,10 @@ doctype IDs to locally installed DTD files.</p>
 <p>See the <a class="reference external" href="http://xmlsoft.org/catalog.html">libxml2 catalogue documentation</a>
 for further information.</p>
 </div>
+<div class="section" id="how-do-namespaces-work-in-lxml">
+<h2>How do namespaces work in lxml?</h2>
+<p>The same as in ElementTree.  See the <a class="reference external" href="tutorial.html#namespaces">tutorial</a>.</p>
+</div>
 </div>
 <div class="section" id="installation">
 <h1>Installation</h1>
@@ -988,7 +993,7 @@ map it to your namespace.  See also the question above.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index b8defad..3aa0502 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="apis-specific-to-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">APIs specific to lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">APIs specific to lxml.etree</h1>
 
 <p>lxml.etree tries to follow established APIs wherever possible.  Sometimes,
 however, the need to expose a feature in an easy way led to the invention of a
@@ -531,7 +531,7 @@ example:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 25ab913..3cd2a86 100644 (file)
@@ -427,7 +427,7 @@ even via super()).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 06f4bb3..deae3cb 100644 (file)
@@ -936,7 +936,7 @@ objects.</em>
     </ul>
     </li>
     <li> <strong class="uidlink"><a href="lxml.etree.XMLParser-class.html">lxml.etree.XMLParser</a></strong>:
-      <em class="summary">XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</em>
+      <em class="summary">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)</em>
     <ul>
     <li> <strong class="uidlink"><a href="lxml.etree.ETCompatXMLParser-class.html">lxml.etree.ETCompatXMLParser</a></strong>:
       <em class="summary">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)</em>
@@ -1333,7 +1333,7 @@ type(name, bases, dict) -&gt; a new type</em>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c2550ec..2e16b09 100644 (file)
@@ -195,7 +195,7 @@ You can just use ``except SelectorError:`` when calling
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7dcc496..cef96ac 100644 (file)
@@ -202,7 +202,7 @@ Parsing a selector that does not match the grammar.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a46ef36..2876dd0 100644 (file)
@@ -194,7 +194,7 @@ Unknown or unsupported selector (eg. pseudo-class).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 57941f8..f1d015c 100644 (file)
@@ -380,7 +380,7 @@ to a single parent.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f98a2a4..83c7f79 100644 (file)
@@ -146,7 +146,7 @@ with older versions of lxml or ElementTree.</li>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 85b0c8e..2837758 100644 (file)
@@ -281,7 +281,7 @@ Assertion failed.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c26f5f1..2ac8b53 100644 (file)
@@ -257,7 +257,7 @@ page was last updated. </p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5f0561..a123917 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1f2ce09..027fc3f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2cfc48e..ebc86d2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0fbd707..3f3415e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 598b2d6..596b883 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d197635..1e3e0ea 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a920e31..a54134d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ed03c6..606c3ad 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 98920fe..8af8b31 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ed66a51..d5b6690 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 165ce9d..b57be90 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b50caef..b838805 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c7b7f43..2173f06 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fef5d40..9acdf0f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7da8def..1c24ddd 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 53b66cb..954d53a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index caacb6a..fbae727 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6f286ba..b9d8b55 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 661eb41..5fd0624 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0989d80..9b2e85a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e0964d..2c2fae5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 61e2855..4661846 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d45fde..df37094 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5068b22..4c35ce0 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 44b5017..1b8868b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d50c859..b6d0084 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 87c22ea..b776727 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e98198..2518da4 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 55fc5fb..714e007 100644 (file)
@@ -239,7 +239,7 @@ with statically linked libraries.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0198248..a44cd96 100644 (file)
@@ -130,7 +130,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4cb450d..2a8fdd9 100644 (file)
@@ -285,7 +285,7 @@ form of custom URL resolvers.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 219e2f2..24189e4 100644 (file)
@@ -537,7 +537,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a249d1f..3fa9cbe 100644 (file)
@@ -230,7 +230,7 @@ exceptions.BaseException --+           |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 243d459..6ebc3d7 100644 (file)
@@ -206,8 +206,8 @@ The <tt class="rst-docutils literal">E</tt> Element factory for generating XML d
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.builder-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'ET': &lt;capsule object &quot;PyObject *&quot; at 0x7f6d7a26ad50&gt;,
- 'partial': &lt;capsule object &quot;PyObject *&quot; at 0x7f6d7a26ade0&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">ET</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f6d7a<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.builder-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'ET': &lt;capsule object &quot;PyObject *&quot; at 0x7f867b045cf0&gt;,
+ 'partial': &lt;capsule object &quot;PyObject *&quot; at 0x7f867b045d80&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">ET</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f867b<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -248,8 +248,8 @@ The <tt class="rst-docutils literal">E</tt> Element factory for generating XML d
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">ET</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f6d7a26ad50&gt;<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">partial</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f6d7a26ade0&gt;<code class="variable-group">}</code>
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">ET</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f867b045cf0&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">partial</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *&quot; at 0x7f867b045d80&gt;<code class="variable-group">}</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -288,7 +288,7 @@ The <tt class="rst-docutils literal">E</tt> Element factory for generating XML d
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9bb7add..a97893c 100644 (file)
@@ -435,7 +435,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a5c6ec4..d63d480 100644 (file)
@@ -514,7 +514,7 @@ and/or a specific target <tt class="rst-docutils literal">namespace</tt> to the
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d6d80dc..1e913a2 100644 (file)
@@ -232,7 +232,7 @@ See the <a href="lxml.cssselect.CSSSelector-class.html" class="link">CSSSelector
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 64aeff7..2aceb5b 100644 (file)
@@ -308,7 +308,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0e1a08..83531fd 100644 (file)
@@ -309,7 +309,7 @@ mapping as <tt class="rst-docutils literal">namespaces</tt> keyword argument:</p
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc9139d..c17dd01 100644 (file)
@@ -312,7 +312,7 @@ lxml extensions + HTML support.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 85c2ca2..8d8560e 100644 (file)
@@ -364,7 +364,7 @@ A custom CSS selector to XPath translator with lxml-specific extensions.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d54b32c..97007d3 100644 (file)
@@ -476,7 +476,7 @@ otherwise the XML parser is used.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f4f722..31c6dcf 100644 (file)
@@ -1127,7 +1127,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c2eb1af..302b245 100644 (file)
@@ -230,7 +230,7 @@ doctest.OutputChecker --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3400438..fbce42e 100644 (file)
@@ -611,7 +611,7 @@ to compare <code class="link">want</code> and <code class="link">got</code>.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 72765f6..ba3060b 100644 (file)
@@ -350,7 +350,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ebdfaf1..c7b4955 100644 (file)
@@ -65,7 +65,7 @@ The <tt class="rst-docutils literal">lxml.etree</tt> module implements the exten
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        4.2.1
+        4.2.2
       </p>
 </div><!-- ==================== CLASSES ==================== -->
 <a name="section-Classes"></a>
@@ -550,7 +550,7 @@ XInclude processor.
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
         <a href="lxml.etree.XMLParser-class.html" class="summary-name">XMLParser</a><br />
-      XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+      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)
     </td>
   </tr>
 <tr class="private">
@@ -1725,7 +1725,7 @@ standard Python logging package.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="LXML_VERSION"></a><span class="summary-name">LXML_VERSION</span> = <code title="(4, 2, 1, 0)"><code class="variable-group">(</code>4<code class="variable-op">, </code>2<code class="variable-op">, </code>1<code class="variable-op">, </code>0<code class="variable-group">)</code></code>
+        <a name="LXML_VERSION"></a><span class="summary-name">LXML_VERSION</span> = <code title="(4, 2, 2, 0)"><code class="variable-group">(</code>4<code class="variable-op">, </code>2<code class="variable-op">, </code>2<code class="variable-op">, </code>0<code class="variable-group">)</code></code>
     </td>
   </tr>
 <tr class="private">
@@ -1741,13 +1741,13 @@ standard Python logging package.</td>
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
         <a href="lxml.etree-module.html#__pyx_capi__" class="summary-name" onclick="show_private();">__pyx_capi__</a> = <code title="{'adoptExternalDocument': &lt;capsule object &quot;struct LxmlElementTree *(xm\
-lDoc *, PyObject *, int)&quot; at 0x7f6d7de71540&gt;,
+lDoc *, PyObject *, int)&quot; at 0x7f867ee924e0&gt;,
  'appendChild': &lt;capsule object &quot;void (struct LxmlElement *, struct Lx\
-mlElement *)&quot; at 0x7f6d7de71d20&gt;,
+mlElement *)&quot; at 0x7f867ee92cc0&gt;,
  'appendChildToElement': &lt;capsule object &quot;int (struct LxmlElement *, s\
-truct LxmlElement *)&quot; at 0x7f6d7de71d50&gt;,
+truct LxmlElement *)&quot; at 0x7f867ee92cf0&gt;,
  'attributeValue': &lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; \
-at 0x7f6d7de719f0&gt;,
+at 0x7f867ee92990&gt;,
 ..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">adoptExternalDocument</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;stru<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
@@ -2505,13 +2505,13 @@ function will only set the global error log of the current thread.</p>
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
 <code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">adoptExternalDocument</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;struct LxmlElementTree *(xm<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-lDoc *, PyObject *, int)&quot; at 0x7f6d7de71540&gt;<code class="variable-op">,</code>
+lDoc *, PyObject *, int)&quot; at 0x7f867ee924e0&gt;<code class="variable-op">,</code>
  <code class="variable-quote">'</code><code class="variable-string">appendChild</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;void (struct LxmlElement *, struct Lx<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-mlElement *)&quot; at 0x7f6d7de71d20&gt;<code class="variable-op">,</code>
+mlElement *)&quot; at 0x7f867ee92cc0&gt;<code class="variable-op">,</code>
  <code class="variable-quote">'</code><code class="variable-string">appendChildToElement</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;int (struct LxmlElement *, s<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-truct LxmlElement *)&quot; at 0x7f6d7de71d50&gt;<code class="variable-op">,</code>
+truct LxmlElement *)&quot; at 0x7f867ee92cf0&gt;<code class="variable-op">,</code>
  <code class="variable-quote">'</code><code class="variable-string">attributeValue</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-at 0x7f6d7de719f0&gt;<code class="variable-op">,</code>
+at 0x7f867ee92990&gt;<code class="variable-op">,</code>
 <code class="variable-ellipsis">...</code>
 </pre></td></tr></table>
 </dd>
@@ -2577,7 +2577,7 @@ at 0x7f6d7de719f0&gt;<code class="variable-op">,</code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 17fb618..caed5f7 100644 (file)
@@ -234,7 +234,7 @@ Iterates over the ancestors of an element (from parent to parent).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b97cc0..8cc0065 100644 (file)
@@ -294,7 +294,7 @@ missing.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 324e75f..23ad4a9 100644 (file)
@@ -246,7 +246,7 @@ Error during C14N serialisation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a101b71..a9ebf7c 100644 (file)
@@ -237,7 +237,7 @@ a string
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c821a6d..ca54699 100644 (file)
@@ -350,7 +350,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1a094c1..bed58fc 100644 (file)
@@ -273,7 +273,7 @@ lookup(self, type, doc, namespace, name)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5977243..8a64903 100644 (file)
@@ -412,7 +412,7 @@ catalog.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ae2b848..563e9e2 100644 (file)
@@ -252,7 +252,7 @@ Base class for DTD errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9415128..4e3bc94 100644 (file)
@@ -248,7 +248,7 @@ Error while parsing a DTD.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d9afa4..d9dfbd4 100644 (file)
@@ -248,7 +248,7 @@ Error while validating an XML document with a DTD.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e09aba..64d02ab 100644 (file)
@@ -373,7 +373,7 @@ exist, setting this variable (even to None) will create one.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d1b1250..830d092 100644 (file)
@@ -248,7 +248,7 @@ method fails.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d7053d0..d540a8c 100644 (file)
@@ -326,7 +326,7 @@ and thus ignores comments and processing instructions.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 009a7c8..fef8f09 100644 (file)
@@ -294,7 +294,7 @@ you pass <tt class="rst-docutils literal">smart_strings=False</tt>.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d4800b..5e700d4 100644 (file)
@@ -363,7 +363,7 @@ hierarchies that implement a common namespace.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8c30def..86e9a9f 100644 (file)
@@ -234,7 +234,7 @@ Iterates over the children of an element.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9865aa..b6ed2d5 100644 (file)
@@ -233,7 +233,7 @@ Superclass of Element class lookups.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d89e92..640eb61 100644 (file)
@@ -307,7 +307,7 @@ accept the respective Element classes.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a7dc5f7..6a2961e 100644 (file)
@@ -288,7 +288,7 @@ tree it traverses is modified during iteration.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 22623ce..2dac99a 100644 (file)
@@ -332,7 +332,7 @@ Pass None for the empty namespace.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c936e04..387bdb8 100644 (file)
@@ -280,7 +280,7 @@ tail text (e.g. if you know that it's only whitespace from pretty-printing).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 65c76c0..7461fec 100644 (file)
@@ -351,7 +351,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4af7232..6a6fdd7 100644 (file)
@@ -246,7 +246,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 12891c5..dec73e8 100644 (file)
@@ -486,7 +486,7 @@ Libxml2 error domains
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 142ca52..460db28 100644 (file)
@@ -244,7 +244,7 @@ Libxml2 error levels
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ba98b7b..c6d8d85 100644 (file)
@@ -5407,7 +5407,7 @@ Libxml2 error types
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 29ffc16..ced5dde 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7027ec9..8efac18 100644 (file)
@@ -358,7 +358,7 @@ reasons.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8927def..04f6aa9 100644 (file)
@@ -327,7 +327,7 @@ source, you can pass the <tt class="rst-docutils literal">base_url</tt>.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60f33bf..96e490a 100644 (file)
@@ -288,7 +288,7 @@ this one.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 203d49e..aaf30f3 100644 (file)
@@ -252,7 +252,7 @@ Base class of lxml registry errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 89e3776..88bb683 100644 (file)
@@ -236,7 +236,7 @@ Base class for all syntax errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3156bbd..b68494b 100644 (file)
@@ -248,7 +248,7 @@ Error registering a namespace extension.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7306969..3597ed8 100644 (file)
@@ -352,7 +352,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0892d04..0650472 100644 (file)
@@ -341,7 +341,7 @@ exceptions.BaseException --+           |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4a371c3..8ec662e 100644 (file)
@@ -237,7 +237,7 @@ Element class lookup based on the XML parser.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 82f6558..1d11953 100644 (file)
@@ -246,7 +246,7 @@ Internal lxml parser error.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index adb2977..33b89b5 100644 (file)
@@ -434,7 +434,7 @@ format.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a6c343..2d0c25a 100644 (file)
@@ -290,7 +290,7 @@ iteration methods).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6f5b337..0aed260 100644 (file)
@@ -488,7 +488,7 @@ their text content.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index daa6a40..0639be3 100644 (file)
@@ -384,7 +384,7 @@ will enable resolving resource references relative to the source.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0724c16..e6f10a4 100644 (file)
@@ -252,7 +252,7 @@ Base class for RelaxNG errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9af9000..523b8e7 100644 (file)
@@ -549,7 +549,7 @@ Libxml2 RelaxNG error types
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5a9f229..eb7beef 100644 (file)
@@ -248,7 +248,7 @@ Error while parsing an XML document as RelaxNG.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8b4c800..addc752 100644 (file)
@@ -248,7 +248,7 @@ Error while validating an XML document with a RelaxNG schema.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6293f65..117c96a 100644 (file)
@@ -455,7 +455,7 @@ argument.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 720f301..dddbd1d 100644 (file)
@@ -367,7 +367,7 @@ errors in lxml.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0b07e1f..9c32202 100644 (file)
@@ -252,7 +252,7 @@ Base class of all Schematron errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9e5df5c..e3c883d 100644 (file)
@@ -248,7 +248,7 @@ Error while parsing an XML document as Schematron schema.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2d4c77..a859310 100644 (file)
@@ -248,7 +248,7 @@ Error while validating an XML document with a Schematron schema.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e7e7be9..6cf4f60 100644 (file)
@@ -252,7 +252,7 @@ A libxml2 error that occurred during serialisation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 28569e8..ae0ab29 100644 (file)
@@ -235,7 +235,7 @@ Iterates over the siblings of an element.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02a0b47..409a3e7 100644 (file)
@@ -383,7 +383,7 @@ element.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 33fef83..b7ec846 100644 (file)
@@ -292,7 +292,7 @@ processing.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0f3907..65d9e7e 100644 (file)
@@ -246,7 +246,7 @@ Error during XInclude processing.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8448100..ad46518 100644 (file)
@@ -79,7 +79,7 @@
 </dd></dl>
 
 <hr />
-<p>XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)</p>
+<p>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)</p>
 <p>The XML parser.</p>
 <p>Parsers can be supplied as additional argument to various parse
 functions of the lxml API.  A default parser is always available
@@ -168,6 +168,7 @@ apply to the default parser.</p>
         <span class="summary-sig-arg">ns_clean</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">recover</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">schema: XMLSchema</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">huge_tree</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">remove_blank_text</span>=<span class="summary-sig-default">False</span>,
         <span class="summary-sig-arg">resolve_entities</span>=<span class="summary-sig-default">True</span>,
         <span class="summary-sig-arg">remove_comments</span>=<span class="summary-sig-default">False</span>,
@@ -300,6 +301,7 @@ apply to the default parser.</p>
         <span class="sig-arg">ns_clean</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">recover</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">schema: XMLSchema</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">huge_tree</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">remove_blank_text</span>=<span class="sig-default">False</span>,
         <span class="sig-arg">resolve_entities</span>=<span class="sig-default">True</span>,
         <span class="sig-arg">remove_comments</span>=<span class="sig-default">False</span>,
@@ -381,7 +383,7 @@ apply to the default parser.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f2bc0d..9230293 100644 (file)
@@ -325,7 +325,7 @@ source, you can pass the <tt class="rst-docutils literal">base_url</tt>.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 19d1db0..169da7f 100644 (file)
@@ -328,7 +328,7 @@ schema insert default/fixed attributes into validated documents.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b4ab4d1..166596c 100644 (file)
@@ -252,7 +252,7 @@ Base class of all XML Schema errors
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 76c3ede..ba207c5 100644 (file)
@@ -248,7 +248,7 @@ Error while parsing an XML document as XML Schema.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3e4be17..1fd1602 100644 (file)
@@ -248,7 +248,7 @@ Error while validating an XML document with an XML Schema.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f7fbc63..52247cd 100644 (file)
@@ -239,7 +239,7 @@ Syntax error while parsing an XML document.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8b988f0..9adbf99 100644 (file)
@@ -362,7 +362,7 @@ returned for string results unless you pass
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 15526b9..0f6fa2f 100644 (file)
@@ -341,7 +341,7 @@ are currently not supported for variables.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce1e1d7..caaed6e 100644 (file)
@@ -376,7 +376,7 @@ against the ElementTree as returned by getroottree().</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ff9ffae..8e3e6dd 100644 (file)
@@ -252,7 +252,7 @@ Base class of all XPath errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b374158..3f12cc8 100644 (file)
@@ -254,7 +254,7 @@ Error during XPath evaluation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d4c4b30..17539ad 100644 (file)
@@ -250,7 +250,7 @@ Internal error looking up an XPath extension function.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 75a485e..09cf1db 100644 (file)
@@ -250,7 +250,7 @@ Error handling an XPath result.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0f169e0..bf28c43 100644 (file)
@@ -244,7 +244,7 @@ exceptions.BaseException --+               |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ea94f78..8db2524 100644 (file)
@@ -576,7 +576,7 @@ result = transform(doc, some_strval = XSLT.strparam(
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7140d8a..b9846af 100644 (file)
@@ -429,7 +429,7 @@ XSLTAccessControl(create_dir=False, read_file=True, read_network=True,<span clas
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a1beeff..39669ee 100644 (file)
@@ -248,7 +248,7 @@ Error running an XSL transformation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bbe7839..4a8e478 100644 (file)
@@ -252,7 +252,7 @@ Base class of all XSLT errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df82f07..b7182c9 100644 (file)
@@ -398,7 +398,7 @@ case.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 992a09b..fd77710 100644 (file)
@@ -248,7 +248,7 @@ Error registering an XSLT extension.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f1ba7c6..e5e6ad3 100644 (file)
@@ -248,7 +248,7 @@ Error parsing a stylesheet document.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 98a9c92..5f4a78f 100644 (file)
@@ -226,7 +226,7 @@ Error serialising an XSLT result.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1eebe62..36a22e2 100644 (file)
@@ -705,7 +705,7 @@ A dict-like proxy for the <tt class="rst-docutils literal">Element.attrib</tt> p
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 48ae837..f3c4bd0 100644 (file)
@@ -347,7 +347,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2cb4b67..143d7f2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd82149..99f3fbf 100644 (file)
@@ -228,7 +228,7 @@ document is cleaned up.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7f9246e..1afce86 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 73e0fb2..1b080a5 100644 (file)
@@ -1643,7 +1643,7 @@ parents.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 15f6fc5..46e3ce6 100644 (file)
@@ -277,7 +277,7 @@ Dead but public. :)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d64b3a3..7c5d206 100644 (file)
@@ -279,7 +279,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 45c98a9..77c3710 100644 (file)
@@ -268,7 +268,7 @@ basestring --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 39d00eb..2e767a2 100644 (file)
@@ -232,7 +232,7 @@ Dead but public. :)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4363794..4e95242 100644 (file)
@@ -1079,7 +1079,7 @@ class directly.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce70957..c6c4229 100644 (file)
@@ -334,7 +334,7 @@ basestring --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6ca6662..706caad 100644 (file)
@@ -357,7 +357,7 @@ the value None, if there was no text.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1eff41f..8113a64 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 85ee1e3..8d18836 100644 (file)
@@ -378,7 +378,7 @@ different from what the <tt class="rst-docutils literal">error_log</tt> property
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2c70460..86dbb26 100644 (file)
@@ -483,7 +483,7 @@ that were created or modified 'by hand' are not supported.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ced27d..599fba9 100644 (file)
@@ -571,7 +571,7 @@ entries.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ac5d7d4..3a0c92c 100644 (file)
@@ -357,7 +357,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 934b99a..16fda2d 100644 (file)
@@ -409,7 +409,7 @@ It is not guaranteed to work for all possible text content.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 99adbdb..288dc22 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 39fcb46..9f1655a 100644 (file)
@@ -230,7 +230,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 319e0cf..d438f9f 100644 (file)
@@ -263,7 +263,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b479d5..26315b3 100644 (file)
@@ -347,7 +347,7 @@ Base class for XML validators.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5f858c6..6603a65 100644 (file)
@@ -323,7 +323,7 @@ are currently not supported for variables.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index caea6f1..b69cba5 100644 (file)
@@ -391,7 +391,7 @@ the processing instruction.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 695bf82..98ee91a 100644 (file)
@@ -360,7 +360,7 @@ the result as defined by the <tt class="rst-docutils literal">&lt;xsl:output&gt;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d4142df..e289f8b 100644 (file)
@@ -285,7 +285,7 @@ xmlfile.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9cbc3ac..10f162e 100644 (file)
@@ -502,7 +502,7 @@ attribute default values are requested.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9b5df39..49ad625 100644 (file)
@@ -370,7 +370,7 @@ Instead, the next returned event will be the 'end' event of the current element
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 33b85a8..104f512 100644 (file)
@@ -375,7 +375,7 @@ explicitly flush any pending output when buffering is enabled.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 48170e1..da44f59 100644 (file)
@@ -1322,7 +1322,7 @@ descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0b1aebf..b75f00a 100644 (file)
@@ -4055,7 +4055,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 68e9ad8..129ae0a 100644 (file)
@@ -363,7 +363,7 @@ uncheck individual checkboxes according to their value.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b48977d..117b050 100644 (file)
@@ -541,7 +541,7 @@ checkboxes with the same name.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd98e00..ca979ec 100644 (file)
@@ -693,7 +693,7 @@ false if it was removed (and is now disabled).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cba067c..f5bd55a 100644 (file)
@@ -264,7 +264,7 @@ keyword.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c0e40ee..649ecea 100644 (file)
@@ -121,7 +121,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e8a7bfb..a76a789 100644 (file)
@@ -683,7 +683,7 @@ _abcoll.Container --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a771fe7..5c3c888 100644 (file)
@@ -428,7 +428,7 @@ string, and defaults to <tt class="rst-docutils literal">'GET'</tt>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02813df..5912a97 100644 (file)
@@ -255,7 +255,7 @@ objects.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1d74318..98cdb31 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6e46ed2..4da160d 100644 (file)
@@ -370,7 +370,7 @@ for <tt class="rst-docutils literal"><span class="pre">form.set('novalidate')</s
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d41e9e6..9e856ca 100644 (file)
@@ -365,7 +365,7 @@ Element classes.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e3b8c4c..8b71028 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8cf4f7..45dc123 100644 (file)
@@ -799,7 +799,7 @@ element to get the document's head.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02d426f..735cde1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1936c06..9821f3c 100644 (file)
@@ -406,7 +406,7 @@ checked, this returns None.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8f1a01..19029d9 100644 (file)
@@ -432,7 +432,7 @@ nput' or local-name(.) = 'textarea')]
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2e87d7..9252f18 100644 (file)
@@ -280,7 +280,7 @@ Mix-in for all input elements (input, select, and textarea)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0baf4c..ba34496 100644 (file)
@@ -312,7 +312,7 @@ can't be found.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5bb6f58..eeebacb 100644 (file)
@@ -584,7 +584,7 @@ to unselect the option.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3e43ff2..4a1e466 100644 (file)
@@ -362,7 +362,7 @@ unchecks any other value).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ff1131..dad64a5 100644 (file)
@@ -377,7 +377,7 @@ attribute of all the <tt class="rst-docutils literal">&lt;option&gt;</tt> elemen
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a391b57..471d897 100644 (file)
@@ -317,7 +317,7 @@ get/set the value with <tt class="rst-docutils literal">.value</tt>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dda0cf1..230fc6d 100644 (file)
@@ -267,7 +267,7 @@ parser like this:</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 76505cf..9cb82d2 100644 (file)
@@ -254,7 +254,7 @@ of the resulting document.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 50b8ba1..7e967e5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dbda815..fd2e6ed 100644 (file)
@@ -436,7 +436,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1c57d34..f7ae782 100644 (file)
@@ -756,7 +756,7 @@ a<code class="re-op">-</code>z0<code class="re-op">-</code>9%&amp;\?;=~<code cla
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4e52924..92f407f 100644 (file)
@@ -1327,7 +1327,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5a444a4..a0089c1 100644 (file)
@@ -775,7 +775,7 @@ more sneaky attempts.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fb3d632..89023a1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d7b68c..356fefc 100644 (file)
@@ -235,7 +235,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd1e63a..36fc24a 100644 (file)
@@ -1412,7 +1412,7 @@ includes the elements tail.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d1ad668..a10f492 100644 (file)
@@ -1802,7 +1802,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5fe28e..88a55ef 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0614f44..d2db861 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 836540f..e905088 100644 (file)
@@ -243,7 +243,7 @@ triple with n==0.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ed61d64..21bad85 100644 (file)
@@ -208,7 +208,7 @@ Raised when the document no longer contains any pending deletes
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fb22d08..0d3f002 100644 (file)
@@ -326,7 +326,7 @@ show the href when it changes.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc6ad64..e1bb3a0 100644 (file)
@@ -416,7 +416,7 @@ is only represented in a document by a tag.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d95869b..d7fde8f 100644 (file)
@@ -401,7 +401,7 @@ space.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4ee5e77..24458bc 100644 (file)
@@ -565,7 +565,7 @@ escendant-or-self::x:textarea
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 71a2370..000ef3b 100644 (file)
@@ -794,7 +794,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60122d4..20b2f5b 100644 (file)
@@ -304,7 +304,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 57ba1fd..d2f0c3c 100644 (file)
@@ -186,7 +186,7 @@ Raised when no form can be found
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ace1a49..592190c 100644 (file)
@@ -476,7 +476,7 @@ default when parsing from a file path (which is read in binary mode).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index efdfbc6..37a16a0 100644 (file)
@@ -672,7 +672,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 264e8cd..6a8f2c2 100644 (file)
@@ -257,7 +257,7 @@ text</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9ea985e..143b344 100644 (file)
@@ -140,7 +140,7 @@ An html5lib XHTML Parser with lxml as tree.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0dd6ac..5c3971f 100644 (file)
@@ -488,7 +488,7 @@ keyword.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index db58cba..c2fd7af 100644 (file)
@@ -546,7 +546,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3387e39..5008233 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0f6129..67fd411 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8c504e2..b9a76d8 100644 (file)
@@ -117,7 +117,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 889deaf..2b02610 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b030e04..32eb205 100644 (file)
@@ -101,7 +101,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 46301a1..4e42882 100644 (file)
@@ -406,7 +406,7 @@ Else convert arg to string.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 770a3d0..5ca3897 100644 (file)
@@ -638,7 +638,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 207a96d..bc9ce76 100644 (file)
@@ -628,7 +628,7 @@ been turned off).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ed2adc..9703ffe 100644 (file)
@@ -66,7 +66,7 @@ It is based on <a href="lxml.etree-module.html" class="link">lxml.etree</a>.
 
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        4.2.1
+        4.2.2
       </p>
 </div><!-- ==================== CLASSES ==================== -->
 <a name="section-Classes"></a>
@@ -1137,7 +1137,7 @@ elements.  Pass 'string', for example, to make string values the default.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4f9a186..18cc5ee 100644 (file)
@@ -803,7 +803,7 @@ this if they recursively call _init() in the superclasses.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c41b492..1cb4e6c 100644 (file)
@@ -366,7 +366,7 @@ some text
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5425dbd..ef773dd 100644 (file)
@@ -392,7 +392,7 @@ this if they recursively call _init() in the superclasses.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4428031..c06bff2 100644 (file)
@@ -398,7 +398,7 @@ this if they recursively call _init() in the superclasses.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 55b733a..1008b52 100644 (file)
@@ -392,7 +392,7 @@ this if they recursively call _init() in the superclasses.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 00b331a..608c868 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de295de..2105553 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 19125b3..84305e9 100644 (file)
@@ -453,7 +453,7 @@ as second argument) or raises AttributeError.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02843eb..05e2695 100644 (file)
@@ -410,7 +410,7 @@ doing.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d756185..ccc3ddf 100644 (file)
@@ -861,7 +861,7 @@ returned in document order.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fc525d0..d6f4618 100644 (file)
@@ -277,7 +277,7 @@ empty data elements (defaults to StringElement).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b99f3d..f01ae39 100644 (file)
@@ -447,7 +447,7 @@ ignored.  Raises ValueError if the dependencies cannot be fulfilled.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 86d932a..00b386e 100644 (file)
@@ -733,7 +733,7 @@ Instead, use the .text attribute to get a 'real' string.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b06f7e6..a54b322 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d75b6d3..b88477c 100644 (file)
@@ -108,7 +108,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 036b6fe..cc8760e 100644 (file)
@@ -220,7 +220,7 @@ them against a SAX ContentHandler.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 72a5a19..99d2cfa 100644 (file)
@@ -577,7 +577,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 69a944c..baccb17 100644 (file)
@@ -872,7 +872,7 @@ Locator provides useful information.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index afbcfcd..d778149 100644 (file)
@@ -282,7 +282,7 @@ Produces SAX events for an element and children.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d42a9a6..3614a00 100644 (file)
@@ -185,7 +185,7 @@ General SAX error.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 064ee25..ba4734f 100644 (file)
@@ -175,7 +175,7 @@ namespace registry mechanism</em>    </li>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 18245dd..45d4047 100644 (file)
@@ -103,7 +103,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e320662..cadc967 100644 (file)
@@ -538,7 +538,7 @@ occurrences of pattern in string by the replacement repl.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e26c21..67c08bf 100644 (file)
@@ -608,7 +608,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c801279..ced2d95 100644 (file)
@@ -414,7 +414,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e8bc411..daa0d63 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a105252..bebd8d2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f76169d..d417755 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ff3289a..6e2a857 100644 (file)
@@ -245,7 +245,7 @@ Using a class because a function would bind into a method when used in classes
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 847469b..1f35867 100644 (file)
@@ -264,7 +264,7 @@ Simple HTTP request dumper for tests in Python 2.5+.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1dd26fa..b43c716 100644 (file)
@@ -198,7 +198,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cdb1cdd..ba9ee7c 100644 (file)
@@ -247,7 +247,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 35b5328..7d2e3cc 100644 (file)
@@ -204,7 +204,7 @@ A web server that starts a new thread for each request.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b4287f2..309a30c 100644 (file)
@@ -331,7 +331,7 @@ message.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0ba953e..94dbdd6 100644 (file)
@@ -1178,7 +1178,7 @@ ElementTree.XML(&quot;&quot;&quot;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 356737b..6d16d58 100644 (file)
@@ -1514,7 +1514,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 358541c..d6c9b55 100644 (file)
@@ -677,7 +677,7 @@ unserialize(&quot;&quot;&quot;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2f0189f..c61d2eb 100644 (file)
@@ -637,7 +637,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4c380ef..90898c6 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a6b3d6c..ddad24f 100644 (file)
@@ -259,7 +259,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a1f67c4..5518013 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 92fdeaa..0d83023 100644 (file)
@@ -270,7 +270,7 @@ Tests for different Element class lookup mechanisms.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c97e1fb..e09f4d8 100644 (file)
@@ -1270,7 +1270,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 63ea058..db5bb44 100644 (file)
@@ -601,7 +601,7 @@ Test cases for different Element class lookup mechanisms.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 61a2ce2..0165174 100644 (file)
@@ -495,7 +495,7 @@ Basic tests for element proxy behaviour.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e1d2828..ba6c11b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f5217b8..f1bd3cb 100644 (file)
@@ -212,7 +212,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b4634f2..886822b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7789108..c680f58 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3077018..68da69a 100644 (file)
@@ -334,7 +334,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b7a4b3b..4b535ee 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index febbd7d..580df71 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a58b326..af61e34 100644 (file)
@@ -224,7 +224,7 @@ Test cases related to DTD parsing and validation
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 896d6a9..b63d05f 100644 (file)
@@ -1236,7 +1236,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 14c0e6e..95b7654 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e725ac9..069f451 100644 (file)
@@ -228,7 +228,7 @@ Tests for the ElementPath implementation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9b3a346..29cf506 100644 (file)
@@ -634,7 +634,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3da430..a8607ac 100644 (file)
@@ -450,7 +450,7 @@ Originally copied from 'selftest.py'.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 093d344..59f048a 100644 (file)
@@ -278,7 +278,7 @@ for IO related test cases.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fe7f3a2..a8ac319 100644 (file)
@@ -11795,7 +11795,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f61fd1..906ed79 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d145a3a..ef83a93 100644 (file)
@@ -373,7 +373,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0e28cb2..1a2fe3a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 588c416..f2a06e7 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e5ed6c2..3e37336 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2747c33..ca1d896 100644 (file)
@@ -495,7 +495,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a5f5d7..e183405 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02b6ecf..80d36b9 100644 (file)
@@ -333,7 +333,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3b74c22..7dd60b3 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 365ffbf..19f0ebe 100644 (file)
@@ -292,7 +292,7 @@ test_elementtree</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e12e274..f0ca23b 100644 (file)
@@ -12560,7 +12560,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d8f5c33..2fa25d2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d8572fb..7ae77fe 100644 (file)
@@ -399,7 +399,7 @@ reset the logging setup ...</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5630884..324d1b1 100644 (file)
@@ -4597,7 +4597,7 @@ Tests only for etree, not ElementTree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a9d6bab..127bdb7 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f420a8f..9bfd9a5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9c608cc..2b6bcd2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a685844..1daf107 100644 (file)
@@ -439,7 +439,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 21e0247..1852b02 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6f10975..a82be0e 100644 (file)
@@ -194,7 +194,7 @@ Test cases related to direct loading of external libxml2 documents
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 78959b1..f2cbc80 100644 (file)
@@ -277,7 +277,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 49662c8..5782442 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9a08bf3..56a1775 100644 (file)
@@ -233,7 +233,7 @@ HTML parser test cases for etree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c89b121..dd10824 100644 (file)
@@ -2013,7 +2013,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ba8cc21..0b0b604 100644 (file)
@@ -1289,7 +1289,7 @@ h1&gt;&lt;/body&gt;&lt;/html&gt;'"><code class="variable-quote">u'</code><code c
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7d1a925..93a6447 100644 (file)
@@ -224,7 +224,7 @@ Web IO test cases that need Python 2.5+ (wsgiref)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fcb5373..6e85898 100644 (file)
@@ -463,7 +463,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ae3e55a..6fc675f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e8124c8..ffe51dd 100644 (file)
@@ -266,7 +266,7 @@ Tests for the incremental XML serialisation API.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index db3e05c..b9f4b0f 100644 (file)
@@ -1370,7 +1370,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 74e126c..483a986 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8223cd6..e20fb68 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e5b2e2..0b5d79b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e3a9572..3210e42 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 455e7fa..8429e7a 100644 (file)
@@ -242,7 +242,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a06291..51b7df1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f91d8c4..294892e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dc5a49c..f0488cb 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7425188..00680ae 100644 (file)
@@ -239,7 +239,7 @@ IO test cases that apply to both etree and ElementTree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b3633e..5a847d4 100644 (file)
@@ -1167,7 +1167,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 91f02ad..9f2b5dd 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 57325c7..20cfe95 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f1e41f0..4dde892 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d80d722..520bbbd 100644 (file)
@@ -224,7 +224,7 @@ Test cases related to ISO-Schematron parsing and validation
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02cbc84..4724b41 100644 (file)
@@ -1659,7 +1659,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cc645a7..b334591 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0119eb8..f2e646d 100644 (file)
@@ -225,7 +225,7 @@ namespace registry mechanism
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0ea024..d7af64b 100644 (file)
@@ -614,7 +614,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 055237a..cce7f12 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0e4ebef..d9d5996 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5b1570e..37799fd 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3870ffa..2f1abe4 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8242d49..58c901e 100644 (file)
@@ -275,7 +275,7 @@ Tests specific to the lxml.objectify API
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="v"></a><span class="summary-name">v</span> = <code title="'NMTOKEN'"><code class="variable-quote">'</code><code class="variable-string">NMTOKEN</code><code class="variable-quote">'</code></code>
+        <a name="v"></a><span class="summary-name">v</span> = <code title="'double'"><code class="variable-quote">'</code><code class="variable-string">double</code><code class="variable-quote">'</code></code>
     </td>
   </tr>
 </table>
@@ -542,7 +542,7 @@ Tests specific to the lxml.objectify API
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d7b8c7c..6b183ff 100644 (file)
@@ -5958,7 +5958,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 394ea12..00b8ef4 100644 (file)
@@ -3634,7 +3634,7 @@ Test cases for lxml.objectify
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f4950a..37f37b3 100644 (file)
@@ -266,7 +266,7 @@ Tests specific to the Python based class lookup.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5cd87ed..0b08e82 100644 (file)
@@ -903,7 +903,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aae5e0d..f33fb35 100644 (file)
@@ -871,7 +871,7 @@ Test cases for the lxml.pyclasslookup class lookup mechanism.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f67cb9b..8a8438f 100644 (file)
@@ -239,7 +239,7 @@ Test cases related to RelaxNG parsing and validation
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 53f561b..0887edb 100644 (file)
@@ -718,7 +718,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5a3b6c..a61e7f0 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 89975e0..ea298b1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 115b17f..d82359d 100644 (file)
@@ -224,7 +224,7 @@ Test cases related to SAX I/O
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0a09693..4b8d3f5 100644 (file)
@@ -659,7 +659,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c7d3105..ccf635a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0aafb07..d1a2a67 100644 (file)
@@ -224,7 +224,7 @@ Test cases related to Schematron parsing and validation
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 155ab99..d77c6d4 100644 (file)
@@ -354,7 +354,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 66309a6..74daa78 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index daaafcf..b6809ee 100644 (file)
@@ -233,7 +233,7 @@ Tests for thread usage in lxml.etree.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce2708a..5abc3e1 100644 (file)
@@ -1395,7 +1395,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e697331..d133e52 100644 (file)
@@ -522,7 +522,7 @@ Threading tests based on a thread worker pipeline.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1f1dfec..c08f788 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">element</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndExtendWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">element</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndExtendWorker.handle">source&nbsp;code</a></span>&nbsp;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 67964f4..c3b099c 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">element</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndInjectWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">element</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseAndInjectWorker.handle">source&nbsp;code</a></span>&nbsp;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9926407..abbc5a1 100644 (file)
         <tr>
           <td><span class="summary-sig"><a href="lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle" class="summary-sig-name">handle</a>(<span class="summary-sig-arg">self</span>,
         <span class="summary-sig-arg">xml</span>,
-        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseWorker.handle">source&nbsp;code</a></span>
             
   <tr valign="top"><td>
   <h3 class="epydoc"><span class="sig"><span class="sig-name">handle</span>(<span class="sig-arg">self</span>,
         <span class="sig-arg">xml</span>,
-        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6d7df361d0&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f867ef571d0&gt;</span>)</span>
   </h3>
   </td><td align="right" valign="top"
     ><span class="codelink"><a href="lxml.tests.test_threading-pysrc.html#ThreadPipelineTestCase.ParseWorker.handle">source&nbsp;code</a></span>&nbsp;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3fb8152..10a50f3 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 294b706..0a7e3d9 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 38580c0..e6a251d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 91bde1f..474fb2c 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 54b900c..f2bfe87 100644 (file)
@@ -339,7 +339,7 @@ from the args and kwargs arguments, respectively.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a01fd3a..9d1dca1 100644 (file)
@@ -595,7 +595,7 @@ Threading tests
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0c6c85c..6d14af5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 35b265a..39a11ef 100644 (file)
@@ -691,7 +691,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 086b62c..a6d99e4 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5231ddb..2f0a406 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index eb7d2ab..fa70e41 100644 (file)
@@ -231,7 +231,7 @@ Test cases related to XML Schema parsing and validation
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ab34e13..2091476 100644 (file)
@@ -1416,7 +1416,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a9f8439..16116df 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cbaf244..05bfc97 100644 (file)
@@ -285,7 +285,7 @@ opaque context object.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d76fb0..39aee90 100644 (file)
@@ -711,7 +711,7 @@ it wasn't bogus.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e1f570c..f65846b 100644 (file)
@@ -525,7 +525,7 @@ Test cases related to XPath evaluation and the XPath class
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4d8956..5cac4bd 100644 (file)
@@ -2000,7 +2000,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0495524..0c68dd2 100644 (file)
@@ -357,7 +357,7 @@ Tests for the ETXPath class
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 97c47c4..4337b1e 100644 (file)
@@ -405,7 +405,7 @@ Tests for the XPath class
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0e66ae..68db959 100644 (file)
@@ -407,7 +407,7 @@ Tests for the EXSLT support in XPath (requires libxslt 1.1.25+)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 215e022..b06f7c0 100644 (file)
@@ -1029,7 +1029,7 @@ XPath tests etree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9620b14..d1644d8 100644 (file)
@@ -280,7 +280,7 @@ Test cases related to XSLT processing
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a97f30..3a0a47f 100644 (file)
@@ -4500,7 +4500,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 01a843f..9b114c3 100644 (file)
@@ -501,7 +501,7 @@ EXSLT tests
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4655e62..66f52aa 100644 (file)
@@ -581,7 +581,7 @@ Tests for extension elements in XSLT.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f2279c..68d6eda 100644 (file)
@@ -405,7 +405,7 @@ Tests for XPath extension functions in XSLT.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d99f6fd..16b1801 100644 (file)
@@ -1297,7 +1297,7 @@ XSLT tests etree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 554f4dd..80abec1 100644 (file)
@@ -380,7 +380,7 @@ XSLT tests for etree under Python 3
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d39b31d..69dfb60 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4a32093..f8097c6 100644 (file)
@@ -113,7 +113,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dc96756..79f323d 100644 (file)
@@ -364,7 +364,7 @@ contains some hooks for decoding encoded and multipart messages.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 597130a..fe8eca5 100644 (file)
@@ -160,7 +160,7 @@ namespace registry mechanism</em>    </li>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6fddc5e..88dfe6e 100644 (file)
@@ -1629,7 +1629,7 @@ arguments start and end are interpreted as in slice notation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3bf8f4f..f74ffde 100644 (file)
@@ -784,7 +784,7 @@ hash(x)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 01fa3c4..f8b2d1d 100644 (file)
@@ -3174,7 +3174,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 59b94c9..21da863 100644 (file)
@@ -730,7 +730,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9e39339..83011eb 100644 (file)
@@ -424,7 +424,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1382206..49477aa 100644 (file)
@@ -193,7 +193,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bcb2774..174cad1 100644 (file)
@@ -325,7 +325,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f25dd0e..358fe3a 100644 (file)
@@ -310,7 +310,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 94391d7..b115baf 100644 (file)
@@ -476,7 +476,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0730d3..e92ebbb 100644 (file)
@@ -264,7 +264,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fe0417b..c85672c 100644 (file)
@@ -242,7 +242,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Wed Mar 21 20:38:29 2018
+    on Fri Jun 22 18:59:52 2018
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a3dbca..748806c 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="how-to-build-lxml-from-source">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">How to build lxml from source</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">How to build lxml from source</h1>
 
 <p>To build lxml from source, you need libxml2 and libxslt properly
 installed, <em>including the header files</em>.  These are likely shipped in
@@ -75,10 +75,15 @@ developer version using:</p>
 <pre class="literal-block">
 hg clone git+ssh://git@github.com/lxml/lxml.git lxml
 </pre>
+<p>Or, using git:</p>
+<pre class="literal-block">
+git clone ssh://git@github.com/lxml/lxml.git lxml
+</pre>
 <p>This will create a directory <tt class="docutils literal">lxml</tt> and download the source into it,
 including the complete development history.  Don't be afraid, the
-download is fairly quick.  You can also browse the <a class="reference external" href="https://github.com/lxml/lxml">lxml repository</a>
-through the web.</p>
+repository download is fairly quick.  You can also browse the
+<a class="reference external" href="https://github.com/lxml/lxml">lxml repository</a> through the web or download a ZIP archive with the
+<a class="reference external" href="https://github.com/lxml/lxml/archive/master.zip">latest master branch</a>.</p>
 </div>
 <div class="section" id="building-the-sources">
 <h1>Building the sources</h1>
@@ -303,7 +308,7 @@ installed using <tt class="docutils literal">dpkg <span class="pre">-i</span></t
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 7e3a5ac..8695b61 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="the-public-c-api-of-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">The public C-API of lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">The public C-API of lxml.etree</h1>
 
 <p>As of version 1.1, lxml.etree provides a public C-API.  This allows external
 C extensions to efficiently access public functions and classes of lxml,
@@ -127,7 +127,7 @@ includes may not be sufficient.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
similarity index 99%
rename from doc/html/changes-4.2.1.html
rename to doc/html/changes-4.2.2.html
index f564f6d..f1014b3 100644 (file)
 <h1 class="title">lxml changelog</h1>
 
 <div class="section" id="id1">
-<h1>4.2.1 (2018-03-21)</h1>
+<h1>4.2.2 (2018-06-22)</h1>
 <div class="section" id="bugs-fixed">
 <h2>Bugs fixed</h2>
 <ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/266">GH#266</a>: Fix sporadic crash during GC when parse-time schema validation is used
+and the parser participates in a reference cycle.
+Original patch by Julien Greard.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml no longer links against zlib as a shared library, only on static builds.
+Patch by Nehal J Wani.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id2">
+<h1>4.2.1 (2018-03-21)</h1>
+<div class="section" id="id3">
+<h2>Bugs fixed</h2>
+<ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1755825">LP#1755825</a>: <tt class="docutils literal">iterwalk()</tt> failed to return the 'start' event for the initial
 element if a tag selector is used.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1756314">LP#1756314</a>: Failure to import 4.2.0 into PyPy due to a missing library symbol.</li>
@@ -23,7 +36,7 @@ element if a tag selector is used.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id2">
+<div class="section" id="id4">
 <h1>4.2.0 (2018-03-13)</h1>
 <div class="section" id="features-added">
 <h2>Features added</h2>
@@ -38,7 +51,7 @@ first one).  If no options are present (not standard-compliant)
 Patch by stranac.</li>
 </ul>
 </div>
-<div class="section" id="id3">
+<div class="section" id="id5">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Some XSLT messages were not captured by the transform error log.</li>
@@ -50,15 +63,15 @@ validation.</li>
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id4">
+<div class="section" id="id6">
 <h1>4.1.1 (2017-11-04)</h1>
 <ul class="simple">
 <li>Rebuild with Cython 0.27.3 to improve support for Py3.7.</li>
 </ul>
 </div>
-<div class="section" id="id5">
+<div class="section" id="id7">
 <h1>4.1.0 (2017-10-13)</h1>
-<div class="section" id="id6">
+<div class="section" id="id8">
 <h2>Features added</h2>
 <ul class="simple">
 <li>ElementPath supports text predicates for current node, like &quot;[.='text']&quot;.</li>
@@ -70,7 +83,7 @@ This should have a beneficial impact on the overall performance by providing
 a tighter compiler integration between lxml and libxml2/libxslt.</li>
 </ul>
 </div>
-<div class="section" id="id7">
+<div class="section" id="id9">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1722776">LP#1722776</a>: Requesting non-Element objects like comments from a document with
@@ -78,9 +91,9 @@ a tighter compiler integration between lxml and libxml2/libxslt.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id8">
+<div class="section" id="id10">
 <h1>4.0.0 (2017-09-17)</h1>
-<div class="section" id="id9">
+<div class="section" id="id11">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The ElementPath implementation is now compiled using Cython,
@@ -96,7 +109,7 @@ allow relative resource lookups.</li>
 output data into a file according to the <tt class="docutils literal">&lt;xsl:output&gt;</tt> configuration.</li>
 </ul>
 </div>
-<div class="section" id="id10">
+<div class="section" id="id12">
 <h2>Bugs fixed</h2>
 <ul>
 <li><p class="first"><a class="reference external" href="https://github.com/lxml/lxml/issues/251">GH#251</a>: HTML comments were handled incorrectly by the soupparser.
@@ -129,7 +142,7 @@ to output end tags even after writing failed with an exception.</p>
 </li>
 </ul>
 </div>
-<div class="section" id="id11">
+<div class="section" id="id13">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The main module source files were renamed from <tt class="docutils literal"><span class="pre">lxml.*.pyx</span></tt> to plain
@@ -140,9 +153,9 @@ be worth validating that third-party code does not notice this change.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id12">
+<div class="section" id="id14">
 <h1>3.8.0 (2017-06-03)</h1>
-<div class="section" id="id13">
+<div class="section" id="id15">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">ElementTree.write()</tt> has a new option <tt class="docutils literal">doctype</tt> that writes out a
@@ -158,7 +171,7 @@ responsible for the error. Patch by Bob Kline.</li>
 a default namespace when passing a None prefix.</li>
 </ul>
 </div>
-<div class="section" id="id14">
+<div class="section" id="id16">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/238">GH#238</a>: Character escapes were not hex-encoded in the <tt class="docutils literal">xmlfile</tt> serialiser.
@@ -172,7 +185,7 @@ multi-threaded XSLT processing.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
 </ul>
 </div>
-<div class="section" id="id16">
+<div class="section" id="id18">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The previously undocumented <tt class="docutils literal">docstring</tt> option in <tt class="docutils literal">ElementTree.write()</tt>
@@ -180,9 +193,9 @@ produces a deprecation warning and will eventually be removed.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id17">
+<div class="section" id="id19">
 <h1>3.7.4 (2017-??-??)</h1>
-<div class="section" id="id18">
+<div class="section" id="id20">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: revert previous fix for XSLT error logging as it breaks
@@ -191,9 +204,9 @@ multi-threaded XSLT processing.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id22">
+<div class="section" id="id24">
 <h1>3.7.3 (2017-02-18)</h1>
-<div class="section" id="id23">
+<div class="section" id="id25">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a> was ineffective in Python 3.</li>
@@ -202,13 +215,13 @@ Patch by Jakub Wilk.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id24">
+<div class="section" id="id26">
 <h1>3.7.2 (2017-01-08)</h1>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/220">GH#220</a>: <tt class="docutils literal">xmlfile</tt> allows switching output methods at an element level.
 Patch by Burak Arslan.</li>
 </ul>
-<div class="section" id="id26">
+<div class="section" id="id28">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Work around installation problems in recent Python 2.7 versions
@@ -220,16 +233,16 @@ script/style tags.  Patch by Burak Arslan.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id28">
+<div class="section" id="id30">
 <h1>3.7.1 (2016-12-23)</h1>
 <ul class="simple">
 <li>No source changes, issued only to solve problems with the
 binary packages released for 3.7.0.</li>
 </ul>
 </div>
-<div class="section" id="id29">
+<div class="section" id="id31">
 <h1>3.7.0 (2016-12-10)</h1>
-<div class="section" id="id30">
+<div class="section" id="id32">
 <h2>Features added</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/217">GH#217</a>: <tt class="docutils literal">XMLSyntaxError</tt> now behaves more like its <tt class="docutils literal">SyntaxError</tt>
@@ -247,14 +260,14 @@ serialises like <tt class="docutils literal">&lt;div <span class="pre">attrname&
 marked as <tt class="docutils literal">disabled</tt> in HTML.  Patch by Kristian Klemon.</li>
 </ul>
 </div>
-<div class="section" id="id31">
+<div class="section" id="id33">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/206">GH#206</a>: File name and line number were missing from XSLT error messages.
 Patch by Marcus Brinkmann.</li>
 </ul>
 </div>
-<div class="section" id="id32">
+<div class="section" id="id34">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Log entries no longer allow anything but plain string objects as message text
@@ -263,27 +276,27 @@ and file name.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id33">
+<div class="section" id="id35">
 <h1>3.6.4 (2016-08-20)</h1>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/204">GH#204</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614693">LP#1614693</a>: build fix for MacOS-X.</li>
 </ul>
 </div>
-<div class="section" id="id34">
+<div class="section" id="id36">
 <h1>3.6.3 (2016-08-18)</h1>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: change linker flags to build multi-linux wheels</li>
 </ul>
 </div>
-<div class="section" id="id35">
+<div class="section" id="id37">
 <h1>3.6.2 (2016-08-18)</h1>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1614603">LP#1614603</a>: release without source changes to provide cleanly built Linux wheels</li>
 </ul>
 </div>
-<div class="section" id="id37">
+<div class="section" id="id39">
 <h1>3.6.1 (2016-07-24)</h1>
-<div class="section" id="id38">
+<div class="section" id="id40">
 <h2>Features added</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/180">GH#180</a>: Separate option <tt class="docutils literal">inline_style</tt> for Cleaner that only removes <tt class="docutils literal">style</tt>
@@ -291,7 +304,7 @@ attributes instead of all styles.  Patch by Christian Pedersen.</li>
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/196">GH#196</a>: Windows build support for Python 3.5.  Contribution by Maximilian Hils.</li>
 </ul>
 </div>
-<div class="section" id="id39">
+<div class="section" id="id41">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/199">GH#199</a>: Exclude <tt class="docutils literal">file</tt> fields from <tt class="docutils literal">FormElement.form_values</tt> (as browsers do).
@@ -304,9 +317,9 @@ Patch by Holger Joukl.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id41">
+<div class="section" id="id43">
 <h1>3.6.0 (2016-03-17)</h1>
-<div class="section" id="id42">
+<div class="section" id="id44">
 <h2>Features added</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/187">GH#187</a>: Now supports (only) version 5.x and later of PyPy.
@@ -315,7 +328,7 @@ Patch by Armin Rigo.</li>
 is installed.  Patch by Dirkjan Ochtman.</li>
 </ul>
 </div>
-<div class="section" id="id43">
+<div class="section" id="id45">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/189">GH#189</a>: Static builds honour FTP proxy configurations when downloading
@@ -327,9 +340,9 @@ Patch by Petr Demin.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id44">
+<div class="section" id="id46">
 <h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="id45">
+<div class="section" id="id47">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Unicode string results failed XPath queries in PyPy.</li>
@@ -341,7 +354,7 @@ and continued parsing instead.</li>
 </div>
 <div class="section" id="b1-2015-09-18">
 <h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="id46">
+<div class="section" id="id48">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">keep_ns_prefixes</tt>
@@ -373,7 +386,7 @@ Patch by Olli Pottonen.</li>
 of version 3 if available.</li>
 </ul>
 </div>
-<div class="section" id="id47">
+<div class="section" id="id49">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory errors that occur during tree adaptations (e.g. moving subtrees
@@ -400,9 +413,9 @@ with ElementPath to avoid hiding bugs in user code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id48">
+<div class="section" id="id50">
 <h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id49">
+<div class="section" id="id51">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
@@ -410,9 +423,9 @@ Python 3.4+ was removed again.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id50">
+<div class="section" id="id52">
 <h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id51">
+<div class="section" id="id53">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
@@ -425,9 +438,9 @@ double quotes.  Patch by Olli Pottonen.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id52">
+<div class="section" id="id54">
 <h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id53">
+<div class="section" id="id55">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415907">LP#1415907</a>: Crash when creating an XMLSchema from a non-root element
@@ -439,25 +452,25 @@ with pseudo-attributes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id54">
+<div class="section" id="id56">
 <h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id55">
+<div class="section" id="id57">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New <tt class="docutils literal">htmlfile</tt> HTML generator to accompany the incremental <tt class="docutils literal">xmlfile</tt>
 serialisation API.  Patch by Burak Arslan.</li>
 </ul>
 </div>
-<div class="section" id="id56">
+<div class="section" id="id58">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.sax.ElementTreeContentHandler</tt> did not initialise its superclass.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id57">
+<div class="section" id="id59">
 <h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id58">
+<div class="section" id="id60">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
@@ -482,10 +495,10 @@ if it had opened it internally.</li>
 <li>Allow &quot;bytearray&quot; type for ASCII text input.</li>
 </ul>
 </div>
-<div class="section" id="id59">
+<div class="section" id="id61">
 <h2>Bugs fixed</h2>
 </div>
-<div class="section" id="id60">
+<div class="section" id="id62">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/400588">LP#400588</a>: decoding errors have become hard errors even in recovery mode.
@@ -499,9 +512,9 @@ use lxml 3.3.x with older versions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id61">
+<div class="section" id="id63">
 <h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id62">
+<div class="section" id="id64">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Prevent tree cycle creation when adding Elements as siblings.</li>
@@ -511,9 +524,9 @@ extension functions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id63">
+<div class="section" id="id65">
 <h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id64">
+<div class="section" id="id66">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning could fail to strip javascript links that mix control
@@ -521,34 +534,34 @@ characters into the link scheme.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id65">
+<div class="section" id="id67">
 <h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id66">
+<div class="section" id="id68">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Source line numbers above 65535 are available on Elements when
 using libxml2 2.9 or later.</li>
 </ul>
 </div>
-<div class="section" id="id67">
+<div class="section" id="id69">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.fragment_fromstring()</tt> failed for bytes input in Py3.</li>
 </ul>
 </div>
-<div class="section" id="id68">
+<div class="section" id="id70">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id69">
+<div class="section" id="id71">
 <h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id70">
+<div class="section" id="id72">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1287118">LP#1287118</a>: Crash when using Element subtypes with <tt class="docutils literal">__slots__</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id71">
+<div class="section" id="id73">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The internal classes <tt class="docutils literal">_LogEntry</tt> and <tt class="docutils literal">_Attrib</tt> can no longer be
@@ -556,9 +569,9 @@ subclassed from Python code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id72">
+<div class="section" id="id74">
 <h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id73">
+<div class="section" id="id75">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The properties <tt class="docutils literal">resolvers</tt> and <tt class="docutils literal">version</tt>, as well as the methods
@@ -579,12 +592,12 @@ provide the same interface as that returned for Elements.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id74">
+<div class="section" id="id76">
 <h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id75">
+<div class="section" id="id77">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id76">
+<div class="section" id="id78">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1014290">LP#1014290</a>: HTML documents parsed with <tt class="docutils literal">parser.feed()</tt> failed to find
@@ -596,36 +609,36 @@ header file.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
 </ul>
 </div>
-<div class="section" id="id77">
+<div class="section" id="id79">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id78">
+<div class="section" id="id80">
 <h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id79">
+<div class="section" id="id81">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id80">
+<div class="section" id="id82">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The heuristic that distinguishes file paths from URLs was tightened
 to produce less false negatives.</li>
 </ul>
 </div>
-<div class="section" id="id81">
+<div class="section" id="id83">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="beta5-2014-01-18">
 <h1>3.3.0beta5 (2014-01-18)</h1>
-<div class="section" id="id82">
+<div class="section" id="id84">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The PEP 393 unicode parsing support gained a fallback for wchar strings
 which might still be somewhat common on Windows systems.</li>
 </ul>
 </div>
-<div class="section" id="id83">
+<div class="section" id="id85">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Several error handling problems were fixed throughout the code base that
@@ -638,7 +651,7 @@ propagate exceptions (its return type is <tt class="docutils literal">void</tt>)
 parsing the string character by character.</li>
 </ul>
 </div>
-<div class="section" id="id84">
+<div class="section" id="id86">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Document cleanup code was simplified using the new GC features in
@@ -648,10 +661,10 @@ Cython 0.20.</li>
 </div>
 <div class="section" id="beta4-2014-01-12">
 <h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id85">
+<div class="section" id="id87">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id86">
+<div class="section" id="id88">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The (empty) value returned by the <tt class="docutils literal">attrib</tt> property of Entity and Comment
@@ -664,7 +677,7 @@ and keyword arguments could modify the mapping passed as <tt class="docutils lit
 the docinfo property) lost their attribute declarations.</li>
 </ul>
 </div>
-<div class="section" id="id87">
+<div class="section" id="id89">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
@@ -674,39 +687,39 @@ Python 3.4.</li>
 </div>
 <div class="section" id="beta3-2014-01-02">
 <h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id88">
+<div class="section" id="id90">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Unicode string parsing was optimised for Python 3.3 (PEP 393).</li>
 </ul>
 </div>
-<div class="section" id="id89">
+<div class="section" id="id91">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML parsing of Unicode strings could misdecode the input on some platforms.</li>
 <li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
 </ul>
 </div>
-<div class="section" id="id90">
+<div class="section" id="id92">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="beta2-2013-12-20">
 <h1>3.3.0beta2 (2013-12-20)</h1>
-<div class="section" id="id91">
+<div class="section" id="id93">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">iterparse()</tt> supports the <tt class="docutils literal">recover</tt> option.</li>
 </ul>
 </div>
-<div class="section" id="id92">
+<div class="section" id="id94">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in <tt class="docutils literal">iterparse()</tt> for HTML parsing.</li>
 <li>Crash in target parsing with attributes.</li>
 </ul>
 </div>
-<div class="section" id="id93">
+<div class="section" id="id95">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The safety check in the read-only tree implementation (e.g. used by
@@ -719,7 +732,7 @@ behaviour.</li>
 </div>
 <div class="section" id="beta1-2013-12-12">
 <h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id94">
+<div class="section" id="id96">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New option <tt class="docutils literal">handle_failures</tt> in <tt class="docutils literal">make_links_absolute()</tt> and
@@ -731,7 +744,7 @@ incremental parsing, as implemented for ElementTree in Python 3.4.</li>
 (<tt class="docutils literal">html=True</tt>).</li>
 </ul>
 </div>
-<div class="section" id="id95">
+<div class="section" id="id97">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1255132">LP#1255132</a>: crash when trying to run validation over non-Element (e.g.
@@ -753,7 +766,7 @@ The textarea used to be cleared before the new content was set,
 which removed the name attribute.</li>
 </ul>
 </div>
-<div class="section" id="id96">
+<div class="section" id="id98">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some basic API classes use freelists internally for faster
@@ -764,12 +777,12 @@ classes internally instead of being a parser itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id97">
+<div class="section" id="id99">
 <h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id98">
+<div class="section" id="id100">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id99">
+<div class="section" id="id101">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
@@ -778,16 +791,16 @@ classes internally instead of being a parser itself.</li>
 comment or PI).</li>
 </ul>
 </div>
-<div class="section" id="id101">
+<div class="section" id="id103">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id102">
+<div class="section" id="id104">
 <h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id103">
+<div class="section" id="id105">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id104">
+<div class="section" id="id106">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak when creating an XPath evaluator in a thread.</li>
@@ -798,32 +811,32 @@ to one of its own descendants.</li>
 <li>Compressed plain-text serialisation to file-like objects was broken.</li>
 </ul>
 </div>
-<div class="section" id="id107">
+<div class="section" id="id109">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id108">
+<div class="section" id="id110">
 <h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id109">
+<div class="section" id="id111">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fix support for Python 2.4 which was lost in 3.2.2.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id110">
+<div class="section" id="id112">
 <h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id111">
+<div class="section" id="id113">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id112">
+<div class="section" id="id114">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185701">LP#1185701</a>: spurious XMLSyntaxError after finishing iterparse().</li>
 <li>Crash in lxml.objectify during xsi annotation.</li>
 </ul>
 </div>
-<div class="section" id="id113">
+<div class="section" id="id115">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Return values of user provided element class lookup methods are now
@@ -832,9 +845,9 @@ API class mismatches.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id114">
+<div class="section" id="id116">
 <h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id115">
+<div class="section" id="id117">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The methods <tt class="docutils literal">apply_templates()</tt> and <tt class="docutils literal">process_children()</tt> of XSLT
@@ -843,7 +856,7 @@ and <tt class="docutils literal">remove_blank_text</tt> that discard either all
 strings from the result list.</li>
 </ul>
 </div>
-<div class="section" id="id116">
+<div class="section" id="id118">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When moving Elements to another tree, the namespace cleanup mechanism
@@ -856,16 +869,16 @@ to a crash.</li>
 crashed.</li>
 </ul>
 </div>
-<div class="section" id="id117">
+<div class="section" id="id119">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id118">
+<div class="section" id="id120">
 <h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id119">
+<div class="section" id="id121">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id120">
+<div class="section" id="id122">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/690319">LP#690319</a>: Leading whitespace could change the behaviour of the string
@@ -884,16 +897,16 @@ of overwriting the current value.</li>
 allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
 </ul>
 </div>
-<div class="section" id="id121">
+<div class="section" id="id123">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id122">
+<div class="section" id="id124">
 <h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id123">
+<div class="section" id="id125">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id124">
+<div class="section" id="id126">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1136509">LP#1136509</a>: Passing attributes through the namespace-unaware API of
@@ -905,16 +918,16 @@ the result tree to a Unicode string.</li>
 by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id125">
+<div class="section" id="id127">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id126">
+<div class="section" id="id128">
 <h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id127">
+<div class="section" id="id129">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id128">
+<div class="section" id="id130">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1160386">LP#1160386</a>: Write access to <tt class="docutils literal">lxml.html.FormElement.fields</tt> raised
@@ -922,7 +935,7 @@ an AttributeError in Py3.</li>
 <li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
 </ul>
 </div>
-<div class="section" id="id129">
+<div class="section" id="id131">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
@@ -930,16 +943,16 @@ from the module dict.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id130">
+<div class="section" id="id132">
 <h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id131">
+<div class="section" id="id133">
 <h2>Features added</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/89">GH#89</a>: lxml.html.clean allows overriding the set of attributes that it
 considers 'safe'.  Patch by Francis Devereux.</li>
 </ul>
 </div>
-<div class="section" id="id132">
+<div class="section" id="id134">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1104370">LP#1104370</a>: <tt class="docutils literal">copy.copy(el.attrib)</tt> raised an exception.  It now returns
@@ -952,13 +965,13 @@ in for the current run.</li>
 without threading support.  Patch by Ulrich Seidl.</li>
 </ul>
 </div>
-<div class="section" id="id133">
+<div class="section" id="id135">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="beta1-2012-12-21">
 <h1>3.1beta1 (2012-12-21)</h1>
-<div class="section" id="id134">
+<div class="section" id="id136">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New build-time option <tt class="docutils literal"><span class="pre">--with-unicode-strings</span></tt> for Python 2 that
@@ -969,7 +982,7 @@ instead of byte strings for plain ASCII content.</li>
 tags with non-identifier names without having to resort to getattr().</li>
 </ul>
 </div>
-<div class="section" id="id135">
+<div class="section" id="id137">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When starting from a non-namespaced element in lxml.objectify, searching
@@ -981,7 +994,7 @@ the search to non-namespaced children.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
 </ul>
 </div>
-<div class="section" id="id136">
+<div class="section" id="id138">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
@@ -991,27 +1004,27 @@ many children.  Patch by Anders Hammarquist.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id137">
+<div class="section" id="id139">
 <h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id138">
+<div class="section" id="id140">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id139">
+<div class="section" id="id141">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fix crash during interpreter shutdown by switching to Cython 0.17.3 for building.</li>
 </ul>
 </div>
-<div class="section" id="id140">
+<div class="section" id="id142">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id141">
+<div class="section" id="id143">
 <h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id142">
+<div class="section" id="id144">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id143">
+<div class="section" id="id145">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065924">LP#1065924</a>: Element proxies could disappear during garbage collection
@@ -1020,16 +1033,16 @@ in PyPy without proper cleanup.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
 </ul>
 </div>
-<div class="section" id="id144">
+<div class="section" id="id146">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id145">
+<div class="section" id="id147">
 <h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id146">
+<div class="section" id="id148">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id147">
+<div class="section" id="id149">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>End-of-file handling was incorrect in iterparse() when reading from
@@ -1037,7 +1050,7 @@ a low-level C file stream and failed in libxml2 2.9.0 due to its
 improved consistency checks.</li>
 </ul>
 </div>
-<div class="section" id="id148">
+<div class="section" id="id150">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The build no longer uses Cython by default unless the generated C files
@@ -1050,21 +1063,21 @@ run special setup.py commands that do not actually run a build), pass
 </div>
 <div class="section" id="beta1-2012-09-26">
 <h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id149">
+<div class="section" id="id151">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Python level access to (optional) libxml2 memory debugging features
 to simplify debugging of memory leaks etc.</li>
 </ul>
 </div>
-<div class="section" id="id150">
+<div class="section" id="id152">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fix a memory leak in XPath by switching to Cython 0.17.1.</li>
 <li>Some tests were adapted to work with PyPy.</li>
 </ul>
 </div>
-<div class="section" id="id151">
+<div class="section" id="id153">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
@@ -1073,7 +1086,7 @@ to simplify debugging of memory leaks etc.</li>
 </div>
 <div class="section" id="alpha2-2012-08-23">
 <h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id152">
+<div class="section" id="id154">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal">.iter()</tt> method of elements now accepts <tt class="docutils literal">tag</tt> arguments like
@@ -1092,20 +1105,20 @@ and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutil
 to top-level during exclusive serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id153">
+<div class="section" id="id155">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
 failed to read the entire string.</li>
 </ul>
 </div>
-<div class="section" id="id154">
+<div class="section" id="id156">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="alpha1-2012-07-31">
 <h1>3.0alpha1 (2012-07-31)</h1>
-<div class="section" id="id155">
+<div class="section" id="id157">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Initial support for building in PyPy (through cpyext).</li>
@@ -1121,7 +1134,7 @@ argument supports passing a set of tags.  Tree nodes will be
 returned by the iterators if they match any of the tags.</li>
 </ul>
 </div>
-<div class="section" id="id156">
+<div class="section" id="id158">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods in <tt class="docutils literal">lxml.objectify</tt> no longer use XPath
@@ -1148,7 +1161,7 @@ constructor would fail with an exception, stating that the text
 cannot be modified.</li>
 </ul>
 </div>
-<div class="section" id="id157">
+<div class="section" id="id159">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code base was overhauled to properly use 'const' where the API
@@ -1197,44 +1210,44 @@ _XSLTResultTree, _XSLTProcessingInstruction</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id158">
+<div class="section" id="id160">
 <h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id159">
+<div class="section" id="id161">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id160">
+<div class="section" id="id162">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
 failed to read the entire string.</li>
 </ul>
 </div>
-<div class="section" id="id161">
+<div class="section" id="id163">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id162">
+<div class="section" id="id164">
 <h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id163">
+<div class="section" id="id165">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id164">
+<div class="section" id="id166">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when merging text nodes in <tt class="docutils literal">element.remove()</tt>.</li>
 <li>Crash in sax/target parser when reporting empty doctype.</li>
 </ul>
 </div>
-<div class="section" id="id165">
+<div class="section" id="id167">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id166">
+<div class="section" id="id168">
 <h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id167">
+<div class="section" id="id169">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id168">
+<div class="section" id="id170">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when building an nsmap (Element property) with empty
@@ -1244,20 +1257,20 @@ during threaded XSLT processing.</li>
 <li>XSLT stylesheet compilation could ignore compilation errors.</li>
 </ul>
 </div>
-<div class="section" id="id169">
+<div class="section" id="id171">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id170">
+<div class="section" id="id172">
 <h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id171">
+<div class="section" id="id173">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.tostring()</tt> gained new serialisation options
 <tt class="docutils literal">with_tail</tt> and <tt class="docutils literal">doctype</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id172">
+<div class="section" id="id174">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
@@ -1271,13 +1284,13 @@ Patch by Simon Sapin.</li>
 'img' tags without 'src' attribute.</li>
 </ul>
 </div>
-<div class="section" id="id173">
+<div class="section" id="id175">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id174">
+<div class="section" id="id176">
 <h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id175">
+<div class="section" id="id177">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
@@ -1289,7 +1302,7 @@ copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise
 of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
 </ul>
 </div>
-<div class="section" id="id176">
+<div class="section" id="id178">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed the &quot;descendant&quot; bug in cssselect a second time (after a first
@@ -1304,13 +1317,13 @@ a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the sa
 &quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
 </ul>
 </div>
-<div class="section" id="id177">
+<div class="section" id="id179">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id178">
+<div class="section" id="id180">
 <h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id179">
+<div class="section" id="id181">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New option <tt class="docutils literal">kill_tags</tt> in <tt class="docutils literal">lxml.html.clean</tt> to remove specific
@@ -1328,7 +1341,7 @@ closed after reading or not.  By default, the file will be closed,
 as the user is not expected to keep a reference to it.</li>
 </ul>
 </div>
-<div class="section" id="id180">
+<div class="section" id="id182">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning didn't remove 'data:' links.</li>
@@ -1356,7 +1369,7 @@ collected form values.</li>
 field properly selects them and unselects them.</li>
 </ul>
 </div>
-<div class="section" id="id181">
+<div class="section" id="id183">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Static builds can specify the download directory with the
@@ -1364,16 +1377,16 @@ field properly selects them and unselects them.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id182">
+<div class="section" id="id184">
 <h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id183">
+<div class="section" id="id185">
 <h2>Features added</h2>
 <ul class="simple">
 <li>When looking for children, <tt class="docutils literal">lxml.objectify</tt> takes '{}tag' as
 meaning an empty namespace, as opposed to the parent namespace.</li>
 </ul>
 </div>
-<div class="section" id="id184">
+<div class="section" id="id186">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When finished reading from a file-like object, the parser
@@ -1386,7 +1399,7 @@ in libxml2 2.7.8).</li>
 <li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id185">
+<div class="section" id="id187">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some public functions in the Cython-level C-API have more explicit
@@ -1396,10 +1409,10 @@ return types.</li>
 </div>
 <div class="section" id="beta1-2010-09-06">
 <h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id186">
+<div class="section" id="id188">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id187">
+<div class="section" id="id189">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1411,23 +1424,23 @@ documents that had attributes on replaced XInclude nodes.</li>
 use of os.tempnam.  It now takes an optional 'encoding' parameter.</li>
 </ul>
 </div>
-<div class="section" id="id188">
+<div class="section" id="id190">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="alpha2-2010-07-24">
 <h1>2.3alpha2 (2010-07-24)</h1>
-<div class="section" id="id189">
+<div class="section" id="id191">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id190">
+<div class="section" id="id192">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XSLT when generating text-only result documents with a
 stylesheet created in a different thread.</li>
 </ul>
 </div>
-<div class="section" id="id191">
+<div class="section" id="id193">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
@@ -1437,7 +1450,7 @@ stylesheet created in a different thread.</li>
 </div>
 <div class="section" id="alpha1-2010-06-19">
 <h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id192">
+<div class="section" id="id194">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Keyword argument <tt class="docutils literal">namespaces</tt> in <tt class="docutils literal">lxml.cssselect.CSSSelector()</tt>
@@ -1488,7 +1501,7 @@ the document on submit.</li>
 (compatible with ElementTree).</li>
 </ul>
 </div>
-<div class="section" id="id193">
+<div class="section" id="id195">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>API is hardened against invalid proxy instances to prevent crashes
@@ -1522,7 +1535,7 @@ parsing failed.  Now it is guaranteed that <tt class="docutils literal">.close()
 called after parsing, regardless of the outcome.</li>
 </ul>
 </div>
-<div class="section" id="id194">
+<div class="section" id="id196">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.1.2 and later.</li>
@@ -1535,9 +1548,9 @@ collector to clean up.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id195">
+<div class="section" id="id197">
 <h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id196">
+<div class="section" id="id198">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1546,9 +1559,9 @@ documents that had attributes on replaced XInclude nodes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id197">
+<div class="section" id="id199">
 <h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id198">
+<div class="section" id="id200">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XSLT when generating text-only result documents with a
@@ -1556,25 +1569,25 @@ stylesheet created in a different thread.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id199">
+<div class="section" id="id201">
 <h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id200">
+<div class="section" id="id202">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed several Python 3 regressions by building with Cython 0.11.3.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id201">
+<div class="section" id="id203">
 <h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id202">
+<div class="section" id="id204">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for running XSLT extension elements on the input root node
 (e.g. in a template matching on &quot;/&quot;).</li>
 </ul>
 </div>
-<div class="section" id="id203">
+<div class="section" id="id205">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XPath evaluation when reading smart strings from a document
@@ -1593,21 +1606,21 @@ an element.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id204">
+<div class="section" id="id206">
 <h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id205">
+<div class="section" id="id207">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Static build of libxml2/libxslt was broken.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id206">
+<div class="section" id="id208">
 <h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id207">
+<div class="section" id="id209">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id208">
+<div class="section" id="id210">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
@@ -1640,13 +1653,13 @@ namespaces when annotation is disabled.</li>
 <li>Diverting the error logging to Python's logging system was broken.</li>
 </ul>
 </div>
-<div class="section" id="id209">
+<div class="section" id="id211">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id210">
+<div class="section" id="id212">
 <h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id211">
+<div class="section" id="id213">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New helper functions <tt class="docutils literal">strip_attributes()</tt>, <tt class="docutils literal">strip_elements()</tt>,
@@ -1654,7 +1667,7 @@ namespaces when annotation is disabled.</li>
 from a subtree.</li>
 </ul>
 </div>
-<div class="section" id="id212">
+<div class="section" id="id214">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Namespace cleanup on subtree insertions could result in missing
@@ -1668,13 +1681,13 @@ BoolElement ({True, False, T, F, t, f} not any more), restoring lxml &lt;= 2.0
 behaviour.</li>
 </ul>
 </div>
-<div class="section" id="id213">
+<div class="section" id="id215">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id214">
+<div class="section" id="id216">
 <h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id215">
+<div class="section" id="id217">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Injecting default attributes into a document during XML Schema
@@ -1683,7 +1696,7 @@ validation (also at parse time).</li>
 restrictions imposed by libxml2 2.7.</li>
 </ul>
 </div>
-<div class="section" id="id216">
+<div class="section" id="id218">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The script for statically building libxml2 and libxslt didn't work
@@ -1692,13 +1705,13 @@ in Py3.</li>
 for parsing (which could lead to a crash before release 2.6.24).</li>
 </ul>
 </div>
-<div class="section" id="id217">
+<div class="section" id="id219">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id218">
+<div class="section" id="id220">
 <h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id219">
+<div class="section" id="id221">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
@@ -1706,7 +1719,7 @@ for parsing (which could lead to a crash before release 2.6.24).</li>
 on serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id220">
+<div class="section" id="id222">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing an XML Schema with external imports from a
@@ -1716,7 +1729,7 @@ filename.</li>
 </div>
 <div class="section" id="beta4-2009-02-27">
 <h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id221">
+<div class="section" id="id223">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support strings and instantiable Element classes as child arguments
@@ -1725,7 +1738,7 @@ to the constructor of custom Element classes.</li>
 objects.</li>
 </ul>
 </div>
-<div class="section" id="id222">
+<div class="section" id="id224">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Deep-copying an ElementTree copied neither its sibling PIs and
@@ -1740,7 +1753,7 @@ to a problem in Cython, not lxml itself.</li>
 was evaluated incorrectly.</li>
 </ul>
 </div>
-<div class="section" id="id223">
+<div class="section" id="id225">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.0.1.</li>
@@ -1751,14 +1764,14 @@ for Elements without text content.</li>
 </div>
 <div class="section" id="beta3-2009-02-17">
 <h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id224">
+<div class="section" id="id226">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">XSLT.strparam()</tt> class method to wrap quoted string parameters
 that require escaping.</li>
 </ul>
 </div>
-<div class="section" id="id225">
+<div class="section" id="id227">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in XPath evaluators.</li>
@@ -1770,7 +1783,7 @@ string failed.</li>
 <li>Minor fixes for Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id226">
+<div class="section" id="id228">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The global error log (which is copied into the exception log) is now
@@ -1781,7 +1794,7 @@ local to a thread, which fixes some race conditions.</li>
 </div>
 <div class="section" id="beta2-2009-01-25">
 <h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id227">
+<div class="section" id="id229">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1793,9 +1806,9 @@ problem in Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id228">
+<div class="section" id="id230">
 <h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id229">
+<div class="section" id="id231">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1806,39 +1819,39 @@ problem in Cython, not lxml itself.</li>
 </div>
 <div class="section" id="beta1-2008-12-12">
 <h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id230">
+<div class="section" id="id232">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Allow <tt class="docutils literal">lxml.html.diff.htmldiff</tt> to accept Element objects, not
 just HTML strings.</li>
 </ul>
 </div>
-<div class="section" id="id231">
+<div class="section" id="id233">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when using an XPath evaluator in multiple threads.</li>
 <li>Fixed missing whitespace before <tt class="docutils literal"><span class="pre">Link:...</span></tt> in <tt class="docutils literal">lxml.html.diff</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id232">
+<div class="section" id="id234">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Export <tt class="docutils literal">lxml.html.parse</tt>.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id233">
+<div class="section" id="id235">
 <h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id234">
+<div class="section" id="id236">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when using an XPath evaluator in multiple threads.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id235">
+<div class="section" id="id237">
 <h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id236">
+<div class="section" id="id238">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when using an XPath evaluator in multiple threads.</li>
@@ -1847,7 +1860,7 @@ just HTML strings.</li>
 </div>
 <div class="section" id="alpha1-2008-11-23">
 <h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id237">
+<div class="section" id="id239">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for XSLT result tree fragments in XPath/XSLT extension
@@ -1857,7 +1870,7 @@ functions.</li>
 <li>Instantiating a custom Element classes creates a new Element.</li>
 </ul>
 </div>
-<div class="section" id="id238">
+<div class="section" id="id240">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>XSLT didn't inherit the parse options of the input document.</li>
@@ -1868,16 +1881,16 @@ that end in a parenthesis, will be linked in their entirety (typical
 with Wikipedia links).</li>
 </ul>
 </div>
-<div class="section" id="id239">
+<div class="section" id="id241">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id240">
+<div class="section" id="id242">
 <h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id241">
+<div class="section" id="id243">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id242">
+<div class="section" id="id244">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Ref-count leaks when lxml enters a try-except statement while an
@@ -1896,13 +1909,13 @@ ElementTrees.</li>
 <li>Overriding the parser encoding didn't work for many encodings.</li>
 </ul>
 </div>
-<div class="section" id="id243">
+<div class="section" id="id245">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id244">
+<div class="section" id="id246">
 <h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id245">
+<div class="section" id="id247">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Ref-count leaks when lxml enters a try-except statement while an
@@ -1911,9 +1924,9 @@ Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id246">
+<div class="section" id="id248">
 <h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id247">
+<div class="section" id="id249">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.etree now tries to find the absolute path name of files when
@@ -1922,7 +1935,7 @@ resolving relative URLs, as lixbml2 can prepend them with the path
 of the source document.</li>
 </ul>
 </div>
-<div class="section" id="id248">
+<div class="section" id="id250">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -1930,13 +1943,13 @@ of the source document.</li>
 exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
 </ul>
 </div>
-<div class="section" id="id249">
+<div class="section" id="id251">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id250">
+<div class="section" id="id252">
 <h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id251">
+<div class="section" id="id253">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -1945,12 +1958,12 @@ exception instead of calling <tt class="docutils literal">.close()</tt> on the t
 </ul>
 </div>
 </div>
-<div class="section" id="id252">
+<div class="section" id="id254">
 <h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id253">
+<div class="section" id="id255">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id254">
+<div class="section" id="id256">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -1959,20 +1972,20 @@ another.</li>
 Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id255">
+<div class="section" id="id257">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id256">
+<div class="section" id="id258">
 <h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id257">
+<div class="section" id="id259">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
 with whitespace in URL attributes.</li>
 </ul>
 </div>
-<div class="section" id="id258">
+<div class="section" id="id260">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -1981,13 +1994,13 @@ another.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id259">
+<div class="section" id="id261">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id260">
+<div class="section" id="id262">
 <h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id261">
+<div class="section" id="id263">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
@@ -1996,7 +2009,7 @@ keyword option).</li>
 with whitespace in URL attributes.</li>
 </ul>
 </div>
-<div class="section" id="id262">
+<div class="section" id="id264">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Custom resolvers were not used for XMLSchema includes/imports and
@@ -2005,7 +2018,7 @@ XInclude processing.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id263">
+<div class="section" id="id265">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
@@ -2014,15 +2027,15 @@ with parameters.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id264">
+<div class="section" id="id266">
 <h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id265">
+<div class="section" id="id267">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
 </ul>
 </div>
-<div class="section" id="id266">
+<div class="section" id="id268">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Descending dot-separated classes in CSS selectors were not resolved
@@ -2033,7 +2046,7 @@ correctly.</li>
 the super class is not called from Python subclasses.</li>
 </ul>
 </div>
-<div class="section" id="id267">
+<div class="section" id="id269">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -2043,7 +2056,7 @@ serialisation.</li>
 </div>
 <div class="section" id="beta3-2008-06-19">
 <h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id268">
+<div class="section" id="id270">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
@@ -2069,7 +2082,7 @@ lxml.html (experimental).</li>
 (experimental).</li>
 </ul>
 </div>
-<div class="section" id="id269">
+<div class="section" id="id271">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
@@ -2084,7 +2097,7 @@ platform.</li>
 <li>Rare crash when serialising to a file object with certain encodings.</li>
 </ul>
 </div>
-<div class="section" id="id270">
+<div class="section" id="id272">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -2097,12 +2110,12 @@ lxml.objectify.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id271">
+<div class="section" id="id273">
 <h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id272">
+<div class="section" id="id274">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id273">
+<div class="section" id="id275">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find(&quot;tag[child]&quot;)</span></tt>.</li>
@@ -2113,7 +2126,7 @@ document is deleted while the subtree is still in use.</li>
 <li>Rare crash when serialising to a file object with certain encodings.</li>
 </ul>
 </div>
-<div class="section" id="id274">
+<div class="section" id="id276">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml should now build without problems on MacOS-X.</li>
@@ -2122,7 +2135,7 @@ document is deleted while the subtree is still in use.</li>
 </div>
 <div class="section" id="beta2-2008-05-02">
 <h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id275">
+<div class="section" id="id277">
 <h2>Features added</h2>
 <ul class="simple">
 <li>All parse functions in lxml.html take a <tt class="docutils literal">parser</tt> keyword argument.</li>
@@ -2131,7 +2144,7 @@ attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parser
 pre-configured for the lxml.html package.</li>
 </ul>
 </div>
-<div class="section" id="id276">
+<div class="section" id="id278">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Moving a subtree from a document created in one thread into a
@@ -2142,7 +2155,7 @@ redundantly defined namespace URIs.  This prevented the definition
 of more than one prefix for a namespace on the same Element.</li>
 </ul>
 </div>
-<div class="section" id="id277">
+<div class="section" id="id279">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>If the default namespace is redundantly defined with a prefix on the
@@ -2154,12 +2167,12 @@ namespace (i.e. they would end up in the wrong namespace).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id278">
+<div class="section" id="id280">
 <h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id279">
+<div class="section" id="id281">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id280">
+<div class="section" id="id282">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -2168,13 +2181,13 @@ let some XSLT errors pass silently.</li>
 <li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
 </ul>
 </div>
-<div class="section" id="id281">
+<div class="section" id="id283">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="beta1-2008-04-15">
 <h1>2.1beta1 (2008-04-15)</h1>
-<div class="section" id="id282">
+<div class="section" id="id284">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
@@ -2184,7 +2197,7 @@ sections by their text content.</li>
 <li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
 </ul>
 </div>
-<div class="section" id="id283">
+<div class="section" id="id285">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -2194,7 +2207,7 @@ let some XSLT errors pass silently.</li>
 <li>lxml.etree accepted non well-formed namespace prefix names.</li>
 </ul>
 </div>
-<div class="section" id="id284">
+<div class="section" id="id286">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
@@ -2208,12 +2221,12 @@ context.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id285">
+<div class="section" id="id287">
 <h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id286">
+<div class="section" id="id288">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id287">
+<div class="section" id="id289">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Hanging thread in conjunction with GTK threading.</li>
@@ -2222,13 +2235,13 @@ context.</li>
 <li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
 </ul>
 </div>
-<div class="section" id="id288">
+<div class="section" id="id290">
 <h2>Other changes</h2>
 </div>
 </div>
 <div class="section" id="alpha1-2008-03-27">
 <h1>2.1alpha1 (2008-03-27)</h1>
-<div class="section" id="id289">
+<div class="section" id="id291">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
@@ -2242,14 +2255,14 @@ an Element.</li>
 <li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
 </ul>
 </div>
-<div class="section" id="id290">
+<div class="section" id="id292">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Default encoding for plain text serialisation was different from
 that of XML serialisation (UTF-8 instead of ASCII).</li>
 </ul>
 </div>
-<div class="section" id="id291">
+<div class="section" id="id293">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Minor API speed-ups.</li>
@@ -2293,9 +2306,9 @@ instead.</p>
 </ul>
 </div>
 </div>
-<div class="section" id="id292">
+<div class="section" id="id294">
 <h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id293">
+<div class="section" id="id295">
 <h2>Features added</h2>
 <ul class="simple">
 <li>soupparser.parse() allows passing keyword arguments on to
@@ -2303,7 +2316,7 @@ BeautifulSoup.</li>
 <li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id294">
+<div class="section" id="id296">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
@@ -2316,7 +2329,7 @@ which made them turn up in text content.</li>
 correctly serialise the value to a string.</li>
 </ul>
 </div>
-<div class="section" id="id295">
+<div class="section" id="id297">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
@@ -2332,16 +2345,16 @@ option.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id296">
+<div class="section" id="id298">
 <h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id297">
+<div class="section" id="id299">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support passing <tt class="docutils literal">base_url</tt> to file parser functions to override
 the filename of the file(-like) object.</li>
 </ul>
 </div>
-<div class="section" id="id298">
+<div class="section" id="id300">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The prefix for objectify's pytype namespace was missing from the set
@@ -2351,7 +2364,7 @@ of default prefixes.</li>
 <li>Slice deletion bug fixed in objectify.</li>
 </ul>
 </div>
-<div class="section" id="id299">
+<div class="section" id="id301">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
@@ -2362,9 +2375,9 @@ of default prefixes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id300">
+<div class="section" id="id302">
 <h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id301">
+<div class="section" id="id303">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
@@ -2372,7 +2385,7 @@ of default prefixes.</li>
 methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
 </ul>
 </div>
-<div class="section" id="id302">
+<div class="section" id="id304">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
@@ -2384,7 +2397,7 @@ ignored.</li>
 elements at the wrong position.</li>
 </ul>
 </div>
-<div class="section" id="id303">
+<div class="section" id="id305">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The generated API documentation was cleaned up and disburdened from
@@ -2399,9 +2412,9 @@ compiler options.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id304">
+<div class="section" id="id306">
 <h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id305">
+<div class="section" id="id307">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Passing the <tt class="docutils literal">unicode</tt> type as <tt class="docutils literal">encoding</tt> to <tt class="docutils literal">tostring()</tt> will
@@ -2506,7 +2519,7 @@ instead of a string</li>
 <li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
 </ul>
 </div>
-<div class="section" id="id306">
+<div class="section" id="id308">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
@@ -2543,7 +2556,7 @@ evaluators now reports the first error that occurred instead of the last</li>
 <li>Thread safety in XPath evaluators</li>
 </ul>
 </div>
-<div class="section" id="id307">
+<div class="section" id="id309">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Exceptions carry only the part of the error log that is related to
@@ -2601,16 +2614,16 @@ generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id308">
+<div class="section" id="id310">
 <h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id309">
+<div class="section" id="id311">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Backported decref crash fix from 2.0</li>
 <li>Well hidden free-while-in-use crash bug in ObjectPath</li>
 </ul>
 </div>
-<div class="section" id="id310">
+<div class="section" id="id312">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The test suites now run <tt class="docutils literal">gc.collect()</tt> in the <tt class="docutils literal">tearDown()</tt>
@@ -2620,12 +2633,12 @@ problems that would otherwise appear in later tests.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id311">
+<div class="section" id="id313">
 <h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id312">
+<div class="section" id="id314">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id313">
+<div class="section" id="id315">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.etree could crash when adding more than 10000 namespaces to a
@@ -2635,9 +2648,9 @@ than the root node of a tree</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id314">
+<div class="section" id="id316">
 <h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id315">
+<div class="section" id="id317">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal">ElementMaker</tt> in <tt class="docutils literal">lxml.builder</tt> now accepts the keyword arguments
@@ -2651,13 +2664,13 @@ part of the document, as well as comments and PIs that are siblings of the
 root node.</li>
 </ul>
 </div>
-<div class="section" id="id316">
+<div class="section" id="id318">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parsing with the <tt class="docutils literal">no_network</tt> option could fail</li>
 </ul>
 </div>
-<div class="section" id="id317">
+<div class="section" id="id319">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml now raises a TagNameWarning about tag names containing ':' instead of
@@ -2673,9 +2686,9 @@ ElementTree serialisation includes them).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id318">
+<div class="section" id="id320">
 <h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id319">
+<div class="section" id="id321">
 <h2>Features added</h2>
 <ul class="simple">
 <li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
@@ -2686,7 +2699,7 @@ the parser you pass.</li>
 <li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
 </ul>
 </div>
-<div class="section" id="id320">
+<div class="section" id="id322">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parsing from Python Unicode strings failed on some platforms</li>
@@ -2696,21 +2709,21 @@ the parser you pass.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id321">
+<div class="section" id="id323">
 <h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id322">
+<div class="section" id="id324">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id323">
+<div class="section" id="id325">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>&quot;deallocating None&quot; crash bug</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id324">
+<div class="section" id="id326">
 <h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id325">
+<div class="section" id="id327">
 <h2>Features added</h2>
 <ul class="simple">
 <li>objectify.DataElement now supports setting values from existing data
@@ -2718,7 +2731,7 @@ elements (not just plain Python types) and reuses defined namespaces etc.</li>
 <li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
 </ul>
 </div>
-<div class="section" id="id326">
+<div class="section" id="id328">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Better way to prevent crashes in Element proxy cleanup code</li>
@@ -2728,9 +2741,9 @@ elements (not just plain Python types) and reuses defined namespaces etc.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id327">
+<div class="section" id="id329">
 <h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id328">
+<div class="section" id="id330">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
@@ -2759,7 +2772,7 @@ keys/values/items for a libxml2 node</li>
 a better handling of namespaces when moving elements between documents.</li>
 </ul>
 </div>
-<div class="section" id="id329">
+<div class="section" id="id331">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Removing Elements from a tree could make them lose their namespace
@@ -2783,16 +2796,16 @@ PIs are copied.</li>
 documents</li>
 </ul>
 </div>
-<div class="section" id="id330">
+<div class="section" id="id332">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>major restructuring in the documentation</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id331">
+<div class="section" id="id333">
 <h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id332">
+<div class="section" id="id334">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Build fixes for MS compiler</li>
@@ -2803,9 +2816,9 @@ to access</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id333">
+<div class="section" id="id335">
 <h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id334">
+<div class="section" id="id336">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Rich comparison of QName objects</li>
@@ -2821,7 +2834,7 @@ possible to pass an --rpath directly to distutils; previously this was being
 shadowed.</li>
 </ul>
 </div>
-<div class="section" id="id335">
+<div class="section" id="id337">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Element instantiation now uses locks to prevent race conditions with threads</li>
@@ -2831,7 +2844,7 @@ support in these environments</li>
 <li>Element.find*() did not accept QName objects as path</li>
 </ul>
 </div>
-<div class="section" id="id336">
+<div class="section" id="id338">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>code cleanup: redundant _NodeBase super class merged into _Element class
@@ -2840,9 +2853,9 @@ the compatibility of the public C-API</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id337">
+<div class="section" id="id339">
 <h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id338">
+<div class="section" id="id340">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Data elements in objectify support repr(), which is now used by dump()</li>
@@ -2853,7 +2866,7 @@ tail, attributes and namespaces</li>
 <li>Simplified support for handling XSLT processing instructions</li>
 </ul>
 </div>
-<div class="section" id="id339">
+<div class="section" id="id341">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parser resources were not freed before the next parser run</li>
@@ -2869,9 +2882,9 @@ closed/freed</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id340">
+<div class="section" id="id342">
 <h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id341">
+<div class="section" id="id343">
 <h2>Features added</h2>
 <ul class="simple">
 <li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
@@ -2879,7 +2892,7 @@ closed/freed</li>
 <li>Support custom elements for tree nodes in lxml.objectify</li>
 </ul>
 </div>
-<div class="section" id="id342">
+<div class="section" id="id344">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</li>
@@ -2894,9 +2907,9 @@ elements)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id343">
+<div class="section" id="id345">
 <h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id344">
+<div class="section" id="id346">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
@@ -2949,7 +2962,7 @@ generated elements</li>
 element</li>
 </ul>
 </div>
-<div class="section" id="id345">
+<div class="section" id="id347">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>filenames with local 8-bit encoding were not supported</li>
@@ -2973,30 +2986,30 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id346">
+<div class="section" id="id348">
 <h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id347">
+<div class="section" id="id349">
 <h2>Features added</h2>
 <ul class="simple">
 <li>List-like <tt class="docutils literal">Element.extend()</tt> method</li>
 </ul>
 </div>
-<div class="section" id="id348">
+<div class="section" id="id350">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in tail handling in <tt class="docutils literal">Element.replace()</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id349">
+<div class="section" id="id351">
 <h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id350">
+<div class="section" id="id352">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Element.replace(old, new) method to replace a subelement by another one</li>
 </ul>
 </div>
-<div class="section" id="id351">
+<div class="section" id="id353">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when mixing elements from XSLT results into other trees</li>
@@ -3006,16 +3019,16 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id352">
+<div class="section" id="id354">
 <h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id353">
+<div class="section" id="id355">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for setting a custom default Element class as opposed to namespace
 specific classes (which still override the default class)</li>
 </ul>
 </div>
-<div class="section" id="id354">
+<div class="section" id="id356">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Rare exceptions in Python list functions were not handled</li>
@@ -3027,15 +3040,15 @@ cases</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id355">
+<div class="section" id="id357">
 <h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id356">
+<div class="section" id="id358">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Repeated calls to Element.attrib now efficiently return the same instance</li>
 </ul>
 </div>
-<div class="section" id="id357">
+<div class="section" id="id359">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Document deallocation could crash in certain garbage collection scenarios</li>
@@ -3051,9 +3064,9 @@ stylesheet and crash on repeated calls</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id358">
+<div class="section" id="id360">
 <h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id359">
+<div class="section" id="id361">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Element.getiterator() and the findall() methods support finding arbitrary
@@ -3100,7 +3113,7 @@ enabled by default, can be switched off with 'regexp=False' keyword argument</li
 implementation of libxml2 (as opposed to ET compatible XMLID)</li>
 </ul>
 </div>
-<div class="section" id="id360">
+<div class="section" id="id362">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in Element.__setitem__</li>
@@ -3142,9 +3155,9 @@ ElementTree root node as reference point</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id361">
+<div class="section" id="id363">
 <h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id362">
+<div class="section" id="id364">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Speedup for Element.makeelement(): the new element reuses the original
@@ -3154,7 +3167,7 @@ libxml2 document instead of creating a new empty one</li>
 <li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
 </ul>
 </div>
-<div class="section" id="id363">
+<div class="section" id="id365">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
@@ -3164,9 +3177,9 @@ libxml2 document instead of creating a new empty one</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id364">
+<div class="section" id="id366">
 <h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id365">
+<div class="section" id="id367">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
@@ -3178,7 +3191,7 @@ argument)</li>
 <li>Minor API performance improvements</li>
 </ul>
 </div>
-<div class="section" id="id366">
+<div class="section" id="id368">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory deallocation bug when using XSLT output method &quot;html&quot;</li>
@@ -3187,9 +3200,9 @@ argument)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id367">
+<div class="section" id="id369">
 <h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id368">
+<div class="section" id="id370">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging API for libxml2 error messages</li>
@@ -3214,7 +3227,7 @@ parent element.</li>
 doc/sax.txt for more information.</li>
 </ul>
 </div>
-<div class="section" id="id369">
+<div class="section" id="id371">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Segfaults and memory leaks in various API functions of Element</li>
@@ -3226,9 +3239,9 @@ cannot support this due to libxslt deficiencies)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id370">
+<div class="section" id="id372">
 <h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id371">
+<div class="section" id="id373">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for copy.deepcopy() on elements. copy.copy() works also, but
@@ -3242,7 +3255,7 @@ supported and parsing of gzipped XML files works.</li>
 SubElement.</li>
 </ul>
 </div>
-<div class="section" id="id372">
+<div class="section" id="id374">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Use xslt-config instead of xml2-config to find out libxml2
@@ -3265,9 +3278,9 @@ fixed.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id373">
+<div class="section" id="id375">
 <h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id374">
+<div class="section" id="id376">
 <h2>Features added</h2>
 <ul class="simple">
 <li>parameters (XPath expressions) can be passed to XSLT using keyword
@@ -3297,7 +3310,7 @@ prefix declarations on these elements and these prefixes will show up
 in XML serialization.</li>
 </ul>
 </div>
-<div class="section" id="id375">
+<div class="section" id="id377">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Killed yet another memory management related bug: trees created
@@ -3318,9 +3331,9 @@ test both serializing to StringIO as well as serializing to a real file.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id376">
+<div class="section" id="id378">
 <h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id377">
+<div class="section" id="id379">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Changed setup.py so that library_dirs is also guessed. This should
@@ -3329,7 +3342,7 @@ wrong library (shipping with the OS) could be picked up.</li>
 <li>Tweaked setup.py so that it picks up the version from version.txt.</li>
 </ul>
 </div>
-<div class="section" id="id378">
+<div class="section" id="id380">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Do the right thing when handling namespaced attributes.</li>
@@ -3338,7 +3351,7 @@ had very nasty side-effects before this fix, sorry!</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id379">
+<div class="section" id="id381">
 <h1>0.5.1 (2005-04-09)</h1>
 <ul class="simple">
 <li>Python 2.2 compatibility fixes.</li>
@@ -3346,14 +3359,14 @@ had very nasty side-effects before this fix, sorry!</li>
 input wasn't properly being UTF-8 encoded.</li>
 </ul>
 </div>
-<div class="section" id="id380">
+<div class="section" id="id382">
 <h1>0.5 (2005-04-08)</h1>
 <p>Initial public release.</p>
 </div>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 06c7a06..86f87b8 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="elementtree-compatibility-of-lxml-etree">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
 
 <p>A lot of care has been taken to ensure compatibility between etree and
 ElementTree.  Nonetheless, some differences and incompatibilities exist:</p>
@@ -199,7 +199,7 @@ enough to replace a shallow copy in your case.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 48ec1f3..b003b3d 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="credits">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Credits</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Credits</h1>
 
 <div class="section" id="main-contributors">
 <h1>Main contributors</h1>
@@ -88,7 +88,7 @@ Holger Krekel for originally hosting lxml on codespeak.net</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index d2ae92b..f7af116 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml-cssselect">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.cssselect</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.cssselect</h1>
 
 <p>lxml supports a number of interesting languages for tree traversal and element
 selection.  The most important is obviously <a class="reference external" href="xpathxslt.html#xpath">XPath</a>, but there is also
@@ -113,7 +113,7 @@ namespace URIs: the <tt class="docutils literal">CSSSelector</tt> class accepts
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 8c7f4b9..3463df0 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="using-custom-element-classes-in-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Using custom Element classes in lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Using custom Element classes in lxml</h1>
 
 <p>lxml has very sophisticated support for custom Element classes.  You
 can provide your own classes for Elements and have lxml use them by
@@ -525,7 +525,7 @@ and use the blank decorator instead:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index e3ff05e..9674092 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="beautifulsoup-parser">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">BeautifulSoup Parser</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">BeautifulSoup Parser</h1>
 
 <p><a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> is a Python package for working with real-world and broken HTML,
 just like <a class="reference external" href="lxmlhtml.html">lxml.html</a>.  As of version 4.x, it can use
@@ -203,7 +203,7 @@ you can simply pass the resulting Unicode string into lxml's parser.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 0c40d2a..d6da009 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="python-extensions-for-xpath-and-xslt">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Python extensions for XPath and XSLT</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Python extensions for XPath and XSLT</h1>
 
 <p>This document describes how to use Python extension functions in XPath
 and XSLT like this:</p>
@@ -530,7 +530,7 @@ will work:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index c06f54d..98497cf 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="html5lib-parser">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">html5lib Parser</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">html5lib Parser</h1>
 
 <p><a class="reference external" href="http://code.google.com/p/html5lib/">html5lib</a> is a Python package that implements the HTML5 parsing algorithm
 which is heavily influenced by current browsers and based on the <a class="reference external" href="http://www.whatwg.org/specs/web-apps/current-work/">WHATWG
@@ -90,7 +90,7 @@ module.  Note that these are the parser classes provided by html5lib.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index ceb2ac2..6e7756a 100644 (file)
@@ -26,7 +26,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml - XML and HTML with Python</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml - XML and HTML with Python</h1>
 
 <div class="pagequote line-block">
 <div class="line"><a class="reference external" href="http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258">&#187; lxml takes all the pain out of XML. &#171;</a></div>
@@ -48,8 +48,8 @@ background and goals of the lxml project.  Some common questions are
 answered in the <a class="reference external" href="FAQ.html">FAQ</a>.</p>
 <div class="section" id="support-the-project">
 <h1>Support the project</h1>
-<p>lxml has been downloaded from the <a class="reference external" href="https://pypi.python.org/pypi/lxml">Python Package Index</a> more than
-two million times and is also available directly in many package
+<p>lxml has been downloaded from the <a class="reference external" href="https://pypi.python.org/pypi/lxml">Python Package Index</a>
+millions of times and is also available directly in many package
 distributions, e.g. for Linux or MacOS-X.</p>
 <p>Most people who use lxml do so because they like using it.
 You can show us that you like it by blogging about your experience
@@ -59,15 +59,20 @@ your own benefit back to support the project, consider sending us
 money through PayPal that we can use for fixing bugs in the software
 and improving its features and documentation.  Please read the Legal
 Notice below, at the bottom of this page.  Thank you for your support.</p>
-<p class="center"><a class="reference external" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=R56JE3VCPDA9N"><img alt="Donate to the lxml project" src="http://lxml.de/paypal_btn_donateCC_LG.png" style="width: 160px; height: 47px;" /></a></p>
-<p>Please <a class="reference external" href="http://consulting.behnel.de/">contact Stefan Behnel</a> for other ways to support the lxml project,
+<p class="center"><a class="reference external" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=R56JE3VCPDA9N"><img alt="Donate to the lxml project" src="https://lxml.de/paypal_btn_donateCC_LG.png" style="width: 160px; height: 47px;" /></a></p>
+<p>Please <a class="reference external" href="http://consulting.behnel.de/">contact Stefan Behnel</a>
+for other ways to support the lxml project,
 as well as commercial consulting, customisations and trainings on lxml and
 fast Python XML processing.</p>
+<p><a class="reference external" href="https://travis-ci.org/">Travis-CI</a> and <a class="reference external" href="https://www.appveyor.com/">AppVeyor</a>
+support the lxml project with their build and CI servers.
+Jetbrains supports the lxml project by donating free licenses of their
+<a class="reference external" href="https://www.jetbrains.com/pycharm/">PyCharm IDE</a>.</p>
 </div>
 </div>
 <div class="section" id="documentation">
 <h1>Documentation</h1>
-<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-4.2.1.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-4.2.2.pdf">PDF
 documentation</a>.  The HTML documentation from this web site is part of
 the normal <a class="reference external" href="#download">source download</a>.</p>
 <ul class="simple">
@@ -130,8 +135,8 @@ external C modules, including fast custom element class support.</p>
 Index</a> (PyPI).  It has the source
 that compiles on various platforms.  The source distribution is signed
 with <a class="reference external" href="pubkey.asc">this key</a>.</p>
-<p>The latest version is <a class="reference external" href="/files/lxml-4.2.1.tgz">lxml 4.2.1</a>, released 2018-03-21
-(<a class="reference external" href="/changes-4.2.1.html">changes for 4.2.1</a>).  <a class="reference external" href="#old-versions">Older versions</a>
+<p>The latest version is <a class="reference external" href="/files/lxml-4.2.2.tgz">lxml 4.2.2</a>, released 2018-06-22
+(<a class="reference external" href="/changes-4.2.2.html">changes for 4.2.2</a>).  <a class="reference external" href="#old-versions">Older versions</a>
 are listed below.</p>
 <p>Please take a look at the
 <a class="reference external" href="installation.html">installation instructions</a> !</p>
@@ -139,10 +144,10 @@ are listed below.</p>
 part of the source distribution, so if you want to download the
 documentation for offline use, take the source archive and copy the
 <tt class="docutils literal">doc/html</tt> directory out of the source tree, or use the
-<a class="reference external" href="lxmldoc-4.2.1.pdf">PDF documentation</a>.</p>
-<p>The latest installable developer sources should usually be available from the
-<a class="reference external" href="http://lxml.de/build/">build server</a>.  It's also possible to check out
-the latest development version of lxml from github directly, using a command
+<a class="reference external" href="lxmldoc-4.2.2.pdf">PDF documentation</a>.</p>
+<p>The latest <a class="reference external" href="https://github.com/lxml/lxml/archive/master.zip">installable developer sources</a>
+are available from Github.  It's also possible to check out
+the latest development version of lxml from Github directly, using a command
 like this (assuming you use hg and have hg-git installed):</p>
 <pre class="literal-block">
 hg clone git+ssh://git@github.com/lxml/lxml.git lxml
@@ -193,21 +198,24 @@ obstacle to using lxml in your codebase.</p>
 <a class="reference external" href="http://lxml.de/3.6/">3.6</a>,
 <a class="reference external" href="http://lxml.de/3.7/">3.7</a>,
 <a class="reference external" href="http://lxml.de/3.8/">3.8</a>,
-<a class="reference external" href="http://lxml.de/4.0/">4.0</a></p>
+<a class="reference external" href="http://lxml.de/4.0/">4.0</a>
+<a class="reference external" href="http://lxml.de/4.1/">4.1</a></p>
 <ul class="simple">
-<li><a class="reference external" href="/files/lxml-4.2.1.tgz">lxml 4.2.1</a>, released 2018-03-21 (<a class="reference external" href="/changes-4.2.1.html">changes for 4.2.1</a>)</li>
+<li><a class="reference external" href="/files/lxml-4.2.2.tgz">lxml 4.2.2</a>, released 2018-06-22 (<a class="reference external" href="/changes-4.2.2.html">changes for 4.2.2</a>)</li>
+<li><a class="reference external" href="/files/lxml-4.2.1.tgz">lxml 4.2.1</a>, released 2018-03-21 (<a href="#id19"><span class="problematic" id="id20">`changes for 4.2.1`_</span></a>)</li>
 <li><a class="reference external" href="/files/lxml-4.2.0.tgz">lxml 4.2.0</a>, released 2018-03-13 (<a class="reference external" href="/changes-4.2.0.html">changes for 4.2.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.1.1.tgz">lxml 4.1.1</a>, released 2017-11-04 (<a class="reference external" href="/changes-4.1.1.html">changes for 4.1.1</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.1.0.tgz">lxml 4.1.0</a>, released 2017-10-13 (<a class="reference external" href="/changes-4.1.0.html">changes for 4.1.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.0.0.tgz">lxml 4.0.0</a>, released 2017-09-17 (<a class="reference external" href="/changes-4.0.0.html">changes for 4.0.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-3.8.0.tgz">lxml 3.8.0</a>, released 2017-06-03 (<a class="reference external" href="/changes-3.8.0.html">changes for 3.8.0</a>)</li>
-<li><a class="reference external" href="/files/lxml-3.7.3.tgz">lxml 3.7.3</a>, released 2017-02-18 (<a class="reference external" href="/changes-3.7.3.html">changes for 3.7.3</a>)</li>
-<li><a class="reference external" href="/files/lxml-3.7.2.tgz">lxml 3.7.2</a>, released 2017-01-08 (<a class="reference external" href="/changes-3.7.2.html">changes for 3.7.2</a>)</li>
-<li><a class="reference external" href="/files/lxml-3.7.1.tgz">lxml 3.7.1</a>, released 2016-12-22 (<a class="reference external" href="/changes-3.7.1.html">changes for 3.7.1</a>)</li>
-<li><a class="reference external" href="/files/lxml-3.7.0.tgz">lxml 3.7.0</a>, released 2016-12-10 (<a class="reference external" href="/changes-3.7.0.html">changes for 3.7.0</a>)</li>
 <li><a class="reference external" href="http://lxml.de/3.7/#old-versions">older releases</a></li>
 </ul>
-</div><div class="section" id="legal-notice-for-donations">
+</div>
+<div class="system-messages section">
+<h1>Docutils System Messages</h1>
+<div class="system-message" id="id19">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">./doc/main.txt</tt>, line 257); <em><a href="#id20">backlink</a></em></p>
+Unknown target name: "changes for 4.2.1".</div><div class="section" id="legal-notice-for-donations">
 <h1>Legal Notice for Donations</h1>
 <p>Any donation that you make to the lxml project is voluntary and
 is not a fee for any services, goods, or advantages.  By making
@@ -226,9 +234,10 @@ donation is non-refundable.</p>
 </div>
 
 </div>
+</div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 5b22023..63d6add 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="installing-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Installing lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Installing lxml</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -215,7 +215,7 @@ read the
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index a53d3cd..78bc1ab 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="why-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Why lxml?</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Why lxml?</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -82,7 +82,7 @@ having to learn new things -- XML is complicated enough.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index dfd0814..261a714 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="how-to-read-the-source-of-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">How to read the source of lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">How to read the source of lxml</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -286,7 +286,7 @@ implemented in pure Python.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 5e78126..b1ad189 100644 (file)
@@ -25,7 +25,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml-html">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.html</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.html</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -696,7 +696,7 @@ microformat.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 8e3e0ff..9837e23 100644 (file)
@@ -25,7 +25,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml-objectify">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.objectify</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">lxml.objectify</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -1165,7 +1165,7 @@ support any XPath expression.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 286fc16..ce784bb 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="parsing-xml-and-html-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Parsing XML and HTML with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Parsing XML and HTML with lxml</h1>
 
 <p>lxml provides a very simple and powerful API for parsing XML and HTML.  It
 supports one-step parsing as well as step-by-step parsing using an
@@ -893,7 +893,7 @@ with UTF-8 is also considerably faster in most cases.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index d12f07e..9af5b1e 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="benchmarks-and-speed">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Benchmarks and Speed</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Benchmarks and Speed</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -798,7 +798,7 @@ random.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index d984cb4..e838ddc 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="document-loading-and-url-resolving">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Document loading and URL resolving</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Document loading and URL resolving</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -250,7 +250,7 @@ documents or raises exceptions if access is denied.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 08d23cc..e6688e0 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="sax-support">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Sax support</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Sax support</h1>
 
 <p>In this document we'll describe lxml's SAX support.  lxml has support for
 producing SAX events for an ElementTree or Element.  lxml can also turn SAX
@@ -124,7 +124,7 @@ DOM implementation cannot generate SAX events from a DOM tree.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 7e4c856..17ff1c8 100644 (file)
@@ -8,5 +8,5 @@
   </head>
   <body>
     <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1>
-  <div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
+  <div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
 </html>
\ No newline at end of file
index ec1e569..b0b0d02 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="the-lxml-etree-tutorial">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">The lxml.etree Tutorial</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">The lxml.etree Tutorial</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -1184,7 +1184,7 @@ whereas the other two examples would raise a <tt class="docutils literal">StopIt
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index bd8d150..ffbbeaf 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="validation-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Validation with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">Validation with lxml</h1>
 
 <p>Apart from the built-in DTD support in parsers, lxml currently supports three
 schema languages: <a class="reference external" href="http://en.wikipedia.org/wiki/Document_Type_Definition">DTD</a>, <a class="reference external" href="http://www.relaxng.org/">Relax NG</a> and <a class="reference external" href="http://www.w3.org/XML/Schema">XML Schema</a>.  All three provide
@@ -556,7 +556,7 @@ reporting during validation.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index 473a64b..4efe61d 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="xpath-and-xslt-with-lxml">
-<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 1-menu"><li class="menu title"><a href="changes-4.2.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">XPath and XSLT with lxml</h1>
+<div class="sidemenu" id="sidemenu"><div class="menutrigger" onclick="trigger_menu(event)">Menu</div><div class="menu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#docutils-system-messages">Docutils System Messages</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#where-to-get-it">Where to get it</a></li><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-dev-sources">Building lxml from dev sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#source-builds-on-ms-windows">Source builds on MS Windows</a></li><li class="menu item"><a href="installation.html#source-builds-on-macos-x">Source builds on MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#incremental-event-parsing">Incremental event parsing</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#passing-generated-trees-through-python">Passing generated trees through Python</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg-or-wheel">Building an egg or wheel</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 4 2 2-menu"><li class="menu title"><a href="changes-4.2.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="/sitemap.html">Sitemap</a></li></ul></div></div><h1 class="title">XPath and XSLT with lxml</h1>
 
 <p>lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through
 libxml2 and libxslt in a standards compliant way.</p>
@@ -632,7 +632,7 @@ If you want to free it from memory, just do:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2018-03-21.
+Generated on: 2018-06-22.
 
 </div>
 </body>
index ffa2143..e855b08 100644 (file)
@@ -157,8 +157,8 @@ Index <http://pypi.python.org/pypi/lxml/>`_ (PyPI).  It has the source
 that compiles on various platforms.  The source distribution is signed
 with `this key <pubkey.asc>`_.
 
-The latest version is `lxml 4.2.1`_, released 2018-03-21
-(`changes for 4.2.1`_).  `Older versions <#old-versions>`_
+The latest version is `lxml 4.2.2`_, released 2018-06-22
+(`changes for 4.2.2`_).  `Older versions <#old-versions>`_
 are listed below.
 
 Please take a look at the
@@ -170,9 +170,9 @@ documentation for offline use, take the source archive and copy the
 ``doc/html`` directory out of the source tree, or use the
 `PDF documentation`_.
 
-The latest installable developer sources should usually be available from the
-`build server <http://lxml.de/build/>`_.  It's also possible to check out
-the latest development version of lxml from github directly, using a command
+The latest `installable developer sources <https://github.com/lxml/lxml/archive/master.zip>`_
+are available from Github.  It's also possible to check out
+the latest development version of lxml from Github directly, using a command
 like this (assuming you use hg and have hg-git installed)::
 
   hg clone git+ssh://git@github.com/lxml/lxml.git lxml
@@ -245,11 +245,14 @@ See the websites of lxml
 `3.7 <http://lxml.de/3.7/>`_,
 `3.8 <http://lxml.de/3.8/>`_,
 `4.0 <http://lxml.de/4.0/>`_
+`4.1 <http://lxml.de/4.1/>`_
 
 ..
    and the `latest in-development version <http://lxml.de/dev/>`_.
 
-.. _`PDF documentation`: lxmldoc-4.2.1.pdf
+.. _`PDF documentation`: lxmldoc-4.2.2.pdf
+
+* `lxml 4.2.2`_, released 2018-06-22 (`changes for 4.2.2`_)
 
 * `lxml 4.2.1`_, released 2018-03-21 (`changes for 4.2.1`_)
 
@@ -263,44 +266,19 @@ See the websites of lxml
 
 * `lxml 3.8.0`_, released 2017-06-03 (`changes for 3.8.0`_)
 
-* `lxml 3.7.3`_, released 2017-02-18 (`changes for 3.7.3`_)
-
-* `lxml 3.7.2`_, released 2017-01-08 (`changes for 3.7.2`_)
-
-* `lxml 3.7.1`_, released 2016-12-22 (`changes for 3.7.1`_)
-
-* `lxml 3.7.0`_, released 2016-12-10 (`changes for 3.7.0`_)
-
 * `older releases <http://lxml.de/3.7/#old-versions>`_
 
+.. _`lxml 4.2.2`: /files/lxml-4.2.2.tgz
 .. _`lxml 4.2.1`: /files/lxml-4.2.1.tgz
 .. _`lxml 4.2.0`: /files/lxml-4.2.0.tgz
 .. _`lxml 4.1.1`: /files/lxml-4.1.1.tgz
 .. _`lxml 4.1.0`: /files/lxml-4.1.0.tgz
 .. _`lxml 4.0.0`: /files/lxml-4.0.0.tgz
 .. _`lxml 3.8.0`: /files/lxml-3.8.0.tgz
-.. _`lxml 3.7.3`: /files/lxml-3.7.3.tgz
-.. _`lxml 3.7.2`: /files/lxml-3.7.2.tgz
-.. _`lxml 3.7.1`: /files/lxml-3.7.1.tgz
-.. _`lxml 3.7.0`: /files/lxml-3.7.0.tgz
-.. _`lxml 3.6.4`: /files/lxml-3.6.4.tgz
-.. _`lxml 3.6.3`: /files/lxml-3.6.3.tgz
-.. _`lxml 3.6.2`: /files/lxml-3.6.2.tgz
-.. _`lxml 3.6.1`: /files/lxml-3.6.1.tgz
-.. _`lxml 3.6.0`: /files/lxml-3.6.0.tgz
-
-.. _`changes for 4.2.1`: /changes-4.2.1.html
+
+.. _`changes for 4.2.2`: /changes-4.2.2.html
 .. _`changes for 4.2.0`: /changes-4.2.0.html
 .. _`changes for 4.1.1`: /changes-4.1.1.html
 .. _`changes for 4.1.0`: /changes-4.1.0.html
 .. _`changes for 4.0.0`: /changes-4.0.0.html
 .. _`changes for 3.8.0`: /changes-3.8.0.html
-.. _`changes for 3.7.3`: /changes-3.7.3.html
-.. _`changes for 3.7.2`: /changes-3.7.2.html
-.. _`changes for 3.7.1`: /changes-3.7.1.html
-.. _`changes for 3.7.0`: /changes-3.7.0.html
-.. _`changes for 3.6.4`: /changes-3.6.4.html
-.. _`changes for 3.6.3`: /changes-3.6.3.html
-.. _`changes for 3.6.2`: /changes-3.6.2.html
-.. _`changes for 3.6.1`: /changes-3.6.1.html
-.. _`changes for 3.6.0`: /changes-3.6.0.html
index 5ca29a5..7c54d1f 100644 (file)
@@ -266,7 +266,7 @@ def publish(dirname, lxml_path, release):
     ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html'))
 
     # integrate sitemap into the menu
-    SubElement(SubElement(menu_div[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap'
+    SubElement(SubElement(menu_div[-1], 'li'), 'a', href='/sitemap.html').text = 'Sitemap'
 
     # integrate menu into web pages
     for tree, basename, outpath in trees.itervalues():
diff --git a/ez_setup.py b/ez_setup.py
deleted file mode 100644 (file)
index 1ff1d3e..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-#!python
-"""Bootstrap setuptools installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
-    from ez_setup import use_setuptools
-    use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import sys
-DEFAULT_VERSION = "0.6c11"
-DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
-
-md5_data = {
-    'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
-    'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
-    'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
-    'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
-    'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
-    'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
-    'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
-    'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
-    'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
-    'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
-    'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
-    'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
-    'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
-    'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
-    'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
-    'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
-    'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
-    'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
-    'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
-    'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
-    'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
-    'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
-    'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
-    'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
-    'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
-    'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
-    'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
-    'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
-    'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
-    'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
-    'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
-    'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
-    'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
-    'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
-    'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
-    'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
-    'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
-    'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
-    'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
-    'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
-    'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
-    'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
-}
-
-import sys, os
-try: from hashlib import md5
-except ImportError: from md5 import md5
-
-def _validate_md5(egg_name, data):
-    if egg_name in md5_data:
-        digest = md5(data).hexdigest()
-        if digest != md5_data[egg_name]:
-            print >>sys.stderr, (
-                "md5 validation of %s failed!  (Possible download problem?)"
-                % egg_name
-            )
-            sys.exit(2)
-    return data
-
-def use_setuptools(
-    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
-    download_delay=15
-):
-    """Automatically find/download setuptools and make it available on sys.path
-
-    `version` should be a valid setuptools version number that is available
-    as an egg for download under the `download_base` URL (which should end with
-    a '/').  `to_dir` is the directory where setuptools will be downloaded, if
-    it is not already available.  If `download_delay` is specified, it should
-    be the number of seconds that will be paused before initiating a download,
-    should one be required.  If an older version of setuptools is installed,
-    this routine will print a message to ``sys.stderr`` and raise SystemExit in
-    an attempt to abort the calling script.
-    """
-    was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
-    def do_download():
-        egg = download_setuptools(version, download_base, to_dir, download_delay)
-        sys.path.insert(0, egg)
-        import setuptools; setuptools.bootstrap_install_from = egg
-    try:
-        import pkg_resources
-    except ImportError:
-        return do_download()       
-    try:
-        pkg_resources.require("setuptools>="+version); return
-    except pkg_resources.VersionConflict, e:
-        if was_imported:
-            print >>sys.stderr, (
-            "The required version of setuptools (>=%s) is not available, and\n"
-            "can't be installed while this script is running. Please install\n"
-            " a more recent version first, using 'easy_install -U setuptools'."
-            "\n\n(Currently using %r)"
-            ) % (version, e.args[0])
-            sys.exit(2)
-        else:
-            del pkg_resources, sys.modules['pkg_resources']    # reload ok
-            return do_download()
-    except pkg_resources.DistributionNotFound:
-        return do_download()
-
-def download_setuptools(
-    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
-    delay = 15
-):
-    """Download setuptools from a specified location and return its filename
-
-    `version` should be a valid setuptools version number that is available
-    as an egg for download under the `download_base` URL (which should end
-    with a '/'). `to_dir` is the directory where the egg will be downloaded.
-    `delay` is the number of seconds to pause before an actual download attempt.
-    """
-    import urllib2, shutil
-    egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
-    url = download_base + egg_name
-    saveto = os.path.join(to_dir, egg_name)
-    src = dst = None
-    if not os.path.exists(saveto):  # Avoid repeated downloads
-        try:
-            from distutils import log
-            if delay:
-                log.warn("""
----------------------------------------------------------------------------
-This script requires setuptools version %s to run (even to display
-help).  I will attempt to download it for you (from
-%s), but
-you may need to enable firewall access for this script first.
-I will start the download in %d seconds.
-
-(Note: if this machine does not have network access, please obtain the file
-
-   %s
-
-and place it in this directory before rerunning this script.)
----------------------------------------------------------------------------""",
-                    version, download_base, delay, url
-                ); from time import sleep; sleep(delay)
-            log.warn("Downloading %s", url)
-            src = urllib2.urlopen(url)
-            # Read/write all in one block, so we don't create a corrupt file
-            # if the download is interrupted.
-            data = _validate_md5(egg_name, src.read())
-            dst = open(saveto,"wb"); dst.write(data)
-        finally:
-            if src: src.close()
-            if dst: dst.close()
-    return os.path.realpath(saveto)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def main(argv, version=DEFAULT_VERSION):
-    """Install or upgrade setuptools and EasyInstall"""
-    try:
-        import setuptools
-    except ImportError:
-        egg = None
-        try:
-            egg = download_setuptools(version, delay=0)
-            sys.path.insert(0,egg)
-            from setuptools.command.easy_install import main
-            return main(list(argv)+[egg])   # we're done here
-        finally:
-            if egg and os.path.exists(egg):
-                os.unlink(egg)
-    else:
-        if setuptools.__version__ == '0.0.1':
-            print >>sys.stderr, (
-            "You have an obsolete version of setuptools installed.  Please\n"
-            "remove it from your system entirely before rerunning this script."
-            )
-            sys.exit(2)
-
-    req = "setuptools>="+version
-    import pkg_resources
-    try:
-        pkg_resources.require(req)
-    except pkg_resources.VersionConflict:
-        try:
-            from setuptools.command.easy_install import main
-        except ImportError:
-            from easy_install import main
-        main(list(argv)+[download_setuptools(delay=0)])
-        sys.exit(0) # try to force an exit
-    else:
-        if argv:
-            from setuptools.command.easy_install import main
-            main(argv)
-        else:
-            print "Setuptools version",version,"or greater has been installed."
-            print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
-
-def update_md5(filenames):
-    """Update our built-in md5 registry"""
-
-    import re
-
-    for name in filenames:
-        base = os.path.basename(name)
-        f = open(name,'rb')
-        md5_data[base] = md5(f.read()).hexdigest()
-        f.close()
-
-    data = ["    %r: %r,\n" % it for it in md5_data.items()]
-    data.sort()
-    repl = "".join(data)
-
-    import inspect
-    srcfile = inspect.getsourcefile(sys.modules[__name__])
-    f = open(srcfile, 'rb'); src = f.read(); f.close()
-
-    match = re.search("\nmd5_data = {\n([^}]+)}", src)
-    if not match:
-        print >>sys.stderr, "Internal error!"
-        sys.exit(2)
-
-    src = src[:match.start(1)] + repl + src[match.end(1):]
-    f = open(srcfile,'w')
-    f.write(src)
-    f.close()
-
-
-if __name__=='__main__':
-    if len(sys.argv)>2 and sys.argv[1]=='--md5update':
-        update_md5(sys.argv[2:])
-    else:
-        main(sys.argv[1:])
-
-
-
-
-
-
index a669c45..861a9f5 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
 [egg_info]
-tag_svn_revision = 0
 tag_build = 
 tag_date = 0
+tag_svn_revision = 0
 
index 2d3b200..0dc1491 100644 (file)
@@ -268,7 +268,7 @@ def libraries():
     standard_libs = []
     if 'linux' in sys.platform:
         standard_libs.append('rt')
-    if not OPTION_BUILD_LIBXML2XSLT:
+    if OPTION_STATIC:
         standard_libs.append('z')
     standard_libs.append('m')
 
index 2f2eaf6..876d8bf 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 4.2.1
+Version: 4.2.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,18 +36,18 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
         as soon as a maintenance branch has been established.  Note that this
         requires Cython to be installed at an appropriate version for the build.
         
-        4.2.1 (2018-03-21)
+        4.2.2 (2018-06-22)
         ==================
         
         Bugs fixed
         ----------
         
-        * LP#1755825: ``iterwalk()`` failed to return the 'start' event for the initial
-          element if a tag selector is used.
+        * GH#266: Fix sporadic crash during GC when parse-time schema validation is used
+          and the parser participates in a reference cycle.
+          Original patch by Julien Greard.
         
-        * LP#1756314: Failure to import 4.2.0 into PyPy due to a missing library symbol.
-        
-        * LP#1727864, GH#258: Add "-isysroot" linker option on MacOS as needed by XCode 9.
+        * GH#265: lxml no longer links against zlib as a shared library, only on static builds.
+          Patch by Nehal J Wani.
         
         
         
index 0732000..b013b23 100644 (file)
@@ -7,7 +7,6 @@ Makefile
 README.rst
 TODO.txt
 buildlibxml.py
-ez_setup.py
 requirements.txt
 setup.py
 setupinfo.py
@@ -57,7 +56,7 @@ doc/html/FAQ.html
 doc/html/api.html
 doc/html/build.html
 doc/html/capi.html
-doc/html/changes-4.2.1.html
+doc/html/changes-4.2.2.html
 doc/html/compatibility.html
 doc/html/credits.html
 doc/html/cssselect.html
index e48000b..bfd8059 100644 (file)
@@ -1,17 +1,18 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "/usr/include/libxml2", 
             "src", 
@@ -22,7 +23,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml._elementpath", 
@@ -41,7 +41,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -487,6 +487,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -679,7 +680,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -787,7 +788,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -1203,6 +1204,244 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* PyObjectCall.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
@@ -1295,42 +1534,6 @@ static CYTHON_INLINE int __Pyx_IterFinish(void);
 /* UnpackItemEndCheck.proto */
 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
 
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
-#endif
-
 /* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
@@ -1699,27 +1902,27 @@ static const char __pyx_k_d[] = "-?\\d+$";
 static const char __pyx_k_e[] = "e";
 static const char __pyx_k__3[] = "{";
   static const char __pyx_k__4[] = ":";
-  static const char __pyx_k__8[] = "*";
+  static const char __pyx_k__9[] = "*";
   static const char __pyx_k_el[] = "el";
   static const char __pyx_k_it[] = "it";
   static const char __pyx_k_re[] = "re";
-  static const char __pyx_k__19[] = "";
-  static const char __pyx_k__20[] = "]";
-  static const char __pyx_k__23[] = "'\"";
-  static const char __pyx_k__24[] = "'";
-  static const char __pyx_k__26[] = "-";
-  static const char __pyx_k__27[] = "@-";
-  static const char __pyx_k__30[] = "@-='";
-  static const char __pyx_k__33[] = "_";
-  static const char __pyx_k__36[] = ".='";
-  static const char __pyx_k__37[] = "-='";
-  static const char __pyx_k__42[] = "-()";
-  static const char __pyx_k__43[] = "-()-";
-  static const char __pyx_k__52[] = "/";
-  static const char __pyx_k__73[] = ".";
-  static const char __pyx_k__74[] = "..";
-  static const char __pyx_k__75[] = "//";
-  static const char __pyx_k__76[] = "[";
+  static const char __pyx_k__24[] = "";
+  static const char __pyx_k__26[] = "]";
+  static const char __pyx_k__29[] = "'\"";
+  static const char __pyx_k__30[] = "'";
+  static const char __pyx_k__32[] = "-";
+  static const char __pyx_k__33[] = "@-";
+  static const char __pyx_k__36[] = "@-='";
+  static const char __pyx_k__39[] = "_";
+  static const char __pyx_k__42[] = ".='";
+  static const char __pyx_k__43[] = "-='";
+  static const char __pyx_k__48[] = "-()";
+  static const char __pyx_k__49[] = "-()-";
+  static const char __pyx_k__59[] = "/";
+  static const char __pyx_k__78[] = ".";
+  static const char __pyx_k__79[] = "..";
+  static const char __pyx_k__80[] = "//";
+  static const char __pyx_k__81[] = "[";
   static const char __pyx_k_get[] = "get";
   static const char __pyx_k_key[] = "key";
   static const char __pyx_k_ops[] = "ops";
@@ -1816,26 +2019,26 @@ static PyObject *__pyx_n_s_KeyError;
 static PyObject *__pyx_n_s_StopIteration;
 static PyObject *__pyx_n_s_SyntaxError;
 static PyObject *__pyx_n_s_ValueError;
-static PyObject *__pyx_kp_s__19;
-static PyObject *__pyx_kp_s__20;
-static PyObject *__pyx_kp_s__23;
 static PyObject *__pyx_kp_s__24;
 static PyObject *__pyx_kp_s__26;
-static PyObject *__pyx_kp_s__27;
+static PyObject *__pyx_kp_s__29;
 static PyObject *__pyx_kp_s__3;
 static PyObject *__pyx_kp_s__30;
-static PyObject *__pyx_n_s__33;
+static PyObject *__pyx_kp_s__32;
+static PyObject *__pyx_kp_s__33;
 static PyObject *__pyx_kp_s__36;
-static PyObject *__pyx_kp_s__37;
+static PyObject *__pyx_n_s__39;
 static PyObject *__pyx_kp_s__4;
 static PyObject *__pyx_kp_s__42;
 static PyObject *__pyx_kp_s__43;
-static PyObject *__pyx_kp_s__52;
-static PyObject *__pyx_kp_s__73;
-static PyObject *__pyx_kp_s__74;
-static PyObject *__pyx_kp_s__75;
-static PyObject *__pyx_kp_s__76;
-static PyObject *__pyx_kp_s__8;
+static PyObject *__pyx_kp_s__48;
+static PyObject *__pyx_kp_s__49;
+static PyObject *__pyx_kp_s__59;
+static PyObject *__pyx_kp_s__78;
+static PyObject *__pyx_kp_s__79;
+static PyObject *__pyx_kp_s__80;
+static PyObject *__pyx_kp_s__81;
+static PyObject *__pyx_kp_s__9;
 static PyObject *__pyx_n_s_args;
 static PyObject *__pyx_n_s_build_path_iterator;
 static PyObject *__pyx_n_s_build_path_iterator_locals_gene;
@@ -1971,73 +2174,73 @@ static PyObject *__pyx_int_neg_1;
 static PyObject *__pyx_codeobj_;
 static PyObject *__pyx_tuple__2;
 static PyObject *__pyx_tuple__5;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__22;
-static PyObject *__pyx_slice__25;
-static PyObject *__pyx_slice__51;
-static PyObject *__pyx_slice__54;
+static PyObject *__pyx_tuple__7;
+static PyObject *__pyx_slice__28;
+static PyObject *__pyx_slice__31;
+static PyObject *__pyx_slice__58;
+static PyObject *__pyx_slice__61;
 static PyObject *__pyx_tuple__10;
 static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__14;
 static PyObject *__pyx_tuple__15;
-static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__28;
-static PyObject *__pyx_tuple__31;
+static PyObject *__pyx_tuple__18;
+static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__27;
 static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__38;
+static PyObject *__pyx_tuple__37;
 static PyObject *__pyx_tuple__40;
 static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
 static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
 static PyObject *__pyx_tuple__50;
+static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__52;
 static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__55;
+static PyObject *__pyx_tuple__54;
 static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__57;
-static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__59;
 static PyObject *__pyx_tuple__60;
-static PyObject *__pyx_tuple__61;
+static PyObject *__pyx_tuple__62;
 static PyObject *__pyx_tuple__63;
-static PyObject *__pyx_tuple__65;
-static PyObject *__pyx_tuple__67;
+static PyObject *__pyx_tuple__64;
 static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__70;
 static PyObject *__pyx_tuple__71;
+static PyObject *__pyx_tuple__72;
+static PyObject *__pyx_tuple__73;
+static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__75;
+static PyObject *__pyx_tuple__76;
 static PyObject *__pyx_tuple__77;
-static PyObject *__pyx_tuple__79;
-static PyObject *__pyx_tuple__81;
 static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_tuple__83;
 static PyObject *__pyx_tuple__84;
 static PyObject *__pyx_tuple__85;
+static PyObject *__pyx_tuple__86;
 static PyObject *__pyx_tuple__87;
 static PyObject *__pyx_tuple__88;
+static PyObject *__pyx_tuple__89;
 static PyObject *__pyx_tuple__90;
-static PyObject *__pyx_codeobj__7;
+static PyObject *__pyx_codeobj__6;
+static PyObject *__pyx_codeobj__8;
 static PyObject *__pyx_codeobj__11;
 static PyObject *__pyx_codeobj__13;
+static PyObject *__pyx_codeobj__14;
 static PyObject *__pyx_codeobj__16;
-static PyObject *__pyx_codeobj__18;
-static PyObject *__pyx_codeobj__29;
-static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__17;
+static PyObject *__pyx_codeobj__20;
+static PyObject *__pyx_codeobj__21;
+static PyObject *__pyx_codeobj__23;
+static PyObject *__pyx_codeobj__25;
 static PyObject *__pyx_codeobj__35;
-static PyObject *__pyx_codeobj__39;
+static PyObject *__pyx_codeobj__38;
 static PyObject *__pyx_codeobj__41;
-static PyObject *__pyx_codeobj__49;
-static PyObject *__pyx_codeobj__62;
-static PyObject *__pyx_codeobj__64;
+static PyObject *__pyx_codeobj__45;
+static PyObject *__pyx_codeobj__47;
+static PyObject *__pyx_codeobj__55;
+static PyObject *__pyx_codeobj__57;
+static PyObject *__pyx_codeobj__65;
 static PyObject *__pyx_codeobj__66;
+static PyObject *__pyx_codeobj__67;
 static PyObject *__pyx_codeobj__68;
-static PyObject *__pyx_codeobj__70;
-static PyObject *__pyx_codeobj__72;
-static PyObject *__pyx_codeobj__78;
-static PyObject *__pyx_codeobj__80;
-static PyObject *__pyx_codeobj__83;
-static PyObject *__pyx_codeobj__86;
-static PyObject *__pyx_codeobj__89;
 /* Late includes */
 static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 
@@ -2155,6 +2358,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct__xpath_tokenizer *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct__xpath_tokenizer *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
@@ -2172,6 +2376,8 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("xpath_tokenizer", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj_)
+  __Pyx_TraceCall("xpath_tokenizer", __pyx_f[0], 70, 0, __PYX_ERR(0, 70, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L21_resume_from_yield;
@@ -2179,6 +2385,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
     case 3: goto __pyx_L25_resume_from_yield;
     case 4: goto __pyx_L26_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -2192,6 +2399,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *     for token in xpath_tokenizer_re.findall(pattern):
  *         tag = token[1]
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(0, 71, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_namespaces); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 71, __pyx_L1_error)
   if (__pyx_t_2) {
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_namespaces, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
@@ -2216,6 +2424,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *         tag = token[1]
  *         if tag and tag[0] != "{":
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(0, 72, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_xpath_tokenizer_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_findall); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
@@ -2316,6 +2525,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *         if tag and tag[0] != "{":
  *             if ":" in tag:
  */
+    __Pyx_TraceLine(73,0,__PYX_ERR(0, 73, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_token, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_tag);
@@ -2330,6 +2540,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *             if ":" in tag:
  *                 prefix, uri = tag.split(":", 1)
  */
+    __Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_tag); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 74, __pyx_L1_error)
     if (__pyx_t_8) {
     } else {
@@ -2351,6 +2562,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                 prefix, uri = tag.split(":", 1)
  *                 try:
  */
+      __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
       __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__4, __pyx_cur_scope->__pyx_v_tag, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 75, __pyx_L1_error)
       __pyx_t_8 = (__pyx_t_2 != 0);
       if (__pyx_t_8) {
@@ -2362,6 +2574,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                 try:
  *                     if not namespaces:
  */
+        __Pyx_TraceLine(76,0,__PYX_ERR(0, 76, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_tag, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error)
@@ -2429,6 +2642,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                     if not namespaces:
  *                         raise KeyError
  */
+        __Pyx_TraceLine(77,0,__PYX_ERR(0, 77, __pyx_L12_error))
         {
           __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
           __Pyx_XGOTREF(__pyx_t_11);
@@ -2443,6 +2657,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                         raise KeyError
  *                     yield token[0], "{%s}%s" % (namespaces[prefix], uri)
  */
+            __Pyx_TraceLine(78,0,__PYX_ERR(0, 78, __pyx_L12_error))
             __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_namespaces); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 78, __pyx_L12_error)
             __pyx_t_2 = ((!__pyx_t_8) != 0);
             if (unlikely(__pyx_t_2)) {
@@ -2454,6 +2669,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                     yield token[0], "{%s}%s" % (namespaces[prefix], uri)
  *                 except KeyError:
  */
+              __Pyx_TraceLine(79,0,__PYX_ERR(0, 79, __pyx_L12_error))
               __Pyx_Raise(__pyx_builtin_KeyError, 0, 0, 0);
               __PYX_ERR(0, 79, __pyx_L12_error)
 
@@ -2473,6 +2689,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                 except KeyError:
  *                     raise SyntaxError("prefix %r not found in prefix map" % prefix)
  */
+            __Pyx_TraceLine(80,0,__PYX_ERR(0, 80, __pyx_L12_error))
             __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L12_error)
             __Pyx_GOTREF(__pyx_t_5);
             __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_namespaces, __pyx_cur_scope->__pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L12_error)
@@ -2509,6 +2726,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
             __Pyx_XGIVEREF(__pyx_t_13);
             __pyx_cur_scope->__pyx_t_5 = __pyx_t_13;
             __Pyx_XGIVEREF(__pyx_r);
+            __Pyx_TraceReturn(__pyx_r, 0);
             __Pyx_RefNannyFinishContext();
             __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
             /* return from generator, yielding value */
@@ -2556,6 +2774,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                     raise SyntaxError("prefix %r not found in prefix map" % prefix)
  *             elif default_namespace:
  */
+          __Pyx_TraceLine(81,0,__PYX_ERR(0, 81, __pyx_L14_except_error))
           __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
           if (__pyx_t_14) {
             __Pyx_AddTraceback("lxml._elementpath.xpath_tokenizer", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -2571,6 +2790,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *             elif default_namespace:
  *                 yield token[0], "{%s}%s" % (default_namespace, tag)
  */
+            __Pyx_TraceLine(82,0,__PYX_ERR(0, 82, __pyx_L14_except_error))
             __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_prefix_r_not_found_in_prefix_map, __pyx_cur_scope->__pyx_v_prefix); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 82, __pyx_L14_except_error)
             __Pyx_GOTREF(__pyx_t_9);
             __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_builtin_SyntaxError, __pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 82, __pyx_L14_except_error)
@@ -2615,6 +2835,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *                 yield token[0], "{%s}%s" % (default_namespace, tag)
  *             else:
  */
+      __Pyx_TraceLine(83,0,__PYX_ERR(0, 83, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_default_namespace); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 83, __pyx_L1_error)
       if (__pyx_t_2) {
 
@@ -2625,6 +2846,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *             else:
  *                 yield token
  */
+        __Pyx_TraceLine(84,0,__PYX_ERR(0, 84, __pyx_L1_error))
         __pyx_t_5 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error)
@@ -2653,6 +2875,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
         __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
         __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
         __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_TraceReturn(__pyx_r, 0);
         __Pyx_RefNannyFinishContext();
         __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
         /* return from generator, yielding value */
@@ -2683,6 +2906,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *         else:
  *             yield token
  */
+      __Pyx_TraceLine(86,0,__PYX_ERR(0, 86, __pyx_L1_error))
       /*else*/ {
         __Pyx_INCREF(__pyx_cur_scope->__pyx_v_token);
         __pyx_r = __pyx_cur_scope->__pyx_v_token;
@@ -2691,6 +2915,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
         __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
         __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
         __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_TraceReturn(__pyx_r, 0);
         __Pyx_RefNannyFinishContext();
         __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
         /* return from generator, yielding value */
@@ -2723,6 +2948,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  * 
  * 
  */
+    __Pyx_TraceLine(88,0,__PYX_ERR(0, 88, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_token);
       __pyx_r = __pyx_cur_scope->__pyx_v_token;
@@ -2731,6 +2957,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -2753,6 +2980,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
  *         tag = token[1]
  *         if tag and tag[0] != "{":
  */
+    __Pyx_TraceLine(72,0,__PYX_ERR(0, 72, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -2781,6 +3009,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_2generator(__pyx_CoroutineObject
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2918,6 +3147,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_2_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_2_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -2929,10 +3159,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
   PyObject *(*__pyx_t_9)(PyObject *);
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 93, 0, __PYX_ERR(0, 93, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -2946,6 +3178,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
  *             for e in elem.iterchildren(tag):
  *                 yield e
  */
+  __Pyx_TraceLine(94,0,__PYX_ERR(0, 94, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -2997,6 +3230,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
  *                 yield e
  *     return select
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(0, 95, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tag)) { __Pyx_RaiseClosureNameError("tag"); __PYX_ERR(0, 95, __pyx_L1_error) }
@@ -3095,6 +3329,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
  *     return select
  * 
  */
+      __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
       __pyx_r = __pyx_cur_scope->__pyx_v_e;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -3106,6 +3341,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_8;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_9;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -3131,6 +3367,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
  *                 yield e
  *     return select
  */
+      __Pyx_TraceLine(95,0,__PYX_ERR(0, 95, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -3141,6 +3378,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
  *             for e in elem.iterchildren(tag):
  *                 yield e
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(0, 94, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -3168,6 +3406,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_13prepare_child_2generator1(__pyx
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3184,8 +3423,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_1_prepare_child *__pyx_cur_scope;
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__6)
   __Pyx_RefNannySetupContext("prepare_child", 0);
   __pyx_cur_scope = (struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_1_prepare_child *)__pyx_tp_new_4lxml_12_elementpath___pyx_scope_struct_1_prepare_child(__pyx_ptype_4lxml_12_elementpath___pyx_scope_struct_1_prepare_child, __pyx_empty_tuple, NULL);
   if (unlikely(!__pyx_cur_scope)) {
@@ -3195,6 +3436,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
   } else {
     __Pyx_GOTREF(__pyx_cur_scope);
   }
+  __Pyx_TraceCall("prepare_child", __pyx_f[0], 91, 0, __PYX_ERR(0, 91, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":92
  * 
@@ -3203,6 +3445,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
  *     def select(result):
  *         for elem in result:
  */
+  __Pyx_TraceLine(92,0,__PYX_ERR(0, 92, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -3216,7 +3459,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
  *         for elem in result:
  *             for e in elem.iterchildren(tag):
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_13prepare_child_1select, 0, __pyx_n_s_prepare_child_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
+  __Pyx_TraceLine(93,0,__PYX_ERR(0, 93, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_13prepare_child_1select, 0, __pyx_n_s_prepare_child_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_select = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3228,6 +3472,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
  * 
  * def prepare_star(next, token):
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_select);
   __pyx_r = __pyx_v_select;
@@ -3250,6 +3495,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_3prepare_child(CYTHON_UNUSED PyOb
   __Pyx_XDECREF(__pyx_v_select);
   __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3384,6 +3630,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_3_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_3_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -3393,10 +3640,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
   PyObject *(*__pyx_t_7)(PyObject *);
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 100, 0, __PYX_ERR(0, 100, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -3410,6 +3659,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
  *             for e in elem.iterchildren('*'):
  *                 yield e
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -3461,9 +3711,10 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
  *                 yield e
  *     return select
  */
+    __Pyx_TraceLine(102,0,__PYX_ERR(0, 102, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
@@ -3518,6 +3769,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
  *     return select
  * 
  */
+      __Pyx_TraceLine(103,0,__PYX_ERR(0, 103, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
       __pyx_r = __pyx_cur_scope->__pyx_v_e;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -3529,6 +3781,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -3554,6 +3807,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
  *                 yield e
  *     return select
  */
+      __Pyx_TraceLine(102,0,__PYX_ERR(0, 102, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -3564,6 +3818,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
  *             for e in elem.iterchildren('*'):
  *                 yield e
  */
+    __Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -3589,6 +3844,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3604,9 +3860,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_12prepare_star_2generator2(__pyx_
 static PyObject *__pyx_pf_4lxml_12_elementpath_5prepare_star(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, CYTHON_UNUSED PyObject *__pyx_v_token) {
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__11)
   __Pyx_RefNannySetupContext("prepare_star", 0);
+  __Pyx_TraceCall("prepare_star", __pyx_f[0], 99, 0, __PYX_ERR(0, 99, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":100
  * 
@@ -3615,7 +3874,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_5prepare_star(CYTHON_UNUSED PyObj
  *         for elem in result:
  *             for e in elem.iterchildren('*'):
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_star_1select, 0, __pyx_n_s_prepare_star_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_TraceLine(100,0,__PYX_ERR(0, 100, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_star_1select, 0, __pyx_n_s_prepare_star_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_select = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3627,6 +3887,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_5prepare_star(CYTHON_UNUSED PyObj
  * 
  * def prepare_self(next, token):
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(0, 104, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_select);
   __pyx_r = __pyx_v_select;
@@ -3648,6 +3909,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_5prepare_star(CYTHON_UNUSED PyObj
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_select);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3746,8 +4008,10 @@ static PyObject *__pyx_pw_4lxml_12_elementpath_12prepare_self_1select(PyObject *
 
 static PyObject *__pyx_pf_4lxml_12_elementpath_12prepare_self_select(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_result) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 107, 0, __PYX_ERR(0, 107, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":108
  * def prepare_self(next, token):
@@ -3756,6 +4020,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_12prepare_self_select(CYTHON_UNUS
  *     return select
  * 
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(0, 108, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -3770,8 +4035,12 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_12prepare_self_select(CYTHON_UNUS
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml._elementpath.prepare_self.select", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3787,9 +4056,12 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_12prepare_self_select(CYTHON_UNUS
 static PyObject *__pyx_pf_4lxml_12_elementpath_7prepare_self(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, CYTHON_UNUSED PyObject *__pyx_v_token) {
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__14)
   __Pyx_RefNannySetupContext("prepare_self", 0);
+  __Pyx_TraceCall("prepare_self", __pyx_f[0], 106, 0, __PYX_ERR(0, 106, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":107
  * 
@@ -3798,7 +4070,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_7prepare_self(CYTHON_UNUSED PyObj
  *         return result
  *     return select
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_self_1select, 0, __pyx_n_s_prepare_self_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
+  __Pyx_TraceLine(107,0,__PYX_ERR(0, 107, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_self_1select, 0, __pyx_n_s_prepare_self_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_select = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3810,6 +4083,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_7prepare_self(CYTHON_UNUSED PyObj
  * 
  * def prepare_descendant(next, token):
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(0, 109, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_select);
   __pyx_r = __pyx_v_select;
@@ -3831,6 +4105,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_7prepare_self(CYTHON_UNUSED PyObj
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_select);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3968,6 +4243,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_5_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_5_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -3979,10 +4255,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
   PyObject *(*__pyx_t_9)(PyObject *);
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 119, 0, __PYX_ERR(0, 119, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -3996,6 +4274,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
  *             for e in elem.iterdescendants(tag):
  *                 yield e
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(0, 120, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -4047,6 +4326,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
  *                 yield e
  *     return select
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(0, 121, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_iterdescendants); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tag)) { __Pyx_RaiseClosureNameError("tag"); __PYX_ERR(0, 121, __pyx_L1_error) }
@@ -4145,6 +4425,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
  *     return select
  * 
  */
+      __Pyx_TraceLine(122,0,__PYX_ERR(0, 122, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
       __pyx_r = __pyx_cur_scope->__pyx_v_e;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -4156,6 +4437,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_8;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_9;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -4181,6 +4463,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
  *                 yield e
  *     return select
  */
+      __Pyx_TraceLine(121,0,__PYX_ERR(0, 121, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -4191,6 +4474,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
  *             for e in elem.iterdescendants(tag):
  *                 yield e
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(0, 120, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -4218,6 +4502,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_18prepare_descendant_2generator3(
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4234,12 +4519,14 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_4_prepare_descendant *__pyx_cur_scope;
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__17)
   __Pyx_RefNannySetupContext("prepare_descendant", 0);
   __pyx_cur_scope = (struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_4_prepare_descendant *)__pyx_tp_new_4lxml_12_elementpath___pyx_scope_struct_4_prepare_descendant(__pyx_ptype_4lxml_12_elementpath___pyx_scope_struct_4_prepare_descendant, __pyx_empty_tuple, NULL);
   if (unlikely(!__pyx_cur_scope)) {
@@ -4249,6 +4536,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
   } else {
     __Pyx_GOTREF(__pyx_cur_scope);
   }
+  __Pyx_TraceCall("prepare_descendant", __pyx_f[0], 111, 0, __PYX_ERR(0, 111, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_token);
 
   /* "lxml/_elementpath.py":112
@@ -4258,6 +4546,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *     if token[0] == "*":
  *         tag = "*"
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(0, 112, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_next);
   __pyx_t_2 = __pyx_v_next; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -4287,9 +4576,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *         tag = "*"
  *     elif not token[0]:
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(0, 113, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__8, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__9, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_4) {
 
@@ -4300,9 +4590,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *     elif not token[0]:
  *         tag = token[1]
  */
-    __Pyx_INCREF(__pyx_kp_s__8);
-    __Pyx_GIVEREF(__pyx_kp_s__8);
-    __pyx_cur_scope->__pyx_v_tag = __pyx_kp_s__8;
+    __Pyx_TraceLine(114,0,__PYX_ERR(0, 114, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_s__9);
+    __Pyx_GIVEREF(__pyx_kp_s__9);
+    __pyx_cur_scope->__pyx_v_tag = __pyx_kp_s__9;
 
     /* "lxml/_elementpath.py":113
  * def prepare_descendant(next, token):
@@ -4321,6 +4612,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *         tag = token[1]
  *     else:
  */
+  __Pyx_TraceLine(115,0,__PYX_ERR(0, 115, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
@@ -4335,6 +4627,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *     else:
  *         raise SyntaxError("invalid descendant")
  */
+    __Pyx_TraceLine(116,0,__PYX_ERR(0, 116, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -4358,8 +4651,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *     def select(result):
  *         for elem in result:
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(0, 118, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -4374,7 +4668,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  *         for elem in result:
  *             for e in elem.iterdescendants(tag):
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_18prepare_descendant_1select, 0, __pyx_n_s_prepare_descendant_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
+  __Pyx_TraceLine(119,0,__PYX_ERR(0, 119, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_18prepare_descendant_1select, 0, __pyx_n_s_prepare_descendant_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_select = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4386,6 +4681,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
  * 
  * def prepare_parent(next, token):
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(0, 123, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_select);
   __pyx_r = __pyx_v_select;
@@ -4411,6 +4707,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_9prepare_descendant(CYTHON_UNUSED
   __Pyx_XDECREF(__pyx_v_token);
   __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4545,6 +4842,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_6_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_6_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -4555,10 +4853,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
   int __pyx_t_8;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 126, 0, __PYX_ERR(0, 126, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -4572,6 +4872,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
  *             parent = elem.getparent()
  *             if parent is not None:
  */
+  __Pyx_TraceLine(127,0,__PYX_ERR(0, 127, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -4623,6 +4924,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
  *             if parent is not None:
  *                 yield parent
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(0, 128, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_getparent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -4655,6 +4957,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
  *                 yield parent
  *     return select
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(0, 129, __pyx_L1_error))
     __pyx_t_7 = (__pyx_cur_scope->__pyx_v_parent != Py_None);
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
@@ -4666,6 +4969,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
  *     return select
  * 
  */
+      __Pyx_TraceLine(130,0,__PYX_ERR(0, 130, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_parent);
       __pyx_r = __pyx_cur_scope->__pyx_v_parent;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -4673,6 +4977,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -4702,6 +5007,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
  *             parent = elem.getparent()
  *             if parent is not None:
  */
+    __Pyx_TraceLine(127,0,__PYX_ERR(0, 127, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -4728,6 +5034,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4743,9 +5050,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_14prepare_parent_2generator4(__py
 static PyObject *__pyx_pf_4lxml_12_elementpath_11prepare_parent(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_next, CYTHON_UNUSED PyObject *__pyx_v_token) {
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__21)
   __Pyx_RefNannySetupContext("prepare_parent", 0);
+  __Pyx_TraceCall("prepare_parent", __pyx_f[0], 125, 0, __PYX_ERR(0, 125, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":126
  * 
@@ -4754,7 +5064,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_11prepare_parent(CYTHON_UNUSED Py
  *         for elem in result:
  *             parent = elem.getparent()
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_14prepare_parent_1select, 0, __pyx_n_s_prepare_parent_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __Pyx_TraceLine(126,0,__PYX_ERR(0, 126, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_14prepare_parent_1select, 0, __pyx_n_s_prepare_parent_locals_select, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_select = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4766,6 +5077,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_11prepare_parent(CYTHON_UNUSED Py
  * 
  * def prepare_predicate(next, token):
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(0, 131, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_select);
   __pyx_r = __pyx_v_select;
@@ -4787,6 +5099,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_11prepare_parent(CYTHON_UNUSED Py
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_select);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4924,6 +5237,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_8_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_8_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -4935,10 +5249,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
   int __pyx_t_9;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 155, 0, __PYX_ERR(0, 155, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -4952,6 +5268,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
  *                 if elem.get(key) is not None:
  *                     yield elem
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -5003,6 +5320,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
  *                     yield elem
  *         return select
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(0, 157, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_key)) { __Pyx_RaiseClosureNameError("key"); __PYX_ERR(0, 157, __pyx_L1_error) }
@@ -5061,6 +5379,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
  *         return select
  *     if signature == "@-='":
  */
+      __Pyx_TraceLine(158,0,__PYX_ERR(0, 158, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
       __pyx_r = __pyx_cur_scope->__pyx_v_elem;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -5068,6 +5387,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -5097,6 +5417,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
  *                 if elem.get(key) is not None:
  *                     yield elem
  */
+    __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -5124,6 +5445,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_2generator5(_
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5191,6 +5513,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_9_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_9_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -5201,10 +5524,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
   int __pyx_t_8;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 164, 0, __PYX_ERR(0, 164, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -5218,6 +5543,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
  *                 if elem.get(key) == value:
  *                     yield elem
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(0, 165, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -5269,6 +5595,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
  *                     yield elem
  *         return select
  */
+    __Pyx_TraceLine(166,0,__PYX_ERR(0, 166, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 166, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_key)) { __Pyx_RaiseClosureNameError("key"); __PYX_ERR(0, 166, __pyx_L1_error) }
@@ -5329,6 +5656,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
  *         return select
  *     if signature == "-" and not re.match(r"-?\d+$", predicate[0]):
  */
+      __Pyx_TraceLine(167,0,__PYX_ERR(0, 167, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
       __pyx_r = __pyx_cur_scope->__pyx_v_elem;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -5336,6 +5664,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -5365,6 +5694,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
  *                 if elem.get(key) == value:
  *                     yield elem
  */
+    __Pyx_TraceLine(165,0,__PYX_ERR(0, 165, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -5392,6 +5722,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_5generator6(_
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5459,6 +5790,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_10_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_10_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -5470,10 +5802,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
   PyObject *(*__pyx_t_9)(PyObject *);
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 172, 0, __PYX_ERR(0, 172, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -5487,6 +5821,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *                 for _ in elem.iterchildren(tag):
  *                     yield elem
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(0, 173, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -5538,6 +5873,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *                     yield elem
  *                     break
  */
+    __Pyx_TraceLine(174,0,__PYX_ERR(0, 174, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tag)) { __Pyx_RaiseClosureNameError("tag"); __PYX_ERR(0, 174, __pyx_L1_error) }
@@ -5636,6 +5972,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *                     break
  *         return select
  */
+      __Pyx_TraceLine(175,0,__PYX_ERR(0, 175, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
       __pyx_r = __pyx_cur_scope->__pyx_v_elem;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -5647,6 +5984,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_8;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_9;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -5672,6 +6010,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *         return select
  *     if signature == ".='" or (signature == "-='" and not re.match(r"-?\d+$", predicate[0])):
  */
+      __Pyx_TraceLine(176,0,__PYX_ERR(0, 176, __pyx_L1_error))
       goto __pyx_L7_break;
 
       /* "lxml/_elementpath.py":174
@@ -5681,6 +6020,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *                     yield elem
  *                     break
  */
+      __Pyx_TraceLine(174,0,__PYX_ERR(0, 174, __pyx_L1_error))
     }
     __pyx_L7_break:;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -5692,6 +6032,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
  *                 for _ in elem.iterchildren(tag):
  *                     yield elem
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(0, 173, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -5719,6 +6060,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_8generator7(_
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5786,6 +6128,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_11_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_11_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -5798,10 +6141,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
   int __pyx_t_10;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 183, 0, __PYX_ERR(0, 183, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L9_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -5815,6 +6160,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                     for e in elem.iterchildren(tag):
  *                         if "".join(e.itertext()) == value:
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(0, 184, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -5866,6 +6212,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                         if "".join(e.itertext()) == value:
  *                             yield elem
  */
+    __Pyx_TraceLine(185,0,__PYX_ERR(0, 185, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 185, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tag)) { __Pyx_RaiseClosureNameError("tag"); __PYX_ERR(0, 185, __pyx_L1_error) }
@@ -5964,6 +6311,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                             yield elem
  *                             break
  */
+      __Pyx_TraceLine(186,0,__PYX_ERR(0, 186, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_e, __pyx_n_s_itertext); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 186, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_6 = NULL;
@@ -5984,7 +6332,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
       }
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 186, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyString_Join(__pyx_kp_s__24, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 186, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_value)) { __Pyx_RaiseClosureNameError("value"); __PYX_ERR(0, 186, __pyx_L1_error) }
@@ -5999,6 +6347,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                             break
  *         else:
  */
+        __Pyx_TraceLine(187,0,__PYX_ERR(0, 187, __pyx_L1_error))
         __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
         __pyx_r = __pyx_cur_scope->__pyx_v_elem;
         __Pyx_XGIVEREF(__pyx_t_1);
@@ -6010,6 +6359,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
         __pyx_cur_scope->__pyx_t_4 = __pyx_t_8;
         __pyx_cur_scope->__pyx_t_5 = __pyx_t_9;
         __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_TraceReturn(__pyx_r, 0);
         __Pyx_RefNannyFinishContext();
         __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
         /* return from generator, yielding value */
@@ -6035,6 +6385,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *         else:
  *             def select(result):
  */
+        __Pyx_TraceLine(188,0,__PYX_ERR(0, 188, __pyx_L1_error))
         goto __pyx_L7_break;
 
         /* "lxml/_elementpath.py":186
@@ -6053,6 +6404,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                         if "".join(e.itertext()) == value:
  *                             yield elem
  */
+      __Pyx_TraceLine(185,0,__PYX_ERR(0, 185, __pyx_L1_error))
     }
     __pyx_L7_break:;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -6064,6 +6416,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
  *                     for e in elem.iterchildren(tag):
  *                         if "".join(e.itertext()) == value:
  */
+    __Pyx_TraceLine(184,0,__PYX_ERR(0, 184, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -6091,6 +6444,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_11generator8(
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6158,6 +6512,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_12_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_12_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -6167,10 +6522,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
   int __pyx_t_7;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 190, 0, __PYX_ERR(0, 190, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -6184,6 +6541,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
  *                     if "".join(elem.itertext()) == value:
  *                         yield elem
  */
+  __Pyx_TraceLine(191,0,__PYX_ERR(0, 191, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -6235,6 +6593,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
  *                         yield elem
  *         return select
  */
+    __Pyx_TraceLine(192,0,__PYX_ERR(0, 192, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_itertext); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -6255,7 +6614,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__24, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_value)) { __Pyx_RaiseClosureNameError("value"); __PYX_ERR(0, 192, __pyx_L1_error) }
@@ -6270,6 +6629,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
  *         return select
  *     if signature == "-" or signature == "-()" or signature == "-()-":
  */
+      __Pyx_TraceLine(193,0,__PYX_ERR(0, 193, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
       __pyx_r = __pyx_cur_scope->__pyx_v_elem;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -6277,6 +6637,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -6306,6 +6667,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
  *                     if "".join(elem.itertext()) == value:
  *                         yield elem
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(0, 191, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -6332,6 +6694,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_14generator9(
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6399,6 +6762,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_13_select *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_13_select *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -6415,10 +6779,12 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
   int __pyx_t_14;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("select", 0);
+  __Pyx_TraceCall("select", __pyx_f[0], 216, 0, __PYX_ERR(0, 216, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L16_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -6432,6 +6798,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                 parent = elem.getparent()
  *                 if parent is None:
  */
+  __Pyx_TraceLine(217,0,__PYX_ERR(0, 217, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_result)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_result)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_result; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -6483,6 +6850,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                 if parent is None:
  *                     continue
  */
+    __Pyx_TraceLine(218,0,__PYX_ERR(0, 218, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_getparent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -6515,6 +6883,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                     continue
  *                 try:
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
     __pyx_t_7 = (__pyx_cur_scope->__pyx_v_parent == Py_None);
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
@@ -6526,6 +6895,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                 try:
  *                     # FIXME: what if the selector is "*" ?
  */
+      __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
       goto __pyx_L4_continue;
 
       /* "lxml/_elementpath.py":219
@@ -6544,6 +6914,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                     # FIXME: what if the selector is "*" ?
  *                     elems = list(parent.iterchildren(elem.tag))
  */
+    __Pyx_TraceLine(221,0,__PYX_ERR(0, 221, __pyx_L7_error))
     {
       __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
       __Pyx_XGOTREF(__pyx_t_9);
@@ -6558,6 +6929,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                     if elems[index] is elem:
  *                         yield elem
  */
+        __Pyx_TraceLine(223,0,__PYX_ERR(0, 223, __pyx_L7_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_parent, __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L7_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L7_error)
@@ -6623,6 +6995,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                         yield elem
  *                 except IndexError:
  */
+        __Pyx_TraceLine(224,0,__PYX_ERR(0, 224, __pyx_L7_error))
         if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_index)) { __Pyx_RaiseClosureNameError("index"); __PYX_ERR(0, 224, __pyx_L7_error) }
         __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_elems, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L7_error)
         __Pyx_GOTREF(__pyx_t_5);
@@ -6638,6 +7011,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                 except IndexError:
  *                     pass
  */
+          __Pyx_TraceLine(225,0,__PYX_ERR(0, 225, __pyx_L7_error))
           __Pyx_INCREF(__pyx_cur_scope->__pyx_v_elem);
           __pyx_r = __pyx_cur_scope->__pyx_v_elem;
           __Pyx_XGIVEREF(__pyx_t_1);
@@ -6651,6 +7025,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
           __Pyx_XGIVEREF(__pyx_t_11);
           __pyx_cur_scope->__pyx_t_5 = __pyx_t_11;
           __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_TraceReturn(__pyx_r, 0);
           __Pyx_RefNannyFinishContext();
           __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
           /* return from generator, yielding value */
@@ -6708,6 +7083,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                     pass
  *         return select
  */
+      __Pyx_TraceLine(226,0,__PYX_ERR(0, 226, __pyx_L9_except_error))
       __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError);
       if (__pyx_t_14) {
         __Pyx_ErrRestore(0,0,0);
@@ -6743,6 +7119,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
  *                 parent = elem.getparent()
  *                 if parent is None:
  */
+    __Pyx_TraceLine(217,0,__PYX_ERR(0, 217, __pyx_L1_error))
     __pyx_L4_continue:;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6772,6 +7149,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_17prepare_predicate_17generator10
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6790,6 +7168,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
   PyObject *__pyx_v_predicate = NULL;
   PyObject *__pyx_v_select = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -6804,6 +7183,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__25)
   __Pyx_RefNannySetupContext("prepare_predicate", 0);
   __pyx_cur_scope = (struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_7_prepare_predicate *)__pyx_tp_new_4lxml_12_elementpath___pyx_scope_struct_7_prepare_predicate(__pyx_ptype_4lxml_12_elementpath___pyx_scope_struct_7_prepare_predicate, __pyx_empty_tuple, NULL);
   if (unlikely(!__pyx_cur_scope)) {
@@ -6813,6 +7193,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
   } else {
     __Pyx_GOTREF(__pyx_cur_scope);
   }
+  __Pyx_TraceCall("prepare_predicate", __pyx_f[0], 133, 0, __PYX_ERR(0, 133, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_token);
 
   /* "lxml/_elementpath.py":137
@@ -6822,8 +7203,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     predicate = []
  *     while 1:
  */
-  __Pyx_INCREF(__pyx_kp_s__19);
-  __pyx_v_signature = __pyx_kp_s__19;
+  __Pyx_TraceLine(137,0,__PYX_ERR(0, 137, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_kp_s__24);
+  __pyx_v_signature = __pyx_kp_s__24;
 
   /* "lxml/_elementpath.py":138
  *     # http://javascript.crockford.com/tdop/tdop.html
@@ -6832,6 +7214,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     while 1:
  *         token = next()
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(0, 138, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_predicate = ((PyObject*)__pyx_t_1);
@@ -6844,6 +7227,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         token = next()
  *         if token[0] == "]":
  */
+  __Pyx_TraceLine(139,0,__PYX_ERR(0, 139, __pyx_L1_error))
   while (1) {
 
     /* "lxml/_elementpath.py":140
@@ -6853,6 +7237,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         if token[0] == "]":
  *             break
  */
+    __Pyx_TraceLine(140,0,__PYX_ERR(0, 140, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_next);
     __pyx_t_2 = __pyx_v_next; __pyx_t_3 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -6882,9 +7267,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             break
  *         if token == ('', ''):
  */
+    __Pyx_TraceLine(141,0,__PYX_ERR(0, 141, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__20, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
+    __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__26, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_4) {
 
@@ -6895,6 +7281,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         if token == ('', ''):
  *             # ignore whitespace
  */
+      __Pyx_TraceLine(142,0,__PYX_ERR(0, 142, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/_elementpath.py":141
@@ -6913,7 +7300,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             # ignore whitespace
  *             continue
  */
-    __pyx_t_1 = PyObject_RichCompare(__pyx_v_token, __pyx_tuple__21, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
+    __Pyx_TraceLine(143,0,__PYX_ERR(0, 143, __pyx_L1_error))
+    __pyx_t_1 = PyObject_RichCompare(__pyx_v_token, __pyx_tuple__27, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_4) {
@@ -6925,6 +7313,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         if token[0] and token[0][:1] in "'\"":
  *             token = "'", token[0][1:-1]
  */
+      __Pyx_TraceLine(145,0,__PYX_ERR(0, 145, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/_elementpath.py":143
@@ -6943,6 +7332,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             token = "'", token[0][1:-1]
  *         signature += token[0] or "-"
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 146, __pyx_L1_error)
@@ -6954,10 +7344,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
     }
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 0, 1, NULL, NULL, &__pyx_slice__22, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 0, 1, NULL, NULL, &__pyx_slice__28, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_kp_s__23, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 146, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_kp_s__29, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 146, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_6 = (__pyx_t_5 != 0);
     __pyx_t_4 = __pyx_t_6;
@@ -6971,16 +7361,17 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         signature += token[0] or "-"
  *         predicate.append(token[1])
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(0, 147, __pyx_L1_error))
       __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, -1L, NULL, NULL, &__pyx_slice__25, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, -1L, NULL, NULL, &__pyx_slice__31, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_INCREF(__pyx_kp_s__24);
-      __Pyx_GIVEREF(__pyx_kp_s__24);
-      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s__24);
+      __Pyx_INCREF(__pyx_kp_s__30);
+      __Pyx_GIVEREF(__pyx_kp_s__30);
+      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s__30);
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
       __pyx_t_1 = 0;
@@ -7003,6 +7394,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         predicate.append(token[1])
  * 
  */
+    __Pyx_TraceLine(148,0,__PYX_ERR(0, 148, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 148, __pyx_L1_error)
@@ -7014,8 +7406,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       goto __pyx_L10_bool_binop_done;
     }
-    __Pyx_INCREF(__pyx_kp_s__26);
-    __pyx_t_2 = __pyx_kp_s__26;
+    __Pyx_INCREF(__pyx_kp_s__32);
+    __pyx_t_2 = __pyx_kp_s__32;
     __pyx_L10_bool_binop_done:;
     __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_signature, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -7030,6 +7422,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  * 
  *     # use signature to determine predicate type
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(0, 149, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_token, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_predicate, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error)
@@ -7045,7 +7438,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         # [@attribute] predicate
  *         key = predicate[1]
  */
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__27, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 152, __pyx_L1_error)
+  __Pyx_TraceLine(152,0,__PYX_ERR(0, 152, __pyx_L1_error))
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 152, __pyx_L1_error)
   if (__pyx_t_4) {
 
     /* "lxml/_elementpath.py":154
@@ -7055,6 +7449,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         def select(result):
  *             for elem in result:
  */
+    __Pyx_TraceLine(154,0,__PYX_ERR(0, 154, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7068,7 +7463,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             for elem in result:
  *                 if elem.get(key) is not None:
  */
-    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_1select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
+    __Pyx_TraceLine(155,0,__PYX_ERR(0, 155, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_1select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_select = __pyx_t_1;
     __pyx_t_1 = 0;
@@ -7080,6 +7476,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     if signature == "@-='":
  *         # [@attribute='value']
  */
+    __Pyx_TraceLine(159,0,__PYX_ERR(0, 159, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_select);
     __pyx_r = __pyx_v_select;
@@ -7101,7 +7498,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         # [@attribute='value']
  *         key = predicate[1]
  */
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__30, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 160, __pyx_L1_error)
+  __Pyx_TraceLine(160,0,__PYX_ERR(0, 160, __pyx_L1_error))
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__36, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 160, __pyx_L1_error)
   if (__pyx_t_4) {
 
     /* "lxml/_elementpath.py":162
@@ -7111,6 +7509,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         value = predicate[-1]
  *         def select(result):
  */
+    __Pyx_TraceLine(162,0,__PYX_ERR(0, 162, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7124,6 +7523,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         def select(result):
  *             for elem in result:
  */
+    __Pyx_TraceLine(163,0,__PYX_ERR(0, 163, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7137,7 +7537,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             for elem in result:
  *                 if elem.get(key) == value:
  */
-    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_4select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error)
+    __Pyx_TraceLine(164,0,__PYX_ERR(0, 164, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_4select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_select = __pyx_t_1;
     __pyx_t_1 = 0;
@@ -7149,6 +7550,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     if signature == "-" and not re.match(r"-?\d+$", predicate[0]):
  *         # [tag]
  */
+    __Pyx_TraceLine(168,0,__PYX_ERR(0, 168, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_select);
     __pyx_r = __pyx_v_select;
@@ -7170,7 +7572,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         # [tag]
  *         tag = predicate[0]
  */
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__26, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 169, __pyx_L1_error)
+  __Pyx_TraceLine(169,0,__PYX_ERR(0, 169, __pyx_L1_error))
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__32, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 169, __pyx_L1_error)
   if (__pyx_t_6) {
   } else {
     __pyx_t_4 = __pyx_t_6;
@@ -7244,6 +7647,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         def select(result):
  *             for elem in result:
  */
+    __Pyx_TraceLine(171,0,__PYX_ERR(0, 171, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7257,7 +7661,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             for elem in result:
  *                 for _ in elem.iterchildren(tag):
  */
-    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_7select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+    __Pyx_TraceLine(172,0,__PYX_ERR(0, 172, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_7select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_select = __pyx_t_1;
     __pyx_t_1 = 0;
@@ -7269,6 +7674,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     if signature == ".='" or (signature == "-='" and not re.match(r"-?\d+$", predicate[0])):
  *         # [.='value'] or [tag='value']
  */
+    __Pyx_TraceLine(177,0,__PYX_ERR(0, 177, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_select);
     __pyx_r = __pyx_v_select;
@@ -7290,13 +7696,14 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         # [.='value'] or [tag='value']
  *         tag = predicate[0]
  */
-  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__36, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
+  __Pyx_TraceLine(178,0,__PYX_ERR(0, 178, __pyx_L1_error))
+  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__42, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
   if (!__pyx_t_5) {
   } else {
     __pyx_t_4 = __pyx_t_5;
     goto __pyx_L18_bool_binop_done;
   }
-  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__37, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__43, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
   if (__pyx_t_5) {
   } else {
     __pyx_t_4 = __pyx_t_5;
@@ -7370,6 +7777,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         value = predicate[-1]
  *         if tag:
  */
+    __Pyx_TraceLine(180,0,__PYX_ERR(0, 180, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7383,6 +7791,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         if tag:
  *             def select(result):
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(0, 181, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -7396,6 +7805,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             def select(result):
  *                 for elem in result:
  */
+    __Pyx_TraceLine(182,0,__PYX_ERR(0, 182, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_tag); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 182, __pyx_L1_error)
     if (__pyx_t_4) {
 
@@ -7406,7 +7816,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 for elem in result:
  *                     for e in elem.iterchildren(tag):
  */
-      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_10select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error)
+      __Pyx_TraceLine(183,0,__PYX_ERR(0, 183, __pyx_L1_error))
+      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_10select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_select = __pyx_t_1;
       __pyx_t_1 = 0;
@@ -7428,8 +7839,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 for elem in result:
  *                     if "".join(elem.itertext()) == value:
  */
+    __Pyx_TraceLine(190,0,__PYX_ERR(0, 190, __pyx_L1_error))
     /*else*/ {
-      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_13select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_13select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_select = __pyx_t_1;
       __pyx_t_1 = 0;
@@ -7443,6 +7855,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     if signature == "-" or signature == "-()" or signature == "-()-":
  *         # [index] or [last()] or [last()-index]
  */
+    __Pyx_TraceLine(194,0,__PYX_ERR(0, 194, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_select);
     __pyx_r = __pyx_v_select;
@@ -7464,19 +7877,20 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         # [index] or [last()] or [last()-index]
  *         if signature == "-":
  */
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__26, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __Pyx_TraceLine(195,0,__PYX_ERR(0, 195, __pyx_L1_error))
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__32, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
   if (!__pyx_t_6) {
   } else {
     __pyx_t_4 = __pyx_t_6;
     goto __pyx_L23_bool_binop_done;
   }
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__42, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__48, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
   if (!__pyx_t_6) {
   } else {
     __pyx_t_4 = __pyx_t_6;
     goto __pyx_L23_bool_binop_done;
   }
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__43, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__49, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
   __pyx_t_4 = __pyx_t_6;
   __pyx_L23_bool_binop_done:;
   if (__pyx_t_4) {
@@ -7488,7 +7902,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             # [index]
  *             index = int(predicate[0]) - 1
  */
-    __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__26, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
+    __Pyx_TraceLine(197,0,__PYX_ERR(0, 197, __pyx_L1_error))
+    __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__32, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
     if (__pyx_t_4) {
 
       /* "lxml/_elementpath.py":199
@@ -7498,6 +7913,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             if index < 0:
  *                 if index == -1:
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(0, 199, __pyx_L1_error))
       __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_10 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
@@ -7517,6 +7933,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 if index == -1:
  *                     raise SyntaxError(
  */
+      __Pyx_TraceLine(200,0,__PYX_ERR(0, 200, __pyx_L1_error))
       __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_index, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error)
       __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 200, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7529,6 +7946,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                     raise SyntaxError(
  *                         "indices in path predicates are 1-based, not 0-based")
  */
+        __Pyx_TraceLine(201,0,__PYX_ERR(0, 201, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_cur_scope->__pyx_v_index, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 201, __pyx_L1_error)
@@ -7542,7 +7960,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                         "indices in path predicates are 1-based, not 0-based")
  *                 else:
  */
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error)
+          __Pyx_TraceLine(202,0,__PYX_ERR(0, 202, __pyx_L1_error))
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __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;
@@ -7564,8 +7983,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         else:
  *             if predicate[0] != "last":
  */
+        __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
         /*else*/ {
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __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;
@@ -7598,6 +8018,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 raise SyntaxError("unsupported function")
  *             if signature == "-()-":
  */
+    __Pyx_TraceLine(207,0,__PYX_ERR(0, 207, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -7612,7 +8033,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             if signature == "-()-":
  *                 try:
  */
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error)
+        __Pyx_TraceLine(208,0,__PYX_ERR(0, 208, __pyx_L1_error))
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __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;
@@ -7634,7 +8056,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 try:
  *                     index = int(predicate[2]) - 1
  */
-      __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__43, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 209, __pyx_L1_error)
+      __Pyx_TraceLine(209,0,__PYX_ERR(0, 209, __pyx_L1_error))
+      __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_signature, __pyx_kp_s__49, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 209, __pyx_L1_error)
       if (__pyx_t_4) {
 
         /* "lxml/_elementpath.py":210
@@ -7644,6 +8067,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                     index = int(predicate[2]) - 1
  *                 except ValueError:
  */
+        __Pyx_TraceLine(210,0,__PYX_ERR(0, 210, __pyx_L31_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -7660,6 +8084,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                 except ValueError:
  *                     raise SyntaxError("unsupported expression")
  */
+            __Pyx_TraceLine(211,0,__PYX_ERR(0, 211, __pyx_L31_error))
             __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_predicate, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L31_error)
             __Pyx_GOTREF(__pyx_t_1);
             __pyx_t_10 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 211, __pyx_L31_error)
@@ -7698,6 +8123,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *                     raise SyntaxError("unsupported expression")
  *             else:
  */
+          __Pyx_TraceLine(212,0,__PYX_ERR(0, 212, __pyx_L33_except_error))
           __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
           if (__pyx_t_9) {
             __Pyx_AddTraceback("lxml._elementpath.prepare_predicate", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -7713,7 +8139,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             else:
  *                 index = -1
  */
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L33_except_error)
+            __Pyx_TraceLine(213,0,__PYX_ERR(0, 213, __pyx_L33_except_error))
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L33_except_error)
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_Raise(__pyx_t_3, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7754,6 +8181,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *         def select(result):
  *             for elem in result:
  */
+      __Pyx_TraceLine(215,0,__PYX_ERR(0, 215, __pyx_L1_error))
       /*else*/ {
         __Pyx_INCREF(__pyx_int_neg_1);
         __Pyx_GIVEREF(__pyx_int_neg_1);
@@ -7770,7 +8198,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *             for elem in result:
  *                 parent = elem.getparent()
  */
-    __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_16select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 216, __pyx_L1_error)
+    __Pyx_TraceLine(216,0,__PYX_ERR(0, 216, __pyx_L1_error))
+    __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_17prepare_predicate_16select, 0, __pyx_n_s_prepare_predicate_locals_select, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 216, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_v_select = __pyx_t_8;
     __pyx_t_8 = 0;
@@ -7782,6 +8211,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  *     raise SyntaxError("invalid predicate")
  * 
  */
+    __Pyx_TraceLine(228,0,__PYX_ERR(0, 228, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_select);
     __pyx_r = __pyx_v_select;
@@ -7803,7 +8233,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
  * 
  * ops = {
  */
-  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_TraceLine(229,0,__PYX_ERR(0, 229, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 229, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_Raise(__pyx_t_8, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -7833,6 +8264,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_13prepare_predicate(CYTHON_UNUSED
   __Pyx_XDECREF(__pyx_v_token);
   __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7954,6 +8386,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_20_build_path_iterator_2generator
 {
   struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_15_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_15_genexpr *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -7963,9 +8396,11 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_20_build_path_iterator_2generator
   int __pyx_t_7;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("genexpr", 0);
+  __Pyx_TraceCall("genexpr", __pyx_f[0], 257, 0, __PYX_ERR(0, 257, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -8063,6 +8498,7 @@ static PyObject *__pyx_gb_4lxml_12_elementpath_20_build_path_iterator_2generator
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8083,6 +8519,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
   PyObject *__pyx_v_token = NULL;
   PyObject *__pyx_v_selector = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -8096,6 +8533,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
   PyObject *__pyx_t_10 = NULL;
   int __pyx_t_11;
   Py_ssize_t __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__57)
   __Pyx_RefNannySetupContext("_build_path_iterator", 0);
   __pyx_cur_scope = (struct __pyx_obj_4lxml_12_elementpath___pyx_scope_struct_14__build_path_iterator *)__pyx_tp_new_4lxml_12_elementpath___pyx_scope_struct_14__build_path_iterator(__pyx_ptype_4lxml_12_elementpath___pyx_scope_struct_14__build_path_iterator, __pyx_empty_tuple, NULL);
   if (unlikely(!__pyx_cur_scope)) {
@@ -8105,6 +8543,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
   } else {
     __Pyx_GOTREF(__pyx_cur_scope);
   }
+  __Pyx_TraceCall("_build_path_iterator", __pyx_f[0], 246, 0, __PYX_ERR(0, 246, __pyx_L1_error));
   __pyx_cur_scope->__pyx_v_namespaces = __pyx_v_namespaces;
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_namespaces);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_namespaces);
@@ -8117,9 +8556,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         path += "*"  # implicit all (FIXME: keep this?)
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_path, -1L, 0, NULL, NULL, &__pyx_slice__51, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __Pyx_TraceLine(248,0,__PYX_ERR(0, 248, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_path, -1L, 0, NULL, NULL, &__pyx_slice__58, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__52, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__59, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
@@ -8130,7 +8570,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  * 
  *     cache_key = (path,)
  */
-    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_path, __pyx_kp_s__8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error)
+    __Pyx_TraceLine(249,0,__PYX_ERR(0, 249, __pyx_L1_error))
+    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_path, __pyx_kp_s__9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_1);
     __pyx_t_1 = 0;
@@ -8151,6 +8592,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     if namespaces:
  *         if '' in namespaces:
  */
+  __Pyx_TraceLine(251,0,__PYX_ERR(0, 251, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_path);
@@ -8166,6 +8608,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         if '' in namespaces:
  *             raise ValueError("empty namespace prefix must be passed as None, not the empty string")
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(0, 252, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_namespaces); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 252, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -8176,7 +8619,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             raise ValueError("empty namespace prefix must be passed as None, not the empty string")
  *         if None in namespaces:
  */
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__19, __pyx_cur_scope->__pyx_v_namespaces, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 253, __pyx_L1_error)
+    __Pyx_TraceLine(253,0,__PYX_ERR(0, 253, __pyx_L1_error))
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__24, __pyx_cur_scope->__pyx_v_namespaces, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 253, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -8187,7 +8631,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         if None in namespaces:
  *             cache_key += (namespaces[None],) + tuple(sorted(
  */
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+      __Pyx_TraceLine(254,0,__PYX_ERR(0, 254, __pyx_L1_error))
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __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;
@@ -8209,6 +8654,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             cache_key += (namespaces[None],) + tuple(sorted(
  *                 item for item in namespaces.items() if item[0] is not None))
  */
+    __Pyx_TraceLine(255,0,__PYX_ERR(0, 255, __pyx_L1_error))
     __pyx_t_3 = (__Pyx_PySequence_ContainsTF(Py_None, __pyx_cur_scope->__pyx_v_namespaces, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 255, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -8220,6 +8666,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *                 item for item in namespaces.items() if item[0] is not None))
  *         else:
  */
+      __Pyx_TraceLine(256,0,__PYX_ERR(0, 256, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_namespaces, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
@@ -8235,6 +8682,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         else:
  *             cache_key += tuple(sorted(namespaces.items()))
  */
+      __Pyx_TraceLine(257,0,__PYX_ERR(0, 257, __pyx_L1_error))
       __pyx_t_5 = __pyx_pf_4lxml_12_elementpath_20_build_path_iterator_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
 
@@ -8245,6 +8693,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *                 item for item in namespaces.items() if item[0] is not None))
  *         else:
  */
+      __Pyx_TraceLine(256,0,__PYX_ERR(0, 256, __pyx_L1_error))
       __pyx_t_6 = __Pyx_Generator_Next(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -8285,6 +8734,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  * 
  *     try:
  */
+    __Pyx_TraceLine(259,0,__PYX_ERR(0, 259, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_namespaces, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -8343,6 +8793,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         return _cache[cache_key]
  *     except KeyError:
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(0, 261, __pyx_L7_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -8359,6 +8810,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     except KeyError:
  *         pass
  */
+      __Pyx_TraceLine(262,0,__PYX_ERR(0, 262, __pyx_L7_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cache); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L7_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -8390,6 +8842,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         pass
  *     if len(_cache) > 100:
  */
+    __Pyx_TraceLine(263,0,__PYX_ERR(0, 263, __pyx_L9_except_error))
     __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_11) {
       __Pyx_ErrRestore(0,0,0);
@@ -8430,6 +8883,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         _cache.clear()
  * 
  */
+  __Pyx_TraceLine(265,0,__PYX_ERR(0, 265, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cache); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 265, __pyx_L1_error)
@@ -8444,6 +8898,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  * 
  *     if path[:1] == "/":
  */
+    __Pyx_TraceLine(266,0,__PYX_ERR(0, 266, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cache); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 266, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
@@ -8485,9 +8940,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         raise SyntaxError("cannot use absolute path on element")
  *     stream = iter(xpath_tokenizer(path, namespaces))
  */
-  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__54, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+  __Pyx_TraceLine(268,0,__PYX_ERR(0, 268, __pyx_L1_error))
+  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__61, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__52, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 268, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__59, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 268, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (unlikely(__pyx_t_2)) {
 
@@ -8498,7 +8954,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     stream = iter(xpath_tokenizer(path, namespaces))
  *     try:
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
+    __Pyx_TraceLine(269,0,__PYX_ERR(0, 269, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -8520,6 +8977,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     try:
  *         _next = stream.next
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(0, 270, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_xpath_tokenizer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_6 = NULL;
@@ -8580,6 +9038,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         _next = stream.next
  *     except AttributeError:
  */
+  __Pyx_TraceLine(271,0,__PYX_ERR(0, 271, __pyx_L15_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -8596,6 +9055,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     except AttributeError:
  *         # Python 3
  */
+      __Pyx_TraceLine(272,0,__PYX_ERR(0, 272, __pyx_L15_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_stream, __pyx_n_s_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L15_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v__next = __pyx_t_1;
@@ -8626,6 +9086,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         # Python 3
  *         _next = stream.__next__
  */
+    __Pyx_TraceLine(273,0,__PYX_ERR(0, 273, __pyx_L17_except_error))
     __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_11) {
       __Pyx_AddTraceback("lxml._elementpath._build_path_iterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -8641,6 +9102,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     try:
  *         token = _next()
  */
+      __Pyx_TraceLine(275,0,__PYX_ERR(0, 275, __pyx_L17_except_error))
       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_stream, __pyx_n_s_next_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 275, __pyx_L17_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_XDECREF_SET(__pyx_v__next, __pyx_t_6);
@@ -8680,6 +9142,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         token = _next()
  *     except StopIteration:
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(0, 276, __pyx_L23_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -8696,6 +9159,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     except StopIteration:
  *         raise SyntaxError("empty path expression")
  */
+      __Pyx_TraceLine(277,0,__PYX_ERR(0, 277, __pyx_L23_error))
       __Pyx_INCREF(__pyx_v__next);
       __pyx_t_4 = __pyx_v__next; __pyx_t_1 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -8743,6 +9207,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         raise SyntaxError("empty path expression")
  *     selector = []
  */
+    __Pyx_TraceLine(278,0,__PYX_ERR(0, 278, __pyx_L25_except_error))
     __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
     if (__pyx_t_11) {
       __Pyx_AddTraceback("lxml._elementpath._build_path_iterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -8758,7 +9223,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     selector = []
  *     while 1:
  */
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 279, __pyx_L25_except_error)
+      __Pyx_TraceLine(279,0,__PYX_ERR(0, 279, __pyx_L25_except_error))
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 279, __pyx_L25_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8789,6 +9255,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     while 1:
  *         try:
  */
+  __Pyx_TraceLine(280,0,__PYX_ERR(0, 280, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_selector = ((PyObject*)__pyx_t_1);
@@ -8801,6 +9268,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         try:
  *             selector.append(ops[token[0]](_next, token))
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(0, 281, __pyx_L1_error))
   while (1) {
 
     /* "lxml/_elementpath.py":282
@@ -8810,6 +9278,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             selector.append(ops[token[0]](_next, token))
  *         except StopIteration:
  */
+    __Pyx_TraceLine(282,0,__PYX_ERR(0, 282, __pyx_L33_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -8826,6 +9295,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         except StopIteration:
  *             raise SyntaxError("invalid path")
  */
+        __Pyx_TraceLine(283,0,__PYX_ERR(0, 283, __pyx_L33_error))
         __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ops); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 283, __pyx_L33_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 283, __pyx_L33_error)
@@ -8907,6 +9377,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             raise SyntaxError("invalid path")
  *         try:
  */
+      __Pyx_TraceLine(284,0,__PYX_ERR(0, 284, __pyx_L35_except_error))
       __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
       if (__pyx_t_11) {
         __Pyx_AddTraceback("lxml._elementpath._build_path_iterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -8922,7 +9393,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         try:
  *             token = _next()
  */
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L35_except_error)
+        __Pyx_TraceLine(285,0,__PYX_ERR(0, 285, __pyx_L35_except_error))
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_SyntaxError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L35_except_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_Raise(__pyx_t_5, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -8953,6 +9425,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             token = _next()
  *             if token[0] == "/":
  */
+    __Pyx_TraceLine(286,0,__PYX_ERR(0, 286, __pyx_L43_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -8969,6 +9442,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             if token[0] == "/":
  *                 token = _next()
  */
+        __Pyx_TraceLine(287,0,__PYX_ERR(0, 287, __pyx_L43_error))
         __Pyx_INCREF(__pyx_v__next);
         __pyx_t_6 = __pyx_v__next; __pyx_t_1 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -8998,9 +9472,10 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *                 token = _next()
  *         except StopIteration:
  */
+        __Pyx_TraceLine(288,0,__PYX_ERR(0, 288, __pyx_L43_error))
         __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_token, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L43_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__52, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 288, __pyx_L43_error)
+        __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_kp_s__59, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 288, __pyx_L43_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         if (__pyx_t_2) {
 
@@ -9011,6 +9486,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *         except StopIteration:
  *             break
  */
+          __Pyx_TraceLine(289,0,__PYX_ERR(0, 289, __pyx_L43_error))
           __Pyx_INCREF(__pyx_v__next);
           __pyx_t_6 = __pyx_v__next; __pyx_t_1 = NULL;
           if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -9067,6 +9543,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *             break
  *     _cache[cache_key] = selector
  */
+      __Pyx_TraceLine(290,0,__PYX_ERR(0, 290, __pyx_L45_except_error))
       __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
       if (__pyx_t_11) {
         __Pyx_AddTraceback("lxml._elementpath._build_path_iterator", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -9082,6 +9559,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     _cache[cache_key] = selector
  *     return selector
  */
+        __Pyx_TraceLine(291,0,__PYX_ERR(0, 291, __pyx_L45_except_error))
         goto __pyx_L52_except_break;
         __pyx_L52_except_break:;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -9122,6 +9600,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  *     return selector
  * 
  */
+  __Pyx_TraceLine(292,0,__PYX_ERR(0, 292, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 292, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_cache_key, __pyx_v_selector) < 0)) __PYX_ERR(0, 292, __pyx_L1_error)
@@ -9134,6 +9613,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
  * 
  * 
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(0, 293, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_selector);
   __pyx_r = __pyx_v_selector;
@@ -9164,6 +9644,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_15_build_path_iterator(CYTHON_UNU
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9258,6 +9739,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_v_select = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -9267,7 +9749,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
   Py_ssize_t __pyx_t_6;
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__65)
   __Pyx_RefNannySetupContext("iterfind", 0);
+  __Pyx_TraceCall("iterfind", __pyx_f[0], 299, 0, __PYX_ERR(0, 299, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":300
  * 
@@ -9276,6 +9760,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  *     result = iter((elem,))
  *     for select in selector:
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(0, 300, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_build_path_iterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -9333,6 +9818,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  *     for select in selector:
  *         result = select(result)
  */
+  __Pyx_TraceLine(301,0,__PYX_ERR(0, 301, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_elem);
@@ -9351,6 +9837,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  *         result = select(result)
  *     return result
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(0, 302, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_selector)) || PyTuple_CheckExact(__pyx_v_selector)) {
     __pyx_t_2 = __pyx_v_selector; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
@@ -9400,6 +9887,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  *     return result
  * 
  */
+    __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_select);
     __pyx_t_5 = __pyx_v_select; __pyx_t_3 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -9454,6 +9942,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  *         result = select(result)
  *     return result
  */
+    __Pyx_TraceLine(302,0,__PYX_ERR(0, 302, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -9464,6 +9953,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
  * 
  * 
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(0, 304, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -9491,6 +9981,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_17iterfind(CYTHON_UNUSED PyObject
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XDECREF(__pyx_v_select);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9583,6 +10074,7 @@ static PyObject *__pyx_pw_4lxml_12_elementpath_20find(PyObject *__pyx_self, PyOb
 static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_it = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -9592,7 +10084,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__66)
   __Pyx_RefNannySetupContext("find", 0);
+  __Pyx_TraceCall("find", __pyx_f[0], 310, 0, __PYX_ERR(0, 310, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":311
  * 
@@ -9601,6 +10095,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
  *     try:
  *         return next(it)
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(0, 311, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_iterfind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 311, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -9661,6 +10156,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
  *         return next(it)
  *     except StopIteration:
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(0, 312, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -9677,6 +10173,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
  *     except StopIteration:
  *         return None
  */
+      __Pyx_TraceLine(313,0,__PYX_ERR(0, 313, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_1 = __Pyx_PyIter_Next(__pyx_v_it); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -9705,6 +10202,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
  *         return None
  * 
  */
+    __Pyx_TraceLine(314,0,__PYX_ERR(0, 314, __pyx_L5_except_error))
     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
     if (__pyx_t_4) {
       __Pyx_AddTraceback("lxml._elementpath.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -9720,6 +10218,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
  * 
  * 
  */
+      __Pyx_TraceLine(315,0,__PYX_ERR(0, 315, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9775,6 +10274,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_19find(CYTHON_UNUSED PyObject *__
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_it);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9866,13 +10366,16 @@ static PyObject *__pyx_pw_4lxml_12_elementpath_22findall(PyObject *__pyx_self, P
 
 static PyObject *__pyx_pf_4lxml_12_elementpath_21findall(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__67)
   __Pyx_RefNannySetupContext("findall", 0);
+  __Pyx_TraceCall("findall", __pyx_f[0], 321, 0, __PYX_ERR(0, 321, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":322
  * 
@@ -9881,6 +10384,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_21findall(CYTHON_UNUSED PyObject
  * 
  * 
  */
+  __Pyx_TraceLine(322,0,__PYX_ERR(0, 322, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_iterfind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -9957,6 +10461,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_21findall(CYTHON_UNUSED PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10062,6 +10567,7 @@ static PyObject *__pyx_pw_4lxml_12_elementpath_24findtext(PyObject *__pyx_self,
 static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_path, PyObject *__pyx_v_default, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_el = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -10070,7 +10576,9 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__68)
   __Pyx_RefNannySetupContext("findtext", 0);
+  __Pyx_TraceCall("findtext", __pyx_f[0], 328, 0, __PYX_ERR(0, 328, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":329
  * 
@@ -10079,6 +10587,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
  *     if el is None:
  *         return default
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(0, 329, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_find); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -10139,6 +10648,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
  *         return default
  *     else:
  */
+  __Pyx_TraceLine(330,0,__PYX_ERR(0, 330, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_el == Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -10150,6 +10660,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
  *     else:
  *         return el.text or ''
  */
+    __Pyx_TraceLine(331,0,__PYX_ERR(0, 331, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_default);
     __pyx_r = __pyx_v_default;
@@ -10169,6 +10680,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
  *     else:
  *         return el.text or ''             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(333,0,__PYX_ERR(0, 333, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error)
@@ -10182,8 +10694,8 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       goto __pyx_L4_bool_binop_done;
     }
-    __Pyx_INCREF(__pyx_kp_s__19);
-    __pyx_t_1 = __pyx_kp_s__19;
+    __Pyx_INCREF(__pyx_kp_s__24);
+    __pyx_t_1 = __pyx_kp_s__24;
     __pyx_L4_bool_binop_done:;
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
@@ -10209,6 +10721,7 @@ static PyObject *__pyx_pf_4lxml_12_elementpath_23findtext(CYTHON_UNUSED PyObject
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_el);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12035,26 +12548,26 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1},
   {&__pyx_n_s_SyntaxError, __pyx_k_SyntaxError, sizeof(__pyx_k_SyntaxError), 0, 0, 1, 1},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
-  {&__pyx_kp_s__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 0, 1, 0},
-  {&__pyx_kp_s__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 0, 1, 0},
-  {&__pyx_kp_s__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 1, 0},
   {&__pyx_kp_s__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 0, 1, 0},
   {&__pyx_kp_s__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 0, 1, 0},
-  {&__pyx_kp_s__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 0, 1, 0},
+  {&__pyx_kp_s__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 0, 1, 0},
   {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
   {&__pyx_kp_s__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 0, 1, 0},
-  {&__pyx_n_s__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 1, 1},
+  {&__pyx_kp_s__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 0, 1, 0},
+  {&__pyx_kp_s__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 1, 0},
   {&__pyx_kp_s__36, __pyx_k__36, sizeof(__pyx_k__36), 0, 0, 1, 0},
-  {&__pyx_kp_s__37, __pyx_k__37, sizeof(__pyx_k__37), 0, 0, 1, 0},
+  {&__pyx_n_s__39, __pyx_k__39, sizeof(__pyx_k__39), 0, 0, 1, 1},
   {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
   {&__pyx_kp_s__42, __pyx_k__42, sizeof(__pyx_k__42), 0, 0, 1, 0},
   {&__pyx_kp_s__43, __pyx_k__43, sizeof(__pyx_k__43), 0, 0, 1, 0},
-  {&__pyx_kp_s__52, __pyx_k__52, sizeof(__pyx_k__52), 0, 0, 1, 0},
-  {&__pyx_kp_s__73, __pyx_k__73, sizeof(__pyx_k__73), 0, 0, 1, 0},
-  {&__pyx_kp_s__74, __pyx_k__74, sizeof(__pyx_k__74), 0, 0, 1, 0},
-  {&__pyx_kp_s__75, __pyx_k__75, sizeof(__pyx_k__75), 0, 0, 1, 0},
-  {&__pyx_kp_s__76, __pyx_k__76, sizeof(__pyx_k__76), 0, 0, 1, 0},
-  {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0},
+  {&__pyx_kp_s__48, __pyx_k__48, sizeof(__pyx_k__48), 0, 0, 1, 0},
+  {&__pyx_kp_s__49, __pyx_k__49, sizeof(__pyx_k__49), 0, 0, 1, 0},
+  {&__pyx_kp_s__59, __pyx_k__59, sizeof(__pyx_k__59), 0, 0, 1, 0},
+  {&__pyx_kp_s__78, __pyx_k__78, sizeof(__pyx_k__78), 0, 0, 1, 0},
+  {&__pyx_kp_s__79, __pyx_k__79, sizeof(__pyx_k__79), 0, 0, 1, 0},
+  {&__pyx_kp_s__80, __pyx_k__80, sizeof(__pyx_k__80), 0, 0, 1, 0},
+  {&__pyx_kp_s__81, __pyx_k__81, sizeof(__pyx_k__81), 0, 0, 1, 0},
+  {&__pyx_kp_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 0},
   {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
   {&__pyx_n_s_build_path_iterator, __pyx_k_build_path_iterator, sizeof(__pyx_k_build_path_iterator), 0, 0, 1, 1},
   {&__pyx_n_s_build_path_iterator_locals_gene, __pyx_k_build_path_iterator_locals_gene, sizeof(__pyx_k_build_path_iterator_locals_gene), 0, 0, 1, 1},
@@ -12191,10 +12704,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         for elem in result:
  *             for e in elem.iterchildren(tag):
  */
-  __pyx_tuple__6 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 93, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
-  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 93, __pyx_L1_error)
+  __pyx_tuple__7 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__7);
+  __Pyx_GIVEREF(__pyx_tuple__7);
+  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 93, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":102
  *     def select(result):
@@ -12203,9 +12716,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 yield e
  *     return select
  */
-  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s__8); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
 
   /* "lxml/_elementpath.py":100
  * 
@@ -12214,10 +12727,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         for elem in result:
  *             for e in elem.iterchildren('*'):
  */
-  __pyx_tuple__10 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 100, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
-  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __pyx_tuple__12 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 100, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":107
  * 
@@ -12226,10 +12739,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return result
  *     return select
  */
-  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_result); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 107, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
-  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 107, __pyx_L1_error)
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_result); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 107, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
+  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 107, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":118
  *         tag = token[1]
@@ -12238,9 +12751,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     def select(result):
  *         for elem in result:
  */
-  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_invalid_descendant); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 118, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_invalid_descendant); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 118, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
 
   /* "lxml/_elementpath.py":119
  *     else:
@@ -12249,10 +12762,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         for elem in result:
  *             for e in elem.iterdescendants(tag):
  */
-  __pyx_tuple__15 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 119, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
-  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 119, __pyx_L1_error)
+  __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 119, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 119, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":126
  * 
@@ -12261,10 +12774,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         for elem in result:
  *             parent = elem.getparent()
  */
-  __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_parent); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 126, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
-  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __pyx_tuple__22 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_parent); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__22);
+  __Pyx_GIVEREF(__pyx_tuple__22);
+  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 126, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":143
  *         if token[0] == "]":
@@ -12273,9 +12786,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # ignore whitespace
  *             continue
  */
-  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_kp_s__19, __pyx_kp_s__19); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_tuple__27 = PyTuple_Pack(2, __pyx_kp_s__24, __pyx_kp_s__24); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
 
   /* "lxml/_elementpath.py":146
  *             # ignore whitespace
@@ -12284,9 +12797,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             token = "'", token[0][1:-1]
  *         signature += token[0] or "-"
  */
-  __pyx_slice__22 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(0, 146, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__22);
-  __Pyx_GIVEREF(__pyx_slice__22);
+  __pyx_slice__28 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__28)) __PYX_ERR(0, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__28);
+  __Pyx_GIVEREF(__pyx_slice__28);
 
   /* "lxml/_elementpath.py":147
  *             continue
@@ -12295,9 +12808,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         signature += token[0] or "-"
  *         predicate.append(token[1])
  */
-  __pyx_slice__25 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__25)) __PYX_ERR(0, 147, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__25);
-  __Pyx_GIVEREF(__pyx_slice__25);
+  __pyx_slice__31 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__31)) __PYX_ERR(0, 147, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__31);
+  __Pyx_GIVEREF(__pyx_slice__31);
 
   /* "lxml/_elementpath.py":155
  *         # [@attribute] predicate
@@ -12306,10 +12819,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             for elem in result:
  *                 if elem.get(key) is not None:
  */
-  __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 155, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
-  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 155, __pyx_L1_error)
+  __pyx_tuple__34 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
+  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 155, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":164
  *         key = predicate[1]
@@ -12318,10 +12831,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             for elem in result:
  *                 if elem.get(key) == value:
  */
-  __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 164, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
-  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 164, __pyx_L1_error)
+  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__37);
+  __Pyx_GIVEREF(__pyx_tuple__37);
+  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 164, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":172
  *         # [tag]
@@ -12330,10 +12843,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             for elem in result:
  *                 for _ in elem.iterchildren(tag):
  */
-  __pyx_tuple__34 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s__33); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 172, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__34);
-  __Pyx_GIVEREF(__pyx_tuple__34);
-  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 172, __pyx_L1_error)
+  __pyx_tuple__40 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s__39); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 172, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__40);
+  __Pyx_GIVEREF(__pyx_tuple__40);
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 172, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":183
  *         value = predicate[-1]
@@ -12342,10 +12855,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                 for elem in result:
  *                     for e in elem.iterchildren(tag):
  */
-  __pyx_tuple__38 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 183, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__38);
-  __Pyx_GIVEREF(__pyx_tuple__38);
-  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 183, __pyx_L1_error)
+  __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__44);
+  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 183, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":190
  *                             break
@@ -12354,10 +12867,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                 for elem in result:
  *                     if "".join(elem.itertext()) == value:
  */
-  __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 190, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__40);
-  __Pyx_GIVEREF(__pyx_tuple__40);
-  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 190, __pyx_L1_error)
+  __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_result, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 190, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 190, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":202
  *             if index < 0:
@@ -12366,9 +12879,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                         "indices in path predicates are 1-based, not 0-based")
  *                 else:
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_indices_in_path_predicates_are_1); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 202, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_indices_in_path_predicates_are_1); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 202, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
 
   /* "lxml/_elementpath.py":205
  *                         "indices in path predicates are 1-based, not 0-based")
@@ -12377,9 +12890,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         else:
  *             if predicate[0] != "last":
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_path_index_1_expected); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
+  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_path_index_1_expected); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 205, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__51);
+  __Pyx_GIVEREF(__pyx_tuple__51);
 
   /* "lxml/_elementpath.py":208
  *         else:
@@ -12388,9 +12901,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             if signature == "-()-":
  *                 try:
  */
-  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_unsupported_function); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__46);
-  __Pyx_GIVEREF(__pyx_tuple__46);
+  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_unsupported_function); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__52);
+  __Pyx_GIVEREF(__pyx_tuple__52);
 
   /* "lxml/_elementpath.py":213
  *                     index = int(predicate[2]) - 1
@@ -12399,9 +12912,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             else:
  *                 index = -1
  */
-  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_unsupported_expression); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 213, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
+  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_unsupported_expression); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 213, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__53);
+  __Pyx_GIVEREF(__pyx_tuple__53);
 
   /* "lxml/_elementpath.py":216
  *             else:
@@ -12410,10 +12923,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             for elem in result:
  *                 parent = elem.getparent()
  */
-  __pyx_tuple__48 = PyTuple_Pack(4, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_parent, __pyx_n_s_elems); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__48);
-  __Pyx_GIVEREF(__pyx_tuple__48);
-  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __pyx_tuple__54 = PyTuple_Pack(4, __pyx_n_s_result, __pyx_n_s_elem, __pyx_n_s_parent, __pyx_n_s_elems); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__54);
+  __Pyx_GIVEREF(__pyx_tuple__54);
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_select, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 216, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":229
  *                     pass
@@ -12422,9 +12935,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * ops = {
  */
-  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_invalid_predicate); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 229, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__50);
-  __Pyx_GIVEREF(__pyx_tuple__50);
+  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_invalid_predicate); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__56);
+  __Pyx_GIVEREF(__pyx_tuple__56);
 
   /* "lxml/_elementpath.py":248
  * def _build_path_iterator(path, namespaces):
@@ -12433,9 +12946,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         path += "*"  # implicit all (FIXME: keep this?)
  * 
  */
-  __pyx_slice__51 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) __PYX_ERR(0, 248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__51);
-  __Pyx_GIVEREF(__pyx_slice__51);
+  __pyx_slice__58 = PySlice_New(__pyx_int_neg_1, Py_None, Py_None); if (unlikely(!__pyx_slice__58)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__58);
+  __Pyx_GIVEREF(__pyx_slice__58);
 
   /* "lxml/_elementpath.py":254
  *     if namespaces:
@@ -12444,9 +12957,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if None in namespaces:
  *             cache_key += (namespaces[None],) + tuple(sorted(
  */
-  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_empty_namespace_prefix_must_be_p); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 254, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__53);
-  __Pyx_GIVEREF(__pyx_tuple__53);
+  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_empty_namespace_prefix_must_be_p); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 254, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__60);
+  __Pyx_GIVEREF(__pyx_tuple__60);
 
   /* "lxml/_elementpath.py":268
  *         _cache.clear()
@@ -12455,9 +12968,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise SyntaxError("cannot use absolute path on element")
  *     stream = iter(xpath_tokenizer(path, namespaces))
  */
-  __pyx_slice__54 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__54)) __PYX_ERR(0, 268, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__54);
-  __Pyx_GIVEREF(__pyx_slice__54);
+  __pyx_slice__61 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__61)) __PYX_ERR(0, 268, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__61);
+  __Pyx_GIVEREF(__pyx_slice__61);
 
   /* "lxml/_elementpath.py":269
  * 
@@ -12466,9 +12979,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     stream = iter(xpath_tokenizer(path, namespaces))
  *     try:
  */
-  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_cannot_use_absolute_path_on_elem); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 269, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__55);
-  __Pyx_GIVEREF(__pyx_tuple__55);
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_cannot_use_absolute_path_on_elem); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 269, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
   /* "lxml/_elementpath.py":279
  *         token = _next()
@@ -12477,9 +12990,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     selector = []
  *     while 1:
  */
-  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_empty_path_expression); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 279, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__56);
-  __Pyx_GIVEREF(__pyx_tuple__56);
+  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_empty_path_expression); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__63);
+  __Pyx_GIVEREF(__pyx_tuple__63);
 
   /* "lxml/_elementpath.py":285
  *             selector.append(ops[token[0]](_next, token))
@@ -12488,9 +13001,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         try:
  *             token = _next()
  */
-  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_invalid_path); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__57);
-  __Pyx_GIVEREF(__pyx_tuple__57);
+  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_invalid_path); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__64);
+  __Pyx_GIVEREF(__pyx_tuple__64);
 
   /* "lxml/_elementpath.py":58
  * import re
@@ -12499,9 +13012,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     "("
  *     "'[^']*'|\"[^\"]*\"|"
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_s_s_2); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 58, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__58);
-  __Pyx_GIVEREF(__pyx_tuple__58);
+  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_s_s_2); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__69);
+  __Pyx_GIVEREF(__pyx_tuple__69);
 
   /* "lxml/_elementpath.py":70
  *     )
@@ -12510,13 +13023,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     default_namespace = namespaces.get(None) if namespaces else None
  *     for token in xpath_tokenizer_re.findall(pattern):
  */
-  __pyx_tuple__59 = PyTuple_Pack(7, __pyx_n_s_pattern, __pyx_n_s_namespaces, __pyx_n_s_default_namespace, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 70, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__59);
-  __Pyx_GIVEREF(__pyx_tuple__59);
-  __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_xpath_tokenizer, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 70, __pyx_L1_error)
-  __pyx_tuple__60 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 70, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__60);
-  __Pyx_GIVEREF(__pyx_tuple__60);
+  __pyx_tuple__70 = PyTuple_Pack(7, __pyx_n_s_pattern, __pyx_n_s_namespaces, __pyx_n_s_default_namespace, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
+  __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_xpath_tokenizer, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 70, __pyx_L1_error)
+  __pyx_tuple__71 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
   /* "lxml/_elementpath.py":91
  * 
@@ -12525,10 +13038,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     tag = token[1]
  *     def select(result):
  */
-  __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 91, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__61);
-  __Pyx_GIVEREF(__pyx_tuple__61);
-  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_child, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 91, __pyx_L1_error)
+  __pyx_tuple__72 = PyTuple_Pack(5, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
+  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_child, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 91, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":99
  *     return select
@@ -12537,10 +13050,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     def select(result):
  *         for elem in result:
  */
-  __pyx_tuple__63 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__63);
-  __Pyx_GIVEREF(__pyx_tuple__63);
-  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_star, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __pyx_tuple__73 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_star, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 99, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":106
  *     return select
@@ -12549,10 +13062,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     def select(result):
  *         return result
  */
-  __pyx_tuple__65 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 106, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__65);
-  __Pyx_GIVEREF(__pyx_tuple__65);
-  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_self, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __pyx_tuple__74 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_self, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 106, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":111
  *     return select
@@ -12561,10 +13074,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     token = next()
  *     if token[0] == "*":
  */
-  __pyx_tuple__67 = PyTuple_Pack(5, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 111, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__67);
-  __Pyx_GIVEREF(__pyx_tuple__67);
-  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_descendant, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 111, __pyx_L1_error)
+  __pyx_tuple__75 = PyTuple_Pack(5, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 111, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_descendant, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 111, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":125
  *     return select
@@ -12573,10 +13086,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     def select(result):
  *         for elem in result:
  */
-  __pyx_tuple__69 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 125, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__69);
-  __Pyx_GIVEREF(__pyx_tuple__69);
-  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_parent, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 125, __pyx_L1_error)
+  __pyx_tuple__76 = PyTuple_Pack(4, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_select, __pyx_n_s_select); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 125, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
+  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_parent, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 125, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":133
  *     return select
@@ -12585,10 +13098,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     # FIXME: replace with real parser!!! refs:
  *     # http://effbot.org/zone/simple-iterator-parser.htm
  */
-  __pyx_tuple__71 = PyTuple_Pack(15, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_signature, __pyx_n_s_predicate, __pyx_n_s_key, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_value, __pyx_n_s_select, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_index, __pyx_n_s_select); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 133, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
-  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_predicate, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __pyx_tuple__77 = PyTuple_Pack(15, __pyx_n_s_next, __pyx_n_s_token, __pyx_n_s_signature, __pyx_n_s_predicate, __pyx_n_s_key, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_value, __pyx_n_s_select, __pyx_n_s_tag, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_select, __pyx_n_s_index, __pyx_n_s_select); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __Pyx_GIVEREF(__pyx_tuple__77);
+  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_prepare_predicate, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 133, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":246
  * 
@@ -12597,10 +13110,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """compile selector pattern"""
  *     if path[-1:] == "/":
  */
-  __pyx_tuple__77 = PyTuple_Pack(9, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_cache_key, __pyx_n_s_stream, __pyx_n_s_next_3, __pyx_n_s_token, __pyx_n_s_selector, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 246, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__77);
-  __Pyx_GIVEREF(__pyx_tuple__77);
-  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_build_path_iterator, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 246, __pyx_L1_error)
+  __pyx_tuple__82 = PyTuple_Pack(9, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_cache_key, __pyx_n_s_stream, __pyx_n_s_next_3, __pyx_n_s_token, __pyx_n_s_selector, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 246, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__82);
+  __Pyx_GIVEREF(__pyx_tuple__82);
+  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_build_path_iterator, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 246, __pyx_L1_error)
 
   /* "lxml/_elementpath.py":299
  * # Iterate over the matching nodes
@@ -12609,13 +13122,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     selector = _build_path_iterator(path, namespaces)
  *     result = iter((elem,))
  */
-  __pyx_tuple__79 = PyTuple_Pack(6, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_selector, __pyx_n_s_result, __pyx_n_s_select); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 299, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__79);
-  __Pyx_GIVEREF(__pyx_tuple__79);
-  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_iterfind, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 299, __pyx_L1_error)
-  __pyx_tuple__81 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 299, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__81);
-  __Pyx_GIVEREF(__pyx_tuple__81);
+  __pyx_tuple__83 = PyTuple_Pack(6, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_selector, __pyx_n_s_result, __pyx_n_s_select); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__83);
+  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_iterfind, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 299, __pyx_L1_error)
+  __pyx_tuple__84 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__84);
+  __Pyx_GIVEREF(__pyx_tuple__84);
 
   /* "lxml/_elementpath.py":310
  * # Find first matching object.
@@ -12624,13 +13137,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     it = iterfind(elem, path, namespaces)
  *     try:
  */
-  __pyx_tuple__82 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_it); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 310, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__82);
-  __Pyx_GIVEREF(__pyx_tuple__82);
-  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_find, 310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 310, __pyx_L1_error)
-  __pyx_tuple__84 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 310, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__84);
-  __Pyx_GIVEREF(__pyx_tuple__84);
+  __pyx_tuple__85 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_it); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 310, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__85);
+  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_find, 310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 310, __pyx_L1_error)
+  __pyx_tuple__86 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 310, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__86);
+  __Pyx_GIVEREF(__pyx_tuple__86);
 
   /* "lxml/_elementpath.py":321
  * # Find all matching objects.
@@ -12639,13 +13152,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     return list(iterfind(elem, path, namespaces))
  * 
  */
-  __pyx_tuple__85 = PyTuple_Pack(3, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 321, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__85);
-  __Pyx_GIVEREF(__pyx_tuple__85);
-  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_findall, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 321, __pyx_L1_error)
-  __pyx_tuple__87 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 321, __pyx_L1_error)
+  __pyx_tuple__87 = PyTuple_Pack(3, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__87);
   __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_findall, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 321, __pyx_L1_error)
+  __pyx_tuple__88 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 321, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__88);
+  __Pyx_GIVEREF(__pyx_tuple__88);
 
   /* "lxml/_elementpath.py":328
  * # Find text for first matching object.
@@ -12654,10 +13167,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     el = find(elem, path, namespaces)
  *     if el is None:
  */
-  __pyx_tuple__88 = PyTuple_Pack(5, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces, __pyx_n_s_el); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 328, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__88);
-  __Pyx_GIVEREF(__pyx_tuple__88);
-  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_findtext, 328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 328, __pyx_L1_error)
+  __pyx_tuple__89 = PyTuple_Pack(5, __pyx_n_s_elem, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces, __pyx_n_s_el); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 328, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__89);
+  __Pyx_GIVEREF(__pyx_tuple__89);
+  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml__elementpath_py, __pyx_n_s_findtext, 328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 328, __pyx_L1_error)
   __pyx_tuple__90 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__90);
   __Pyx_GIVEREF(__pyx_tuple__90);
@@ -12858,7 +13371,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -12915,6 +13428,7 @@ static int __pyx_pymod_exec__elementpath(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannyDeclarations
@@ -13014,6 +13528,7 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit__elementpath(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/_elementpath.py":56
  * ##
@@ -13022,6 +13537,7 @@ if (!__Pyx_RefNanny) {
  * 
  * xpath_tokenizer_re = re.compile(
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(0, 56, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_re, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_re, __pyx_t_1) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
@@ -13034,12 +13550,13 @@ if (!__Pyx_RefNanny) {
  *     "("
  *     "'[^']*'|\"[^\"]*\"|"
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(0, 58, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_xpath_tokenizer_re, __pyx_t_1) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
@@ -13052,9 +13569,10 @@ if (!__Pyx_RefNanny) {
  *     default_namespace = namespaces.get(None) if namespaces else None
  *     for token in xpath_tokenizer_re.findall(pattern):
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(0, 70, __pyx_L1_error))
   __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_1xpath_tokenizer, 0, __pyx_n_s_xpath_tokenizer, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__60);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__71);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_xpath_tokenizer, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -13065,7 +13583,8 @@ if (!__Pyx_RefNanny) {
  *     tag = token[1]
  *     def select(result):
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_4prepare_child, 0, __pyx_n_s_prepare_child, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
+  __Pyx_TraceLine(91,0,__PYX_ERR(0, 91, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_4prepare_child, 0, __pyx_n_s_prepare_child, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_child, __pyx_t_1) < 0) __PYX_ERR(0, 91, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13077,7 +13596,8 @@ if (!__Pyx_RefNanny) {
  *     def select(result):
  *         for elem in result:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_6prepare_star, 0, __pyx_n_s_prepare_star, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_TraceLine(99,0,__PYX_ERR(0, 99, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_6prepare_star, 0, __pyx_n_s_prepare_star, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_star, __pyx_t_1) < 0) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13089,7 +13609,8 @@ if (!__Pyx_RefNanny) {
  *     def select(result):
  *         return result
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_8prepare_self, 0, __pyx_n_s_prepare_self, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_8prepare_self, 0, __pyx_n_s_prepare_self, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_self, __pyx_t_1) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13101,7 +13622,8 @@ if (!__Pyx_RefNanny) {
  *     token = next()
  *     if token[0] == "*":
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_10prepare_descendant, 0, __pyx_n_s_prepare_descendant, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
+  __Pyx_TraceLine(111,0,__PYX_ERR(0, 111, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_10prepare_descendant, 0, __pyx_n_s_prepare_descendant, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_descendant, __pyx_t_1) < 0) __PYX_ERR(0, 111, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13113,7 +13635,8 @@ if (!__Pyx_RefNanny) {
  *     def select(result):
  *         for elem in result:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_parent, 0, __pyx_n_s_prepare_parent, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
+  __Pyx_TraceLine(125,0,__PYX_ERR(0, 125, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_12prepare_parent, 0, __pyx_n_s_prepare_parent, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_parent, __pyx_t_1) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13125,7 +13648,8 @@ if (!__Pyx_RefNanny) {
  *     # FIXME: replace with real parser!!! refs:
  *     # http://effbot.org/zone/simple-iterator-parser.htm
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_14prepare_predicate, 0, __pyx_n_s_prepare_predicate, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_TraceLine(133,0,__PYX_ERR(0, 133, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_14prepare_predicate, 0, __pyx_n_s_prepare_predicate, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_prepare_predicate, __pyx_t_1) < 0) __PYX_ERR(0, 133, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13137,11 +13661,12 @@ if (!__Pyx_RefNanny) {
  *     "*": prepare_star,
  *     ".": prepare_self,
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(0, 232, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__19, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__24, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/_elementpath.py":233
@@ -13151,9 +13676,10 @@ if (!__Pyx_RefNanny) {
  *     ".": prepare_self,
  *     "..": prepare_parent,
  */
+  __Pyx_TraceLine(233,0,__PYX_ERR(0, 233, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_star); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__8, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__9, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/_elementpath.py":234
@@ -13163,9 +13689,10 @@ if (!__Pyx_RefNanny) {
  *     "..": prepare_parent,
  *     "//": prepare_descendant,
  */
+  __Pyx_TraceLine(234,0,__PYX_ERR(0, 234, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__73, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__78, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/_elementpath.py":235
@@ -13175,9 +13702,10 @@ if (!__Pyx_RefNanny) {
  *     "//": prepare_descendant,
  *     "[": prepare_predicate,
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(0, 235, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_parent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 235, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__74, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__79, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/_elementpath.py":236
@@ -13187,9 +13715,10 @@ if (!__Pyx_RefNanny) {
  *     "[": prepare_predicate,
  * }
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(0, 236, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_descendant); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__75, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__80, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/_elementpath.py":237
@@ -13199,9 +13728,10 @@ if (!__Pyx_RefNanny) {
  * }
  * 
  */
+  __Pyx_TraceLine(237,0,__PYX_ERR(0, 237, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_prepare_predicate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__76, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s__81, __pyx_t_2) < 0) __PYX_ERR(0, 232, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ops, __pyx_t_1) < 0) __PYX_ERR(0, 231, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13213,6 +13743,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(0, 243, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_cache, __pyx_t_1) < 0) __PYX_ERR(0, 243, __pyx_L1_error)
@@ -13225,7 +13756,8 @@ if (!__Pyx_RefNanny) {
  *     """compile selector pattern"""
  *     if path[-1:] == "/":
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_16_build_path_iterator, 0, __pyx_n_s_build_path_iterator, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error)
+  __Pyx_TraceLine(246,0,__PYX_ERR(0, 246, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_16_build_path_iterator, 0, __pyx_n_s_build_path_iterator, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_build_path_iterator, __pyx_t_1) < 0) __PYX_ERR(0, 246, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13237,9 +13769,10 @@ if (!__Pyx_RefNanny) {
  *     selector = _build_path_iterator(path, namespaces)
  *     result = iter((elem,))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_18iterfind, 0, __pyx_n_s_iterfind, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
+  __Pyx_TraceLine(299,0,__PYX_ERR(0, 299, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_18iterfind, 0, __pyx_n_s_iterfind, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__81);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__84);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_iterfind, __pyx_t_1) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -13250,9 +13783,10 @@ if (!__Pyx_RefNanny) {
  *     it = iterfind(elem, path, namespaces)
  *     try:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_20find, 0, __pyx_n_s_find, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)
+  __Pyx_TraceLine(310,0,__PYX_ERR(0, 310, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_20find, 0, __pyx_n_s_find, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__84);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__86);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_find, __pyx_t_1) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -13263,9 +13797,10 @@ if (!__Pyx_RefNanny) {
  *     return list(iterfind(elem, path, namespaces))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_22findall, 0, __pyx_n_s_findall, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
+  __Pyx_TraceLine(321,0,__PYX_ERR(0, 321, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_22findall, 0, __pyx_n_s_findall, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__87);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__88);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_findall, __pyx_t_1) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -13276,7 +13811,8 @@ if (!__Pyx_RefNanny) {
  *     el = find(elem, path, namespaces)
  *     if el is None:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_24findtext, 0, __pyx_n_s_findtext, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error)
+  __Pyx_TraceLine(328,0,__PYX_ERR(0, 328, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_12_elementpath_24findtext, 0, __pyx_n_s_findtext, NULL, __pyx_n_s_lxml__elementpath, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__90);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_findtext, __pyx_t_1) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
@@ -13287,10 +13823,12 @@ if (!__Pyx_RefNanny) {
  * # ElementTree
  * # $Id: ElementPath.py 3375 2008-02-13 08:05:08Z fredrik $
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -13322,72 +13860,72 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_codeobj_);
   Py_CLEAR(__pyx_tuple__2);
   Py_CLEAR(__pyx_tuple__5);
-  Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_codeobj__7);
-  Py_CLEAR(__pyx_tuple__9);
+  Py_CLEAR(__pyx_codeobj__6);
+  Py_CLEAR(__pyx_tuple__7);
+  Py_CLEAR(__pyx_codeobj__8);
   Py_CLEAR(__pyx_tuple__10);
   Py_CLEAR(__pyx_codeobj__11);
   Py_CLEAR(__pyx_tuple__12);
   Py_CLEAR(__pyx_codeobj__13);
-  Py_CLEAR(__pyx_tuple__14);
+  Py_CLEAR(__pyx_codeobj__14);
   Py_CLEAR(__pyx_tuple__15);
   Py_CLEAR(__pyx_codeobj__16);
-  Py_CLEAR(__pyx_tuple__17);
-  Py_CLEAR(__pyx_codeobj__18);
-  Py_CLEAR(__pyx_tuple__21);
-  Py_CLEAR(__pyx_slice__22);
-  Py_CLEAR(__pyx_slice__25);
-  Py_CLEAR(__pyx_tuple__28);
-  Py_CLEAR(__pyx_codeobj__29);
-  Py_CLEAR(__pyx_tuple__31);
-  Py_CLEAR(__pyx_codeobj__32);
+  Py_CLEAR(__pyx_codeobj__17);
+  Py_CLEAR(__pyx_tuple__18);
+  Py_CLEAR(__pyx_tuple__19);
+  Py_CLEAR(__pyx_codeobj__20);
+  Py_CLEAR(__pyx_codeobj__21);
+  Py_CLEAR(__pyx_tuple__22);
+  Py_CLEAR(__pyx_codeobj__23);
+  Py_CLEAR(__pyx_codeobj__25);
+  Py_CLEAR(__pyx_tuple__27);
+  Py_CLEAR(__pyx_slice__28);
+  Py_CLEAR(__pyx_slice__31);
   Py_CLEAR(__pyx_tuple__34);
   Py_CLEAR(__pyx_codeobj__35);
-  Py_CLEAR(__pyx_tuple__38);
-  Py_CLEAR(__pyx_codeobj__39);
+  Py_CLEAR(__pyx_tuple__37);
+  Py_CLEAR(__pyx_codeobj__38);
   Py_CLEAR(__pyx_tuple__40);
   Py_CLEAR(__pyx_codeobj__41);
   Py_CLEAR(__pyx_tuple__44);
-  Py_CLEAR(__pyx_tuple__45);
+  Py_CLEAR(__pyx_codeobj__45);
   Py_CLEAR(__pyx_tuple__46);
-  Py_CLEAR(__pyx_tuple__47);
-  Py_CLEAR(__pyx_tuple__48);
-  Py_CLEAR(__pyx_codeobj__49);
+  Py_CLEAR(__pyx_codeobj__47);
   Py_CLEAR(__pyx_tuple__50);
-  Py_CLEAR(__pyx_slice__51);
+  Py_CLEAR(__pyx_tuple__51);
+  Py_CLEAR(__pyx_tuple__52);
   Py_CLEAR(__pyx_tuple__53);
-  Py_CLEAR(__pyx_slice__54);
-  Py_CLEAR(__pyx_tuple__55);
+  Py_CLEAR(__pyx_tuple__54);
+  Py_CLEAR(__pyx_codeobj__55);
   Py_CLEAR(__pyx_tuple__56);
-  Py_CLEAR(__pyx_tuple__57);
-  Py_CLEAR(__pyx_tuple__58);
-  Py_CLEAR(__pyx_tuple__59);
+  Py_CLEAR(__pyx_codeobj__57);
+  Py_CLEAR(__pyx_slice__58);
   Py_CLEAR(__pyx_tuple__60);
-  Py_CLEAR(__pyx_tuple__61);
-  Py_CLEAR(__pyx_codeobj__62);
+  Py_CLEAR(__pyx_slice__61);
+  Py_CLEAR(__pyx_tuple__62);
   Py_CLEAR(__pyx_tuple__63);
-  Py_CLEAR(__pyx_codeobj__64);
-  Py_CLEAR(__pyx_tuple__65);
+  Py_CLEAR(__pyx_tuple__64);
+  Py_CLEAR(__pyx_codeobj__65);
   Py_CLEAR(__pyx_codeobj__66);
-  Py_CLEAR(__pyx_tuple__67);
+  Py_CLEAR(__pyx_codeobj__67);
   Py_CLEAR(__pyx_codeobj__68);
   Py_CLEAR(__pyx_tuple__69);
-  Py_CLEAR(__pyx_codeobj__70);
+  Py_CLEAR(__pyx_tuple__70);
   Py_CLEAR(__pyx_tuple__71);
-  Py_CLEAR(__pyx_codeobj__72);
+  Py_CLEAR(__pyx_tuple__72);
+  Py_CLEAR(__pyx_tuple__73);
+  Py_CLEAR(__pyx_tuple__74);
+  Py_CLEAR(__pyx_tuple__75);
+  Py_CLEAR(__pyx_tuple__76);
   Py_CLEAR(__pyx_tuple__77);
-  Py_CLEAR(__pyx_codeobj__78);
-  Py_CLEAR(__pyx_tuple__79);
-  Py_CLEAR(__pyx_codeobj__80);
-  Py_CLEAR(__pyx_tuple__81);
   Py_CLEAR(__pyx_tuple__82);
-  Py_CLEAR(__pyx_codeobj__83);
+  Py_CLEAR(__pyx_tuple__83);
   Py_CLEAR(__pyx_tuple__84);
   Py_CLEAR(__pyx_tuple__85);
-  Py_CLEAR(__pyx_codeobj__86);
+  Py_CLEAR(__pyx_tuple__86);
   Py_CLEAR(__pyx_tuple__87);
   Py_CLEAR(__pyx_tuple__88);
-  Py_CLEAR(__pyx_codeobj__89);
+  Py_CLEAR(__pyx_tuple__89);
   Py_CLEAR(__pyx_tuple__90);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
@@ -13674,6 +14212,123 @@ static void __Pyx_RaiseArgtupleInvalid(
                  (num_expected == 1) ? "" : "s", num_found);
 }
 
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
+
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* PyObjectCall */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
@@ -14217,30 +14872,6 @@ return_ne:
     return 0;
 }
 
-/* PyErrFetchRestore */
-    #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-#endif
-
 /* RaiseException */
     #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
@@ -15792,6 +16423,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -17732,6 +18366,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index dadb069..f7ea848 100644 (file)
@@ -1,17 +1,18 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "/usr/include/libxml2", 
             "src", 
@@ -22,7 +23,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml.builder", 
@@ -41,7 +41,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -487,6 +487,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -679,7 +680,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -787,7 +788,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -799,6 +800,7 @@ static const char *__pyx_filename;
 
 static const char *__pyx_f[] = {
   "src/lxml/builder.py",
+  "src/lxml/builder.pxd",
   "stringsource",
 };
 
@@ -921,6 +923,244 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
 
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* GetItemInt.proto */
 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
@@ -952,17 +1192,6 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
 #endif
 
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
-#endif
-
 /* SaveResetException.proto */
 #if CYTHON_FAST_THREAD_STATE
 #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1023,31 +1252,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
 /* PyObjectCallOneArg.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
 
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
-#endif
-
 /* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
@@ -1359,7 +1563,7 @@ static const char __pyx_k_v[] = "v";
 static const char __pyx_k_ET[] = "ET";
 static const char __pyx_k__2[] = "{";
 static const char __pyx_k__3[] = "}";
-static const char __pyx_k__10[] = "*";
+static const char __pyx_k__13[] = "*";
 static const char __pyx_k_get[] = "get";
 static const char __pyx_k_mro[] = "__mro__";
 static const char __pyx_k_new[] = "__new__";
@@ -1443,7 +1647,7 @@ static PyObject *__pyx_n_s_NameError;
 static PyObject *__pyx_n_s_PickleError;
 static PyObject *__pyx_n_s_TypeError;
 static PyObject *__pyx_n_s_ValueError;
-static PyObject *__pyx_n_s__10;
+static PyObject *__pyx_n_s__13;
 static PyObject *__pyx_kp_s__2;
 static PyObject *__pyx_kp_s__3;
 static PyObject *__pyx_n_s_add_cdata;
@@ -1525,15 +1729,15 @@ static PyObject *__pyx_int_167522209;
 static PyObject *__pyx_tuple__4;
 static PyObject *__pyx_tuple__6;
 static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__13;
+static PyObject *__pyx_tuple__14;
 static PyObject *__pyx_tuple__15;
+static PyObject *__pyx_tuple__16;
 static PyObject *__pyx_codeobj__5;
 static PyObject *__pyx_codeobj__7;
 static PyObject *__pyx_codeobj__9;
+static PyObject *__pyx_codeobj__10;
+static PyObject *__pyx_codeobj__11;
 static PyObject *__pyx_codeobj__12;
-static PyObject *__pyx_codeobj__14;
-static PyObject *__pyx_codeobj__16;
 /* Late includes */
 
 /* "lxml/builder.py":144
@@ -1727,6 +1931,7 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_8__init___1add_text(PyOb
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_item) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -1739,6 +1944,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   __Pyx_RefNannySetupContext("add_text", 0);
+  __Pyx_TraceCall("add_text", __pyx_f[0], 169, 0, __PYX_ERR(0, 169, __pyx_L1_error));
 
   /* "lxml/builder.py":170
  * 
@@ -1747,6 +1953,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
  *                 elem[-1].tail = (elem[-1].tail or "") + item
  *             except IndexError:
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(0, 170, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -1763,6 +1970,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
  *             except IndexError:
  *                 elem.text = (elem.text or "") + item
  */
+      __Pyx_TraceLine(171,0,__PYX_ERR(0, 171, __pyx_L3_error))
       __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_elem, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 171, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tail); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L3_error)
@@ -1813,6 +2021,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
  *                 elem.text = (elem.text or "") + item
  * 
  */
+    __Pyx_TraceLine(172,0,__PYX_ERR(0, 172, __pyx_L5_except_error))
     __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError);
     if (__pyx_t_8) {
       __Pyx_AddTraceback("lxml.builder.ElementMaker.__init__.add_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -1828,6 +2037,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
  * 
  *         def add_cdata(elem, cdata):
  */
+      __Pyx_TraceLine(173,0,__PYX_ERR(0, 173, __pyx_L5_except_error))
       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 173, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 173, __pyx_L5_except_error)
@@ -1896,6 +2106,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___add_text(CYTHO
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -1972,11 +2183,13 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_8__init___3add_cdata(PyO
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___2add_cdata(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_cdata) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("add_cdata", 0);
+  __Pyx_TraceCall("add_cdata", __pyx_f[0], 175, 0, __PYX_ERR(0, 175, __pyx_L1_error));
 
   /* "lxml/builder.py":176
  * 
@@ -1985,6 +2198,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___2add_cdata(CYT
  *                 raise ValueError("Can't add a CDATA section. Element already has some text: %r" % elem.text)
  *             elem.text = cdata
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(0, 176, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 176, __pyx_L1_error)
@@ -1998,6 +2212,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___2add_cdata(CYT
  *             elem.text = cdata
  * 
  */
+    __Pyx_TraceLine(177,0,__PYX_ERR(0, 177, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_add_a_CDATA_section_Elemen, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error)
@@ -2026,6 +2241,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___2add_cdata(CYT
  * 
  *         if str not in typemap:
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(0, 178, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_elem, __pyx_n_s_text, __pyx_v_cdata) < 0) __PYX_ERR(0, 178, __pyx_L1_error)
 
   /* "lxml/builder.py":175
@@ -2046,6 +2262,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___2add_cdata(CYT
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2127,6 +2344,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -2142,6 +2360,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
   __Pyx_RefNannySetupContext("add_dict", 0);
   __pyx_outer_scope = (struct __pyx_obj_4lxml_7builder___pyx_scope_struct____init__ *) __Pyx_CyFunction_GetClosure(__pyx_self);
   __pyx_cur_scope = __pyx_outer_scope;
+  __Pyx_TraceCall("add_dict", __pyx_f[0], 187, 0, __PYX_ERR(0, 187, __pyx_L1_error));
 
   /* "lxml/builder.py":188
  * 
@@ -2150,6 +2369,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *             for k, v in item.items():
  *                 if isinstance(v, basestring):
  */
+  __Pyx_TraceLine(188,0,__PYX_ERR(0, 188, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_attrib); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_attrib = __pyx_t_1;
@@ -2162,6 +2382,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *                 if isinstance(v, basestring):
  *                     attrib[k] = v
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(0, 189, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -2280,6 +2501,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *                     attrib[k] = v
  *                 else:
  */
+    __Pyx_TraceLine(190,0,__PYX_ERR(0, 190, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_9 = PyObject_IsInstance(__pyx_v_v, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 190, __pyx_L1_error)
@@ -2294,6 +2516,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *                 else:
  *                     attrib[k] = typemap[type(v)](None, v)
  */
+      __Pyx_TraceLine(191,0,__PYX_ERR(0, 191, __pyx_L1_error))
       if (unlikely(PyObject_SetItem(__pyx_v_attrib, __pyx_v_k, __pyx_v_v) < 0)) __PYX_ERR(0, 191, __pyx_L1_error)
 
       /* "lxml/builder.py":190
@@ -2313,6 +2536,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *         if dict not in typemap:
  *             typemap[dict] = add_dict
  */
+    __Pyx_TraceLine(193,0,__PYX_ERR(0, 193, __pyx_L1_error))
     /*else*/ {
       if (unlikely(!__pyx_cur_scope->__pyx_v_typemap)) { __Pyx_RaiseClosureNameError("typemap"); __PYX_ERR(0, 193, __pyx_L1_error) }
       __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_typemap, ((PyObject *)Py_TYPE(__pyx_v_v))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
@@ -2374,6 +2598,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
  *                 if isinstance(v, basestring):
  *                     attrib[k] = v
  */
+    __Pyx_TraceLine(189,0,__PYX_ERR(0, 189, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -2401,6 +2626,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__init___4add_dict(PyOb
   __Pyx_XDECREF(__pyx_v_k);
   __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2419,6 +2645,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
   PyObject *__pyx_v_add_cdata = 0;
   PyObject *__pyx_v_add_dict = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -2433,6 +2660,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
   } else {
     __Pyx_GOTREF(__pyx_cur_scope);
   }
+  __Pyx_TraceCall("__init__", __pyx_f[0], 144, 0, __PYX_ERR(0, 144, __pyx_L1_error));
   __pyx_cur_scope->__pyx_v_typemap = __pyx_v_typemap;
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_typemap);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_typemap);
@@ -2444,6 +2672,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             self._namespace = '{' + namespace + '}'
  *         else:
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_namespace != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -2455,6 +2684,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         else:
  *             self._namespace = None
  */
+    __Pyx_TraceLine(147,0,__PYX_ERR(0, 147, __pyx_L1_error))
     __pyx_t_3 = PyNumber_Add(__pyx_kp_s__2, __pyx_v_namespace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
@@ -2483,6 +2713,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         if nsmap:
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(0, 149, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
@@ -2499,6 +2730,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             self._nsmap = dict(nsmap)
  *         else:
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(0, 151, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 151, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -2509,6 +2741,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         else:
  *             self._nsmap = None
  */
+    __Pyx_TraceLine(152,0,__PYX_ERR(0, 152, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
@@ -2534,6 +2767,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         if makeelement is not None:
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(0, 154, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
@@ -2550,6 +2784,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             assert callable(makeelement)
  *             self._makeelement = makeelement
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_makeelement != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -2561,6 +2796,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             self._makeelement = makeelement
  *         else:
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(0, 157, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 157, __pyx_L1_error)
@@ -2578,6 +2814,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         else:
  *             self._makeelement = ET.Element
  */
+    __Pyx_TraceLine(158,0,__PYX_ERR(0, 158, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_makeelement);
     __Pyx_GIVEREF(__pyx_v_makeelement);
     __Pyx_GOTREF(__pyx_v_self->_makeelement);
@@ -2601,6 +2838,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         # initialize type map for this element factory
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(0, 160, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_7builder_ET, __pyx_n_s_Element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -2619,6 +2857,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             typemap = dict(typemap)
  *         else:
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(0, 164, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_typemap); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 164, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -2629,6 +2868,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         else:
  *             typemap = {}
  */
+    __Pyx_TraceLine(165,0,__PYX_ERR(0, 165, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_cur_scope->__pyx_v_typemap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 165, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_typemap);
@@ -2653,6 +2893,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         def add_text(elem, item):
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(0, 167, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -2670,6 +2911,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             try:
  *                 elem[-1].tail = (elem[-1].tail or "") + item
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(0, 169, __pyx_L1_error))
   __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_8__init___1add_text, 0, __pyx_n_s_init___locals_add_text, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_add_text = __pyx_t_4;
@@ -2682,6 +2924,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             if elem.text:
  *                 raise ValueError("Can't add a CDATA section. Element already has some text: %r" % elem.text)
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(0, 175, __pyx_L1_error))
   __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_8__init___3add_cdata, 0, __pyx_n_s_init___locals_add_cdata, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_add_cdata = __pyx_t_4;
@@ -2694,6 +2937,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             typemap[str] = add_text
  *         if unicode not in typemap:
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(0, 180, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PySequence_ContainsTF(((PyObject *)(&PyString_Type)), __pyx_cur_scope->__pyx_v_typemap, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 180, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -2705,6 +2949,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         if unicode not in typemap:
  *             typemap[unicode] = add_text
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(0, 181, __pyx_L1_error))
     if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_typemap, ((PyObject *)(&PyString_Type)), __pyx_v_add_text) < 0)) __PYX_ERR(0, 181, __pyx_L1_error)
 
     /* "lxml/builder.py":180
@@ -2723,6 +2968,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             typemap[unicode] = add_text
  *         if ET.CDATA not in typemap:
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(0, 182, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_cur_scope->__pyx_v_typemap, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 182, __pyx_L1_error)
@@ -2737,6 +2983,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *         if ET.CDATA not in typemap:
  *             typemap[ET.CDATA] = add_cdata
  */
+    __Pyx_TraceLine(183,0,__PYX_ERR(0, 183, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_typemap, __pyx_t_4, __pyx_v_add_text) < 0)) __PYX_ERR(0, 183, __pyx_L1_error)
@@ -2758,6 +3005,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             typemap[ET.CDATA] = add_cdata
  * 
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(0, 184, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_7builder_ET, __pyx_n_s_CDATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_cur_scope->__pyx_v_typemap, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 184, __pyx_L1_error)
@@ -2772,6 +3020,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         def add_dict(elem, item):
  */
+    __Pyx_TraceLine(185,0,__PYX_ERR(0, 185, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_7builder_ET, __pyx_n_s_CDATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_typemap, __pyx_t_4, __pyx_v_add_cdata) < 0)) __PYX_ERR(0, 185, __pyx_L1_error)
@@ -2793,6 +3042,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             attrib = elem.attrib
  *             for k, v in item.items():
  */
+  __Pyx_TraceLine(187,0,__PYX_ERR(0, 187, __pyx_L1_error))
   __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_8__init___5add_dict, 0, __pyx_n_s_init___locals_add_dict, ((PyObject*)__pyx_cur_scope), __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_add_dict = __pyx_t_4;
@@ -2805,6 +3055,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  *             typemap[dict] = add_dict
  * 
  */
+  __Pyx_TraceLine(194,0,__PYX_ERR(0, 194, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(((PyObject *)(&PyDict_Type)), __pyx_cur_scope->__pyx_v_typemap, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 194, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -2816,6 +3067,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *         self._typemap = typemap
  */
+    __Pyx_TraceLine(195,0,__PYX_ERR(0, 195, __pyx_L1_error))
     if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_typemap, ((PyObject *)(&PyDict_Type)), __pyx_v_add_dict) < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
 
     /* "lxml/builder.py":194
@@ -2834,6 +3086,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
  * 
  *     def __call__(self, tag, *children, **attrib):
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(0, 197, __pyx_L1_error))
   if (!(likely(PyDict_CheckExact(__pyx_cur_scope->__pyx_v_typemap))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_cur_scope->__pyx_v_typemap)->tp_name), 0))) __PYX_ERR(0, 197, __pyx_L1_error)
   __pyx_t_4 = __pyx_cur_scope->__pyx_v_typemap;
   __Pyx_INCREF(__pyx_t_4);
@@ -2864,6 +3117,7 @@ static int __pyx_pf_4lxml_7builder_12ElementMaker___init__(struct __pyx_obj_4lxm
   __Pyx_XDECREF(__pyx_v_add_cdata);
   __Pyx_XDECREF(__pyx_v_add_dict);
   __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2954,6 +3208,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
   PyObject *__pyx_v_basetype = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -2969,6 +3224,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
   Py_ssize_t __pyx_t_12;
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[0], 199, 0, __PYX_ERR(0, 199, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tag);
 
   /* "lxml/builder.py":200
@@ -2978,6 +3234,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  * 
  *         if self._namespace is not None and tag[0] != '{':
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(0, 200, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_typemap;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_typemap = ((PyObject*)__pyx_t_1);
@@ -2990,6 +3247,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             tag = self._namespace + tag
  *         elem = self._makeelement(tag, nsmap=self._nsmap)
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(0, 202, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_namespace != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -3012,6 +3270,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *         elem = self._makeelement(tag, nsmap=self._nsmap)
  *         if attrib:
  */
+    __Pyx_TraceLine(203,0,__PYX_ERR(0, 203, __pyx_L1_error))
     __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_1);
@@ -3033,6 +3292,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *         if attrib:
  *             typemap[dict](elem, attrib)
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(0, 204, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_tag);
@@ -3055,6 +3315,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             typemap[dict](elem, attrib)
  * 
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 205, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -3065,6 +3326,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  * 
  *         for item in children:
  */
+    __Pyx_TraceLine(206,0,__PYX_ERR(0, 206, __pyx_L1_error))
     if (unlikely(__pyx_v_typemap == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 206, __pyx_L1_error)
@@ -3134,6 +3396,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             if callable(item):
  *                 item = item()
  */
+  __Pyx_TraceLine(208,0,__PYX_ERR(0, 208, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_children; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
   for (;;) {
     if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
@@ -3153,6 +3416,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                 item = item()
  *             t = typemap.get(type(item))
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(0, 209, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyCallable_Check(__pyx_v_item); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
@@ -3164,6 +3428,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             t = typemap.get(type(item))
  *             if t is None:
  */
+      __Pyx_TraceLine(210,0,__PYX_ERR(0, 210, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_item);
       __pyx_t_8 = __pyx_v_item; __pyx_t_1 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
@@ -3202,6 +3467,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             if t is None:
  *                 if ET.iselement(item):
  */
+    __Pyx_TraceLine(211,0,__PYX_ERR(0, 211, __pyx_L1_error))
     if (unlikely(__pyx_v_typemap == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
       __PYX_ERR(0, 211, __pyx_L1_error)
@@ -3218,6 +3484,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                 if ET.iselement(item):
  *                     elem.append(item)
  */
+    __Pyx_TraceLine(212,0,__PYX_ERR(0, 212, __pyx_L1_error))
     __pyx_t_4 = (__pyx_v_t == Py_None);
     __pyx_t_2 = (__pyx_t_4 != 0);
     if (__pyx_t_2) {
@@ -3229,6 +3496,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     elem.append(item)
  *                     continue
  */
+      __Pyx_TraceLine(213,0,__PYX_ERR(0, 213, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_7builder_ET, __pyx_n_s_iselement); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 213, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_1 = NULL;
@@ -3285,6 +3553,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     continue
  *                 for basetype in type(item).__mro__:
  */
+        __Pyx_TraceLine(214,0,__PYX_ERR(0, 214, __pyx_L1_error))
         __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_elem, __pyx_v_item); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 214, __pyx_L1_error)
 
         /* "lxml/builder.py":215
@@ -3294,6 +3563,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                 for basetype in type(item).__mro__:
  *                     # See if the typemap knows of any of this type's bases.
  */
+        __Pyx_TraceLine(215,0,__PYX_ERR(0, 215, __pyx_L1_error))
         goto __pyx_L7_continue;
 
         /* "lxml/builder.py":213
@@ -3312,6 +3582,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     # See if the typemap knows of any of this type's bases.
  *                     t = typemap.get(basetype)
  */
+      __Pyx_TraceLine(216,0,__PYX_ERR(0, 216, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_n_s_mro); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 216, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
@@ -3364,6 +3635,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     if t is not None:
  *                         break
  */
+        __Pyx_TraceLine(218,0,__PYX_ERR(0, 218, __pyx_L1_error))
         if (unlikely(__pyx_v_typemap == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
           __PYX_ERR(0, 218, __pyx_L1_error)
@@ -3380,6 +3652,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                         break
  *                 else:
  */
+        __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_t != Py_None);
         __pyx_t_4 = (__pyx_t_2 != 0);
         if (__pyx_t_4) {
@@ -3391,6 +3664,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                 else:
  *                     raise TypeError("bad argument type: %s(%r)" %
  */
+          __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
           goto __pyx_L13_break;
 
           /* "lxml/builder.py":219
@@ -3409,6 +3683,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     # See if the typemap knows of any of this type's bases.
  *                     t = typemap.get(basetype)
  */
+        __Pyx_TraceLine(216,0,__PYX_ERR(0, 216, __pyx_L1_error))
       }
       /*else*/ {
 
@@ -3419,6 +3694,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             v = t(elem, item)
  *             if v:
  */
+        __Pyx_TraceLine(223,0,__PYX_ERR(0, 223, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 223, __pyx_L1_error)
@@ -3437,6 +3713,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                                     (type(item).__name__, item))
  *             v = t(elem, item)
  */
+        __Pyx_TraceLine(222,0,__PYX_ERR(0, 222, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_bad_argument_type_s_r, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 222, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -3455,6 +3732,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                     # See if the typemap knows of any of this type's bases.
  *                     t = typemap.get(basetype)
  */
+      __Pyx_TraceLine(216,0,__PYX_ERR(0, 216, __pyx_L1_error))
       __pyx_L13_break:;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -3474,6 +3752,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             if v:
  *                 typemap.get(type(v))(elem, v)
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(0, 224, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_t);
     __pyx_t_10 = __pyx_v_t; __pyx_t_5 = NULL;
     __pyx_t_7 = 0;
@@ -3530,6 +3809,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *                 typemap.get(type(v))(elem, v)
  * 
  */
+    __Pyx_TraceLine(225,0,__PYX_ERR(0, 225, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 225, __pyx_L1_error)
     if (__pyx_t_4) {
 
@@ -3540,6 +3820,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  * 
  *         return elem
  */
+      __Pyx_TraceLine(226,0,__PYX_ERR(0, 226, __pyx_L1_error))
       if (unlikely(__pyx_v_typemap == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 226, __pyx_L1_error)
@@ -3609,6 +3890,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  *             if callable(item):
  *                 item = item()
  */
+    __Pyx_TraceLine(208,0,__PYX_ERR(0, 208, __pyx_L1_error))
     __pyx_L7_continue:;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -3620,6 +3902,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
  * 
  *     def __getattr__(self, tag):
  */
+  __Pyx_TraceLine(228,0,__PYX_ERR(0, 228, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_elem);
   __pyx_r = __pyx_v_elem;
@@ -3651,6 +3934,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_2__call__(struct __pyx_o
   __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3678,6 +3962,7 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_5__getattr__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_4__getattr__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -3685,6 +3970,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_4__getattr__(struct __py
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
+  __Pyx_TraceCall("__getattr__", __pyx_f[0], 230, 0, __PYX_ERR(0, 230, __pyx_L1_error));
 
   /* "lxml/builder.py":231
  * 
@@ -3693,6 +3979,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_4__getattr__(struct __py
  * 
  * 
  */
+  __Pyx_TraceLine(231,0,__PYX_ERR(0, 231, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_4lxml_7builder_partial);
   __pyx_t_2 = __pyx_v_4lxml_7builder_partial; __pyx_t_3 = NULL;
@@ -3762,6 +4049,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_4__getattr__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3789,16 +4077,22 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_6_nsmap_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6_nsmap___get__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 6, 0, __PYX_ERR(1, 6, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_nsmap);
   __pyx_r = __pyx_v_self->_nsmap;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.builder.ElementMaker._nsmap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3826,16 +4120,22 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_8_typemap_1__get__(PyObj
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8_typemap___get__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 7, 0, __PYX_ERR(1, 7, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_typemap);
   __pyx_r = __pyx_v_self->_typemap;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.builder.ElementMaker._typemap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3862,16 +4162,22 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_10_namespace_1__get__(Py
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_10_namespace___get__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 8, 0, __PYX_ERR(1, 8, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_namespace);
   __pyx_r = __pyx_v_self->_namespace;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.builder.ElementMaker._namespace.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3897,16 +4203,22 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_12_makeelement_1__get__(
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_12_makeelement___get__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 9, 0, __PYX_ERR(1, 9, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_makeelement);
   __pyx_r = __pyx_v_self->_makeelement;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.builder.ElementMaker._makeelement.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3936,6 +4248,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
   PyObject *__pyx_v_state = NULL;
   PyObject *__pyx_v__dict = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -3943,7 +4256,9 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__10)
   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
+  __Pyx_TraceCall("__reduce_cython__", __pyx_f[2], 1, 0, __PYX_ERR(2, 1, __pyx_L1_error));
 
   /* "(tree fragment)":3
  * def __reduce_cython__(self):
@@ -3952,7 +4267,8 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *     _dict = getattr(self, '__dict__', None)
  *     if _dict is not None:
  */
-  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3, __pyx_L1_error)
+  __Pyx_TraceLine(3,0,__PYX_ERR(2, 3, __pyx_L1_error))
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->_makeelement);
   __Pyx_GIVEREF(__pyx_v_self->_makeelement);
@@ -3976,7 +4292,8 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *     if _dict is not None:
  *         state += (_dict,)
  */
-  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+  __Pyx_TraceLine(4,0,__PYX_ERR(2, 4, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v__dict = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3988,6 +4305,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *         state += (_dict,)
  *         use_setstate = True
  */
+  __Pyx_TraceLine(5,0,__PYX_ERR(2, 5, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v__dict != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -3999,12 +4317,13 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *         use_setstate = True
  *     else:
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
+    __Pyx_TraceLine(6,0,__PYX_ERR(2, 6, __pyx_L1_error))
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v__dict);
     __Pyx_GIVEREF(__pyx_v__dict);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
@@ -4017,6 +4336,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *     else:
  *         use_setstate = self._makeelement is not None or self._namespace is not None or self._nsmap is not None or self._typemap is not None
  */
+    __Pyx_TraceLine(7,0,__PYX_ERR(2, 7, __pyx_L1_error))
     __pyx_v_use_setstate = 1;
 
     /* "(tree fragment)":5
@@ -4036,6 +4356,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *     if use_setstate:
  *         return __pyx_unpickle_ElementMaker, (type(self), 0x9fc2fa1, None), state
  */
+  __Pyx_TraceLine(9,0,__PYX_ERR(2, 9, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = (__pyx_v_self->_makeelement != Py_None);
     __pyx_t_5 = (__pyx_t_2 != 0);
@@ -4073,6 +4394,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *         return __pyx_unpickle_ElementMaker, (type(self), 0x9fc2fa1, None), state
  *     else:
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(2, 10, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_use_setstate != 0);
   if (__pyx_t_3) {
 
@@ -4083,10 +4405,11 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  *     else:
  *         return __pyx_unpickle_ElementMaker, (type(self), 0x9fc2fa1, state)
  */
+    __Pyx_TraceLine(11,0,__PYX_ERR(2, 11, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_ElementMaker); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_ElementMaker); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
@@ -4097,7 +4420,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 11, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 11, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
@@ -4128,11 +4451,12 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
  * def __setstate_cython__(self, __pyx_state):
  *     __pyx_unpickle_ElementMaker__set_state(self, __pyx_state)
  */
+  __Pyx_TraceLine(13,0,__PYX_ERR(2, 13, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_ElementMaker); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_ElementMaker); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 13, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
@@ -4143,7 +4467,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
     __Pyx_INCREF(__pyx_v_state);
     __Pyx_GIVEREF(__pyx_v_state);
     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
@@ -4173,6 +4497,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_6__reduce_cython__(struc
   __Pyx_XDECREF(__pyx_v_state);
   __Pyx_XDECREF(__pyx_v__dict);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4200,17 +4525,21 @@ static PyObject *__pyx_pw_4lxml_7builder_12ElementMaker_9__setstate_cython__(PyO
 
 static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__setstate_cython__(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__11)
   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
+  __Pyx_TraceCall("__setstate_cython__", __pyx_f[2], 14, 0, __PYX_ERR(2, 14, __pyx_L1_error));
 
   /* "(tree fragment)":15
  *         return __pyx_unpickle_ElementMaker, (type(self), 0x9fc2fa1, state)
  * def __setstate_cython__(self, __pyx_state):
  *     __pyx_unpickle_ElementMaker__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
  */
-  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 15, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
+  __Pyx_TraceLine(15,0,__PYX_ERR(2, 15, __pyx_L1_error))
+  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 15, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -4230,6 +4559,7 @@ static PyObject *__pyx_pf_4lxml_7builder_12ElementMaker_8__setstate_cython__(str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4275,17 +4605,17 @@ static PyObject *__pyx_pw_4lxml_7builder_1__pyx_unpickle_ElementMaker(PyObject *
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ElementMaker") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ElementMaker") < 0)) __PYX_ERR(2, 1, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -4295,12 +4625,12 @@ static PyObject *__pyx_pw_4lxml_7builder_1__pyx_unpickle_ElementMaker(PyObject *
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
     __pyx_v___pyx_type = values[0];
-    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
+    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error)
     __pyx_v___pyx_state = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ElementMaker", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.builder.__pyx_unpickle_ElementMaker", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4317,6 +4647,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
   PyObject *__pyx_v___pyx_PickleError = NULL;
   PyObject *__pyx_v___pyx_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -4325,7 +4656,9 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__12)
   __Pyx_RefNannySetupContext("__pyx_unpickle_ElementMaker", 0);
+  __Pyx_TraceCall("__pyx_unpickle_ElementMaker", __pyx_f[2], 1, 0, __PYX_ERR(2, 1, __pyx_L1_error));
 
   /* "(tree fragment)":2
  * def __pyx_unpickle_ElementMaker(__pyx_type, long __pyx_checksum, __pyx_state):
@@ -4333,6 +4666,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *         from pickle import PickleError as __pyx_PickleError
  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x9fc2fa1 = (_makeelement, _namespace, _nsmap, _typemap))" % __pyx_checksum)
  */
+  __Pyx_TraceLine(2,0,__PYX_ERR(2, 2, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x9fc2fa1) != 0);
   if (__pyx_t_1) {
 
@@ -4343,15 +4677,16 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x9fc2fa1 = (_makeelement, _namespace, _nsmap, _typemap))" % __pyx_checksum)
  *     __pyx_result = ElementMaker.__new__(__pyx_type)
  */
-    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
+    __Pyx_TraceLine(3,0,__PYX_ERR(2, 3, __pyx_L1_error))
+    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_n_s_PickleError);
     __Pyx_GIVEREF(__pyx_n_s_PickleError);
     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
-    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_v___pyx_PickleError = __pyx_t_2;
@@ -4365,9 +4700,10 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *     __pyx_result = ElementMaker.__new__(__pyx_type)
  *     if __pyx_state is not None:
  */
-    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4, __pyx_L1_error)
+    __Pyx_TraceLine(4,0,__PYX_ERR(2, 4, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x9f, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x9f, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_INCREF(__pyx_v___pyx_PickleError);
@@ -4382,14 +4718,14 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_3);
     } else {
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_2)) {
         PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4398,20 +4734,20 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
         PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else
       #endif
       {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 4, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_GIVEREF(__pyx_t_4);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
         __pyx_t_4 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -4419,7 +4755,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(1, 4, __pyx_L1_error)
+    __PYX_ERR(2, 4, __pyx_L1_error)
 
     /* "(tree fragment)":2
  * def __pyx_unpickle_ElementMaker(__pyx_type, long __pyx_checksum, __pyx_state):
@@ -4436,7 +4772,8 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *     if __pyx_state is not None:
  *         __pyx_unpickle_ElementMaker__set_state(<ElementMaker> __pyx_result, __pyx_state)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_7builder_ElementMaker), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
+  __Pyx_TraceLine(5,0,__PYX_ERR(2, 5, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_7builder_ElementMaker), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_6 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -4449,13 +4786,13 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
     }
   }
   if (!__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
   } else {
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_3);
     } else
@@ -4463,19 +4800,19 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_3);
     } else
     #endif
     {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v___pyx_type);
       __Pyx_GIVEREF(__pyx_v___pyx_type);
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
@@ -4491,6 +4828,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *         __pyx_unpickle_ElementMaker__set_state(<ElementMaker> __pyx_result, __pyx_state)
  *     return __pyx_result
  */
+  __Pyx_TraceLine(6,0,__PYX_ERR(2, 6, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
   __pyx_t_7 = (__pyx_t_1 != 0);
   if (__pyx_t_7) {
@@ -4502,8 +4840,9 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  *     return __pyx_result
  * cdef __pyx_unpickle_ElementMaker__set_state(ElementMaker __pyx_result, tuple __pyx_state):
  */
-    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 7, __pyx_L1_error)
-    __pyx_t_3 = __pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(((struct __pyx_obj_4lxml_7builder_ElementMaker *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
+    __Pyx_TraceLine(7,0,__PYX_ERR(2, 7, __pyx_L1_error))
+    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 7, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(((struct __pyx_obj_4lxml_7builder_ElementMaker *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -4523,6 +4862,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
  * cdef __pyx_unpickle_ElementMaker__set_state(ElementMaker __pyx_result, tuple __pyx_state):
  *     __pyx_result._makeelement = __pyx_state[0]; __pyx_result._namespace = __pyx_state[1]; __pyx_result._nsmap = __pyx_state[2]; __pyx_result._typemap = __pyx_state[3]
  */
+  __Pyx_TraceLine(8,0,__PYX_ERR(2, 8, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v___pyx_result);
   __pyx_r = __pyx_v___pyx_result;
@@ -4547,6 +4887,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
   __Pyx_XDECREF(__pyx_v___pyx_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4561,6 +4902,7 @@ static PyObject *__pyx_pf_4lxml_7builder___pyx_unpickle_ElementMaker(CYTHON_UNUS
 
 static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(struct __pyx_obj_4lxml_7builder_ElementMaker *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -4572,6 +4914,7 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__pyx_unpickle_ElementMaker__set_state", 0);
+  __Pyx_TraceCall("__pyx_unpickle_ElementMaker__set_state", __pyx_f[2], 9, 0, __PYX_ERR(2, 9, __pyx_L1_error));
 
   /* "(tree fragment)":10
  *     return __pyx_result
@@ -4580,11 +4923,12 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
  *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
  *         __pyx_result.__dict__.update(__pyx_state[4])
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(2, 10, __pyx_L1_error))
   if (unlikely(__pyx_v___pyx_state == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
+    __PYX_ERR(2, 10, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 10, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v___pyx_result->_makeelement);
@@ -4593,9 +4937,9 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
   __pyx_t_1 = 0;
   if (unlikely(__pyx_v___pyx_state == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
+    __PYX_ERR(2, 10, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 10, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v___pyx_result->_namespace);
@@ -4604,11 +4948,11 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
   __pyx_t_1 = 0;
   if (unlikely(__pyx_v___pyx_state == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
+    __PYX_ERR(2, 10, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 10, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 10, __pyx_L1_error)
+  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v___pyx_result->_nsmap);
   __Pyx_DECREF(__pyx_v___pyx_result->_nsmap);
@@ -4616,11 +4960,11 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
   __pyx_t_1 = 0;
   if (unlikely(__pyx_v___pyx_state == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 10, __pyx_L1_error)
+    __PYX_ERR(2, 10, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 10, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 10, __pyx_L1_error)
+  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(2, 10, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v___pyx_result->_typemap);
   __Pyx_DECREF(__pyx_v___pyx_result->_typemap);
@@ -4633,18 +4977,19 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
  *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
  *         __pyx_result.__dict__.update(__pyx_state[4])
  */
+  __Pyx_TraceLine(11,0,__PYX_ERR(2, 11, __pyx_L1_error))
   if (unlikely(__pyx_v___pyx_state == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 11, __pyx_L1_error)
+    __PYX_ERR(2, 11, __pyx_L1_error)
   }
-  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 11, __pyx_L1_error)
   __pyx_t_4 = ((__pyx_t_3 > 4) != 0);
   if (__pyx_t_4) {
   } else {
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 11, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 11, __pyx_L1_error)
   __pyx_t_5 = (__pyx_t_4 != 0);
   __pyx_t_2 = __pyx_t_5;
   __pyx_L4_bool_binop_done:;
@@ -4655,16 +5000,17 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
  *     if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'):
  *         __pyx_result.__dict__.update(__pyx_state[4])             # <<<<<<<<<<<<<<
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 12, __pyx_L1_error)
+    __Pyx_TraceLine(12,0,__PYX_ERR(2, 12, __pyx_L1_error))
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 12, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 12, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 12, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (unlikely(__pyx_v___pyx_state == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(1, 12, __pyx_L1_error)
+      __PYX_ERR(2, 12, __pyx_L1_error)
     }
-    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 12, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 12, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_8 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -4677,14 +5023,14 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
       }
     }
     if (!__pyx_t_8) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_7)) {
         PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -4693,20 +5039,20 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
         PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else
       #endif
       {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 12, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
         __pyx_t_6 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -4743,6 +5089,7 @@ static PyObject *__pyx_f_4lxml_7builder___pyx_unpickle_ElementMaker__set_state(s
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5056,7 +5403,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
-  {&__pyx_n_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 1},
+  {&__pyx_n_s__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 0, 1, 1},
   {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
   {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
   {&__pyx_n_s_add_cdata, __pyx_k_add_cdata, sizeof(__pyx_k_add_cdata), 0, 0, 1, 1},
@@ -5175,10 +5522,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     cdef bint use_setstate
  *     state = (self._makeelement, self._namespace, self._nsmap, self._typemap)
  */
-  __pyx_tuple__11 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_use_setstate, __pyx_n_s_state, __pyx_n_s_dict_2); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__11);
-  __Pyx_GIVEREF(__pyx_tuple__11);
-  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(1, 1, __pyx_L1_error)
+  __pyx_tuple__14 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_use_setstate, __pyx_n_s_state, __pyx_n_s_dict_2); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
+  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(2, 1, __pyx_L1_error)
 
   /* "(tree fragment)":14
  *     else:
@@ -5186,20 +5533,20 @@ static int __Pyx_InitCachedConstants(void) {
  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
  *     __pyx_unpickle_ElementMaker__set_state(self, __pyx_state)
  */
-  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 14, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
-  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(1, 14, __pyx_L1_error)
+  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
+  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(2, 14, __pyx_L1_error)
 
   /* "(tree fragment)":1
  * def __pyx_unpickle_ElementMaker(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
  *     if __pyx_checksum != 0x9fc2fa1:
  *         from pickle import PickleError as __pyx_PickleError
  */
-  __pyx_tuple__15 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
-  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ElementMaker, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 1, __pyx_L1_error)
+  __pyx_tuple__16 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__16);
+  __Pyx_GIVEREF(__pyx_tuple__16);
+  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ElementMaker, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(2, 1, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -5318,7 +5665,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -5375,6 +5722,7 @@ static int __pyx_pymod_exec_builder(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -5479,6 +5827,7 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_builder(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/builder.py":40
  * """
@@ -5487,11 +5836,12 @@ if (!__Pyx_RefNanny) {
  * 
  * from functools import partial
  */
+  __Pyx_TraceLine(40,0,__PYX_ERR(0, 40, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s__10);
-  __Pyx_GIVEREF(__pyx_n_s__10);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__10);
+  __Pyx_INCREF(__pyx_n_s__13);
+  __Pyx_GIVEREF(__pyx_n_s__13);
+  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__13);
   __pyx_t_2 = __Pyx_Import(__pyx_n_s_lxml_etree, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5507,6 +5857,7 @@ if (!__Pyx_RefNanny) {
  * 
  * try:
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(0, 42, __pyx_L1_error))
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_partial);
@@ -5531,6 +5882,7 @@ if (!__Pyx_RefNanny) {
  *     basestring
  * except NameError:
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(0, 44, __pyx_L2_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -5547,6 +5899,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     basestring = str
  */
+      __Pyx_TraceLine(45,0,__PYX_ERR(0, 45, __pyx_L2_error))
       __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L2_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5574,6 +5927,7 @@ if (!__Pyx_RefNanny) {
  *     basestring = str
  * 
  */
+    __Pyx_TraceLine(46,0,__PYX_ERR(0, 46, __pyx_L4_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.builder", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -5589,6 +5943,7 @@ if (!__Pyx_RefNanny) {
  * 
  * try:
  */
+      __Pyx_TraceLine(47,0,__PYX_ERR(0, 47, __pyx_L4_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_basestring, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 47, __pyx_L4_except_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -5625,6 +5980,7 @@ if (!__Pyx_RefNanny) {
  *     unicode
  * except NameError:
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(0, 49, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -5641,6 +5997,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     unicode = str
  */
+      __Pyx_TraceLine(50,0,__PYX_ERR(0, 50, __pyx_L10_error))
       __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 50, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -5669,6 +6026,7 @@ if (!__Pyx_RefNanny) {
  *     unicode = str
  * 
  */
+    __Pyx_TraceLine(51,0,__PYX_ERR(0, 51, __pyx_L12_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.builder", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -5684,6 +6042,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+      __Pyx_TraceLine(52,0,__PYX_ERR(0, 52, __pyx_L12_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 52, __pyx_L12_except_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -5718,9 +6077,10 @@ if (!__Pyx_RefNanny) {
  *     cdef bint use_setstate
  *     state = (self._makeelement, self._namespace, self._nsmap, self._typemap)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementMaker___reduce_cython, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
+  __Pyx_TraceLine(1,0,__PYX_ERR(2, 1, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementMaker___reduce_cython, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_1) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "(tree fragment)":14
@@ -5729,9 +6089,10 @@ if (!__Pyx_RefNanny) {
  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
  *     __pyx_unpickle_ElementMaker__set_state(self, __pyx_state)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementMaker___setstate_cython, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
+  __Pyx_TraceLine(14,0,__PYX_ERR(2, 14, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_12ElementMaker_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementMaker___setstate_cython, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_1) < 0) __PYX_ERR(1, 14, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_1) < 0) __PYX_ERR(2, 14, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "lxml/builder.py":235
@@ -5739,6 +6100,7 @@ if (!__Pyx_RefNanny) {
  * # create factory object
  * E = ElementMaker()             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(0, 235, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_7builder_ElementMaker)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_1) < 0) __PYX_ERR(0, 235, __pyx_L1_error)
@@ -5749,9 +6111,10 @@ if (!__Pyx_RefNanny) {
  *     if __pyx_checksum != 0x9fc2fa1:
  *         from pickle import PickleError as __pyx_PickleError
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_1__pyx_unpickle_ElementMaker, 0, __pyx_n_s_pyx_unpickle_ElementMaker, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
+  __Pyx_TraceLine(1,0,__PYX_ERR(2, 1, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_7builder_1__pyx_unpickle_ElementMaker, 0, __pyx_n_s_pyx_unpickle_ElementMaker, NULL, __pyx_n_s_lxml_builder, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ElementMaker, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ElementMaker, __pyx_t_1) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "lxml/builder.py":1
@@ -5759,10 +6122,12 @@ if (!__Pyx_RefNanny) {
  * # Element generator factory by Fredrik Lundh.
  * #
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -5798,12 +6163,12 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_codeobj__7);
   Py_CLEAR(__pyx_tuple__8);
   Py_CLEAR(__pyx_codeobj__9);
-  Py_CLEAR(__pyx_tuple__11);
+  Py_CLEAR(__pyx_codeobj__10);
+  Py_CLEAR(__pyx_codeobj__11);
   Py_CLEAR(__pyx_codeobj__12);
-  Py_CLEAR(__pyx_tuple__13);
-  Py_CLEAR(__pyx_codeobj__14);
+  Py_CLEAR(__pyx_tuple__14);
   Py_CLEAR(__pyx_tuple__15);
-  Py_CLEAR(__pyx_codeobj__16);
+  Py_CLEAR(__pyx_tuple__16);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
@@ -6030,6 +6395,123 @@ static void __Pyx_RaiseArgtupleInvalid(
                  (num_expected == 1) ? "" : "s", num_found);
 }
 
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
+
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* GetItemInt */
 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
     PyObject *r;
@@ -6488,30 +6970,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
 }
 #endif
 
-/* PyErrFetchRestore */
-  #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-#endif
-
 /* RaiseException */
   #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
@@ -8177,6 +8635,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -9162,6 +9623,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index e607a5d..3a03679 100644 (file)
@@ -1,10 +1,14 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
@@ -67,9 +71,6 @@
             "src/lxml/xslt.pxi", 
             "src/lxml/xsltext.pxi"
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "src/lxml", 
             "src/lxml/includes", 
@@ -81,7 +82,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml.etree", 
@@ -100,7 +100,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -546,6 +546,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -785,7 +786,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -893,7 +894,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -2287,8 +2288,8 @@ struct __pyx_obj_4lxml_5etree__FileReaderContext {
 };
 
 
-/* "src/lxml/parser.pxi":512
- * 
+/* "src/lxml/parser.pxi":513
+ * @cython.no_gc_clear  # May have to call "self._validator.disconnect()" on dealloc.
  * @cython.internal
  * cdef class _ParserContext(_ResolverContext):             # <<<<<<<<<<<<<<
  *     cdef _ErrorLog _error_log
@@ -2305,7 +2306,7 @@ struct __pyx_obj_4lxml_5etree__ParserContext {
 };
 
 
-/* "src/lxml/parser.pxi":780
+/* "src/lxml/parser.pxi":781
  * 
  * @cython.internal
  * cdef class _BaseParser:             # <<<<<<<<<<<<<<
@@ -2333,7 +2334,7 @@ struct __pyx_obj_4lxml_5etree__BaseParser {
 };
 
 
-/* "src/lxml/parser.pxi":1229
+/* "src/lxml/parser.pxi":1230
  * ############################################################
  * 
  * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
@@ -2346,11 +2347,11 @@ struct __pyx_obj_4lxml_5etree__FeedParser {
 };
 
 
-/* "src/lxml/parser.pxi":1440
+/* "src/lxml/parser.pxi":1441
  *     )
  * 
  * 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, 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=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
  * 
  */
 struct __pyx_obj_4lxml_5etree_XMLParser {
@@ -2358,7 +2359,7 @@ struct __pyx_obj_4lxml_5etree_XMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1524
+/* "src/lxml/parser.pxi":1525
  * 
  * 
  * cdef class XMLPullParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -2370,7 +2371,7 @@ struct __pyx_obj_4lxml_5etree_XMLPullParser {
 };
 
 
-/* "src/lxml/parser.pxi":1553
+/* "src/lxml/parser.pxi":1554
  * 
  * 
  * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -2382,7 +2383,7 @@ struct __pyx_obj_4lxml_5etree_ETCompatXMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1632
+/* "src/lxml/parser.pxi":1633
  *     )
  * 
  * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
@@ -2394,7 +2395,7 @@ struct __pyx_obj_4lxml_5etree_HTMLParser {
 };
 
 
-/* "src/lxml/parser.pxi":1697
+/* "src/lxml/parser.pxi":1698
  * 
  * 
  * cdef class HTMLPullParser(HTMLParser):             # <<<<<<<<<<<<<<
@@ -2420,9 +2421,9 @@ struct __pyx_obj_4lxml_5etree__SaxParserTarget {
 };
 
 
-/* "src/lxml/saxparser.pxi":62
- * #@cython.final
+/* "src/lxml/saxparser.pxi":63
  * @cython.internal
+ * @cython.no_gc_clear  # Required because parent class uses it - Cython bug.
  * cdef class _SaxParserContext(_ParserContext):             # <<<<<<<<<<<<<<
  *     u"""This class maps SAX2 events to parser target events.
  *     """
@@ -2450,7 +2451,7 @@ struct __pyx_obj_4lxml_5etree__SaxParserContext {
 };
 
 
-/* "src/lxml/saxparser.pxi":223
+/* "src/lxml/saxparser.pxi":224
  * @cython.final
  * @cython.internal
  * cdef class _ParseEventsIterator:             # <<<<<<<<<<<<<<
@@ -2464,7 +2465,7 @@ struct __pyx_obj_4lxml_5etree__ParseEventsIterator {
 };
 
 
-/* "src/lxml/saxparser.pxi":631
+/* "src/lxml/saxparser.pxi":632
  * ############################################################
  * 
  * cdef class TreeBuilder(_SaxParserTarget):             # <<<<<<<<<<<<<<
@@ -2502,9 +2503,9 @@ struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget {
 };
 
 
-/* "src/lxml/parsertarget.pxi":102
- * @cython.final
+/* "src/lxml/parsertarget.pxi":103
  * @cython.internal
+ * @cython.no_gc_clear  # Required because parent class uses it - Cython bug.
  * cdef class _TargetParserContext(_SaxParserContext):             # <<<<<<<<<<<<<<
  *     u"""This class maps SAX2 events to the ET parser target interface.
  *     """
@@ -4484,8 +4485,8 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
 static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_obj_4lxml_5etree__FileReaderContext *, char *, int);
 
 
-/* "src/lxml/parser.pxi":512
- * 
+/* "src/lxml/parser.pxi":513
+ * @cython.no_gc_clear  # May have to call "self._validator.disconnect()" on dealloc.
  * @cython.internal
  * cdef class _ParserContext(_ResolverContext):             # <<<<<<<<<<<<<<
  *     cdef _ErrorLog _error_log
@@ -4505,7 +4506,7 @@ struct __pyx_vtabstruct_4lxml_5etree__ParserContext {
 static struct __pyx_vtabstruct_4lxml_5etree__ParserContext *__pyx_vtabptr_4lxml_5etree__ParserContext;
 
 
-/* "src/lxml/parser.pxi":780
+/* "src/lxml/parser.pxi":781
  * 
  * @cython.internal
  * cdef class _BaseParser:             # <<<<<<<<<<<<<<
@@ -4533,7 +4534,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__BaseParser *__pyx_vtabptr_4lxml_5et
 static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_obj_4lxml_5etree__BaseParser *, xmlParserCtxt *);
 
 
-/* "src/lxml/parser.pxi":1229
+/* "src/lxml/parser.pxi":1230
  * ############################################################
  * 
  * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
@@ -4549,11 +4550,11 @@ struct __pyx_vtabstruct_4lxml_5etree__FeedParser {
 static struct __pyx_vtabstruct_4lxml_5etree__FeedParser *__pyx_vtabptr_4lxml_5etree__FeedParser;
 
 
-/* "src/lxml/parser.pxi":1440
+/* "src/lxml/parser.pxi":1441
  *     )
  * 
  * 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, 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=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
  * 
  */
 
@@ -4563,7 +4564,7 @@ struct __pyx_vtabstruct_4lxml_5etree_XMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_XMLParser *__pyx_vtabptr_4lxml_5etree_XMLParser;
 
 
-/* "src/lxml/parser.pxi":1524
+/* "src/lxml/parser.pxi":1525
  * 
  * 
  * cdef class XMLPullParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -4577,7 +4578,7 @@ struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser {
 static struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *__pyx_vtabptr_4lxml_5etree_XMLPullParser;
 
 
-/* "src/lxml/parser.pxi":1553
+/* "src/lxml/parser.pxi":1554
  * 
  * 
  * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
@@ -4591,7 +4592,7 @@ struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser *__pyx_vtabptr_4lxml_5etree_ETCompatXMLParser;
 
 
-/* "src/lxml/parser.pxi":1632
+/* "src/lxml/parser.pxi":1633
  *     )
  * 
  * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
@@ -4605,7 +4606,7 @@ struct __pyx_vtabstruct_4lxml_5etree_HTMLParser {
 static struct __pyx_vtabstruct_4lxml_5etree_HTMLParser *__pyx_vtabptr_4lxml_5etree_HTMLParser;
 
 
-/* "src/lxml/parser.pxi":1697
+/* "src/lxml/parser.pxi":1698
  * 
  * 
  * cdef class HTMLPullParser(HTMLParser):             # <<<<<<<<<<<<<<
@@ -4638,9 +4639,9 @@ struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget {
 static struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *__pyx_vtabptr_4lxml_5etree__SaxParserTarget;
 
 
-/* "src/lxml/saxparser.pxi":62
- * #@cython.final
+/* "src/lxml/saxparser.pxi":63
  * @cython.internal
+ * @cython.no_gc_clear  # Required because parent class uses it - Cython bug.
  * cdef class _SaxParserContext(_ParserContext):             # <<<<<<<<<<<<<<
  *     u"""This class maps SAX2 events to parser target events.
  *     """
@@ -4660,7 +4661,7 @@ struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext {
 static struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *__pyx_vtabptr_4lxml_5etree__SaxParserContext;
 
 
-/* "src/lxml/saxparser.pxi":631
+/* "src/lxml/saxparser.pxi":632
  * ############################################################
  * 
  * cdef class TreeBuilder(_SaxParserTarget):             # <<<<<<<<<<<<<<
@@ -4690,9 +4691,9 @@ struct __pyx_vtabstruct_4lxml_5etree__PythonSaxParserTarget {
 static struct __pyx_vtabstruct_4lxml_5etree__PythonSaxParserTarget *__pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget;
 
 
-/* "src/lxml/parsertarget.pxi":102
- * @cython.final
+/* "src/lxml/parsertarget.pxi":103
  * @cython.internal
+ * @cython.no_gc_clear  # Required because parent class uses it - Cython bug.
  * cdef class _TargetParserContext(_SaxParserContext):             # <<<<<<<<<<<<<<
  *     u"""This class maps SAX2 events to the ET parser target interface.
  *     """
@@ -5331,6 +5332,208 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 #define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
 #endif
 
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
@@ -7076,8 +7279,6 @@ static const char __pyx_k_s[] = "<!--%s-->";
 static const char __pyx_k_v[] = "v";
 static const char __pyx_k_Ok[] = "Ok";
 static const char __pyx_k_PI[] = "PI";
-static const char __pyx_k__3[] = "-";
-static const char __pyx_k__4[] = ".";
 static const char __pyx_k_dc[] = "dc";
 static const char __pyx_k_el[] = "el";
 static const char __pyx_k_id[] = "id";
@@ -7095,32 +7296,19 @@ static const char __pyx_k_0_9[] = "[0-9]+";
 static const char __pyx_k_DTD[] = "DTD";
 static const char __pyx_k_TAG[] = "TAG";
 static const char __pyx_k_XML[] = "XML";
-static const char __pyx_k__15[] = " ";
-static const char __pyx_k__16[] = "";
-static const char __pyx_k__24[] = ":";
-static const char __pyx_k__25[] = ": ";
-static const char __pyx_k__26[] = "\n";
-static const char __pyx_k__28[] = "=";
-static const char __pyx_k__31[] = "'";
-static const char __pyx_k__32[] = "\"";
-static const char __pyx_k__34[] = "\" ";
-static const char __pyx_k__35[] = ">";
-static const char __pyx_k__36[] = "\">";
-static const char __pyx_k__38[] = "&";
-static const char __pyx_k__39[] = ";";
-static const char __pyx_k__40[] = "{";
-static const char __pyx_k__41[] = "}";
-static const char __pyx_k__46[] = "[";
-static const char __pyx_k__47[] = "]";
-static const char __pyx_k__48[] = "/";
-static const char __pyx_k__53[] = "*";
-static const char __pyx_k__54[] = "{*}*";
-static const char __pyx_k__57[] = "--";
-static const char __pyx_k__60[] = "?>";
-static const char __pyx_k__61[] = "]]>";
-static const char __pyx_k__70[] = "_";
-static const char __pyx_k__72[] = "': ";
-static const char __pyx_k__76[] = ")";
+static const char __pyx_k__10[] = "-";
+static const char __pyx_k__11[] = ".";
+static const char __pyx_k__22[] = " ";
+static const char __pyx_k__23[] = "";
+static const char __pyx_k__31[] = ":";
+static const char __pyx_k__33[] = ": ";
+static const char __pyx_k__37[] = "\n";
+static const char __pyx_k__56[] = "=";
+static const char __pyx_k__60[] = "'";
+static const char __pyx_k__61[] = "\"";
+static const char __pyx_k__63[] = "\" ";
+static const char __pyx_k__64[] = ">";
+static const char __pyx_k__65[] = "\">";
 static const char __pyx_k_add[] = "add";
 static const char __pyx_k_all[] = "__all__";
 static const char __pyx_k_any[] = "any";
@@ -7162,10 +7350,25 @@ static const char __pyx_k_None[] = "None";
 static const char __pyx_k_Type[] = "Type '";
 static const char __pyx_k_UTF8[] = "UTF8";
 static const char __pyx_k_XSLT[] = "XSLT";
-static const char __pyx_k__123[] = "(";
-static const char __pyx_k__124[] = ", ";
-static const char __pyx_k__635[] = "(\"[^\"]*\")|('[^']*')";
-static const char __pyx_k__637[] = "({[^}]+})";
+static const char __pyx_k__112[] = "&";
+static const char __pyx_k__113[] = ";";
+static const char __pyx_k__114[] = "{";
+static const char __pyx_k__115[] = "}";
+static const char __pyx_k__128[] = "[";
+static const char __pyx_k__129[] = "]";
+static const char __pyx_k__130[] = "/";
+static const char __pyx_k__160[] = "*";
+static const char __pyx_k__161[] = "{*}*";
+static const char __pyx_k__166[] = "--";
+static const char __pyx_k__170[] = "?>";
+static const char __pyx_k__171[] = "]]>";
+static const char __pyx_k__214[] = "_";
+static const char __pyx_k__234[] = "': ";
+static const char __pyx_k__252[] = ")";
+static const char __pyx_k__348[] = "(";
+static const char __pyx_k__349[] = ", ";
+static const char __pyx_k__663[] = "(\"[^\"]*\")|('[^']*')";
+static const char __pyx_k__665[] = "({[^}]+})";
 static const char __pyx_k_args[] = "args";
 static const char __pyx_k_beta[] = "beta";
 static const char __pyx_k_c14n[] = "c14n";
@@ -8909,52 +9112,52 @@ static PyObject *__pyx_n_s_XSLT_set_global_max_depth;
 static PyObject *__pyx_n_s_XSLT_strparam;
 static PyObject *__pyx_kp_s_XSLT_stylesheet_not_initialised;
 static PyObject *__pyx_n_s_XSLT_tostring;
-static PyObject *__pyx_kp_u__123;
-static PyObject *__pyx_kp_u__124;
-static PyObject *__pyx_kp_u__15;
-static PyObject *__pyx_kp_b__16;
-static PyObject *__pyx_kp_s__16;
-static PyObject *__pyx_kp_u__16;
-static PyObject *__pyx_kp_b__24;
-static PyObject *__pyx_kp_u__24;
-static PyObject *__pyx_kp_u__25;
-static PyObject *__pyx_kp_s__26;
-static PyObject *__pyx_kp_u__26;
-static PyObject *__pyx_kp_s__28;
-static PyObject *__pyx_kp_b__3;
-static PyObject *__pyx_kp_u__3;
+static PyObject *__pyx_kp_b__10;
+static PyObject *__pyx_kp_u__10;
+static PyObject *__pyx_kp_b__11;
+static PyObject *__pyx_kp_s__11;
+static PyObject *__pyx_kp_u__11;
+static PyObject *__pyx_kp_b__112;
+static PyObject *__pyx_kp_u__112;
+static PyObject *__pyx_kp_b__113;
+static PyObject *__pyx_kp_u__113;
+static PyObject *__pyx_kp_u__114;
+static PyObject *__pyx_kp_u__115;
+static PyObject *__pyx_kp_u__128;
+static PyObject *__pyx_kp_u__129;
+static PyObject *__pyx_kp_s__130;
+static PyObject *__pyx_kp_b__160;
+static PyObject *__pyx_kp_s__160;
+static PyObject *__pyx_kp_s__161;
+static PyObject *__pyx_kp_b__166;
+static PyObject *__pyx_kp_b__170;
+static PyObject *__pyx_kp_b__171;
+static PyObject *__pyx_n_s__214;
+static PyObject *__pyx_n_u__214;
+static PyObject *__pyx_kp_u__22;
+static PyObject *__pyx_kp_b__23;
+static PyObject *__pyx_kp_s__23;
+static PyObject *__pyx_kp_u__23;
+static PyObject *__pyx_kp_u__234;
+static PyObject *__pyx_kp_u__252;
 static PyObject *__pyx_kp_b__31;
 static PyObject *__pyx_kp_u__31;
-static PyObject *__pyx_kp_b__32;
-static PyObject *__pyx_kp_s__32;
-static PyObject *__pyx_kp_u__32;
-static PyObject *__pyx_kp_u__34;
-static PyObject *__pyx_kp_u__35;
-static PyObject *__pyx_kp_u__36;
-static PyObject *__pyx_kp_b__38;
-static PyObject *__pyx_kp_u__38;
-static PyObject *__pyx_kp_b__39;
-static PyObject *__pyx_kp_u__39;
-static PyObject *__pyx_kp_b__4;
-static PyObject *__pyx_kp_s__4;
-static PyObject *__pyx_kp_u__4;
-static PyObject *__pyx_kp_u__40;
-static PyObject *__pyx_kp_u__41;
-static PyObject *__pyx_kp_u__46;
-static PyObject *__pyx_kp_u__47;
-static PyObject *__pyx_kp_s__48;
-static PyObject *__pyx_kp_b__53;
-static PyObject *__pyx_kp_s__53;
-static PyObject *__pyx_kp_s__54;
-static PyObject *__pyx_kp_b__57;
+static PyObject *__pyx_kp_u__33;
+static PyObject *__pyx_kp_u__348;
+static PyObject *__pyx_kp_u__349;
+static PyObject *__pyx_kp_s__37;
+static PyObject *__pyx_kp_u__37;
+static PyObject *__pyx_kp_s__56;
 static PyObject *__pyx_kp_b__60;
+static PyObject *__pyx_kp_u__60;
 static PyObject *__pyx_kp_b__61;
-static PyObject *__pyx_kp_b__635;
-static PyObject *__pyx_kp_b__637;
-static PyObject *__pyx_n_s__70;
-static PyObject *__pyx_n_u__70;
-static PyObject *__pyx_kp_u__72;
-static PyObject *__pyx_kp_u__76;
+static PyObject *__pyx_kp_s__61;
+static PyObject *__pyx_kp_u__61;
+static PyObject *__pyx_kp_u__63;
+static PyObject *__pyx_kp_u__64;
+static PyObject *__pyx_kp_u__65;
+static PyObject *__pyx_kp_b__663;
+static PyObject *__pyx_kp_b__665;
 static PyObject *__pyx_n_s_abspath;
 static PyObject *__pyx_n_s_accepted_domains;
 static PyObject *__pyx_n_s_access_control;
@@ -10474,408 +10677,464 @@ static PyObject *__pyx_int_neg_4;
 static PyObject *__pyx_int_neg_100;
 static PyObject *__pyx_int_neg_200;
 static PyObject *__pyx_int_neg_300;
-static PyObject *__pyx_tuple_;
-static PyObject *__pyx_slice__7;
-static PyObject *__pyx_slice__9;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__5;
-static PyObject *__pyx_tuple__6;
+static PyObject *__pyx_codeobj_;
 static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_slice__11;
-static PyObject *__pyx_slice__13;
-static PyObject *__pyx_slice__49;
-static PyObject *__pyx_slice__50;
-static PyObject *__pyx_slice__51;
-static PyObject *__pyx_slice__52;
-static PyObject *__pyx_slice__68;
-static PyObject *__pyx_slice__69;
-static PyObject *__pyx_slice__88;
-static PyObject *__pyx_slice__89;
-static PyObject *__pyx_slice__91;
-static PyObject *__pyx_tuple__10;
+static PyObject *__pyx_tuple__9;
+static PyObject *__pyx_slice__14;
+static PyObject *__pyx_slice__16;
+static PyObject *__pyx_slice__18;
+static PyObject *__pyx_slice__20;
 static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__14;
+static PyObject *__pyx_tuple__13;
+static PyObject *__pyx_tuple__15;
 static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__18;
 static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__20;
 static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__23;
+static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__25;
+static PyObject *__pyx_tuple__26;
 static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
 static PyObject *__pyx_tuple__29;
 static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__55;
-static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__58;
+static PyObject *__pyx_tuple__54;
+static PyObject *__pyx_tuple__57;
 static PyObject *__pyx_tuple__59;
 static PyObject *__pyx_tuple__62;
-static PyObject *__pyx_tuple__63;
-static PyObject *__pyx_tuple__64;
-static PyObject *__pyx_tuple__65;
-static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__67;
-static PyObject *__pyx_tuple__71;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_tuple__74;
-static PyObject *__pyx_tuple__75;
-static PyObject *__pyx_tuple__77;
 static PyObject *__pyx_tuple__78;
-static PyObject *__pyx_tuple__80;
-static PyObject *__pyx_tuple__81;
-static PyObject *__pyx_tuple__83;
-static PyObject *__pyx_tuple__84;
-static PyObject *__pyx_tuple__85;
-static PyObject *__pyx_tuple__86;
-static PyObject *__pyx_tuple__87;
-static PyObject *__pyx_tuple__90;
-static PyObject *__pyx_tuple__92;
-static PyObject *__pyx_tuple__93;
-static PyObject *__pyx_tuple__94;
-static PyObject *__pyx_tuple__95;
-static PyObject *__pyx_slice__116;
-static PyObject *__pyx_slice__117;
-static PyObject *__pyx_slice__121;
-static PyObject *__pyx_slice__141;
-static PyObject *__pyx_slice__143;
-static PyObject *__pyx_tuple__103;
-static PyObject *__pyx_tuple__104;
-static PyObject *__pyx_tuple__105;
-static PyObject *__pyx_tuple__108;
-static PyObject *__pyx_tuple__109;
-static PyObject *__pyx_tuple__110;
-static PyObject *__pyx_tuple__111;
-static PyObject *__pyx_tuple__112;
-static PyObject *__pyx_tuple__113;
-static PyObject *__pyx_tuple__114;
-static PyObject *__pyx_tuple__115;
-static PyObject *__pyx_tuple__118;
-static PyObject *__pyx_tuple__119;
-static PyObject *__pyx_tuple__120;
+static PyObject *__pyx_codeobj__2;
+static PyObject *__pyx_codeobj__3;
+static PyObject *__pyx_codeobj__4;
+static PyObject *__pyx_codeobj__5;
+static PyObject *__pyx_codeobj__6;
+static PyObject *__pyx_codeobj__7;
+static PyObject *__pyx_slice__134;
+static PyObject *__pyx_slice__136;
+static PyObject *__pyx_slice__138;
+static PyObject *__pyx_slice__140;
+static PyObject *__pyx_slice__195;
+static PyObject *__pyx_slice__213;
+static PyObject *__pyx_slice__273;
+static PyObject *__pyx_slice__274;
+static PyObject *__pyx_slice__276;
+static PyObject *__pyx_slice__321;
+static PyObject *__pyx_slice__324;
+static PyObject *__pyx_slice__346;
+static PyObject *__pyx_slice__388;
+static PyObject *__pyx_slice__390;
 static PyObject *__pyx_tuple__122;
+static PyObject *__pyx_tuple__123;
+static PyObject *__pyx_tuple__124;
 static PyObject *__pyx_tuple__125;
-static PyObject *__pyx_tuple__126;
-static PyObject *__pyx_tuple__127;
-static PyObject *__pyx_tuple__128;
-static PyObject *__pyx_tuple__129;
-static PyObject *__pyx_tuple__130;
-static PyObject *__pyx_tuple__133;
-static PyObject *__pyx_tuple__134;
-static PyObject *__pyx_tuple__137;
-static PyObject *__pyx_tuple__138;
-static PyObject *__pyx_tuple__139;
-static PyObject *__pyx_tuple__140;
-static PyObject *__pyx_tuple__142;
-static PyObject *__pyx_tuple__144;
-static PyObject *__pyx_tuple__145;
-static PyObject *__pyx_tuple__146;
-static PyObject *__pyx_tuple__148;
-static PyObject *__pyx_tuple__150;
-static PyObject *__pyx_tuple__152;
-static PyObject *__pyx_tuple__154;
-static PyObject *__pyx_tuple__156;
-static PyObject *__pyx_tuple__158;
-static PyObject *__pyx_tuple__159;
-static PyObject *__pyx_tuple__160;
 static PyObject *__pyx_tuple__162;
-static PyObject *__pyx_tuple__164;
-static PyObject *__pyx_tuple__166;
+static PyObject *__pyx_tuple__163;
+static PyObject *__pyx_tuple__167;
 static PyObject *__pyx_tuple__168;
-static PyObject *__pyx_tuple__170;
-static PyObject *__pyx_tuple__172;
-static PyObject *__pyx_tuple__174;
-static PyObject *__pyx_tuple__176;
-static PyObject *__pyx_tuple__178;
-static PyObject *__pyx_tuple__180;
-static PyObject *__pyx_tuple__182;
+static PyObject *__pyx_tuple__179;
+static PyObject *__pyx_tuple__183;
 static PyObject *__pyx_tuple__184;
-static PyObject *__pyx_tuple__186;
-static PyObject *__pyx_tuple__188;
+static PyObject *__pyx_tuple__185;
 static PyObject *__pyx_tuple__190;
-static PyObject *__pyx_tuple__192;
-static PyObject *__pyx_tuple__194;
-static PyObject *__pyx_tuple__196;
-static PyObject *__pyx_tuple__198;
-static PyObject *__pyx_tuple__200;
-static PyObject *__pyx_tuple__202;
-static PyObject *__pyx_tuple__203;
-static PyObject *__pyx_tuple__205;
-static PyObject *__pyx_tuple__206;
-static PyObject *__pyx_tuple__207;
-static PyObject *__pyx_tuple__208;
-static PyObject *__pyx_tuple__209;
-static PyObject *__pyx_tuple__210;
-static PyObject *__pyx_tuple__212;
-static PyObject *__pyx_tuple__214;
-static PyObject *__pyx_tuple__216;
-static PyObject *__pyx_tuple__218;
-static PyObject *__pyx_tuple__220;
-static PyObject *__pyx_tuple__222;
-static PyObject *__pyx_tuple__224;
-static PyObject *__pyx_tuple__226;
-static PyObject *__pyx_tuple__228;
-static PyObject *__pyx_tuple__230;
-static PyObject *__pyx_tuple__232;
-static PyObject *__pyx_tuple__234;
-static PyObject *__pyx_tuple__236;
-static PyObject *__pyx_tuple__238;
-static PyObject *__pyx_tuple__240;
-static PyObject *__pyx_tuple__242;
-static PyObject *__pyx_tuple__244;
-static PyObject *__pyx_tuple__246;
-static PyObject *__pyx_tuple__248;
-static PyObject *__pyx_tuple__250;
-static PyObject *__pyx_tuple__252;
-static PyObject *__pyx_tuple__254;
+static PyObject *__pyx_tuple__191;
+static PyObject *__pyx_tuple__233;
+static PyObject *__pyx_tuple__241;
+static PyObject *__pyx_tuple__245;
+static PyObject *__pyx_tuple__247;
 static PyObject *__pyx_tuple__256;
-static PyObject *__pyx_tuple__258;
-static PyObject *__pyx_tuple__260;
+static PyObject *__pyx_tuple__257;
+static PyObject *__pyx_tuple__261;
 static PyObject *__pyx_tuple__262;
-static PyObject *__pyx_tuple__264;
+static PyObject *__pyx_tuple__265;
 static PyObject *__pyx_tuple__266;
 static PyObject *__pyx_tuple__268;
-static PyObject *__pyx_tuple__270;
+static PyObject *__pyx_tuple__271;
 static PyObject *__pyx_tuple__272;
-static PyObject *__pyx_tuple__274;
-static PyObject *__pyx_tuple__276;
+static PyObject *__pyx_tuple__275;
 static PyObject *__pyx_tuple__278;
-static PyObject *__pyx_tuple__280;
+static PyObject *__pyx_tuple__279;
+static PyObject *__pyx_tuple__281;
 static PyObject *__pyx_tuple__282;
-static PyObject *__pyx_tuple__284;
-static PyObject *__pyx_tuple__286;
-static PyObject *__pyx_tuple__288;
-static PyObject *__pyx_tuple__290;
-static PyObject *__pyx_tuple__292;
-static PyObject *__pyx_tuple__294;
-static PyObject *__pyx_tuple__296;
-static PyObject *__pyx_tuple__298;
+static PyObject *__pyx_tuple__297;
+static PyObject *__pyx_tuple__299;
 static PyObject *__pyx_tuple__300;
-static PyObject *__pyx_tuple__302;
-static PyObject *__pyx_tuple__304;
+static PyObject *__pyx_tuple__303;
 static PyObject *__pyx_tuple__306;
+static PyObject *__pyx_tuple__307;
 static PyObject *__pyx_tuple__308;
-static PyObject *__pyx_tuple__310;
-static PyObject *__pyx_tuple__312;
+static PyObject *__pyx_tuple__309;
+static PyObject *__pyx_tuple__311;
+static PyObject *__pyx_tuple__313;
 static PyObject *__pyx_tuple__314;
-static PyObject *__pyx_tuple__316;
-static PyObject *__pyx_tuple__318;
-static PyObject *__pyx_tuple__320;
-static PyObject *__pyx_tuple__322;
-static PyObject *__pyx_tuple__324;
-static PyObject *__pyx_tuple__326;
-static PyObject *__pyx_tuple__328;
-static PyObject *__pyx_tuple__330;
-static PyObject *__pyx_tuple__332;
-static PyObject *__pyx_tuple__334;
+static PyObject *__pyx_tuple__333;
 static PyObject *__pyx_tuple__336;
-static PyObject *__pyx_tuple__338;
-static PyObject *__pyx_tuple__340;
-static PyObject *__pyx_tuple__342;
-static PyObject *__pyx_tuple__344;
-static PyObject *__pyx_tuple__346;
-static PyObject *__pyx_tuple__348;
+static PyObject *__pyx_tuple__337;
+static PyObject *__pyx_tuple__347;
 static PyObject *__pyx_tuple__350;
-static PyObject *__pyx_tuple__352;
-static PyObject *__pyx_tuple__354;
-static PyObject *__pyx_tuple__356;
+static PyObject *__pyx_tuple__353;
 static PyObject *__pyx_tuple__358;
 static PyObject *__pyx_tuple__360;
 static PyObject *__pyx_tuple__362;
-static PyObject *__pyx_tuple__364;
-static PyObject *__pyx_tuple__366;
 static PyObject *__pyx_tuple__368;
-static PyObject *__pyx_tuple__370;
-static PyObject *__pyx_tuple__371;
-static PyObject *__pyx_tuple__373;
-static PyObject *__pyx_tuple__374;
-static PyObject *__pyx_tuple__376;
-static PyObject *__pyx_tuple__377;
+static PyObject *__pyx_tuple__378;
 static PyObject *__pyx_tuple__379;
-static PyObject *__pyx_tuple__381;
-static PyObject *__pyx_tuple__382;
 static PyObject *__pyx_tuple__384;
 static PyObject *__pyx_tuple__385;
+static PyObject *__pyx_tuple__386;
 static PyObject *__pyx_tuple__387;
-static PyObject *__pyx_tuple__388;
-static PyObject *__pyx_tuple__390;
-static PyObject *__pyx_tuple__391;
+static PyObject *__pyx_tuple__389;
+static PyObject *__pyx_tuple__392;
 static PyObject *__pyx_tuple__393;
-static PyObject *__pyx_tuple__394;
-static PyObject *__pyx_tuple__396;
-static PyObject *__pyx_tuple__397;
 static PyObject *__pyx_tuple__399;
+static PyObject *__pyx_tuple__400;
 static PyObject *__pyx_tuple__401;
+static PyObject *__pyx_tuple__402;
 static PyObject *__pyx_tuple__403;
+static PyObject *__pyx_tuple__404;
 static PyObject *__pyx_tuple__405;
+static PyObject *__pyx_tuple__406;
 static PyObject *__pyx_tuple__407;
+static PyObject *__pyx_tuple__408;
 static PyObject *__pyx_tuple__409;
 static PyObject *__pyx_tuple__410;
+static PyObject *__pyx_tuple__411;
 static PyObject *__pyx_tuple__412;
 static PyObject *__pyx_tuple__413;
+static PyObject *__pyx_tuple__414;
 static PyObject *__pyx_tuple__415;
+static PyObject *__pyx_tuple__416;
 static PyObject *__pyx_tuple__417;
+static PyObject *__pyx_tuple__418;
 static PyObject *__pyx_tuple__419;
+static PyObject *__pyx_tuple__420;
 static PyObject *__pyx_tuple__421;
+static PyObject *__pyx_tuple__422;
 static PyObject *__pyx_tuple__423;
+static PyObject *__pyx_tuple__424;
 static PyObject *__pyx_tuple__425;
+static PyObject *__pyx_tuple__426;
 static PyObject *__pyx_tuple__427;
+static PyObject *__pyx_tuple__428;
 static PyObject *__pyx_tuple__429;
+static PyObject *__pyx_tuple__430;
 static PyObject *__pyx_tuple__431;
+static PyObject *__pyx_tuple__432;
 static PyObject *__pyx_tuple__433;
+static PyObject *__pyx_tuple__434;
 static PyObject *__pyx_tuple__435;
+static PyObject *__pyx_tuple__436;
 static PyObject *__pyx_tuple__437;
+static PyObject *__pyx_tuple__438;
 static PyObject *__pyx_tuple__439;
+static PyObject *__pyx_tuple__440;
 static PyObject *__pyx_tuple__441;
+static PyObject *__pyx_tuple__442;
 static PyObject *__pyx_tuple__443;
+static PyObject *__pyx_tuple__444;
 static PyObject *__pyx_tuple__445;
+static PyObject *__pyx_tuple__446;
 static PyObject *__pyx_tuple__447;
+static PyObject *__pyx_tuple__448;
 static PyObject *__pyx_tuple__449;
+static PyObject *__pyx_tuple__450;
 static PyObject *__pyx_tuple__451;
 static PyObject *__pyx_tuple__452;
+static PyObject *__pyx_tuple__453;
 static PyObject *__pyx_tuple__454;
+static PyObject *__pyx_tuple__455;
 static PyObject *__pyx_tuple__456;
+static PyObject *__pyx_tuple__457;
 static PyObject *__pyx_tuple__458;
+static PyObject *__pyx_tuple__459;
 static PyObject *__pyx_tuple__460;
+static PyObject *__pyx_tuple__461;
 static PyObject *__pyx_tuple__462;
+static PyObject *__pyx_tuple__463;
 static PyObject *__pyx_tuple__464;
+static PyObject *__pyx_tuple__465;
 static PyObject *__pyx_tuple__466;
+static PyObject *__pyx_tuple__467;
 static PyObject *__pyx_tuple__468;
+static PyObject *__pyx_tuple__469;
 static PyObject *__pyx_tuple__470;
+static PyObject *__pyx_tuple__471;
 static PyObject *__pyx_tuple__472;
+static PyObject *__pyx_tuple__473;
 static PyObject *__pyx_tuple__474;
+static PyObject *__pyx_tuple__475;
 static PyObject *__pyx_tuple__476;
+static PyObject *__pyx_tuple__477;
 static PyObject *__pyx_tuple__478;
+static PyObject *__pyx_tuple__479;
 static PyObject *__pyx_tuple__480;
+static PyObject *__pyx_tuple__481;
 static PyObject *__pyx_tuple__482;
+static PyObject *__pyx_tuple__483;
 static PyObject *__pyx_tuple__484;
+static PyObject *__pyx_tuple__485;
 static PyObject *__pyx_tuple__486;
 static PyObject *__pyx_tuple__487;
+static PyObject *__pyx_tuple__488;
 static PyObject *__pyx_tuple__489;
+static PyObject *__pyx_tuple__490;
 static PyObject *__pyx_tuple__491;
+static PyObject *__pyx_tuple__492;
 static PyObject *__pyx_tuple__493;
+static PyObject *__pyx_tuple__494;
 static PyObject *__pyx_tuple__495;
+static PyObject *__pyx_tuple__496;
 static PyObject *__pyx_tuple__497;
+static PyObject *__pyx_tuple__498;
 static PyObject *__pyx_tuple__499;
+static PyObject *__pyx_tuple__500;
 static PyObject *__pyx_tuple__501;
+static PyObject *__pyx_tuple__502;
 static PyObject *__pyx_tuple__503;
+static PyObject *__pyx_tuple__504;
 static PyObject *__pyx_tuple__505;
+static PyObject *__pyx_tuple__506;
 static PyObject *__pyx_tuple__507;
+static PyObject *__pyx_tuple__508;
 static PyObject *__pyx_tuple__509;
+static PyObject *__pyx_tuple__510;
 static PyObject *__pyx_tuple__511;
 static PyObject *__pyx_tuple__512;
+static PyObject *__pyx_tuple__513;
 static PyObject *__pyx_tuple__514;
+static PyObject *__pyx_tuple__515;
 static PyObject *__pyx_tuple__516;
+static PyObject *__pyx_tuple__517;
 static PyObject *__pyx_tuple__518;
+static PyObject *__pyx_tuple__519;
 static PyObject *__pyx_tuple__520;
+static PyObject *__pyx_tuple__521;
 static PyObject *__pyx_tuple__522;
+static PyObject *__pyx_tuple__523;
 static PyObject *__pyx_tuple__524;
+static PyObject *__pyx_tuple__525;
 static PyObject *__pyx_tuple__526;
+static PyObject *__pyx_tuple__527;
 static PyObject *__pyx_tuple__528;
+static PyObject *__pyx_tuple__529;
 static PyObject *__pyx_tuple__530;
 static PyObject *__pyx_tuple__531;
 static PyObject *__pyx_tuple__532;
+static PyObject *__pyx_tuple__533;
 static PyObject *__pyx_tuple__534;
+static PyObject *__pyx_tuple__535;
 static PyObject *__pyx_tuple__536;
+static PyObject *__pyx_tuple__537;
 static PyObject *__pyx_tuple__538;
+static PyObject *__pyx_tuple__539;
 static PyObject *__pyx_tuple__540;
+static PyObject *__pyx_tuple__541;
 static PyObject *__pyx_tuple__542;
+static PyObject *__pyx_tuple__543;
 static PyObject *__pyx_tuple__544;
+static PyObject *__pyx_tuple__545;
 static PyObject *__pyx_tuple__546;
+static PyObject *__pyx_tuple__547;
 static PyObject *__pyx_tuple__548;
 static PyObject *__pyx_tuple__549;
 static PyObject *__pyx_tuple__550;
 static PyObject *__pyx_tuple__551;
 static PyObject *__pyx_tuple__552;
+static PyObject *__pyx_tuple__553;
 static PyObject *__pyx_tuple__554;
+static PyObject *__pyx_tuple__555;
 static PyObject *__pyx_tuple__556;
 static PyObject *__pyx_tuple__557;
 static PyObject *__pyx_tuple__558;
 static PyObject *__pyx_tuple__559;
+static PyObject *__pyx_tuple__560;
 static PyObject *__pyx_tuple__561;
+static PyObject *__pyx_tuple__562;
 static PyObject *__pyx_tuple__563;
+static PyObject *__pyx_tuple__564;
 static PyObject *__pyx_tuple__565;
+static PyObject *__pyx_tuple__566;
 static PyObject *__pyx_tuple__567;
 static PyObject *__pyx_tuple__568;
 static PyObject *__pyx_tuple__569;
+static PyObject *__pyx_tuple__570;
 static PyObject *__pyx_tuple__571;
+static PyObject *__pyx_tuple__572;
 static PyObject *__pyx_tuple__573;
+static PyObject *__pyx_tuple__574;
 static PyObject *__pyx_tuple__575;
+static PyObject *__pyx_tuple__576;
 static PyObject *__pyx_tuple__577;
 static PyObject *__pyx_tuple__578;
+static PyObject *__pyx_tuple__579;
 static PyObject *__pyx_tuple__580;
 static PyObject *__pyx_tuple__581;
+static PyObject *__pyx_tuple__582;
 static PyObject *__pyx_tuple__583;
 static PyObject *__pyx_tuple__584;
+static PyObject *__pyx_tuple__585;
 static PyObject *__pyx_tuple__586;
+static PyObject *__pyx_tuple__587;
 static PyObject *__pyx_tuple__588;
+static PyObject *__pyx_tuple__589;
 static PyObject *__pyx_tuple__590;
+static PyObject *__pyx_tuple__591;
 static PyObject *__pyx_tuple__592;
+static PyObject *__pyx_tuple__593;
 static PyObject *__pyx_tuple__594;
+static PyObject *__pyx_tuple__595;
 static PyObject *__pyx_tuple__596;
+static PyObject *__pyx_tuple__597;
 static PyObject *__pyx_tuple__598;
+static PyObject *__pyx_tuple__599;
 static PyObject *__pyx_tuple__600;
+static PyObject *__pyx_tuple__601;
 static PyObject *__pyx_tuple__602;
+static PyObject *__pyx_tuple__603;
 static PyObject *__pyx_tuple__604;
 static PyObject *__pyx_tuple__605;
+static PyObject *__pyx_tuple__606;
 static PyObject *__pyx_tuple__607;
+static PyObject *__pyx_tuple__608;
 static PyObject *__pyx_tuple__609;
+static PyObject *__pyx_tuple__610;
 static PyObject *__pyx_tuple__611;
 static PyObject *__pyx_tuple__612;
+static PyObject *__pyx_tuple__613;
 static PyObject *__pyx_tuple__614;
 static PyObject *__pyx_tuple__615;
+static PyObject *__pyx_tuple__616;
 static PyObject *__pyx_tuple__617;
+static PyObject *__pyx_tuple__618;
 static PyObject *__pyx_tuple__619;
+static PyObject *__pyx_tuple__620;
 static PyObject *__pyx_tuple__621;
+static PyObject *__pyx_tuple__622;
 static PyObject *__pyx_tuple__623;
+static PyObject *__pyx_tuple__624;
 static PyObject *__pyx_tuple__625;
+static PyObject *__pyx_tuple__626;
 static PyObject *__pyx_tuple__627;
+static PyObject *__pyx_tuple__628;
 static PyObject *__pyx_tuple__629;
+static PyObject *__pyx_tuple__630;
 static PyObject *__pyx_tuple__631;
+static PyObject *__pyx_tuple__632;
 static PyObject *__pyx_tuple__633;
+static PyObject *__pyx_tuple__634;
+static PyObject *__pyx_tuple__635;
 static PyObject *__pyx_tuple__636;
+static PyObject *__pyx_tuple__637;
 static PyObject *__pyx_tuple__638;
 static PyObject *__pyx_tuple__639;
+static PyObject *__pyx_tuple__640;
 static PyObject *__pyx_tuple__641;
+static PyObject *__pyx_tuple__642;
 static PyObject *__pyx_tuple__643;
+static PyObject *__pyx_tuple__644;
 static PyObject *__pyx_tuple__645;
+static PyObject *__pyx_tuple__646;
 static PyObject *__pyx_tuple__647;
+static PyObject *__pyx_tuple__648;
 static PyObject *__pyx_tuple__649;
+static PyObject *__pyx_tuple__650;
 static PyObject *__pyx_tuple__651;
+static PyObject *__pyx_tuple__652;
 static PyObject *__pyx_tuple__653;
+static PyObject *__pyx_tuple__654;
 static PyObject *__pyx_tuple__655;
 static PyObject *__pyx_tuple__656;
+static PyObject *__pyx_tuple__657;
 static PyObject *__pyx_tuple__658;
+static PyObject *__pyx_tuple__659;
 static PyObject *__pyx_tuple__660;
+static PyObject *__pyx_tuple__661;
 static PyObject *__pyx_tuple__662;
 static PyObject *__pyx_tuple__664;
 static PyObject *__pyx_tuple__666;
+static PyObject *__pyx_tuple__667;
 static PyObject *__pyx_tuple__668;
+static PyObject *__pyx_tuple__669;
 static PyObject *__pyx_tuple__670;
+static PyObject *__pyx_tuple__671;
 static PyObject *__pyx_tuple__672;
+static PyObject *__pyx_tuple__673;
 static PyObject *__pyx_tuple__674;
+static PyObject *__pyx_tuple__675;
 static PyObject *__pyx_tuple__676;
 static PyObject *__pyx_tuple__677;
+static PyObject *__pyx_tuple__678;
 static PyObject *__pyx_tuple__679;
 static PyObject *__pyx_tuple__680;
+static PyObject *__pyx_tuple__681;
 static PyObject *__pyx_tuple__682;
 static PyObject *__pyx_tuple__683;
+static PyObject *__pyx_tuple__684;
 static PyObject *__pyx_tuple__685;
 static PyObject *__pyx_tuple__686;
+static PyObject *__pyx_tuple__687;
 static PyObject *__pyx_tuple__688;
+static PyObject *__pyx_tuple__689;
 static PyObject *__pyx_tuple__690;
 static PyObject *__pyx_tuple__691;
+static PyObject *__pyx_tuple__692;
 static PyObject *__pyx_tuple__693;
+static PyObject *__pyx_tuple__694;
 static PyObject *__pyx_tuple__695;
+static PyObject *__pyx_tuple__696;
 static PyObject *__pyx_tuple__697;
+static PyObject *__pyx_tuple__698;
 static PyObject *__pyx_tuple__699;
+static PyObject *__pyx_tuple__700;
+static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__34;
+static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__36;
+static PyObject *__pyx_codeobj__38;
+static PyObject *__pyx_codeobj__39;
+static PyObject *__pyx_codeobj__40;
+static PyObject *__pyx_codeobj__41;
+static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__43;
+static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__45;
+static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__47;
+static PyObject *__pyx_codeobj__48;
+static PyObject *__pyx_codeobj__49;
+static PyObject *__pyx_codeobj__50;
+static PyObject *__pyx_codeobj__51;
+static PyObject *__pyx_codeobj__52;
+static PyObject *__pyx_codeobj__53;
+static PyObject *__pyx_codeobj__55;
+static PyObject *__pyx_codeobj__58;
+static PyObject *__pyx_codeobj__66;
+static PyObject *__pyx_codeobj__67;
+static PyObject *__pyx_codeobj__68;
+static PyObject *__pyx_codeobj__69;
+static PyObject *__pyx_codeobj__70;
+static PyObject *__pyx_codeobj__71;
+static PyObject *__pyx_codeobj__72;
+static PyObject *__pyx_codeobj__73;
+static PyObject *__pyx_codeobj__74;
+static PyObject *__pyx_codeobj__75;
+static PyObject *__pyx_codeobj__76;
+static PyObject *__pyx_codeobj__77;
 static PyObject *__pyx_codeobj__79;
+static PyObject *__pyx_codeobj__80;
+static PyObject *__pyx_codeobj__81;
 static PyObject *__pyx_codeobj__82;
+static PyObject *__pyx_codeobj__83;
+static PyObject *__pyx_codeobj__84;
+static PyObject *__pyx_codeobj__85;
+static PyObject *__pyx_codeobj__86;
+static PyObject *__pyx_codeobj__87;
+static PyObject *__pyx_codeobj__88;
+static PyObject *__pyx_codeobj__89;
+static PyObject *__pyx_codeobj__90;
+static PyObject *__pyx_codeobj__91;
+static PyObject *__pyx_codeobj__92;
+static PyObject *__pyx_codeobj__93;
+static PyObject *__pyx_codeobj__94;
+static PyObject *__pyx_codeobj__95;
 static PyObject *__pyx_codeobj__96;
 static PyObject *__pyx_codeobj__97;
 static PyObject *__pyx_codeobj__98;
@@ -10883,265 +11142,209 @@ static PyObject *__pyx_codeobj__99;
 static PyObject *__pyx_codeobj__100;
 static PyObject *__pyx_codeobj__101;
 static PyObject *__pyx_codeobj__102;
+static PyObject *__pyx_codeobj__103;
+static PyObject *__pyx_codeobj__104;
+static PyObject *__pyx_codeobj__105;
 static PyObject *__pyx_codeobj__106;
 static PyObject *__pyx_codeobj__107;
+static PyObject *__pyx_codeobj__108;
+static PyObject *__pyx_codeobj__109;
+static PyObject *__pyx_codeobj__110;
+static PyObject *__pyx_codeobj__111;
+static PyObject *__pyx_codeobj__116;
+static PyObject *__pyx_codeobj__117;
+static PyObject *__pyx_codeobj__118;
+static PyObject *__pyx_codeobj__119;
+static PyObject *__pyx_codeobj__120;
+static PyObject *__pyx_codeobj__121;
+static PyObject *__pyx_codeobj__126;
+static PyObject *__pyx_codeobj__127;
 static PyObject *__pyx_codeobj__131;
 static PyObject *__pyx_codeobj__132;
+static PyObject *__pyx_codeobj__133;
 static PyObject *__pyx_codeobj__135;
-static PyObject *__pyx_codeobj__136;
+static PyObject *__pyx_codeobj__137;
+static PyObject *__pyx_codeobj__139;
+static PyObject *__pyx_codeobj__141;
+static PyObject *__pyx_codeobj__142;
+static PyObject *__pyx_codeobj__143;
+static PyObject *__pyx_codeobj__144;
+static PyObject *__pyx_codeobj__145;
+static PyObject *__pyx_codeobj__146;
 static PyObject *__pyx_codeobj__147;
+static PyObject *__pyx_codeobj__148;
 static PyObject *__pyx_codeobj__149;
+static PyObject *__pyx_codeobj__150;
 static PyObject *__pyx_codeobj__151;
+static PyObject *__pyx_codeobj__152;
 static PyObject *__pyx_codeobj__153;
+static PyObject *__pyx_codeobj__154;
 static PyObject *__pyx_codeobj__155;
+static PyObject *__pyx_codeobj__156;
 static PyObject *__pyx_codeobj__157;
-static PyObject *__pyx_codeobj__161;
-static PyObject *__pyx_codeobj__163;
+static PyObject *__pyx_codeobj__158;
+static PyObject *__pyx_codeobj__159;
+static PyObject *__pyx_codeobj__164;
 static PyObject *__pyx_codeobj__165;
-static PyObject *__pyx_codeobj__167;
 static PyObject *__pyx_codeobj__169;
-static PyObject *__pyx_codeobj__171;
+static PyObject *__pyx_codeobj__172;
 static PyObject *__pyx_codeobj__173;
+static PyObject *__pyx_codeobj__174;
 static PyObject *__pyx_codeobj__175;
+static PyObject *__pyx_codeobj__176;
 static PyObject *__pyx_codeobj__177;
-static PyObject *__pyx_codeobj__179;
+static PyObject *__pyx_codeobj__178;
+static PyObject *__pyx_codeobj__180;
 static PyObject *__pyx_codeobj__181;
-static PyObject *__pyx_codeobj__183;
-static PyObject *__pyx_codeobj__185;
+static PyObject *__pyx_codeobj__182;
+static PyObject *__pyx_codeobj__186;
 static PyObject *__pyx_codeobj__187;
+static PyObject *__pyx_codeobj__188;
 static PyObject *__pyx_codeobj__189;
-static PyObject *__pyx_codeobj__191;
+static PyObject *__pyx_codeobj__192;
 static PyObject *__pyx_codeobj__193;
-static PyObject *__pyx_codeobj__195;
+static PyObject *__pyx_codeobj__194;
+static PyObject *__pyx_codeobj__196;
 static PyObject *__pyx_codeobj__197;
+static PyObject *__pyx_codeobj__198;
 static PyObject *__pyx_codeobj__199;
+static PyObject *__pyx_codeobj__200;
 static PyObject *__pyx_codeobj__201;
+static PyObject *__pyx_codeobj__202;
+static PyObject *__pyx_codeobj__203;
 static PyObject *__pyx_codeobj__204;
+static PyObject *__pyx_codeobj__205;
+static PyObject *__pyx_codeobj__206;
+static PyObject *__pyx_codeobj__207;
+static PyObject *__pyx_codeobj__208;
+static PyObject *__pyx_codeobj__209;
+static PyObject *__pyx_codeobj__210;
 static PyObject *__pyx_codeobj__211;
-static PyObject *__pyx_codeobj__213;
+static PyObject *__pyx_codeobj__212;
 static PyObject *__pyx_codeobj__215;
+static PyObject *__pyx_codeobj__216;
 static PyObject *__pyx_codeobj__217;
+static PyObject *__pyx_codeobj__218;
 static PyObject *__pyx_codeobj__219;
+static PyObject *__pyx_codeobj__220;
 static PyObject *__pyx_codeobj__221;
+static PyObject *__pyx_codeobj__222;
 static PyObject *__pyx_codeobj__223;
+static PyObject *__pyx_codeobj__224;
 static PyObject *__pyx_codeobj__225;
+static PyObject *__pyx_codeobj__226;
 static PyObject *__pyx_codeobj__227;
+static PyObject *__pyx_codeobj__228;
 static PyObject *__pyx_codeobj__229;
+static PyObject *__pyx_codeobj__230;
 static PyObject *__pyx_codeobj__231;
-static PyObject *__pyx_codeobj__233;
+static PyObject *__pyx_codeobj__232;
 static PyObject *__pyx_codeobj__235;
+static PyObject *__pyx_codeobj__236;
 static PyObject *__pyx_codeobj__237;
+static PyObject *__pyx_codeobj__238;
 static PyObject *__pyx_codeobj__239;
-static PyObject *__pyx_codeobj__241;
+static PyObject *__pyx_codeobj__240;
+static PyObject *__pyx_codeobj__242;
 static PyObject *__pyx_codeobj__243;
-static PyObject *__pyx_codeobj__245;
-static PyObject *__pyx_codeobj__247;
+static PyObject *__pyx_codeobj__244;
+static PyObject *__pyx_codeobj__246;
+static PyObject *__pyx_codeobj__248;
 static PyObject *__pyx_codeobj__249;
+static PyObject *__pyx_codeobj__250;
 static PyObject *__pyx_codeobj__251;
 static PyObject *__pyx_codeobj__253;
+static PyObject *__pyx_codeobj__254;
 static PyObject *__pyx_codeobj__255;
-static PyObject *__pyx_codeobj__257;
+static PyObject *__pyx_codeobj__258;
 static PyObject *__pyx_codeobj__259;
-static PyObject *__pyx_codeobj__261;
+static PyObject *__pyx_codeobj__260;
 static PyObject *__pyx_codeobj__263;
-static PyObject *__pyx_codeobj__265;
+static PyObject *__pyx_codeobj__264;
 static PyObject *__pyx_codeobj__267;
 static PyObject *__pyx_codeobj__269;
-static PyObject *__pyx_codeobj__271;
-static PyObject *__pyx_codeobj__273;
-static PyObject *__pyx_codeobj__275;
+static PyObject *__pyx_codeobj__270;
 static PyObject *__pyx_codeobj__277;
-static PyObject *__pyx_codeobj__279;
-static PyObject *__pyx_codeobj__281;
+static PyObject *__pyx_codeobj__280;
 static PyObject *__pyx_codeobj__283;
+static PyObject *__pyx_codeobj__284;
 static PyObject *__pyx_codeobj__285;
+static PyObject *__pyx_codeobj__286;
 static PyObject *__pyx_codeobj__287;
+static PyObject *__pyx_codeobj__288;
 static PyObject *__pyx_codeobj__289;
+static PyObject *__pyx_codeobj__290;
 static PyObject *__pyx_codeobj__291;
+static PyObject *__pyx_codeobj__292;
 static PyObject *__pyx_codeobj__293;
+static PyObject *__pyx_codeobj__294;
 static PyObject *__pyx_codeobj__295;
-static PyObject *__pyx_codeobj__297;
-static PyObject *__pyx_codeobj__299;
+static PyObject *__pyx_codeobj__296;
+static PyObject *__pyx_codeobj__298;
 static PyObject *__pyx_codeobj__301;
-static PyObject *__pyx_codeobj__303;
+static PyObject *__pyx_codeobj__302;
+static PyObject *__pyx_codeobj__304;
 static PyObject *__pyx_codeobj__305;
-static PyObject *__pyx_codeobj__307;
-static PyObject *__pyx_codeobj__309;
-static PyObject *__pyx_codeobj__311;
-static PyObject *__pyx_codeobj__313;
+static PyObject *__pyx_codeobj__310;
+static PyObject *__pyx_codeobj__312;
 static PyObject *__pyx_codeobj__315;
+static PyObject *__pyx_codeobj__316;
 static PyObject *__pyx_codeobj__317;
+static PyObject *__pyx_codeobj__318;
 static PyObject *__pyx_codeobj__319;
-static PyObject *__pyx_codeobj__321;
+static PyObject *__pyx_codeobj__320;
+static PyObject *__pyx_codeobj__322;
 static PyObject *__pyx_codeobj__323;
 static PyObject *__pyx_codeobj__325;
+static PyObject *__pyx_codeobj__326;
 static PyObject *__pyx_codeobj__327;
+static PyObject *__pyx_codeobj__328;
 static PyObject *__pyx_codeobj__329;
+static PyObject *__pyx_codeobj__330;
 static PyObject *__pyx_codeobj__331;
-static PyObject *__pyx_codeobj__333;
+static PyObject *__pyx_codeobj__332;
+static PyObject *__pyx_codeobj__334;
 static PyObject *__pyx_codeobj__335;
-static PyObject *__pyx_codeobj__337;
+static PyObject *__pyx_codeobj__338;
 static PyObject *__pyx_codeobj__339;
+static PyObject *__pyx_codeobj__340;
 static PyObject *__pyx_codeobj__341;
+static PyObject *__pyx_codeobj__342;
 static PyObject *__pyx_codeobj__343;
+static PyObject *__pyx_codeobj__344;
 static PyObject *__pyx_codeobj__345;
-static PyObject *__pyx_codeobj__347;
-static PyObject *__pyx_codeobj__349;
 static PyObject *__pyx_codeobj__351;
-static PyObject *__pyx_codeobj__353;
+static PyObject *__pyx_codeobj__352;
+static PyObject *__pyx_codeobj__354;
 static PyObject *__pyx_codeobj__355;
+static PyObject *__pyx_codeobj__356;
 static PyObject *__pyx_codeobj__357;
 static PyObject *__pyx_codeobj__359;
 static PyObject *__pyx_codeobj__361;
 static PyObject *__pyx_codeobj__363;
+static PyObject *__pyx_codeobj__364;
 static PyObject *__pyx_codeobj__365;
+static PyObject *__pyx_codeobj__366;
 static PyObject *__pyx_codeobj__367;
 static PyObject *__pyx_codeobj__369;
+static PyObject *__pyx_codeobj__370;
+static PyObject *__pyx_codeobj__371;
 static PyObject *__pyx_codeobj__372;
+static PyObject *__pyx_codeobj__373;
+static PyObject *__pyx_codeobj__374;
 static PyObject *__pyx_codeobj__375;
-static PyObject *__pyx_codeobj__378;
+static PyObject *__pyx_codeobj__376;
+static PyObject *__pyx_codeobj__377;
 static PyObject *__pyx_codeobj__380;
+static PyObject *__pyx_codeobj__381;
+static PyObject *__pyx_codeobj__382;
 static PyObject *__pyx_codeobj__383;
-static PyObject *__pyx_codeobj__386;
-static PyObject *__pyx_codeobj__389;
-static PyObject *__pyx_codeobj__392;
+static PyObject *__pyx_codeobj__391;
+static PyObject *__pyx_codeobj__394;
 static PyObject *__pyx_codeobj__395;
+static PyObject *__pyx_codeobj__396;
+static PyObject *__pyx_codeobj__397;
 static PyObject *__pyx_codeobj__398;
-static PyObject *__pyx_codeobj__400;
-static PyObject *__pyx_codeobj__402;
-static PyObject *__pyx_codeobj__404;
-static PyObject *__pyx_codeobj__406;
-static PyObject *__pyx_codeobj__408;
-static PyObject *__pyx_codeobj__411;
-static PyObject *__pyx_codeobj__414;
-static PyObject *__pyx_codeobj__416;
-static PyObject *__pyx_codeobj__418;
-static PyObject *__pyx_codeobj__420;
-static PyObject *__pyx_codeobj__422;
-static PyObject *__pyx_codeobj__424;
-static PyObject *__pyx_codeobj__426;
-static PyObject *__pyx_codeobj__428;
-static PyObject *__pyx_codeobj__430;
-static PyObject *__pyx_codeobj__432;
-static PyObject *__pyx_codeobj__434;
-static PyObject *__pyx_codeobj__436;
-static PyObject *__pyx_codeobj__438;
-static PyObject *__pyx_codeobj__440;
-static PyObject *__pyx_codeobj__442;
-static PyObject *__pyx_codeobj__444;
-static PyObject *__pyx_codeobj__446;
-static PyObject *__pyx_codeobj__448;
-static PyObject *__pyx_codeobj__450;
-static PyObject *__pyx_codeobj__453;
-static PyObject *__pyx_codeobj__455;
-static PyObject *__pyx_codeobj__457;
-static PyObject *__pyx_codeobj__459;
-static PyObject *__pyx_codeobj__461;
-static PyObject *__pyx_codeobj__463;
-static PyObject *__pyx_codeobj__465;
-static PyObject *__pyx_codeobj__467;
-static PyObject *__pyx_codeobj__469;
-static PyObject *__pyx_codeobj__471;
-static PyObject *__pyx_codeobj__473;
-static PyObject *__pyx_codeobj__475;
-static PyObject *__pyx_codeobj__477;
-static PyObject *__pyx_codeobj__479;
-static PyObject *__pyx_codeobj__481;
-static PyObject *__pyx_codeobj__483;
-static PyObject *__pyx_codeobj__485;
-static PyObject *__pyx_codeobj__488;
-static PyObject *__pyx_codeobj__490;
-static PyObject *__pyx_codeobj__492;
-static PyObject *__pyx_codeobj__494;
-static PyObject *__pyx_codeobj__496;
-static PyObject *__pyx_codeobj__498;
-static PyObject *__pyx_codeobj__500;
-static PyObject *__pyx_codeobj__502;
-static PyObject *__pyx_codeobj__504;
-static PyObject *__pyx_codeobj__506;
-static PyObject *__pyx_codeobj__508;
-static PyObject *__pyx_codeobj__510;
-static PyObject *__pyx_codeobj__513;
-static PyObject *__pyx_codeobj__515;
-static PyObject *__pyx_codeobj__517;
-static PyObject *__pyx_codeobj__519;
-static PyObject *__pyx_codeobj__521;
-static PyObject *__pyx_codeobj__523;
-static PyObject *__pyx_codeobj__525;
-static PyObject *__pyx_codeobj__527;
-static PyObject *__pyx_codeobj__529;
-static PyObject *__pyx_codeobj__533;
-static PyObject *__pyx_codeobj__535;
-static PyObject *__pyx_codeobj__537;
-static PyObject *__pyx_codeobj__539;
-static PyObject *__pyx_codeobj__541;
-static PyObject *__pyx_codeobj__543;
-static PyObject *__pyx_codeobj__545;
-static PyObject *__pyx_codeobj__547;
-static PyObject *__pyx_codeobj__553;
-static PyObject *__pyx_codeobj__555;
-static PyObject *__pyx_codeobj__560;
-static PyObject *__pyx_codeobj__562;
-static PyObject *__pyx_codeobj__564;
-static PyObject *__pyx_codeobj__566;
-static PyObject *__pyx_codeobj__570;
-static PyObject *__pyx_codeobj__572;
-static PyObject *__pyx_codeobj__574;
-static PyObject *__pyx_codeobj__576;
-static PyObject *__pyx_codeobj__579;
-static PyObject *__pyx_codeobj__582;
-static PyObject *__pyx_codeobj__585;
-static PyObject *__pyx_codeobj__587;
-static PyObject *__pyx_codeobj__589;
-static PyObject *__pyx_codeobj__591;
-static PyObject *__pyx_codeobj__593;
-static PyObject *__pyx_codeobj__595;
-static PyObject *__pyx_codeobj__597;
-static PyObject *__pyx_codeobj__599;
-static PyObject *__pyx_codeobj__601;
-static PyObject *__pyx_codeobj__603;
-static PyObject *__pyx_codeobj__606;
-static PyObject *__pyx_codeobj__608;
-static PyObject *__pyx_codeobj__610;
-static PyObject *__pyx_codeobj__613;
-static PyObject *__pyx_codeobj__616;
-static PyObject *__pyx_codeobj__618;
-static PyObject *__pyx_codeobj__620;
-static PyObject *__pyx_codeobj__622;
-static PyObject *__pyx_codeobj__624;
-static PyObject *__pyx_codeobj__626;
-static PyObject *__pyx_codeobj__628;
-static PyObject *__pyx_codeobj__630;
-static PyObject *__pyx_codeobj__632;
-static PyObject *__pyx_codeobj__634;
-static PyObject *__pyx_codeobj__640;
-static PyObject *__pyx_codeobj__642;
-static PyObject *__pyx_codeobj__644;
-static PyObject *__pyx_codeobj__646;
-static PyObject *__pyx_codeobj__648;
-static PyObject *__pyx_codeobj__650;
-static PyObject *__pyx_codeobj__652;
-static PyObject *__pyx_codeobj__654;
-static PyObject *__pyx_codeobj__657;
-static PyObject *__pyx_codeobj__659;
-static PyObject *__pyx_codeobj__661;
-static PyObject *__pyx_codeobj__663;
-static PyObject *__pyx_codeobj__665;
-static PyObject *__pyx_codeobj__667;
-static PyObject *__pyx_codeobj__669;
-static PyObject *__pyx_codeobj__671;
-static PyObject *__pyx_codeobj__673;
-static PyObject *__pyx_codeobj__675;
-static PyObject *__pyx_codeobj__678;
-static PyObject *__pyx_codeobj__681;
-static PyObject *__pyx_codeobj__684;
-static PyObject *__pyx_codeobj__687;
-static PyObject *__pyx_codeobj__689;
-static PyObject *__pyx_codeobj__692;
-static PyObject *__pyx_codeobj__694;
-static PyObject *__pyx_codeobj__696;
-static PyObject *__pyx_codeobj__698;
-static PyObject *__pyx_codeobj__700;
 /* Late includes */
 
 /* "lxml/etree.pyx":97
@@ -11216,8 +11419,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_1__getitem__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping___getitem__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj_)
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[0], 97, 0, __PYX_ERR(0, 97, __pyx_L1_error));
 
   /* "lxml/etree.pyx":98
  * class _ImmutableMapping(MutableMapping):
@@ -11226,6 +11432,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping___getitem__(CYTHON_UN
  * 
  *     def __setitem__(self, key, value):
  */
+  __Pyx_TraceLine(98,0,__PYX_ERR(0, 98, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
   __PYX_ERR(0, 98, __pyx_L1_error)
 
@@ -11242,6 +11449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping___getitem__(CYTHON_UN
   __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11329,8 +11537,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_3__setitem__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_2__setitem__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_key, CYTHON_UNUSED PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__2)
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[0], 100, 0, __PYX_ERR(0, 100, __pyx_L1_error));
 
   /* "lxml/etree.pyx":101
  * 
@@ -11339,6 +11550,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_2__setitem__(CYTHON_U
  * 
  *     def __delitem__(self, key):
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
   __PYX_ERR(0, 101, __pyx_L1_error)
 
@@ -11355,6 +11567,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_2__setitem__(CYTHON_U
   __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11431,8 +11644,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_5__delitem__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_4__delitem__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__3)
   __Pyx_RefNannySetupContext("__delitem__", 0);
+  __Pyx_TraceCall("__delitem__", __pyx_f[0], 103, 0, __PYX_ERR(0, 103, __pyx_L1_error));
 
   /* "lxml/etree.pyx":104
  * 
@@ -11441,6 +11657,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_4__delitem__(CYTHON_U
  * 
  *     def __contains__(self, key):
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(0, 104, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
   __PYX_ERR(0, 104, __pyx_L1_error)
 
@@ -11457,6 +11674,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_4__delitem__(CYTHON_U
   __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11533,8 +11751,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_7__contains__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_6__contains__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_key) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__4)
   __Pyx_RefNannySetupContext("__contains__", 0);
+  __Pyx_TraceCall("__contains__", __pyx_f[0], 106, 0, __PYX_ERR(0, 106, __pyx_L1_error));
 
   /* "lxml/etree.pyx":107
  * 
@@ -11543,6 +11764,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_6__contains__(CYTHON_
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(0, 107, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_False);
   __pyx_r = Py_False;
@@ -11557,8 +11779,12 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_6__contains__(CYTHON_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11587,8 +11813,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_9__len__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_8__len__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__5)
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[0], 109, 0, __PYX_ERR(0, 109, __pyx_L1_error));
 
   /* "lxml/etree.pyx":110
  * 
@@ -11597,6 +11826,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_8__len__(CYTHON_UNUSE
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(0, 110, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_int_0);
   __pyx_r = __pyx_int_0;
@@ -11611,8 +11841,12 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_8__len__(CYTHON_UNUSE
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11641,8 +11875,11 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ImmutableMapping_11__iter__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_10__iter__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__6)
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 112, 0, __PYX_ERR(0, 112, __pyx_L1_error));
 
   /* "lxml/etree.pyx":113
  * 
@@ -11651,6 +11888,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_10__iter__(CYTHON_UNU
  *     iterkeys = itervalues = iteritems = __iter__
  * 
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(0, 113, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
   __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
@@ -11665,8 +11903,12 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ImmutableMapping_10__iter__(CYTHON_UNU
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ImmutableMapping.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11748,6 +11990,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -11759,7 +12002,9 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
   PyObject *__pyx_t_8 = NULL;
   PyObject *(*__pyx_t_9)(PyObject *);
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__7)
   __Pyx_RefNannySetupContext("register_namespace", 0);
+  __Pyx_TraceCall("register_namespace", __pyx_f[0], 176, 0, __PYX_ERR(0, 176, __pyx_L1_error));
 
   /* "lxml/etree.pyx":182
  *     removed.
@@ -11768,6 +12013,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *     if _check_internal_prefix(prefix_utf):
  *         raise ValueError("Prefix format reserved for internal use")
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(0, 182, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_uri); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 182, __pyx_L1_error)
@@ -11784,6 +12030,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *         raise ValueError("Prefix format reserved for internal use")
  *     _tagValidOrRaise(prefix_utf)
  */
+  __Pyx_TraceLine(183,0,__PYX_ERR(0, 183, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree__check_internal_prefix);
   __pyx_t_1 = __pyx_v_4lxml_5etree__check_internal_prefix; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -11839,7 +12086,8 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *     _tagValidOrRaise(prefix_utf)
  *     _uriValidOrRaise(uri_utf)
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
+    __Pyx_TraceLine(184,0,__PYX_ERR(0, 184, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11861,6 +12109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *     _uriValidOrRaise(uri_utf)
  *     for k, v in list(_DEFAULT_NAMESPACE_PREFIXES.items()):
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(0, 185, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_prefix_utf); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 185, __pyx_L1_error)
 
   /* "lxml/etree.pyx":186
@@ -11870,6 +12119,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *     for k, v in list(_DEFAULT_NAMESPACE_PREFIXES.items()):
  *         if k == uri_utf or v == prefix_utf:
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(0, 186, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__uriValidOrRaise(__pyx_v_uri_utf); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 186, __pyx_L1_error)
 
   /* "lxml/etree.pyx":187
@@ -11879,6 +12129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *         if k == uri_utf or v == prefix_utf:
  *             del _DEFAULT_NAMESPACE_PREFIXES[k]
  */
+  __Pyx_TraceLine(187,0,__PYX_ERR(0, 187, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
     __PYX_ERR(0, 187, __pyx_L1_error)
@@ -11956,6 +12207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *             del _DEFAULT_NAMESPACE_PREFIXES[k]
  *     _DEFAULT_NAMESPACE_PREFIXES[uri_utf] = prefix_utf
  */
+    __Pyx_TraceLine(188,0,__PYX_ERR(0, 188, __pyx_L1_error))
     __pyx_t_10 = (__Pyx_PyBytes_Equals(__pyx_v_k, __pyx_v_uri_utf, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 188, __pyx_L1_error)
     if (!__pyx_t_10) {
     } else {
@@ -11974,6 +12226,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *     _DEFAULT_NAMESPACE_PREFIXES[uri_utf] = prefix_utf
  * 
  */
+      __Pyx_TraceLine(189,0,__PYX_ERR(0, 189, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(0, 189, __pyx_L1_error)
@@ -11996,6 +12249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  *         if k == uri_utf or v == prefix_utf:
  *             del _DEFAULT_NAMESPACE_PREFIXES[k]
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(0, 187, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -12006,6 +12260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
  * 
  * 
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(0, 190, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(0, 190, __pyx_L1_error)
@@ -12037,6 +12292,7 @@ static PyObject *__pyx_pf_4lxml_5etree_register_namespace(CYTHON_UNUSED PyObject
   __Pyx_XDECREF(__pyx_v_k);
   __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12116,6 +12372,7 @@ static int __pyx_pw_4lxml_5etree_9LxmlError_1__init__(PyObject *__pyx_v_self, Py
 
 static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etree_LxmlError *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_error_log) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -12124,6 +12381,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
   int __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 202, 0, __PYX_ERR(0, 202, __pyx_L1_error));
 
   /* "lxml/etree.pyx":203
  *     """
@@ -12132,6 +12390,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
  *         if error_log is None:
  *             self.error_log = __copyGlobalErrorLog()
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(0, 203, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_4lxml_5etree__Error);
@@ -12198,6 +12457,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
  *             self.error_log = __copyGlobalErrorLog()
  *         else:
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(0, 204, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_error_log == Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -12209,6 +12469,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
  *         else:
  *             self.error_log = error_log.copy()
  */
+    __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree___copyGlobalErrorLog(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_error_log, __pyx_t_1) < 0) __PYX_ERR(0, 205, __pyx_L1_error)
@@ -12231,6 +12492,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
  * 
  * cdef object _Error = Error
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(0, 207, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_error_log, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -12276,6 +12538,7 @@ static int __pyx_pf_4lxml_5etree_9LxmlError___init__(struct __pyx_obj_4lxml_5etr
   __Pyx_AddTraceback("lxml.etree.LxmlError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12294,6 +12557,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_v_count = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -12310,6 +12574,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
   int __pyx_t_13;
   int __pyx_t_14;
   __Pyx_RefNannySetupContext("__unpackDottedVersion", 0);
+  __Pyx_TraceCall("__unpackDottedVersion", __pyx_f[0], 222, 0, __PYX_ERR(0, 222, __pyx_L1_error));
 
   /* "lxml/etree.pyx":223
  * # version information
@@ -12318,6 +12583,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *     l = (version.decode("ascii").replace(u'-', u'.').split(u'.') + [0]*4)[:4]
  *     for item in l:
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(0, 223, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_version_list = ((PyObject*)__pyx_t_1);
@@ -12330,21 +12596,22 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *     for item in l:
  *         try:
  */
+  __Pyx_TraceLine(224,0,__PYX_ERR(0, 224, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_version, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = PyList_New(1 * 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
@@ -12360,7 +12627,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 4, NULL, NULL, &__pyx_slice__7, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 4, NULL, NULL, &__pyx_slice__14, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_l = __pyx_t_1;
@@ -12373,6 +12640,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *         try:
  *             item = int(item)
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(0, 225, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_l)) || PyTuple_CheckExact(__pyx_v_l)) {
     __pyx_t_1 = __pyx_v_l; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
@@ -12422,6 +12690,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             item = int(item)
  *         except ValueError:
  */
+    __Pyx_TraceLine(226,0,__PYX_ERR(0, 226, __pyx_L5_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -12438,6 +12707,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *         except ValueError:
  *             if item.startswith(u'dev'):
  */
+        __Pyx_TraceLine(227,0,__PYX_ERR(0, 227, __pyx_L5_error))
         __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_item); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF_SET(__pyx_v_item, __pyx_t_3);
@@ -12466,6 +12736,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             if item.startswith(u'dev'):
  *                 count = item[3:]
  */
+      __Pyx_TraceLine(228,0,__PYX_ERR(0, 228, __pyx_L7_except_error))
       __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
       if (__pyx_t_9) {
         __Pyx_AddTraceback("lxml.etree.__unpackDottedVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -12481,9 +12752,10 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 count = item[3:]
  *                 item = -300
  */
+        __Pyx_TraceLine(229,0,__PYX_ERR(0, 229, __pyx_L7_except_error))
         __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_startswith); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 229, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 229, __pyx_L7_except_error)
+        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 229, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 229, __pyx_L7_except_error)
@@ -12497,7 +12769,8 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 item = -300
  *             elif item.startswith(u'alpha'):
  */
-          __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_item, 3, 0, NULL, NULL, &__pyx_slice__9, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 230, __pyx_L7_except_error)
+          __Pyx_TraceLine(230,0,__PYX_ERR(0, 230, __pyx_L7_except_error))
+          __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_item, 3, 0, NULL, NULL, &__pyx_slice__16, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 230, __pyx_L7_except_error)
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_XDECREF_SET(__pyx_v_count, __pyx_t_12);
           __pyx_t_12 = 0;
@@ -12509,6 +12782,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             elif item.startswith(u'alpha'):
  *                 count = item[5:]
  */
+          __Pyx_TraceLine(231,0,__PYX_ERR(0, 231, __pyx_L7_except_error))
           __Pyx_INCREF(__pyx_int_neg_300);
           __Pyx_DECREF_SET(__pyx_v_item, __pyx_int_neg_300);
 
@@ -12529,9 +12803,10 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 count = item[5:]
  *                 item = -200
  */
+        __Pyx_TraceLine(232,0,__PYX_ERR(0, 232, __pyx_L7_except_error))
         __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_startswith); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 232, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 232, __pyx_L7_except_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 232, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 232, __pyx_L7_except_error)
@@ -12545,7 +12820,8 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 item = -200
  *             elif item.startswith(u'beta'):
  */
-          __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_item, 5, 0, NULL, NULL, &__pyx_slice__11, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L7_except_error)
+          __Pyx_TraceLine(233,0,__PYX_ERR(0, 233, __pyx_L7_except_error))
+          __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_item, 5, 0, NULL, NULL, &__pyx_slice__18, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L7_except_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_XDECREF_SET(__pyx_v_count, __pyx_t_11);
           __pyx_t_11 = 0;
@@ -12557,6 +12833,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             elif item.startswith(u'beta'):
  *                 count = item[4:]
  */
+          __Pyx_TraceLine(234,0,__PYX_ERR(0, 234, __pyx_L7_except_error))
           __Pyx_INCREF(__pyx_int_neg_200);
           __Pyx_DECREF_SET(__pyx_v_item, __pyx_int_neg_200);
 
@@ -12577,9 +12854,10 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 count = item[4:]
  *                 item = -100
  */
+        __Pyx_TraceLine(235,0,__PYX_ERR(0, 235, __pyx_L7_except_error))
         __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_startswith); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 235, __pyx_L7_except_error)
+        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 235, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 235, __pyx_L7_except_error)
@@ -12593,7 +12871,8 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 item = -100
  *             else:
  */
-          __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_item, 4, 0, NULL, NULL, &__pyx_slice__13, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 236, __pyx_L7_except_error)
+          __Pyx_TraceLine(236,0,__PYX_ERR(0, 236, __pyx_L7_except_error))
+          __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_item, 4, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 236, __pyx_L7_except_error)
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_XDECREF_SET(__pyx_v_count, __pyx_t_12);
           __pyx_t_12 = 0;
@@ -12605,6 +12884,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             else:
  *                 count = 0
  */
+          __Pyx_TraceLine(237,0,__PYX_ERR(0, 237, __pyx_L7_except_error))
           __Pyx_INCREF(__pyx_int_neg_100);
           __Pyx_DECREF_SET(__pyx_v_item, __pyx_int_neg_100);
 
@@ -12625,6 +12905,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *             if count:
  *                 item += int(count)
  */
+        __Pyx_TraceLine(239,0,__PYX_ERR(0, 239, __pyx_L7_except_error))
         /*else*/ {
           __Pyx_INCREF(__pyx_int_0);
           __Pyx_XDECREF_SET(__pyx_v_count, __pyx_int_0);
@@ -12638,6 +12919,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *                 item += int(count)
  *         version_list.append(item)
  */
+        __Pyx_TraceLine(240,0,__PYX_ERR(0, 240, __pyx_L7_except_error))
         __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_count); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 240, __pyx_L7_except_error)
         if (__pyx_t_13) {
 
@@ -12648,6 +12930,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *         version_list.append(item)
  *     return tuple(version_list)
  */
+          __Pyx_TraceLine(241,0,__PYX_ERR(0, 241, __pyx_L7_except_error))
           __pyx_t_12 = __Pyx_PyNumber_Int(__pyx_v_count); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 241, __pyx_L7_except_error)
           __Pyx_GOTREF(__pyx_t_12);
           __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_item, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 241, __pyx_L7_except_error)
@@ -12699,6 +12982,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *     return tuple(version_list)
  * 
  */
+    __Pyx_TraceLine(242,0,__PYX_ERR(0, 242, __pyx_L1_error))
     __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_version_list, __pyx_v_item); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 242, __pyx_L1_error)
 
     /* "lxml/etree.pyx":225
@@ -12708,6 +12992,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  *         try:
  *             item = int(item)
  */
+    __Pyx_TraceLine(225,0,__PYX_ERR(0, 225, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -12718,6 +13003,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
  * 
  * cdef __unpackIntVersion(int c_version):
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(0, 243, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_AsTuple(__pyx_v_version_list); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12749,6 +13035,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XDECREF(__pyx_v_count);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12763,12 +13050,14 @@ static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_ve
 
 static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__unpackIntVersion", 0);
+  __Pyx_TraceCall("__unpackIntVersion", __pyx_f[0], 245, 0, __PYX_ERR(0, 245, __pyx_L1_error));
 
   /* "lxml/etree.pyx":246
  * 
@@ -12777,6 +13066,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
  *         ((c_version / (100*100)) % 100),
  *         ((c_version / 100)       % 100),
  */
+  __Pyx_TraceLine(246,0,__PYX_ERR(0, 246, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "lxml/etree.pyx":247
@@ -12786,6 +13076,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
  *         ((c_version / 100)       % 100),
  *         (c_version               % 100)
  */
+  __Pyx_TraceLine(247,0,__PYX_ERR(0, 247, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_long(__Pyx_mod_long(__Pyx_div_long(__pyx_v_c_version, 0x2710), 0x64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -12796,6 +13087,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
  *         (c_version               % 100)
  *         )
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(0, 248, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_From_long(__Pyx_mod_long(__Pyx_div_long(__pyx_v_c_version, 0x64), 0x64)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -12806,6 +13098,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
  *         )
  * 
  */
+  __Pyx_TraceLine(249,0,__PYX_ERR(0, 249, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyInt_From_long(__Pyx_mod_long(__pyx_v_c_version, 0x64)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 249, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
@@ -12816,6 +13109,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
  *         ((c_version / 100)       % 100),
  *         (c_version               % 100)
  */
+  __Pyx_TraceLine(247,0,__PYX_ERR(0, 247, __pyx_L1_error))
   __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 247, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -12849,6 +13143,7 @@ static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version)
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12879,9 +13174,11 @@ static int __pyx_pw_4lxml_5etree_10_TempStore_1__init__(PyObject *__pyx_v_self,
 
 static int __pyx_pf_4lxml_5etree_10_TempStore___init__(struct __pyx_obj_4lxml_5etree__TempStore *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 273, 0, __PYX_ERR(0, 273, __pyx_L1_error));
 
   /* "lxml/etree.pyx":274
  *     cdef list _storage
@@ -12890,6 +13187,7 @@ static int __pyx_pf_4lxml_5etree_10_TempStore___init__(struct __pyx_obj_4lxml_5e
  * 
  *     cdef int add(self, obj) except -1:
  */
+  __Pyx_TraceLine(274,0,__PYX_ERR(0, 274, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 274, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -12914,6 +13212,7 @@ static int __pyx_pf_4lxml_5etree_10_TempStore___init__(struct __pyx_obj_4lxml_5e
   __Pyx_AddTraceback("lxml.etree._TempStore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12928,9 +13227,11 @@ static int __pyx_pf_4lxml_5etree_10_TempStore___init__(struct __pyx_obj_4lxml_5e
 
 static int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__TempStore *__pyx_v_self, PyObject *__pyx_v_obj) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("add", 0);
+  __Pyx_TraceCall("add", __pyx_f[0], 276, 0, __PYX_ERR(0, 276, __pyx_L1_error));
 
   /* "lxml/etree.pyx":277
  * 
@@ -12939,6 +13240,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__
  *         return 0
  * 
  */
+  __Pyx_TraceLine(277,0,__PYX_ERR(0, 277, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_storage == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(0, 277, __pyx_L1_error)
@@ -12952,6 +13254,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__
  * 
  *     cdef int clear(self) except -1:
  */
+  __Pyx_TraceLine(278,0,__PYX_ERR(0, 278, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -12968,6 +13271,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__
   __Pyx_AddTraceback("lxml.etree._TempStore.add", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12982,8 +13286,10 @@ static int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__
 
 static int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree__TempStore *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[0], 280, 0, __PYX_ERR(0, 280, __pyx_L1_error));
 
   /* "lxml/etree.pyx":281
  * 
@@ -12992,6 +13298,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree
  *         return 0
  * 
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(0, 281, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_storage == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(0, 281, __pyx_L1_error)
@@ -13005,6 +13312,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree
  * 
  * 
  */
+  __Pyx_TraceLine(282,0,__PYX_ERR(0, 282, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -13021,6 +13329,7 @@ static int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree
   __Pyx_AddTraceback("lxml.etree._TempStore.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13035,8 +13344,10 @@ static int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree
 
 static int __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[0], 289, 0, __PYX_ERR(0, 289, __pyx_L1_error));
 
   /* "lxml/etree.pyx":290
  *     cdef object _exc_info
@@ -13045,6 +13356,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml
  *         return 0
  * 
  */
+  __Pyx_TraceLine(290,0,__PYX_ERR(0, 290, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_exc_info);
@@ -13058,6 +13370,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml
  * 
  *     cdef void _store_raised(self):
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(0, 291, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -13070,7 +13383,11 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ExceptionContext.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13085,6 +13402,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml
 
 static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
   PyObject *__pyx_v_e = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -13097,6 +13415,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   __Pyx_RefNannySetupContext("_store_raised", 0);
+  __Pyx_TraceCall("_store_raised", __pyx_f[0], 293, 0, __PYX_ERR(0, 293, __pyx_L1_error));
 
   /* "lxml/etree.pyx":294
  * 
@@ -13105,6 +13424,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  *             self._exc_info = sys.exc_info()
  *         except BaseException as e:
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(0, 294, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -13122,6 +13442,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  *         except BaseException as e:
  *             self._store_exception(e)
  */
+        __Pyx_TraceLine(295,0,__PYX_ERR(0, 295, __pyx_L6_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_6 = NULL;
@@ -13172,6 +13493,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  *             self._store_exception(e)
  *         finally:
  */
+      __Pyx_TraceLine(296,0,__PYX_ERR(0, 296, __pyx_L8_except_error))
       __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
       if (__pyx_t_7) {
         __Pyx_AddTraceback("lxml.etree._ExceptionContext._store_raised", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -13189,6 +13511,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  *         finally:
  *             return  # and swallow any further exceptions
  */
+        __Pyx_TraceLine(297,0,__PYX_ERR(0, 297, __pyx_L8_except_error))
         __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->__pyx_vtab)->_store_exception(__pyx_v_self, __pyx_v_e); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 297, __pyx_L8_except_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -13226,6 +13549,7 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  * 
  *     cdef int _store_exception(self, exception) except -1:
  */
+  __Pyx_TraceLine(299,0,__PYX_ERR(0, 299, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -13273,8 +13597,14 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_WriteUnraisable("lxml.etree._ExceptionContext._store_raised", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_e);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -13288,9 +13618,11 @@ static void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_
 
 static int __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self, PyObject *__pyx_v_exception) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_store_exception", 0);
+  __Pyx_TraceCall("_store_exception", __pyx_f[0], 301, 0, __PYX_ERR(0, 301, __pyx_L1_error));
 
   /* "lxml/etree.pyx":302
  * 
@@ -13299,6 +13631,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __py
  *         return 0
  * 
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(0, 302, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_exception);
@@ -13323,6 +13656,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __py
  * 
  *     cdef bint _has_raised(self) except -1:
  */
+  __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -13340,6 +13674,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __py
   __Pyx_AddTraceback("lxml.etree._ExceptionContext._store_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13354,9 +13689,11 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __py
 
 static int __pyx_f_4lxml_5etree_17_ExceptionContext__has_raised(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_has_raised", 0);
+  __Pyx_TraceCall("_has_raised", __pyx_f[0], 305, 0, __PYX_ERR(0, 305, __pyx_L1_error));
 
   /* "lxml/etree.pyx":306
  * 
@@ -13365,6 +13702,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__has_raised(struct __pyx_obj
  * 
  *     cdef int _raise_if_stored(self) except -1:
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(0, 306, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_exc_info != Py_None);
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -13378,7 +13716,11 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__has_raised(struct __pyx_obj
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ExceptionContext._has_raised", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13396,6 +13738,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_v_traceback = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -13407,6 +13750,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
   PyObject *(*__pyx_t_8)(PyObject *);
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_raise_if_stored", 0);
+  __Pyx_TraceCall("_raise_if_stored", __pyx_f[0], 308, 0, __PYX_ERR(0, 308, __pyx_L1_error));
 
   /* "lxml/etree.pyx":309
  * 
@@ -13415,6 +13759,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *             return 0
  *         type, value, traceback = self._exc_info
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(0, 309, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_exc_info == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -13426,6 +13771,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *         type, value, traceback = self._exc_info
  *         self._exc_info = None
  */
+    __Pyx_TraceLine(310,0,__PYX_ERR(0, 310, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -13445,6 +13791,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *         self._exc_info = None
  *         if value is None and traceback is None:
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(0, 311, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_exc_info;
   __Pyx_INCREF(__pyx_t_3);
   if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
@@ -13514,6 +13861,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *         if value is None and traceback is None:
  *             raise type
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(0, 312, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_exc_info);
@@ -13527,6 +13875,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *             raise type
  *         else:
  */
+  __Pyx_TraceLine(313,0,__PYX_ERR(0, 313, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_9 = (__pyx_t_1 != 0);
   if (__pyx_t_9) {
@@ -13547,6 +13896,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  *         else:
  *             raise type, value, traceback
  */
+    __Pyx_TraceLine(314,0,__PYX_ERR(0, 314, __pyx_L1_error))
     __Pyx_Raise(__pyx_v_type, 0, 0, 0);
     __PYX_ERR(0, 314, __pyx_L1_error)
 
@@ -13566,6 +13916,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
  * 
  * 
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(0, 316, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_v_type, __pyx_v_value, __pyx_v_traceback, 0);
     __PYX_ERR(0, 316, __pyx_L1_error)
@@ -13592,6 +13943,7 @@ static int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __py
   __Pyx_XDECREF(__pyx_v_type);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_traceback);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13919,9 +14271,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__unregisterProxy(struct LxmlElemen
 
 static xmlDoc *__pyx_f_4lxml_5etree__fakeRootDoc(xmlDoc *__pyx_v_c_base_doc, xmlNode *__pyx_v_c_node) {
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   __Pyx_RefNannySetupContext("_fakeRootDoc", 0);
+  __Pyx_TraceCall("_fakeRootDoc", __pyx_f[4], 51, 0, __PYX_ERR(4, 51, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":52
  * 
@@ -13930,6 +14284,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__fakeRootDoc(xmlDoc *__pyx_v_c_base_doc, xml
  * 
  * cdef xmlDoc* _plainFakeRootDoc(xmlDoc* c_base_doc, xmlNode* c_node,
  */
+  __Pyx_TraceLine(52,0,__PYX_ERR(4, 52, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__plainFakeRootDoc(__pyx_v_c_base_doc, __pyx_v_c_node, 1); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(4, 52, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -13947,6 +14302,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__fakeRootDoc(xmlDoc *__pyx_v_c_base_doc, xml
   __Pyx_AddTraceback("lxml.etree._fakeRootDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13965,12 +14321,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
   xmlNode *__pyx_v_c_new_root;
   xmlDoc *__pyx_v_c_doc;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlDoc *__pyx_t_3;
   xmlNode *__pyx_t_4;
   __Pyx_RefNannySetupContext("_plainFakeRootDoc", 0);
+  __Pyx_TraceCall("_plainFakeRootDoc", __pyx_f[4], 54, 0, __PYX_ERR(4, 54, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":63
  *     cdef xmlNode* c_new_root
@@ -13979,6 +14337,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *         c_root = tree.xmlDocGetRootElement(c_base_doc)
  *         if c_root is c_node:
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(4, 63, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_with_siblings != 0);
   if (!__pyx_t_2) {
   } else {
@@ -14003,6 +14362,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *         if c_root is c_node:
  *             # already the root node, no siblings
  */
+    __Pyx_TraceLine(64,0,__PYX_ERR(4, 64, __pyx_L1_error))
     __pyx_v_c_root = xmlDocGetRootElement(__pyx_v_c_base_doc);
 
     /* "src/lxml/proxy.pxi":65
@@ -14012,6 +14372,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *             # already the root node, no siblings
  *             return c_base_doc
  */
+    __Pyx_TraceLine(65,0,__PYX_ERR(4, 65, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_root == __pyx_v_c_node) != 0);
     if (__pyx_t_1) {
 
@@ -14022,6 +14383,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  *     c_doc  = _copyDoc(c_base_doc, 0)                   # non recursive!
  */
+      __Pyx_TraceLine(67,0,__PYX_ERR(4, 67, __pyx_L1_error))
       __pyx_r = __pyx_v_c_base_doc;
       goto __pyx_L0;
 
@@ -14050,6 +14412,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     c_new_root = tree.xmlDocCopyNode(c_node, c_doc, 2) # non recursive!
  *     tree.xmlDocSetRootElement(c_doc, c_new_root)
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(4, 69, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_base_doc, 0); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(4, 69, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_3;
 
@@ -14060,6 +14423,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     tree.xmlDocSetRootElement(c_doc, c_new_root)
  *     _copyParentNamespaces(c_node, c_new_root)
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(4, 70, __pyx_L1_error))
   __pyx_v_c_new_root = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_c_doc, 2);
 
   /* "src/lxml/proxy.pxi":71
@@ -14069,6 +14433,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     _copyParentNamespaces(c_node, c_new_root)
  * 
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(4, 71, __pyx_L1_error))
   (void)(xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_new_root));
 
   /* "src/lxml/proxy.pxi":72
@@ -14078,6 +14443,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  *     c_new_root.children = c_node.children
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(4, 72, __pyx_L1_error))
   __pyx_f_4lxml_5etree__copyParentNamespaces(__pyx_v_c_node, __pyx_v_c_new_root);
 
   /* "src/lxml/proxy.pxi":74
@@ -14087,6 +14453,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     c_new_root.last = c_node.last
  *     c_new_root.next = c_new_root.prev = NULL
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(4, 74, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_node->children;
   __pyx_v_c_new_root->children = __pyx_t_4;
 
@@ -14097,6 +14464,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     c_new_root.next = c_new_root.prev = NULL
  * 
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(4, 75, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_node->last;
   __pyx_v_c_new_root->last = __pyx_t_4;
 
@@ -14107,6 +14475,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  *     # store original node
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(4, 76, __pyx_L1_error))
   __pyx_v_c_new_root->next = NULL;
   __pyx_v_c_new_root->prev = NULL;
 
@@ -14117,6 +14486,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  *     # divert parent pointers of children
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(4, 79, __pyx_L1_error))
   __pyx_v_c_doc->_private = __pyx_v_c_node;
 
   /* "src/lxml/proxy.pxi":82
@@ -14126,6 +14496,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     while c_child is not NULL:
  *         c_child.parent = c_new_root
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(4, 82, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_new_root->children;
   __pyx_v_c_child = __pyx_t_4;
 
@@ -14136,6 +14507,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *         c_child.parent = c_new_root
  *         c_child = c_child.next
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(4, 83, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -14147,6 +14519,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *         c_child = c_child.next
  * 
  */
+    __Pyx_TraceLine(84,0,__PYX_ERR(4, 84, __pyx_L1_error))
     __pyx_v_c_child->parent = __pyx_v_c_new_root;
 
     /* "src/lxml/proxy.pxi":85
@@ -14156,6 +14529,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  *     c_doc.children = c_new_root
  */
+    __Pyx_TraceLine(85,0,__PYX_ERR(4, 85, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_child->next;
     __pyx_v_c_child = __pyx_t_4;
   }
@@ -14167,6 +14541,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  *     return c_doc
  * 
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(4, 87, __pyx_L1_error))
   __pyx_v_c_doc->children = __pyx_v_c_new_root;
 
   /* "src/lxml/proxy.pxi":88
@@ -14176,6 +14551,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
  * 
  * cdef void _destroyFakeDoc(xmlDoc* c_base_doc, xmlDoc* c_doc):
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(4, 88, __pyx_L1_error))
   __pyx_r = __pyx_v_c_doc;
   goto __pyx_L0;
 
@@ -14192,6 +14568,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__plainFakeRootDoc(xmlDoc *__pyx_v_c_base_doc
   __Pyx_AddTraceback("lxml.etree._plainFakeRootDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14208,10 +14585,12 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
   xmlNode *__pyx_v_c_child;
   xmlNode *__pyx_v_c_parent;
   xmlNode *__pyx_v_c_root;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_destroyFakeDoc", 0);
+  __Pyx_TraceCall("_destroyFakeDoc", __pyx_f[4], 90, 0, __PYX_ERR(4, 90, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":95
  *     cdef xmlNode* c_parent
@@ -14220,6 +14599,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *         return
  *     c_root = tree.xmlDocGetRootElement(c_doc)
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(4, 95, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_doc == __pyx_v_c_base_doc) != 0);
   if (__pyx_t_1) {
 
@@ -14230,6 +14610,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *     c_root = tree.xmlDocGetRootElement(c_doc)
  * 
  */
+    __Pyx_TraceLine(96,0,__PYX_ERR(4, 96, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/proxy.pxi":95
@@ -14248,6 +14629,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  * 
  *     # restore parent pointers of children
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(4, 97, __pyx_L1_error))
   __pyx_v_c_root = xmlDocGetRootElement(__pyx_v_c_doc);
 
   /* "src/lxml/proxy.pxi":100
@@ -14257,6 +14639,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *     c_child = c_root.children
  *     while c_child is not NULL:
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(4, 100, __pyx_L1_error))
   __pyx_v_c_parent = ((xmlNode *)__pyx_v_c_doc->_private);
 
   /* "src/lxml/proxy.pxi":101
@@ -14266,6 +14649,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *     while c_child is not NULL:
  *         c_child.parent = c_parent
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(4, 101, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_root->children;
   __pyx_v_c_child = __pyx_t_2;
 
@@ -14276,6 +14660,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *         c_child.parent = c_parent
  *         c_child = c_child.next
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(4, 102, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -14287,6 +14672,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *         c_child = c_child.next
  * 
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(4, 103, __pyx_L1_error))
     __pyx_v_c_child->parent = __pyx_v_c_parent;
 
     /* "src/lxml/proxy.pxi":104
@@ -14296,6 +14682,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  * 
  *     # prevent recursive removal of children
  */
+    __Pyx_TraceLine(104,0,__PYX_ERR(4, 104, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_child->next;
     __pyx_v_c_child = __pyx_t_2;
   }
@@ -14307,6 +14694,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  *     tree.xmlFreeDoc(c_doc)
  * 
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(4, 107, __pyx_L1_error))
   __pyx_v_c_root->children = NULL;
   __pyx_v_c_root->last = NULL;
 
@@ -14317,6 +14705,7 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  * 
  * cdef _Element _fakeDocElementFactory(_Document doc, xmlNode* c_element):
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(4, 108, __pyx_L1_error))
   xmlFreeDoc(__pyx_v_c_doc);
 
   /* "src/lxml/proxy.pxi":90
@@ -14328,7 +14717,11 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._destroyFakeDoc", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -14342,10 +14735,12 @@ static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xml
 
 static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_element) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_fakeDocElementFactory", 0);
+  __Pyx_TraceCall("_fakeDocElementFactory", __pyx_f[4], 110, 0, __PYX_ERR(4, 110, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":119
  *     instantiate the original node instead.
@@ -14354,6 +14749,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
  *         if c_element.doc._private is not NULL:
  *             if c_element is c_element.doc.children:
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(4, 119, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_element->doc != __pyx_v_doc->_c_doc) != 0);
   if (__pyx_t_1) {
 
@@ -14364,6 +14760,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
  *             if c_element is c_element.doc.children:
  *                 c_element = <xmlNode*>c_element.doc._private
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(4, 120, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_element->doc->_private != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -14374,6 +14771,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
  *                 c_element = <xmlNode*>c_element.doc._private
  *                 #assert c_element.type == tree.XML_ELEMENT_NODE
  */
+      __Pyx_TraceLine(121,0,__PYX_ERR(4, 121, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_element == __pyx_v_c_element->doc->children) != 0);
       if (__pyx_t_1) {
 
@@ -14384,6 +14782,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
  *                 #assert c_element.type == tree.XML_ELEMENT_NODE
  *     return _elementFactory(doc, c_element)
  */
+        __Pyx_TraceLine(122,0,__PYX_ERR(4, 122, __pyx_L1_error))
         __pyx_v_c_element = ((xmlNode *)__pyx_v_c_element->doc->_private);
 
         /* "src/lxml/proxy.pxi":121
@@ -14420,6 +14819,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(4, 124, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -14442,6 +14842,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14457,9 +14858,11 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct Lx
 static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_v_c_top;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("attemptDeallocation", 0);
+  __Pyx_TraceCall("attemptDeallocation", __pyx_f[4], 129, 0, __PYX_ERR(4, 129, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":134
  *     cdef xmlNode* c_top
@@ -14468,6 +14871,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *         #print "not freeing, node is NULL"
  *         return 0
  */
+  __Pyx_TraceLine(134,0,__PYX_ERR(4, 134, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -14478,6 +14882,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *     c_top = getDeallocationTop(c_node)
  *     if c_top is not NULL:
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(4, 136, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -14497,6 +14902,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *     if c_top is not NULL:
  *         #print "freeing:", c_top.name
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(4, 137, __pyx_L1_error))
   __pyx_v_c_top = __pyx_f_4lxml_5etree_getDeallocationTop(__pyx_v_c_node);
 
   /* "src/lxml/proxy.pxi":138
@@ -14506,6 +14912,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *         #print "freeing:", c_top.name
  *         _removeText(c_top.next) # tail
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(4, 138, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_top != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -14516,6 +14923,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *         tree.xmlFreeNode(c_top)
  *         return 1
  */
+    __Pyx_TraceLine(140,0,__PYX_ERR(4, 140, __pyx_L1_error))
     __pyx_f_4lxml_5etree__removeText(__pyx_v_c_top->next);
 
     /* "src/lxml/proxy.pxi":141
@@ -14525,6 +14933,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *         return 1
  *     return 0
  */
+    __Pyx_TraceLine(141,0,__PYX_ERR(4, 141, __pyx_L1_error))
     xmlFreeNode(__pyx_v_c_top);
 
     /* "src/lxml/proxy.pxi":142
@@ -14534,6 +14943,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(142,0,__PYX_ERR(4, 142, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -14553,6 +14963,7 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  * 
  * cdef xmlNode* getDeallocationTop(xmlNode* c_node):
  */
+  __Pyx_TraceLine(143,0,__PYX_ERR(4, 143, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -14565,7 +14976,11 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.attemptDeallocation", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14581,11 +14996,13 @@ static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
 static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_v_c_next;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("getDeallocationTop", 0);
+  __Pyx_TraceCall("getDeallocationTop", __pyx_f[4], 145, 0, __PYX_ERR(4, 145, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":150
  *     cdef xmlNode* c_next
@@ -14594,6 +15011,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         #print "Not freeing: proxies still exist"
  *         return NULL
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(4, 150, __pyx_L1_error))
   __pyx_t_1 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node) != 0);
   if (__pyx_t_1) {
 
@@ -14604,6 +15022,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     while c_node.parent is not NULL:
  *         c_node = c_node.parent
  */
+    __Pyx_TraceLine(152,0,__PYX_ERR(4, 152, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -14623,6 +15042,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         c_node = c_node.parent
  *         #print "checking:", c_current.type
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(4, 153, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node->parent != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -14634,6 +15054,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         #print "checking:", c_current.type
  *         if c_node.type == tree.XML_DOCUMENT_NODE or \
  */
+    __Pyx_TraceLine(154,0,__PYX_ERR(4, 154, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->parent;
     __pyx_v_c_node = __pyx_t_2;
 
@@ -14644,6 +15065,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *                c_node.type == tree.XML_HTML_DOCUMENT_NODE:
  *             #print "not freeing: still in doc"
  */
+    __Pyx_TraceLine(156,0,__PYX_ERR(4, 156, __pyx_L1_error))
     switch (__pyx_v_c_node->type) {
       case XML_DOCUMENT_NODE:
 
@@ -14654,6 +15076,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *             #print "not freeing: still in doc"
  *             return NULL
  */
+      __Pyx_TraceLine(157,0,__PYX_ERR(4, 157, __pyx_L1_error))
       case XML_HTML_DOCUMENT_NODE:
 
       /* "src/lxml/proxy.pxi":159
@@ -14663,6 +15086,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         # if we're still attached to the document, don't deallocate
  *         if hasProxy(c_node):
  */
+      __Pyx_TraceLine(159,0,__PYX_ERR(4, 159, __pyx_L1_error))
       __pyx_r = NULL;
       goto __pyx_L0;
 
@@ -14684,6 +15108,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *             #print "Not freeing: proxies still exist"
  *             return NULL
  */
+    __Pyx_TraceLine(161,0,__PYX_ERR(4, 161, __pyx_L1_error))
     __pyx_t_1 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node) != 0);
     if (__pyx_t_1) {
 
@@ -14694,6 +15119,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     # see whether we have children to deallocate
  *     if not canDeallocateChildNodes(c_node):
  */
+      __Pyx_TraceLine(163,0,__PYX_ERR(4, 163, __pyx_L1_error))
       __pyx_r = NULL;
       goto __pyx_L0;
 
@@ -14714,6 +15140,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         return NULL
  *     # see whether we have siblings to deallocate
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(4, 165, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree_canDeallocateChildNodes(__pyx_v_c_node) != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -14724,6 +15151,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     # see whether we have siblings to deallocate
  *     c_next = c_node.prev
  */
+    __Pyx_TraceLine(166,0,__PYX_ERR(4, 166, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -14743,6 +15171,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     while c_next:
  *         if _isElement(c_next):
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(4, 168, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->prev;
   __pyx_v_c_next = __pyx_t_2;
 
@@ -14753,6 +15182,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         if _isElement(c_next):
  *             if hasProxy(c_next) or not canDeallocateChildNodes(c_next):
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(4, 169, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (__pyx_v_c_next != 0);
     if (!__pyx_t_1) break;
@@ -14764,6 +15194,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *             if hasProxy(c_next) or not canDeallocateChildNodes(c_next):
  *                 return NULL
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(4, 170, __pyx_L1_error))
     __pyx_t_1 = (_isElement(__pyx_v_c_next) != 0);
     if (__pyx_t_1) {
 
@@ -14774,6 +15205,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *                 return NULL
  *         c_next = c_next.prev
  */
+      __Pyx_TraceLine(171,0,__PYX_ERR(4, 171, __pyx_L1_error))
       __pyx_t_3 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_next) != 0);
       if (!__pyx_t_3) {
       } else {
@@ -14792,6 +15224,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         c_next = c_next.prev
  *     c_next = c_node.next
  */
+        __Pyx_TraceLine(172,0,__PYX_ERR(4, 172, __pyx_L1_error))
         __pyx_r = NULL;
         goto __pyx_L0;
 
@@ -14820,6 +15253,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     c_next = c_node.next
  *     while c_next:
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(4, 173, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_next->prev;
     __pyx_v_c_next = __pyx_t_2;
   }
@@ -14831,6 +15265,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     while c_next:
  *         if _isElement(c_next):
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(4, 174, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_2;
 
@@ -14841,6 +15276,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         if _isElement(c_next):
  *             if hasProxy(c_next) or not canDeallocateChildNodes(c_next):
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(4, 175, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (__pyx_v_c_next != 0);
     if (!__pyx_t_1) break;
@@ -14852,6 +15288,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *             if hasProxy(c_next) or not canDeallocateChildNodes(c_next):
  *                 return NULL
  */
+    __Pyx_TraceLine(176,0,__PYX_ERR(4, 176, __pyx_L1_error))
     __pyx_t_1 = (_isElement(__pyx_v_c_next) != 0);
     if (__pyx_t_1) {
 
@@ -14862,6 +15299,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *                 return NULL
  *         c_next = c_next.next
  */
+      __Pyx_TraceLine(177,0,__PYX_ERR(4, 177, __pyx_L1_error))
       __pyx_t_3 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_next) != 0);
       if (!__pyx_t_3) {
       } else {
@@ -14880,6 +15318,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *         c_next = c_next.next
  *     return c_node
  */
+        __Pyx_TraceLine(178,0,__PYX_ERR(4, 178, __pyx_L1_error))
         __pyx_r = NULL;
         goto __pyx_L0;
 
@@ -14908,6 +15347,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  *     return c_node
  * 
  */
+    __Pyx_TraceLine(179,0,__PYX_ERR(4, 179, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_next->next;
     __pyx_v_c_next = __pyx_t_2;
   }
@@ -14919,6 +15359,7 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  * 
  * cdef int canDeallocateChildNodes(xmlNode* c_parent):
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(4, 180, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -14931,7 +15372,11 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.getDeallocationTop", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14947,10 +15392,12 @@ static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node)
 static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_parent) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("canDeallocateChildNodes", 0);
+  __Pyx_TraceCall("canDeallocateChildNodes", __pyx_f[4], 182, 0, __PYX_ERR(4, 182, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":184
  * cdef int canDeallocateChildNodes(xmlNode* c_parent):
@@ -14959,6 +15406,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_parent, c_node, 1)
  *     if hasProxy(c_node):
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(4, 184, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_parent->children;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -14969,6 +15417,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  *     if hasProxy(c_node):
  *         return 0
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(4, 185, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_parent, __pyx_v_c_node, 1);
 
   /* "src/lxml/proxy.pxi":186
@@ -14978,6 +15427,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  *         return 0
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(4, 186, __pyx_L1_error))
   __pyx_t_2 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node) != 0);
   if (__pyx_t_2) {
 
@@ -14988,6 +15438,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 1
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(4, 187, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -15007,6 +15458,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  *     return 1
  * 
  */
+  __Pyx_TraceLine(188,0,__PYX_ERR(4, 188, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "src/lxml/proxy.pxi":189
@@ -15016,6 +15468,7 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(4, 189, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -15028,7 +15481,11 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.canDeallocateChildNodes", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15044,10 +15501,12 @@ static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_paren
 static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_node, xmlNode *__pyx_v_c_to_node) {
   xmlNode *__pyx_v_c_parent;
   xmlNs *__pyx_v_c_new_ns;
+  __Pyx_TraceDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   xmlNs *__pyx_t_4;
+  __Pyx_TraceCall("_copyParentNamespaces", __pyx_f[4], 194, 1, __PYX_ERR(4, 194, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":201
  *     cdef xmlNs* c_new_ns
@@ -15056,6 +15515,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *     while c_parent and (tree._isElementOrXInclude(c_parent) or
  *                         c_parent.type == tree.XML_DOCUMENT_NODE):
  */
+  __Pyx_TraceLine(201,1,__PYX_ERR(4, 201, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_from_node->parent;
   __pyx_v_c_parent = __pyx_t_1;
 
@@ -15066,6 +15526,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *                         c_parent.type == tree.XML_DOCUMENT_NODE):
  *         c_new_ns = c_parent.nsDef
  */
+  __Pyx_TraceLine(202,1,__PYX_ERR(4, 202, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = (__pyx_v_c_parent != 0);
     if (__pyx_t_3) {
@@ -15087,6 +15548,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *         c_new_ns = c_parent.nsDef
  *         while c_new_ns:
  */
+    __Pyx_TraceLine(203,1,__PYX_ERR(4, 203, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_parent->type == XML_DOCUMENT_NODE) != 0);
     __pyx_t_2 = __pyx_t_3;
     __pyx_L5_bool_binop_done:;
@@ -15099,6 +15561,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *         while c_new_ns:
  *             # libxml2 will check if the prefix is already defined
  */
+    __Pyx_TraceLine(204,1,__PYX_ERR(4, 204, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_parent->nsDef;
     __pyx_v_c_new_ns = __pyx_t_4;
 
@@ -15109,6 +15572,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *             # libxml2 will check if the prefix is already defined
  *             tree.xmlNewNs(c_to_node, c_new_ns.href, c_new_ns.prefix)
  */
+    __Pyx_TraceLine(205,1,__PYX_ERR(4, 205, __pyx_L1_error))
     while (1) {
       __pyx_t_2 = (__pyx_v_c_new_ns != 0);
       if (!__pyx_t_2) break;
@@ -15120,6 +15584,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *             c_new_ns = c_new_ns.next
  *         c_parent = c_parent.parent
  */
+      __Pyx_TraceLine(207,1,__PYX_ERR(4, 207, __pyx_L1_error))
       (void)(xmlNewNs(__pyx_v_c_to_node, __pyx_v_c_new_ns->href, __pyx_v_c_new_ns->prefix));
 
       /* "src/lxml/proxy.pxi":208
@@ -15129,6 +15594,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  *         c_parent = c_parent.parent
  * 
  */
+      __Pyx_TraceLine(208,1,__PYX_ERR(4, 208, __pyx_L1_error))
       __pyx_t_4 = __pyx_v_c_new_ns->next;
       __pyx_v_c_new_ns = __pyx_t_4;
     }
@@ -15140,6 +15606,7 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  * 
  * 
  */
+    __Pyx_TraceLine(209,1,__PYX_ERR(4, 209, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_parent->parent;
     __pyx_v_c_parent = __pyx_t_1;
   }
@@ -15153,6 +15620,11 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._copyParentNamespaces", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":223
@@ -15166,9 +15638,11 @@ static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_n
 static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache) {
   __pyx_t_4lxml_5etree__ns_update_map *__pyx_v_ns_map_ptr;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_growNsCache", 0);
+  __Pyx_TraceCall("_growNsCache", __pyx_f[4], 223, 0, __PYX_ERR(4, 223, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":225
  * cdef int _growNsCache(_nscache* c_ns_cache) except -1:
@@ -15177,6 +15651,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *         c_ns_cache.size = 20
  *     else:
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(4, 225, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ns_cache->size == 0) != 0);
   if (__pyx_t_1) {
 
@@ -15187,6 +15662,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *     else:
  *         c_ns_cache.size *= 2
  */
+    __Pyx_TraceLine(226,0,__PYX_ERR(4, 226, __pyx_L1_error))
     __pyx_v_c_ns_cache->size = 20;
 
     /* "src/lxml/proxy.pxi":225
@@ -15206,6 +15682,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *     ns_map_ptr = <_ns_update_map*> python.lxml_realloc(
  *         c_ns_cache.ns_map, c_ns_cache.size, sizeof(_ns_update_map))
  */
+  __Pyx_TraceLine(228,0,__PYX_ERR(4, 228, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_ns_cache->size = (__pyx_v_c_ns_cache->size * 2);
   }
@@ -15218,6 +15695,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *         c_ns_cache.ns_map, c_ns_cache.size, sizeof(_ns_update_map))
  *     if not ns_map_ptr:
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(4, 229, __pyx_L1_error))
   __pyx_v_ns_map_ptr = ((__pyx_t_4lxml_5etree__ns_update_map *)lxml_realloc(__pyx_v_c_ns_cache->ns_map, __pyx_v_c_ns_cache->size, (sizeof(__pyx_t_4lxml_5etree__ns_update_map))));
 
   /* "src/lxml/proxy.pxi":231
@@ -15227,6 +15705,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *         python.lxml_free(c_ns_cache.ns_map)
  *         c_ns_cache.ns_map = NULL
  */
+  __Pyx_TraceLine(231,0,__PYX_ERR(4, 231, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_ns_map_ptr != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -15237,6 +15716,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *         c_ns_cache.ns_map = NULL
  *         raise MemoryError()
  */
+    __Pyx_TraceLine(232,0,__PYX_ERR(4, 232, __pyx_L1_error))
     lxml_free(__pyx_v_c_ns_cache->ns_map);
 
     /* "src/lxml/proxy.pxi":233
@@ -15246,6 +15726,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *         raise MemoryError()
  *     c_ns_cache.ns_map = ns_map_ptr
  */
+    __Pyx_TraceLine(233,0,__PYX_ERR(4, 233, __pyx_L1_error))
     __pyx_v_c_ns_cache->ns_map = NULL;
 
     /* "src/lxml/proxy.pxi":234
@@ -15255,6 +15736,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *     c_ns_cache.ns_map = ns_map_ptr
  *     return 0
  */
+    __Pyx_TraceLine(234,0,__PYX_ERR(4, 234, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(4, 234, __pyx_L1_error)
 
     /* "src/lxml/proxy.pxi":231
@@ -15273,6 +15755,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  *     return 0
  * 
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(4, 235, __pyx_L1_error))
   __pyx_v_c_ns_cache->ns_map = __pyx_v_ns_map_ptr;
 
   /* "src/lxml/proxy.pxi":236
@@ -15282,6 +15765,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
  * 
  * 
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(4, 236, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -15298,6 +15782,7 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
   __Pyx_AddTraceback("lxml.etree._growNsCache", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15312,11 +15797,13 @@ static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__py
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache, xmlNs *__pyx_v_c_old_ns, xmlNs *__pyx_v_c_new_ns) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __pyx_t_4lxml_5etree__ns_update_map __pyx_t_3;
   __Pyx_RefNannySetupContext("_appendToNsCache", 0);
+  __Pyx_TraceCall("_appendToNsCache", __pyx_f[4], 239, 0, __PYX_ERR(4, 239, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":241
  * cdef inline int _appendToNsCache(_nscache* c_ns_cache,
@@ -15325,6 +15812,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
  *         _growNsCache(c_ns_cache)
  *     c_ns_cache.ns_map[c_ns_cache.last] = _ns_update_map(old=c_old_ns, new=c_new_ns)
  */
+  __Pyx_TraceLine(241,0,__PYX_ERR(4, 241, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ns_cache->last >= __pyx_v_c_ns_cache->size) != 0);
   if (__pyx_t_1) {
 
@@ -15335,6 +15823,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
  *     c_ns_cache.ns_map[c_ns_cache.last] = _ns_update_map(old=c_old_ns, new=c_new_ns)
  *     c_ns_cache.last += 1
  */
+    __Pyx_TraceLine(242,0,__PYX_ERR(4, 242, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__growNsCache(__pyx_v_c_ns_cache); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 242, __pyx_L1_error)
 
     /* "src/lxml/proxy.pxi":241
@@ -15353,6 +15842,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
  *     c_ns_cache.last += 1
  * 
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(4, 243, __pyx_L1_error))
   __pyx_t_3.old = __pyx_v_c_old_ns;
   __pyx_t_3.new = __pyx_v_c_new_ns;
   (__pyx_v_c_ns_cache->ns_map[__pyx_v_c_ns_cache->last]) = __pyx_t_3;
@@ -15364,6 +15854,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
  * 
  * 
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(4, 244, __pyx_L1_error))
   __pyx_v_c_ns_cache->last = (__pyx_v_c_ns_cache->last + 1);
 
   /* "src/lxml/proxy.pxi":239
@@ -15381,6 +15872,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
   __Pyx_AddTraceback("lxml.etree._appendToNsCache", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15398,11 +15890,13 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
   xmlNs *__pyx_v_c_ns_next;
   xmlNs **__pyx_v_c_nsdef;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNs *__pyx_t_3;
   __Pyx_RefNannySetupContext("_stripRedundantNamespaceDeclarations", 0);
+  __Pyx_TraceCall("_stripRedundantNamespaceDeclarations", __pyx_f[4], 247, 0, __PYX_ERR(4, 247, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":257
  *     cdef xmlNs** c_nsdef
@@ -15411,6 +15905,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *     while c_nsdef[0] is not NULL:
  *         c_ns = tree.xmlSearchNsByHref(
  */
+  __Pyx_TraceLine(257,0,__PYX_ERR(4, 257, __pyx_L1_error))
   __pyx_v_c_nsdef = (&__pyx_v_c_element->nsDef);
 
   /* "src/lxml/proxy.pxi":258
@@ -15420,6 +15915,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *         c_ns = tree.xmlSearchNsByHref(
  *             c_element.doc, c_element.parent, c_nsdef[0].href)
  */
+  __Pyx_TraceLine(258,0,__PYX_ERR(4, 258, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (((__pyx_v_c_nsdef[0]) != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -15431,6 +15927,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             c_element.doc, c_element.parent, c_nsdef[0].href)
  *         if c_ns is NULL:
  */
+    __Pyx_TraceLine(259,0,__PYX_ERR(4, 259, __pyx_L1_error))
     __pyx_v_c_ns = xmlSearchNsByHref(__pyx_v_c_element->doc, __pyx_v_c_element->parent, (__pyx_v_c_nsdef[0])->href);
 
     /* "src/lxml/proxy.pxi":261
@@ -15440,6 +15937,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             # new namespace href => keep and cache the ns declaration
  *             _appendToNsCache(c_ns_cache, c_nsdef[0], c_nsdef[0])
  */
+    __Pyx_TraceLine(261,0,__PYX_ERR(4, 261, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_ns == NULL) != 0);
     if (__pyx_t_1) {
 
@@ -15450,6 +15948,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             c_nsdef = &c_nsdef[0].next
  *         else:
  */
+      __Pyx_TraceLine(263,0,__PYX_ERR(4, 263, __pyx_L1_error))
       __pyx_t_2 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, (__pyx_v_c_nsdef[0]), (__pyx_v_c_nsdef[0])); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 263, __pyx_L1_error)
 
       /* "src/lxml/proxy.pxi":264
@@ -15459,6 +15958,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *         else:
  *             # known namespace href => cache mapping and strip old ns
  */
+      __Pyx_TraceLine(264,0,__PYX_ERR(4, 264, __pyx_L1_error))
       __pyx_v_c_nsdef = (&(__pyx_v_c_nsdef[0])->next);
 
       /* "src/lxml/proxy.pxi":261
@@ -15478,6 +15978,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             # cut out c_nsdef.next and prepend it to garbage chain
  *             c_ns_next = c_nsdef[0].next
  */
+    __Pyx_TraceLine(267,0,__PYX_ERR(4, 267, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, (__pyx_v_c_nsdef[0]), __pyx_v_c_ns); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 267, __pyx_L1_error)
 
@@ -15488,6 +15989,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             c_nsdef[0].next = c_del_ns_list[0]
  *             c_del_ns_list[0] = c_nsdef[0]
  */
+      __Pyx_TraceLine(269,0,__PYX_ERR(4, 269, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_c_nsdef[0])->next;
       __pyx_v_c_ns_next = __pyx_t_3;
 
@@ -15498,6 +16000,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             c_del_ns_list[0] = c_nsdef[0]
  *             c_nsdef[0] = c_ns_next
  */
+      __Pyx_TraceLine(270,0,__PYX_ERR(4, 270, __pyx_L1_error))
       (__pyx_v_c_nsdef[0])->next = (__pyx_v_c_del_ns_list[0]);
 
       /* "src/lxml/proxy.pxi":271
@@ -15507,6 +16010,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *             c_nsdef[0] = c_ns_next
  *     return 0
  */
+      __Pyx_TraceLine(271,0,__PYX_ERR(4, 271, __pyx_L1_error))
       (__pyx_v_c_del_ns_list[0]) = (__pyx_v_c_nsdef[0]);
 
       /* "src/lxml/proxy.pxi":272
@@ -15516,6 +16020,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  *     return 0
  * 
  */
+      __Pyx_TraceLine(272,0,__PYX_ERR(4, 272, __pyx_L1_error))
       (__pyx_v_c_nsdef[0]) = __pyx_v_c_ns_next;
     }
     __pyx_L5:;
@@ -15528,6 +16033,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
  * 
  * 
  */
+  __Pyx_TraceLine(273,0,__PYX_ERR(4, 273, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -15544,6 +16050,7 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
   __Pyx_AddTraceback("lxml.etree._stripRedundantNamespaceDeclarations", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15558,10 +16065,12 @@ static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__
 
 static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_v_c_start_node, __pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache, xmlNs *__pyx_v_c_del_ns_list) {
   xmlNs *__pyx_v_c_ns;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNs *__pyx_t_2;
   __Pyx_RefNannySetupContext("_cleanUpFromNamespaceAdaptation", 0);
+  __Pyx_TraceCall("_cleanUpFromNamespaceAdaptation", __pyx_f[4], 276, 0, __PYX_ERR(4, 276, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":282
  *     # by re-adding the original xmlNs declarations (which might still be used in some
@@ -15570,6 +16079,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *         python.lxml_free(c_ns_cache.ns_map)
  *     if c_del_ns_list:
  */
+  __Pyx_TraceLine(282,0,__PYX_ERR(4, 282, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_c_ns_cache->ns_map != 0);
   if (__pyx_t_1) {
 
@@ -15580,6 +16090,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *     if c_del_ns_list:
  *         if not c_start_node.nsDef:
  */
+    __Pyx_TraceLine(283,0,__PYX_ERR(4, 283, __pyx_L1_error))
     lxml_free(__pyx_v_c_ns_cache->ns_map);
 
     /* "src/lxml/proxy.pxi":282
@@ -15598,6 +16109,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *         if not c_start_node.nsDef:
  *             c_start_node.nsDef = c_del_ns_list
  */
+  __Pyx_TraceLine(284,0,__PYX_ERR(4, 284, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_c_del_ns_list != 0);
   if (__pyx_t_1) {
 
@@ -15608,6 +16120,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *             c_start_node.nsDef = c_del_ns_list
  *         else:
  */
+    __Pyx_TraceLine(285,0,__PYX_ERR(4, 285, __pyx_L1_error))
     __pyx_t_1 = ((!(__pyx_v_c_start_node->nsDef != 0)) != 0);
     if (__pyx_t_1) {
 
@@ -15618,6 +16131,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *         else:
  *             c_ns = c_start_node.nsDef
  */
+      __Pyx_TraceLine(286,0,__PYX_ERR(4, 286, __pyx_L1_error))
       __pyx_v_c_start_node->nsDef = __pyx_v_c_del_ns_list;
 
       /* "src/lxml/proxy.pxi":285
@@ -15637,6 +16151,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *             while c_ns.next:
  *                 c_ns = c_ns.next
  */
+    __Pyx_TraceLine(288,0,__PYX_ERR(4, 288, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __pyx_v_c_start_node->nsDef;
       __pyx_v_c_ns = __pyx_t_2;
@@ -15648,6 +16163,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *                 c_ns = c_ns.next
  *             c_ns.next = c_del_ns_list
  */
+      __Pyx_TraceLine(289,0,__PYX_ERR(4, 289, __pyx_L1_error))
       while (1) {
         __pyx_t_1 = (__pyx_v_c_ns->next != 0);
         if (!__pyx_t_1) break;
@@ -15659,6 +16175,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  *             c_ns.next = c_del_ns_list
  * 
  */
+        __Pyx_TraceLine(290,0,__PYX_ERR(4, 290, __pyx_L1_error))
         __pyx_t_2 = __pyx_v_c_ns->next;
         __pyx_v_c_ns = __pyx_t_2;
       }
@@ -15670,6 +16187,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  * 
  * 
  */
+      __Pyx_TraceLine(291,0,__PYX_ERR(4, 291, __pyx_L1_error))
       __pyx_v_c_ns->next = __pyx_v_c_del_ns_list;
     }
     __pyx_L5:;
@@ -15692,6 +16210,11 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._cleanUpFromNamespaceAdaptation", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -15714,6 +16237,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   int __pyx_v_is_prefixed_attr;
   struct LxmlElement *__pyx_v_proxy = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __pyx_t_4lxml_5etree__nscache __pyx_t_1;
   int __pyx_t_2;
@@ -15731,6 +16255,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   xmlNs *__pyx_t_14;
   xmlNode *__pyx_t_15;
   __Pyx_RefNannySetupContext("moveNodeToDocument", 0);
+  __Pyx_TraceCall("moveNodeToDocument", __pyx_f[4], 294, 0, __PYX_ERR(4, 294, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":328
  *     cdef xmlNode* c_node
@@ -15739,6 +16264,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     cdef xmlNs* c_ns
  *     cdef xmlNs* c_ns_next
  */
+  __Pyx_TraceLine(328,0,__PYX_ERR(4, 328, __pyx_L1_error))
   __pyx_t_1.ns_map = NULL;
   __pyx_t_1.size = 0;
   __pyx_t_1.last = 0;
@@ -15751,6 +16277,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     cdef size_t i, proxy_count = 0
  *     cdef bint is_prefixed_attr
  */
+  __Pyx_TraceLine(332,0,__PYX_ERR(4, 332, __pyx_L1_error))
   __pyx_v_c_del_ns_list = NULL;
 
   /* "src/lxml/proxy.pxi":333
@@ -15760,6 +16287,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     cdef bint is_prefixed_attr
  * 
  */
+  __Pyx_TraceLine(333,0,__PYX_ERR(4, 333, __pyx_L1_error))
   __pyx_v_proxy_count = 0;
 
   /* "src/lxml/proxy.pxi":336
@@ -15769,6 +16297,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         return 0
  * 
  */
+  __Pyx_TraceLine(336,0,__PYX_ERR(4, 336, __pyx_L1_error))
   __pyx_t_2 = ((!(_isElementOrXInclude(__pyx_v_c_element) != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -15779,6 +16308,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     c_start_node = c_element
  */
+    __Pyx_TraceLine(337,0,__PYX_ERR(4, 337, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -15798,6 +16328,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
  */
+  __Pyx_TraceLine(339,0,__PYX_ERR(4, 339, __pyx_L1_error))
   __pyx_v_c_start_node = __pyx_v_c_element;
 
   /* "src/lxml/proxy.pxi":341
@@ -15807,6 +16338,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     if tree._isElementOrXInclude(c_element):
  *         if hasProxy(c_element):
  */
+  __Pyx_TraceLine(341,0,__PYX_ERR(4, 341, __pyx_L1_error))
   BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);
 
   /* "src/lxml/proxy.pxi":342
@@ -15816,6 +16348,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         if hasProxy(c_element):
  *             proxy_count += 1
  */
+  __Pyx_TraceLine(342,0,__PYX_ERR(4, 342, __pyx_L1_error))
   __pyx_t_2 = (_isElementOrXInclude(__pyx_v_c_element) != 0);
   if (__pyx_t_2) {
 
@@ -15826,6 +16359,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             proxy_count += 1
  * 
  */
+    __Pyx_TraceLine(343,0,__PYX_ERR(4, 343, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_element) != 0);
     if (__pyx_t_2) {
 
@@ -15836,6 +16370,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *         # 1) cut out namespaces defined here that are already known by
  */
+      __Pyx_TraceLine(344,0,__PYX_ERR(4, 344, __pyx_L1_error))
       __pyx_v_proxy_count = (__pyx_v_proxy_count + 1);
 
       /* "src/lxml/proxy.pxi":343
@@ -15854,6 +16389,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             try:
  *                 _stripRedundantNamespaceDeclarations(c_element, &c_ns_cache, &c_del_ns_list)
  */
+    __Pyx_TraceLine(348,0,__PYX_ERR(4, 348, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_element->nsDef != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -15864,6 +16400,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 _stripRedundantNamespaceDeclarations(c_element, &c_ns_cache, &c_del_ns_list)
  *             except:
  */
+      __Pyx_TraceLine(349,0,__PYX_ERR(4, 349, __pyx_L7_error))
       {
         __Pyx_PyThreadState_declare
         __Pyx_PyThreadState_assign
@@ -15880,6 +16417,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             except:
  *                 _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  */
+          __Pyx_TraceLine(350,0,__PYX_ERR(4, 350, __pyx_L7_error))
           __pyx_t_6 = __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(__pyx_v_c_element, (&__pyx_v_c_ns_cache), (&__pyx_v_c_del_ns_list)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 350, __pyx_L7_error)
 
           /* "src/lxml/proxy.pxi":349
@@ -15903,6 +16441,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  *                 raise
  */
+        __Pyx_TraceLine(351,0,__PYX_ERR(4, 351, __pyx_L9_except_error))
         /*except:*/ {
           __Pyx_AddTraceback("lxml.etree.moveNodeToDocument", __pyx_clineno, __pyx_lineno, __pyx_filename);
           if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(4, 351, __pyx_L9_except_error)
@@ -15917,6 +16456,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 raise
  * 
  */
+          __Pyx_TraceLine(352,0,__PYX_ERR(4, 352, __pyx_L9_except_error))
           __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(__pyx_v_c_start_node, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list);
 
           /* "src/lxml/proxy.pxi":353
@@ -15926,6 +16466,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *         # 2) make sure the namespaces of an element and its attributes
  */
+          __Pyx_TraceLine(353,0,__PYX_ERR(4, 353, __pyx_L9_except_error))
           __Pyx_GIVEREF(__pyx_t_7);
           __Pyx_GIVEREF(__pyx_t_8);
           __Pyx_XGIVEREF(__pyx_t_9);
@@ -15966,6 +16507,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         while c_node is not NULL:
  *             if c_node.ns is not NULL:
  */
+    __Pyx_TraceLine(357,0,__PYX_ERR(4, 357, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_element;
 
     /* "src/lxml/proxy.pxi":358
@@ -15975,6 +16517,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             if c_node.ns is not NULL:
  *                 c_ns = NULL
  */
+    __Pyx_TraceLine(358,0,__PYX_ERR(4, 358, __pyx_L1_error))
     while (1) {
       __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_2) break;
@@ -15986,6 +16529,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 c_ns = NULL
  *                 is_prefixed_attr = (c_node.type == tree.XML_ATTRIBUTE_NODE and c_node.ns.prefix)
  */
+      __Pyx_TraceLine(359,0,__PYX_ERR(4, 359, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_node->ns != NULL) != 0);
       if (__pyx_t_2) {
 
@@ -15996,6 +16540,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 is_prefixed_attr = (c_node.type == tree.XML_ATTRIBUTE_NODE and c_node.ns.prefix)
  *                 for i in range(c_ns_cache.last):
  */
+        __Pyx_TraceLine(360,0,__PYX_ERR(4, 360, __pyx_L1_error))
         __pyx_v_c_ns = NULL;
 
         /* "src/lxml/proxy.pxi":361
@@ -16005,6 +16550,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 for i in range(c_ns_cache.last):
  *                     if c_node.ns is c_ns_cache.ns_map[i].old:
  */
+        __Pyx_TraceLine(361,0,__PYX_ERR(4, 361, __pyx_L1_error))
         __pyx_t_10 = ((__pyx_v_c_node->type == XML_ATTRIBUTE_NODE) != 0);
         if (__pyx_t_10) {
         } else {
@@ -16023,6 +16569,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                     if c_node.ns is c_ns_cache.ns_map[i].old:
  *                         if is_prefixed_attr and not c_ns_cache.ns_map[i].new.prefix:
  */
+        __Pyx_TraceLine(362,0,__PYX_ERR(4, 362, __pyx_L1_error))
         __pyx_t_11 = __pyx_v_c_ns_cache.last;
         __pyx_t_12 = __pyx_t_11;
         for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
@@ -16035,6 +16582,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         if is_prefixed_attr and not c_ns_cache.ns_map[i].new.prefix:
  *                             # avoid dropping prefix from attributes
  */
+          __Pyx_TraceLine(363,0,__PYX_ERR(4, 363, __pyx_L1_error))
           __pyx_t_2 = ((__pyx_v_c_node->ns == (__pyx_v_c_ns_cache.ns_map[__pyx_v_i]).old) != 0);
           if (__pyx_t_2) {
 
@@ -16045,6 +16593,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                             # avoid dropping prefix from attributes
  *                             continue
  */
+            __Pyx_TraceLine(364,0,__PYX_ERR(4, 364, __pyx_L1_error))
             __pyx_t_10 = (__pyx_v_is_prefixed_attr != 0);
             if (__pyx_t_10) {
             } else {
@@ -16063,6 +16612,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         c_ns = c_ns_cache.ns_map[i].new
  *                         break
  */
+              __Pyx_TraceLine(366,0,__PYX_ERR(4, 366, __pyx_L1_error))
               goto __pyx_L20_continue;
 
               /* "src/lxml/proxy.pxi":364
@@ -16081,6 +16631,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         break
  * 
  */
+            __Pyx_TraceLine(367,0,__PYX_ERR(4, 367, __pyx_L1_error))
             __pyx_t_14 = (__pyx_v_c_ns_cache.ns_map[__pyx_v_i]).new;
             __pyx_v_c_ns = __pyx_t_14;
 
@@ -16091,6 +16642,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *                 if c_ns:
  */
+            __Pyx_TraceLine(368,0,__PYX_ERR(4, 368, __pyx_L1_error))
             goto __pyx_L21_break;
 
             /* "src/lxml/proxy.pxi":363
@@ -16112,6 +16664,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                     c_node.ns = c_ns
  *                 else:
  */
+        __Pyx_TraceLine(370,0,__PYX_ERR(4, 370, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_c_ns != 0);
         if (__pyx_t_2) {
 
@@ -16122,6 +16675,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 else:
  *                     # not in cache or not acceptable
  */
+          __Pyx_TraceLine(371,0,__PYX_ERR(4, 371, __pyx_L1_error))
           __pyx_v_c_node->ns = __pyx_v_c_ns;
 
           /* "src/lxml/proxy.pxi":370
@@ -16141,6 +16695,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         c_ns = doc._findOrBuildNodeNs(
  *                             c_start_node, c_node.ns.href, c_node.ns.prefix,
  */
+        __Pyx_TraceLine(375,0,__PYX_ERR(4, 375, __pyx_L1_error))
         /*else*/ {
           {
             __Pyx_PyThreadState_declare
@@ -16158,6 +16713,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                             c_start_node, c_node.ns.href, c_node.ns.prefix,
  *                             c_node.type == tree.XML_ATTRIBUTE_NODE)
  */
+              __Pyx_TraceLine(376,0,__PYX_ERR(4, 376, __pyx_L27_error))
               __pyx_t_14 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_node->ns->href, __pyx_v_c_node->ns->prefix, (__pyx_v_c_node->type == XML_ATTRIBUTE_NODE)); if (unlikely(__pyx_t_14 == ((xmlNs *)NULL))) __PYX_ERR(4, 376, __pyx_L27_error)
               __pyx_v_c_ns = __pyx_t_14;
 
@@ -16168,6 +16724,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         _appendToNsCache(&c_ns_cache, c_node.ns, c_ns)
  *                     except:
  */
+              __Pyx_TraceLine(379,0,__PYX_ERR(4, 379, __pyx_L27_error))
               __pyx_v_c_node->ns = __pyx_v_c_ns;
 
               /* "src/lxml/proxy.pxi":380
@@ -16177,6 +16734,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                     except:
  *                         _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  */
+              __Pyx_TraceLine(380,0,__PYX_ERR(4, 380, __pyx_L27_error))
               __pyx_t_6 = __pyx_f_4lxml_5etree__appendToNsCache((&__pyx_v_c_ns_cache), __pyx_v_c_node->ns, __pyx_v_c_ns); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 380, __pyx_L27_error)
 
               /* "src/lxml/proxy.pxi":375
@@ -16203,6 +16761,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  *                         raise
  */
+            __Pyx_TraceLine(381,0,__PYX_ERR(4, 381, __pyx_L29_except_error))
             /*except:*/ {
               __Pyx_AddTraceback("lxml.etree.moveNodeToDocument", __pyx_clineno, __pyx_lineno, __pyx_filename);
               if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7) < 0) __PYX_ERR(4, 381, __pyx_L29_except_error)
@@ -16217,6 +16776,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                         raise
  * 
  */
+              __Pyx_TraceLine(382,0,__PYX_ERR(4, 382, __pyx_L29_except_error))
               __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(__pyx_v_c_start_node, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list);
 
               /* "src/lxml/proxy.pxi":383
@@ -16226,6 +16786,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *             if c_node is c_element:
  */
+              __Pyx_TraceLine(383,0,__PYX_ERR(4, 383, __pyx_L29_except_error))
               __Pyx_GIVEREF(__pyx_t_9);
               __Pyx_GIVEREF(__pyx_t_8);
               __Pyx_XGIVEREF(__pyx_t_7);
@@ -16268,6 +16829,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 # after the element, continue with its attributes
  *                 c_node = <xmlNode*>c_element.properties
  */
+      __Pyx_TraceLine(385,0,__PYX_ERR(4, 385, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_node == __pyx_v_c_element) != 0);
       if (__pyx_t_2) {
 
@@ -16278,6 +16840,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             else:
  *                 c_node = c_node.next
  */
+        __Pyx_TraceLine(387,0,__PYX_ERR(4, 387, __pyx_L1_error))
         __pyx_v_c_node = ((xmlNode *)__pyx_v_c_element->properties);
 
         /* "src/lxml/proxy.pxi":385
@@ -16297,6 +16860,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     tree.END_FOR_EACH_FROM(c_element)
  * 
  */
+      __Pyx_TraceLine(389,0,__PYX_ERR(4, 389, __pyx_L1_error))
       /*else*/ {
         __pyx_t_15 = __pyx_v_c_node->next;
         __pyx_v_c_node = __pyx_t_15;
@@ -16320,6 +16884,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     # free now unused namespace declarations
  */
+  __Pyx_TraceLine(390,0,__PYX_ERR(4, 390, __pyx_L1_error))
   END_FOR_EACH_FROM(__pyx_v_c_element);
 
   /* "src/lxml/proxy.pxi":393
@@ -16329,6 +16894,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         tree.xmlFreeNsList(c_del_ns_list)
  * 
  */
+  __Pyx_TraceLine(393,0,__PYX_ERR(4, 393, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_del_ns_list != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -16339,6 +16905,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     # cleanup
  */
+    __Pyx_TraceLine(394,0,__PYX_ERR(4, 394, __pyx_L1_error))
     xmlFreeNsList(__pyx_v_c_del_ns_list);
 
     /* "src/lxml/proxy.pxi":393
@@ -16357,6 +16924,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         python.lxml_free(c_ns_cache.ns_map)
  * 
  */
+  __Pyx_TraceLine(397,0,__PYX_ERR(4, 397, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ns_cache.ns_map != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -16367,6 +16935,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     # 3) fix the names in the tree if we moved it from a different thread
  */
+    __Pyx_TraceLine(398,0,__PYX_ERR(4, 398, __pyx_L1_error))
     lxml_free(__pyx_v_c_ns_cache.ns_map);
 
     /* "src/lxml/proxy.pxi":397
@@ -16385,6 +16954,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         fixThreadDictNames(c_start_node, c_source_doc.dict, doc._c_doc.dict)
  * 
  */
+  __Pyx_TraceLine(401,0,__PYX_ERR(4, 401, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_doc->_c_doc->dict != __pyx_v_c_source_doc->dict) != 0);
   if (__pyx_t_2) {
 
@@ -16395,6 +16965,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     # 4) fix _Document references
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(4, 402, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictNames(__pyx_v_c_start_node, __pyx_v_c_source_doc->dict, __pyx_v_doc->_c_doc->dict);
 
     /* "src/lxml/proxy.pxi":401
@@ -16413,6 +16984,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         if proxy_count == 1 and c_start_node._private is not NULL:
  *             proxy = getProxy(c_start_node)
  */
+  __Pyx_TraceLine(406,0,__PYX_ERR(4, 406, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_proxy_count > 0) != 0);
   if (__pyx_t_2) {
 
@@ -16423,6 +16995,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:
  */
+    __Pyx_TraceLine(407,0,__PYX_ERR(4, 407, __pyx_L1_error))
     __pyx_t_10 = ((__pyx_v_proxy_count == 1) != 0);
     if (__pyx_t_10) {
     } else {
@@ -16441,6 +17014,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             if proxy is not None:
  *                 if proxy._doc is not doc:
  */
+      __Pyx_TraceLine(408,0,__PYX_ERR(4, 408, __pyx_L1_error))
       __pyx_t_7 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_start_node)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 408, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_v_proxy = ((struct LxmlElement *)__pyx_t_7);
@@ -16453,6 +17027,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                 if proxy._doc is not doc:
  *                     proxy._doc = doc
  */
+      __Pyx_TraceLine(409,0,__PYX_ERR(4, 409, __pyx_L1_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_proxy) != Py_None);
       __pyx_t_10 = (__pyx_t_2 != 0);
       if (__pyx_t_10) {
@@ -16464,6 +17039,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *                     proxy._doc = doc
  *             else:
  */
+        __Pyx_TraceLine(410,0,__PYX_ERR(4, 410, __pyx_L1_error))
         __pyx_t_10 = (__pyx_v_proxy->_doc != __pyx_v_doc);
         __pyx_t_2 = (__pyx_t_10 != 0);
         if (__pyx_t_2) {
@@ -16475,6 +17051,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             else:
  *                 fixElementDocument(c_start_node, doc, proxy_count)
  */
+          __Pyx_TraceLine(411,0,__PYX_ERR(4, 411, __pyx_L1_error))
           __Pyx_INCREF(((PyObject *)__pyx_v_doc));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
           __Pyx_GOTREF(__pyx_v_proxy->_doc);
@@ -16507,6 +17084,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *         else:
  *             fixElementDocument(c_start_node, doc, proxy_count)
  */
+      __Pyx_TraceLine(413,0,__PYX_ERR(4, 413, __pyx_L1_error))
       /*else*/ {
         __pyx_f_4lxml_5etree_fixElementDocument(__pyx_v_c_start_node, __pyx_v_doc, __pyx_v_proxy_count);
       }
@@ -16529,6 +17107,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  *     return 0
  */
+    __Pyx_TraceLine(415,0,__PYX_ERR(4, 415, __pyx_L1_error))
     /*else*/ {
       __pyx_f_4lxml_5etree_fixElementDocument(__pyx_v_c_start_node, __pyx_v_doc, __pyx_v_proxy_count);
     }
@@ -16550,6 +17129,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  * 
  * 
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(4, 417, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -16570,6 +17150,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_proxy);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16585,11 +17166,13 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
 static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element, struct LxmlDocument *__pyx_v_doc, size_t __pyx_v_proxy_count) {
   xmlNode *__pyx_v_c_node;
   struct LxmlElement *__pyx_v_proxy = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("fixElementDocument", 0);
+  __Pyx_TraceCall("fixElementDocument", __pyx_f[4], 420, 0, __PYX_ERR(4, 420, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":422
  * cdef void fixElementDocument(xmlNode* c_element, _Document doc,
@@ -16598,6 +17181,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *     cdef _Element proxy = None # init-to-None required due to fake-loop below
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  */
+  __Pyx_TraceLine(422,0,__PYX_ERR(4, 422, __pyx_L1_error))
   __pyx_v_c_node = __pyx_v_c_element;
 
   /* "src/lxml/proxy.pxi":423
@@ -16607,6 +17191,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node._private is not NULL:
  */
+  __Pyx_TraceLine(423,0,__PYX_ERR(4, 423, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_proxy = ((struct LxmlElement *)Py_None);
 
@@ -16617,6 +17202,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *     if c_node._private is not NULL:
  *         proxy = getProxy(c_node)
  */
+  __Pyx_TraceLine(424,0,__PYX_ERR(4, 424, __pyx_L1_error))
   BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);
 
   /* "src/lxml/proxy.pxi":425
@@ -16626,6 +17212,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *         proxy = getProxy(c_node)
  *         if proxy is not None:
  */
+  __Pyx_TraceLine(425,0,__PYX_ERR(4, 425, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->_private != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -16636,6 +17223,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *         if proxy is not None:
  *             if proxy._doc is not doc:
  */
+    __Pyx_TraceLine(426,0,__PYX_ERR(4, 426, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_proxy, ((struct LxmlElement *)__pyx_t_2));
@@ -16648,6 +17236,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *             if proxy._doc is not doc:
  *                 proxy._doc = doc
  */
+    __Pyx_TraceLine(427,0,__PYX_ERR(4, 427, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_proxy) != Py_None);
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
@@ -16659,6 +17248,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *                 proxy._doc = doc
  *             proxy_count -= 1
  */
+      __Pyx_TraceLine(428,0,__PYX_ERR(4, 428, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_proxy->_doc != __pyx_v_doc);
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
@@ -16670,6 +17260,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *             proxy_count -= 1
  *             if proxy_count == 0:
  */
+        __Pyx_TraceLine(429,0,__PYX_ERR(4, 429, __pyx_L1_error))
         __Pyx_INCREF(((PyObject *)__pyx_v_doc));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
         __Pyx_GOTREF(__pyx_v_proxy->_doc);
@@ -16692,6 +17283,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *             if proxy_count == 0:
  *                 return
  */
+      __Pyx_TraceLine(430,0,__PYX_ERR(4, 430, __pyx_L1_error))
       __pyx_v_proxy_count = (__pyx_v_proxy_count - 1);
 
       /* "src/lxml/proxy.pxi":431
@@ -16701,6 +17293,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *                 return
  *     tree.END_FOR_EACH_FROM(c_node)
  */
+      __Pyx_TraceLine(431,0,__PYX_ERR(4, 431, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_proxy_count == 0) != 0);
       if (__pyx_t_1) {
 
@@ -16711,6 +17304,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  *     tree.END_FOR_EACH_FROM(c_node)
  * 
  */
+        __Pyx_TraceLine(432,0,__PYX_ERR(4, 432, __pyx_L1_error))
         goto __pyx_L0;
 
         /* "src/lxml/proxy.pxi":431
@@ -16747,6 +17341,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  * 
  * 
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(4, 433, __pyx_L1_error))
   END_FOR_EACH_FROM(__pyx_v_c_node);
 
   /* "src/lxml/proxy.pxi":420
@@ -16764,6 +17359,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
   __Pyx_WriteUnraisable("lxml.etree.fixElementDocument", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_proxy);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -16776,8 +17372,10 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
 
 static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
+  __Pyx_TraceCall("fixThreadDictNames", __pyx_f[4], 436, 1, __PYX_ERR(4, 436, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":443
  *     # this should only be called when the element is based on a
@@ -16786,6 +17384,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:
  *         # may define "xml" namespace
  */
+  __Pyx_TraceLine(443,1,__PYX_ERR(4, 443, __pyx_L1_error))
   switch (__pyx_v_c_element->type) {
     case XML_DOCUMENT_NODE:
 
@@ -16796,6 +17395,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         # may define "xml" namespace
  *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(444,1,__PYX_ERR(4, 444, __pyx_L1_error))
     case XML_HTML_DOCUMENT_NODE:
 
     /* "src/lxml/proxy.pxi":443
@@ -16805,6 +17405,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:
  *         # may define "xml" namespace
  */
+    __Pyx_TraceLine(443,1,__PYX_ERR(4, 443, __pyx_L1_error))
     __pyx_t_1 = 1;
     break;
     default:
@@ -16820,6 +17421,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         if c_element.doc.extSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(446,1,__PYX_ERR(4, 446, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictNsForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":447
@@ -16829,6 +17431,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)
  *         if c_element.doc.intSubset:
  */
+    __Pyx_TraceLine(447,1,__PYX_ERR(4, 447, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_c_element->doc->extSubset != 0);
     if (__pyx_t_1) {
 
@@ -16839,6 +17442,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         if c_element.doc.intSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.intSubset, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(448,1,__PYX_ERR(4, 448, __pyx_L1_error))
       __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(__pyx_v_c_element->doc->extSubset, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":447
@@ -16857,6 +17461,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             fixThreadDictNamesForDtd(c_element.doc.intSubset, c_src_dict, c_dict)
  *         c_element = c_element.children
  */
+    __Pyx_TraceLine(449,1,__PYX_ERR(4, 449, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_c_element->doc->intSubset != 0);
     if (__pyx_t_1) {
 
@@ -16867,6 +17472,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         c_element = c_element.children
  *         while c_element is not NULL:
  */
+      __Pyx_TraceLine(450,1,__PYX_ERR(4, 450, __pyx_L1_error))
       __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(__pyx_v_c_element->doc->intSubset, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":449
@@ -16885,6 +17491,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         while c_element is not NULL:
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(451,1,__PYX_ERR(4, 451, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_element->children;
     __pyx_v_c_element = __pyx_t_2;
 
@@ -16895,6 +17502,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  *             c_element = c_element.next
  */
+    __Pyx_TraceLine(452,1,__PYX_ERR(4, 452, __pyx_L1_error))
     while (1) {
       __pyx_t_1 = ((__pyx_v_c_element != NULL) != 0);
       if (!__pyx_t_1) break;
@@ -16906,6 +17514,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *             c_element = c_element.next
  *     elif tree._isElementOrXInclude(c_element):
  */
+      __Pyx_TraceLine(453,1,__PYX_ERR(4, 453, __pyx_L1_error))
       __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":454
@@ -16915,6 +17524,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *     elif tree._isElementOrXInclude(c_element):
  *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(454,1,__PYX_ERR(4, 454, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_element->next;
       __pyx_v_c_element = __pyx_t_2;
     }
@@ -16936,6 +17546,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  * 
  */
+  __Pyx_TraceLine(455,1,__PYX_ERR(4, 455, __pyx_L1_error))
   __pyx_t_1 = (_isElementOrXInclude(__pyx_v_c_element) != 0);
   if (__pyx_t_1) {
 
@@ -16946,6 +17557,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  * 
  * 
  */
+    __Pyx_TraceLine(456,1,__PYX_ERR(4, 456, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":455
@@ -16967,6 +17579,11 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictNames", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":459
@@ -16979,8 +17596,10 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
 
 static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar **__pyx_v_c_ptr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
   const xmlChar *__pyx_v_c_str;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("_fixThreadDictPtr", __pyx_f[4], 459, 1, __PYX_ERR(4, 459, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":462
  *                                    tree.xmlDict* c_src_dict,
@@ -16989,6 +17608,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  *     if c_str and c_src_dict and tree.xmlDictOwns(c_src_dict, c_str):
  *         # return value can be NULL on memory error, but we don't handle that here
  */
+  __Pyx_TraceLine(462,1,__PYX_ERR(4, 462, __pyx_L1_error))
   __pyx_v_c_str = (__pyx_v_c_ptr[0]);
 
   /* "src/lxml/proxy.pxi":463
@@ -16998,6 +17618,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  *         # return value can be NULL on memory error, but we don't handle that here
  *         c_str = tree.xmlDictLookup(c_dict, c_str, -1)
  */
+  __Pyx_TraceLine(463,1,__PYX_ERR(4, 463, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_str != 0);
   if (__pyx_t_2) {
   } else {
@@ -17022,6 +17643,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  *         if c_str:
  *             c_ptr[0] = c_str
  */
+    __Pyx_TraceLine(465,1,__PYX_ERR(4, 465, __pyx_L1_error))
     __pyx_v_c_str = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_str, -1);
 
     /* "src/lxml/proxy.pxi":466
@@ -17031,6 +17653,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  *             c_ptr[0] = c_str
  * 
  */
+    __Pyx_TraceLine(466,1,__PYX_ERR(4, 466, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_c_str != 0);
     if (__pyx_t_1) {
 
@@ -17041,6 +17664,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  * 
  * 
  */
+      __Pyx_TraceLine(467,1,__PYX_ERR(4, 467, __pyx_L1_error))
       (__pyx_v_c_ptr[0]) = __pyx_v_c_str;
 
       /* "src/lxml/proxy.pxi":466
@@ -17070,6 +17694,11 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._fixThreadDictPtr", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":470
@@ -17082,6 +17711,8 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
 
 static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_element, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
   xmlNode *__pyx_v_c_node;
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("fixThreadDictNamesForNode", __pyx_f[4], 470, 1, __PYX_ERR(4, 470, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":473
  *                                     tree.xmlDict* c_src_dict,
@@ -17090,6 +17721,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node.type in (tree.XML_ELEMENT_NODE, tree.XML_XINCLUDE_START):
  */
+  __Pyx_TraceLine(473,1,__PYX_ERR(4, 473, __pyx_L1_error))
   __pyx_v_c_node = __pyx_v_c_element;
 
   /* "src/lxml/proxy.pxi":474
@@ -17099,6 +17731,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *     if c_node.type in (tree.XML_ELEMENT_NODE, tree.XML_XINCLUDE_START):
  *         fixThreadDictNamesForAttributes(
  */
+  __Pyx_TraceLine(474,1,__PYX_ERR(4, 474, __pyx_L1_error))
   BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);
 
   /* "src/lxml/proxy.pxi":475
@@ -17108,6 +17741,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *         fixThreadDictNamesForAttributes(
  *             c_node.properties, c_src_dict, c_dict)
  */
+  __Pyx_TraceLine(475,1,__PYX_ERR(4, 475, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
     case XML_XINCLUDE_START:
@@ -17119,6 +17753,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *             c_node.properties, c_src_dict, c_dict)
  *         fixThreadDictNsForNode(c_node, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(476,1,__PYX_ERR(4, 476, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(__pyx_v_c_node->properties, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":478
@@ -17128,6 +17763,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *         _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  *     elif c_node.type == tree.XML_TEXT_NODE:
  */
+    __Pyx_TraceLine(478,1,__PYX_ERR(4, 478, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictNsForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":479
@@ -17137,6 +17773,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *     elif c_node.type == tree.XML_TEXT_NODE:
  *         # libxml2's SAX2 parser interns some indentation space
  */
+    __Pyx_TraceLine(479,1,__PYX_ERR(4, 479, __pyx_L1_error))
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_node->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":475
@@ -17155,6 +17792,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *         # libxml2's SAX2 parser interns some indentation space
  *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(480,1,__PYX_ERR(4, 480, __pyx_L1_error))
     case XML_TEXT_NODE:
 
     /* "src/lxml/proxy.pxi":482
@@ -17164,6 +17802,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  *         pass  # don't touch c_node.name
  */
+    __Pyx_TraceLine(482,1,__PYX_ERR(4, 482, __pyx_L1_error))
     __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":480
@@ -17182,6 +17821,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *         pass  # don't touch c_node.name
  *     else:
  */
+    __Pyx_TraceLine(483,1,__PYX_ERR(4, 483, __pyx_L1_error))
     case XML_COMMENT_NODE:
     break;
     default:
@@ -17193,6 +17833,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  *     tree.END_FOR_EACH_FROM(c_node)
  * 
  */
+    __Pyx_TraceLine(486,1,__PYX_ERR(4, 486, __pyx_L1_error))
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_node->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
     break;
   }
@@ -17204,6 +17845,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  * 
  * 
  */
+  __Pyx_TraceLine(487,1,__PYX_ERR(4, 487, __pyx_L1_error))
   END_FOR_EACH_FROM(__pyx_v_c_node);
 
   /* "src/lxml/proxy.pxi":470
@@ -17215,6 +17857,11 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictNamesForNode", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":490
@@ -17228,9 +17875,11 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
 static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(xmlAttr *__pyx_v_c_attr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
   xmlNode *__pyx_v_c_child;
   xmlNode *__pyx_v_c_node;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
+  __Pyx_TraceCall("fixThreadDictNamesForAttributes", __pyx_f[4], 490, 1, __PYX_ERR(4, 490, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":494
  *                                                  tree.xmlDict* c_dict) nogil:
@@ -17239,6 +17888,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *     while c_node is not NULL:
  *         if c_node.type not in (tree.XML_TEXT_NODE, tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(494,1,__PYX_ERR(4, 494, __pyx_L1_error))
   __pyx_v_c_node = ((xmlNode *)__pyx_v_c_attr);
 
   /* "src/lxml/proxy.pxi":495
@@ -17248,6 +17898,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *         if c_node.type not in (tree.XML_TEXT_NODE, tree.XML_COMMENT_NODE):
  *             _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  */
+  __Pyx_TraceLine(495,1,__PYX_ERR(4, 495, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -17259,6 +17910,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *             _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  *         # libxml2 keeps some (!) attribute values in the dict
  */
+    __Pyx_TraceLine(496,1,__PYX_ERR(4, 496, __pyx_L1_error))
     switch (__pyx_v_c_node->type) {
       case XML_TEXT_NODE:
       case XML_COMMENT_NODE:
@@ -17278,6 +17930,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *         # libxml2 keeps some (!) attribute values in the dict
  *         c_child = c_node.children
  */
+      __Pyx_TraceLine(497,1,__PYX_ERR(4, 497, __pyx_L1_error))
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_node->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":496
@@ -17296,6 +17949,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *         while c_child is not NULL:
  *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
  */
+    __Pyx_TraceLine(499,1,__PYX_ERR(4, 499, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_node->children;
     __pyx_v_c_child = __pyx_t_3;
 
@@ -17306,6 +17960,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
  *             c_child = c_child.next
  */
+    __Pyx_TraceLine(500,1,__PYX_ERR(4, 500, __pyx_L1_error))
     while (1) {
       __pyx_t_2 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_2) break;
@@ -17317,6 +17972,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *             c_child = c_child.next
  *         c_node = c_node.next
  */
+      __Pyx_TraceLine(501,1,__PYX_ERR(4, 501, __pyx_L1_error))
       __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_child, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":502
@@ -17326,6 +17982,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  *         c_node = c_node.next
  * 
  */
+      __Pyx_TraceLine(502,1,__PYX_ERR(4, 502, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_c_child->next;
       __pyx_v_c_child = __pyx_t_3;
     }
@@ -17337,6 +17994,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  * 
  * 
  */
+    __Pyx_TraceLine(503,1,__PYX_ERR(4, 503, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_3;
   }
@@ -17350,6 +18008,11 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictNamesForAttributes", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":506
@@ -17361,8 +18024,10 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
 
 static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNode *__pyx_v_c_node, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("fixThreadDictContentForNode", __pyx_f[4], 506, 1, __PYX_ERR(4, 506, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":509
  *                                              tree.xmlDict* c_src_dict,
@@ -17371,6 +18036,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  *            c_node.content is not <xmlChar*>&c_node.properties:
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):
  */
+  __Pyx_TraceLine(509,1,__PYX_ERR(4, 509, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->content != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -17385,6 +18051,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):
  *             # result can be NULL on memory error, but we don't handle that here
  */
+  __Pyx_TraceLine(510,1,__PYX_ERR(4, 510, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->content != ((xmlChar *)(&__pyx_v_c_node->properties))) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L4_bool_binop_done:;
@@ -17396,6 +18063,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  *            c_node.content is not <xmlChar*>&c_node.properties:
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):
  */
+  __Pyx_TraceLine(509,1,__PYX_ERR(4, 509, __pyx_L1_error))
   if (__pyx_t_1) {
 
     /* "src/lxml/proxy.pxi":511
@@ -17405,6 +18073,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  *             # result can be NULL on memory error, but we don't handle that here
  *             c_node.content = <xmlChar*>tree.xmlDictLookup(c_dict, c_node.content, -1)
  */
+    __Pyx_TraceLine(511,1,__PYX_ERR(4, 511, __pyx_L1_error))
     __pyx_t_1 = (xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_node->content) != 0);
     if (__pyx_t_1) {
 
@@ -17415,6 +18084,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  * 
  * 
  */
+      __Pyx_TraceLine(513,1,__PYX_ERR(4, 513, __pyx_L1_error))
       __pyx_v_c_node->content = ((xmlChar *)xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->content, -1));
 
       /* "src/lxml/proxy.pxi":511
@@ -17444,6 +18114,11 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictContentForNode", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":516
@@ -17456,8 +18131,10 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
 
 static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *__pyx_v_c_node, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
   xmlNs *__pyx_v_c_ns;
+  __Pyx_TraceDeclarations
   xmlNs *__pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("fixThreadDictNsForNode", __pyx_f[4], 516, 1, __PYX_ERR(4, 516, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":519
  *                                         tree.xmlDict* c_src_dict,
@@ -17466,6 +18143,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  *     while c_ns is not NULL:
  *         _fixThreadDictPtr(&c_ns.href, c_src_dict, c_dict)
  */
+  __Pyx_TraceLine(519,1,__PYX_ERR(4, 519, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->nsDef;
   __pyx_v_c_ns = __pyx_t_1;
 
@@ -17476,6 +18154,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  *         _fixThreadDictPtr(&c_ns.href, c_src_dict, c_dict)
  *         _fixThreadDictPtr(&c_ns.prefix, c_src_dict, c_dict)
  */
+  __Pyx_TraceLine(520,1,__PYX_ERR(4, 520, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_ns != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -17487,6 +18166,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  *         _fixThreadDictPtr(&c_ns.prefix, c_src_dict, c_dict)
  *         c_ns = c_ns.next
  */
+    __Pyx_TraceLine(521,1,__PYX_ERR(4, 521, __pyx_L1_error))
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_ns->href), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":522
@@ -17496,6 +18176,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  *         c_ns = c_ns.next
  * 
  */
+    __Pyx_TraceLine(522,1,__PYX_ERR(4, 522, __pyx_L1_error))
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_ns->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
     /* "src/lxml/proxy.pxi":523
@@ -17505,6 +18186,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  * 
  * 
  */
+    __Pyx_TraceLine(523,1,__PYX_ERR(4, 523, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_ns->next;
     __pyx_v_c_ns = __pyx_t_1;
   }
@@ -17518,6 +18200,11 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictNsForNode", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":526
@@ -17533,9 +18220,11 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
   xmlElement *__pyx_v_c_element;
   xmlAttribute *__pyx_v_c_attribute;
   xmlEntity *__pyx_v_c_entity;
+  __Pyx_TraceDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   xmlAttribute *__pyx_t_3;
+  __Pyx_TraceCall("fixThreadDictNamesForDtd", __pyx_f[4], 526, 1, __PYX_ERR(4, 526, __pyx_L1_error));
 
   /* "src/lxml/proxy.pxi":534
  *     cdef tree.xmlEntity* c_entity
@@ -17544,6 +18233,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *     while c_node:
  *         if c_node.type == tree.XML_ELEMENT_DECL:
  */
+  __Pyx_TraceLine(534,1,__PYX_ERR(4, 534, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_dtd->children;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -17554,6 +18244,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *         if c_node.type == tree.XML_ELEMENT_DECL:
  *             c_element = <tree.xmlElement*>c_node
  */
+  __Pyx_TraceLine(535,1,__PYX_ERR(4, 535, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = (__pyx_v_c_node != 0);
     if (!__pyx_t_2) break;
@@ -17565,6 +18256,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             c_element = <tree.xmlElement*>c_node
  *             if c_element.content:
  */
+    __Pyx_TraceLine(536,1,__PYX_ERR(4, 536, __pyx_L1_error))
     switch (__pyx_v_c_node->type) {
       case XML_ELEMENT_DECL:
 
@@ -17575,6 +18267,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             if c_element.content:
  *                 _fixThreadDictPtr(&c_element.content.name, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(537,1,__PYX_ERR(4, 537, __pyx_L1_error))
       __pyx_v_c_element = ((xmlElement *)__pyx_v_c_node);
 
       /* "src/lxml/proxy.pxi":538
@@ -17584,6 +18277,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_element.content.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_element.content.prefix, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(538,1,__PYX_ERR(4, 538, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_c_element->content != 0);
       if (__pyx_t_2) {
 
@@ -17594,6 +18288,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_element.content.prefix, c_src_dict, c_dict)
  *             c_attribute = c_element.attributes
  */
+        __Pyx_TraceLine(539,1,__PYX_ERR(4, 539, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_element->content->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":540
@@ -17603,6 +18298,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             c_attribute = c_element.attributes
  *             while c_attribute:
  */
+        __Pyx_TraceLine(540,1,__PYX_ERR(4, 540, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_element->content->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":538
@@ -17621,6 +18317,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             while c_attribute:
  *                 _fixThreadDictPtr(&c_attribute.defaultValue, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(541,1,__PYX_ERR(4, 541, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_c_element->attributes;
       __pyx_v_c_attribute = __pyx_t_3;
 
@@ -17631,6 +18328,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_attribute.defaultValue, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.name, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(542,1,__PYX_ERR(4, 542, __pyx_L1_error))
       while (1) {
         __pyx_t_2 = (__pyx_v_c_attribute != 0);
         if (!__pyx_t_2) break;
@@ -17642,6 +18340,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_attribute.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.prefix, c_src_dict, c_dict)
  */
+        __Pyx_TraceLine(543,1,__PYX_ERR(4, 543, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->defaultValue), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":544
@@ -17651,6 +18350,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_attribute.prefix, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.elem, c_src_dict, c_dict)
  */
+        __Pyx_TraceLine(544,1,__PYX_ERR(4, 544, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":545
@@ -17660,6 +18360,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 _fixThreadDictPtr(&c_attribute.elem, c_src_dict, c_dict)
  *                 c_attribute = c_attribute.nexth
  */
+        __Pyx_TraceLine(545,1,__PYX_ERR(4, 545, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":546
@@ -17669,6 +18370,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *                 c_attribute = c_attribute.nexth
  *         elif c_node.type == tree.XML_ENTITY_DECL:
  */
+        __Pyx_TraceLine(546,1,__PYX_ERR(4, 546, __pyx_L1_error))
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->elem), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
         /* "src/lxml/proxy.pxi":547
@@ -17678,6 +18380,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *         elif c_node.type == tree.XML_ENTITY_DECL:
  *             c_entity = <tree.xmlEntity*>c_node
  */
+        __Pyx_TraceLine(547,1,__PYX_ERR(4, 547, __pyx_L1_error))
         __pyx_t_3 = __pyx_v_c_attribute->nexth;
         __pyx_v_c_attribute = __pyx_t_3;
       }
@@ -17698,6 +18401,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             c_entity = <tree.xmlEntity*>c_node
  *             _fixThreadDictPtr(&c_entity.name, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(548,1,__PYX_ERR(4, 548, __pyx_L1_error))
       case XML_ENTITY_DECL:
 
       /* "src/lxml/proxy.pxi":549
@@ -17707,6 +18411,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             _fixThreadDictPtr(&c_entity.name, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.ExternalID, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(549,1,__PYX_ERR(4, 549, __pyx_L1_error))
       __pyx_v_c_entity = ((xmlEntity *)__pyx_v_c_node);
 
       /* "src/lxml/proxy.pxi":550
@@ -17716,6 +18421,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             _fixThreadDictPtr(&c_entity.ExternalID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.SystemID, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(550,1,__PYX_ERR(4, 550, __pyx_L1_error))
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":551
@@ -17725,6 +18431,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             _fixThreadDictPtr(&c_entity.SystemID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(<const_xmlChar**>&c_entity.content, c_src_dict, c_dict)
  */
+      __Pyx_TraceLine(551,1,__PYX_ERR(4, 551, __pyx_L1_error))
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->ExternalID), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":552
@@ -17734,6 +18441,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *             _fixThreadDictPtr(<const_xmlChar**>&c_entity.content, c_src_dict, c_dict)
  *         c_node = c_node.next
  */
+      __Pyx_TraceLine(552,1,__PYX_ERR(4, 552, __pyx_L1_error))
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->SystemID), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":553
@@ -17743,6 +18451,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  *         c_node = c_node.next
  * 
  */
+      __Pyx_TraceLine(553,1,__PYX_ERR(4, 553, __pyx_L1_error))
       __pyx_f_4lxml_5etree__fixThreadDictPtr(((const xmlChar **)(&__pyx_v_c_entity->content)), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
       /* "src/lxml/proxy.pxi":548
@@ -17763,6 +18472,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  * 
  * 
  */
+    __Pyx_TraceLine(554,1,__PYX_ERR(4, 554, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_1;
   }
@@ -17776,6 +18486,11 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.fixThreadDictNamesForDtd", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/proxy.pxi":560
@@ -17792,6 +18507,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   xmlElementType __pyx_v_doc_type;
   xmlNode *__pyx_v_c_node;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -17799,6 +18515,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   xmlElementType __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_adoptForeignDoc", 0);
+  __Pyx_TraceCall("_adoptForeignDoc", __pyx_f[4], 560, 0, __PYX_ERR(4, 560, __pyx_L1_error));
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
       __pyx_v_parser = __pyx_optional_args->parser;
@@ -17815,6 +18532,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         raise ValueError("Illegal document provided: NULL")
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  */
+  __Pyx_TraceLine(565,0,__PYX_ERR(4, 565, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -17825,7 +18543,8 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 566, __pyx_L1_error)
+    __Pyx_TraceLine(566,0,__PYX_ERR(4, 566, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 566, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17847,6 +18566,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         doc_type = c_doc.type
  *         if is_owned:
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(4, 567, __pyx_L1_error))
   switch (__pyx_v_c_doc->type) {
     case XML_DOCUMENT_NODE:
     case XML_HTML_DOCUMENT_NODE:
@@ -17866,6 +18586,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         if is_owned:
  *             tree.xmlFreeDoc(c_doc)
  */
+    __Pyx_TraceLine(568,0,__PYX_ERR(4, 568, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_doc->type;
     __pyx_v_doc_type = __pyx_t_4;
 
@@ -17876,6 +18597,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *             tree.xmlFreeDoc(c_doc)
  *         raise ValueError(f"Illegal document provided: expected XML or HTML, found {doc_type}")
  */
+    __Pyx_TraceLine(569,0,__PYX_ERR(4, 569, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_is_owned != 0);
     if (__pyx_t_3) {
 
@@ -17886,6 +18608,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         raise ValueError(f"Illegal document provided: expected XML or HTML, found {doc_type}")
  * 
  */
+      __Pyx_TraceLine(570,0,__PYX_ERR(4, 570, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_c_doc);
 
       /* "src/lxml/proxy.pxi":569
@@ -17904,6 +18627,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  * 
  *     cdef xmlNode* c_node = <xmlNode*>c_doc
  */
+    __Pyx_TraceLine(571,0,__PYX_ERR(4, 571, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_doc_type, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 571, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Illegal_document_provided_expect, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 571, __pyx_L1_error)
@@ -17932,6 +18656,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  * 
  *     if is_owned:
  */
+  __Pyx_TraceLine(573,0,__PYX_ERR(4, 573, __pyx_L1_error))
   __pyx_v_c_node = ((xmlNode *)__pyx_v_c_doc);
 
   /* "src/lxml/proxy.pxi":575
@@ -17941,6 +18666,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         tree.BEGIN_FOR_EACH_FROM(<xmlNode*>c_doc, c_node, 1)
  *         c_node._private = NULL
  */
+  __Pyx_TraceLine(575,0,__PYX_ERR(4, 575, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_is_owned != 0);
   if (__pyx_t_3) {
 
@@ -17951,6 +18677,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         c_node._private = NULL
  *         tree.END_FOR_EACH_FROM(c_node)
  */
+    __Pyx_TraceLine(576,0,__PYX_ERR(4, 576, __pyx_L1_error))
     BEGIN_FOR_EACH_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
     /* "src/lxml/proxy.pxi":577
@@ -17960,6 +18687,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         tree.END_FOR_EACH_FROM(c_node)
  *     else:
  */
+    __Pyx_TraceLine(577,0,__PYX_ERR(4, 577, __pyx_L1_error))
     __pyx_v_c_node->_private = NULL;
 
     /* "src/lxml/proxy.pxi":578
@@ -17969,6 +18697,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *     else:
  *         # create a fresh copy that lxml owns
  */
+    __Pyx_TraceLine(578,0,__PYX_ERR(4, 578, __pyx_L1_error))
     END_FOR_EACH_FROM(__pyx_v_c_node);
 
     /* "src/lxml/proxy.pxi":575
@@ -17988,6 +18717,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *         if c_doc is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(581,0,__PYX_ERR(4, 581, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_doc = xmlCopyDoc(__pyx_v_c_doc, 1);
 
@@ -17998,6 +18728,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  *             raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(582,0,__PYX_ERR(4, 582, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_doc == NULL) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -18008,6 +18739,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  * 
  *     return _documentFactory(c_doc, parser)
  */
+      __Pyx_TraceLine(583,0,__PYX_ERR(4, 583, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(4, 583, __pyx_L1_error)
 
       /* "src/lxml/proxy.pxi":582
@@ -18026,6 +18758,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  * 
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(585,0,__PYX_ERR(4, 585, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 585, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -18049,6 +18782,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18063,6 +18797,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
 
 static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_indent) {
   xmlNode *__pyx_v_c_child;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -18076,6 +18811,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("displayNode", 0);
+  __Pyx_TraceCall("displayNode", __pyx_f[5], 6, 0, __PYX_ERR(5, 6, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":9
  *     # to help with debugging
@@ -18084,6 +18820,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *         print indent * u' ', <long>c_node
  *         c_child = c_node.children
  */
+  __Pyx_TraceLine(9,0,__PYX_ERR(5, 9, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/apihelpers.pxi":10
@@ -18093,7 +18830,8 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *         c_child = c_node.children
  *         while c_child is not NULL:
  */
-    __pyx_t_1 = PyNumber_Multiply(__pyx_v_indent, __pyx_kp_u__15); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 10, __pyx_L4_error)
+    __Pyx_TraceLine(10,0,__PYX_ERR(5, 10, __pyx_L4_error))
+    __pyx_t_1 = PyNumber_Multiply(__pyx_v_indent, __pyx_kp_u__22); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 10, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyInt_From_long(((long)__pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 10, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -18115,6 +18853,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *         while c_child is not NULL:
  *             displayNode(c_child, indent + 1)
  */
+    __Pyx_TraceLine(11,0,__PYX_ERR(5, 11, __pyx_L4_error))
     __pyx_t_4 = __pyx_v_c_node->children;
     __pyx_v_c_child = __pyx_t_4;
 
@@ -18125,6 +18864,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *             displayNode(c_child, indent + 1)
  *             c_child = c_child.next
  */
+    __Pyx_TraceLine(12,0,__PYX_ERR(5, 12, __pyx_L4_error))
     while (1) {
       __pyx_t_5 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_5) break;
@@ -18136,6 +18876,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *             c_child = c_child.next
  *     finally:
  */
+      __Pyx_TraceLine(13,0,__PYX_ERR(5, 13, __pyx_L4_error))
       __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_indent, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_f_4lxml_5etree_displayNode(__pyx_v_c_child, __pyx_t_3);
@@ -18148,6 +18889,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  *     finally:
  *         return  # swallow any exceptions
  */
+      __Pyx_TraceLine(14,0,__PYX_ERR(5, 14, __pyx_L4_error))
       __pyx_t_4 = __pyx_v_c_child->next;
       __pyx_v_c_child = __pyx_t_4;
     }
@@ -18160,6 +18902,7 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  * 
  * cdef inline int _assertValidNode(_Element element) except -1:
  */
+  __Pyx_TraceLine(16,0,__PYX_ERR(5, 16, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -18207,7 +18950,13 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("lxml.etree.displayNode", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -18221,10 +18970,12 @@ static void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidNode(struct LxmlElement *__pyx_v_element) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_assertValidNode", 0);
+  __Pyx_TraceCall("_assertValidNode", __pyx_f[5], 18, 0, __PYX_ERR(5, 18, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":19
  * 
@@ -18233,6 +18984,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidNode(struct LxmlElemen
  * 
  * cdef inline int _assertValidDoc(_Document doc) except -1:
  */
+  __Pyx_TraceLine(19,0,__PYX_ERR(5, 19, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_element->_c_node != NULL) != 0))) {
@@ -18265,6 +19017,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidNode(struct LxmlElemen
   __Pyx_AddTraceback("lxml.etree._assertValidNode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18279,10 +19032,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidNode(struct LxmlElemen
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDoc(struct LxmlDocument *__pyx_v_doc) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_assertValidDoc", 0);
+  __Pyx_TraceCall("_assertValidDoc", __pyx_f[5], 21, 0, __PYX_ERR(5, 21, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":22
  * 
@@ -18291,6 +19046,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDoc(struct LxmlDocumen
  * 
  * cdef _Document _documentOrRaise(object input):
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(5, 22, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_doc->_c_doc != NULL) != 0))) {
@@ -18323,6 +19079,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDoc(struct LxmlDocumen
   __Pyx_AddTraceback("lxml.etree._assertValidDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18338,6 +19095,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDoc(struct LxmlDocumen
 static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__pyx_v_input) {
   struct LxmlDocument *__pyx_v_doc = 0;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -18346,6 +19104,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_documentOrRaise", 0);
+  __Pyx_TraceCall("_documentOrRaise", __pyx_f[5], 24, 0, __PYX_ERR(5, 24, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":31
  *     """
@@ -18354,6 +19113,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *         if (<_ElementTree>input)._context_node is not None:
  *             doc = (<_ElementTree>input)._context_node._doc
  */
+  __Pyx_TraceLine(31,0,__PYX_ERR(5, 31, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -18365,6 +19125,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *             doc = (<_ElementTree>input)._context_node._doc
  *         else:
  */
+    __Pyx_TraceLine(32,0,__PYX_ERR(5, 32, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node) != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -18376,6 +19137,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *         else:
  *             doc = None
  */
+      __Pyx_TraceLine(33,0,__PYX_ERR(5, 33, __pyx_L1_error))
       __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node->_doc);
       __Pyx_INCREF(__pyx_t_3);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -18398,6 +19160,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     elif isinstance(input, _Element):
  *         doc = (<_Element>input)._doc
  */
+    __Pyx_TraceLine(35,0,__PYX_ERR(5, 35, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(Py_None);
       __pyx_v_doc = ((struct LxmlDocument *)Py_None);
@@ -18421,6 +19184,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *         doc = (<_Element>input)._doc
  *     elif isinstance(input, _Document):
  */
+  __Pyx_TraceLine(36,0,__PYX_ERR(5, 36, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -18432,6 +19196,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     elif isinstance(input, _Document):
  *         doc = <_Document>input
  */
+    __Pyx_TraceLine(37,0,__PYX_ERR(5, 37, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)((struct LxmlElement *)__pyx_v_input)->_doc);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -18454,6 +19219,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *         doc = <_Document>input
  *     else:
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(5, 38, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__Document); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -18465,6 +19231,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     else:
  *         raise TypeError, f"Invalid input object: {python._fqtypename(input).decode('utf8')}"
  */
+    __Pyx_TraceLine(39,0,__PYX_ERR(5, 39, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_input;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -18487,6 +19254,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     if doc is None:
  *         raise ValueError, f"Input object has no document: {python._fqtypename(input).decode('utf8')}"
  */
+  __Pyx_TraceLine(41,0,__PYX_ERR(5, 41, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = _fqtypename(__pyx_v_input);
     __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 41, __pyx_L1_error)
@@ -18507,6 +19275,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *         raise ValueError, f"Input object has no document: {python._fqtypename(input).decode('utf8')}"
  *     _assertValidDoc(doc)
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(5, 42, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -18518,6 +19287,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     _assertValidDoc(doc)
  *     return doc
  */
+    __Pyx_TraceLine(43,0,__PYX_ERR(5, 43, __pyx_L1_error))
     __pyx_t_4 = _fqtypename(__pyx_v_input);
     __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 43, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -18544,6 +19314,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  *     return doc
  * 
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(5, 44, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(5, 44, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":45
@@ -18553,6 +19324,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
  * 
  * cdef _Element _rootNodeOrRaise(object input):
  */
+  __Pyx_TraceLine(45,0,__PYX_ERR(5, 45, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_doc));
   __pyx_r = __pyx_v_doc;
@@ -18575,6 +19347,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18590,6 +19363,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__py
 static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx_v_input) {
   struct LxmlElement *__pyx_v_node = 0;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -18599,6 +19373,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
   int __pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_rootNodeOrRaise", 0);
+  __Pyx_TraceCall("_rootNodeOrRaise", __pyx_f[5], 47, 0, __PYX_ERR(5, 47, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":54
  *      """
@@ -18607,6 +19382,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *         node = (<_ElementTree>input)._context_node
  *     elif isinstance(input, _Element):
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(5, 54, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -18618,6 +19394,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     elif isinstance(input, _Element):
  *         node = <_Element>input
  */
+    __Pyx_TraceLine(55,0,__PYX_ERR(5, 55, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_node = ((struct LxmlElement *)__pyx_t_3);
@@ -18640,6 +19417,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *         node = <_Element>input
  *     elif isinstance(input, _Document):
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(5, 56, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -18651,6 +19429,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     elif isinstance(input, _Document):
  *         node = (<_Document>input).getroot()
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(5, 57, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_input;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_node = ((struct LxmlElement *)__pyx_t_3);
@@ -18673,6 +19452,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *         node = (<_Document>input).getroot()
  *     else:
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(5, 58, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_input, __pyx_ptype_4lxml_5etree__Document); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -18684,6 +19464,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     else:
  *         raise TypeError, f"Invalid input object: {python._fqtypename(input).decode('utf8')}"
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(5, 59, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(((struct LxmlDocument *)__pyx_v_input)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 59, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(5, 59, __pyx_L1_error)
@@ -18707,6 +19488,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     if (node is None or not node._c_node or
  *             node._c_node.type != tree.XML_ELEMENT_NODE):
  */
+  __Pyx_TraceLine(61,0,__PYX_ERR(5, 61, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = _fqtypename(__pyx_v_input);
     __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 61, __pyx_L1_error)
@@ -18727,6 +19509,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *             node._c_node.type != tree.XML_ELEMENT_NODE):
  *         raise ValueError, f"Input object is not an XML element: {python._fqtypename(input).decode('utf8')}"
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(5, 62, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_node) == Py_None);
   __pyx_t_6 = (__pyx_t_1 != 0);
   if (!__pyx_t_6) {
@@ -18748,6 +19531,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *         raise ValueError, f"Input object is not an XML element: {python._fqtypename(input).decode('utf8')}"
  *     _assertValidNode(node)
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(5, 63, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_node->_c_node->type != XML_ELEMENT_NODE) != 0);
   __pyx_t_2 = __pyx_t_6;
   __pyx_L5_bool_binop_done:;
@@ -18759,6 +19543,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *             node._c_node.type != tree.XML_ELEMENT_NODE):
  *         raise ValueError, f"Input object is not an XML element: {python._fqtypename(input).decode('utf8')}"
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(5, 62, __pyx_L1_error))
   if (unlikely(__pyx_t_2)) {
 
     /* "src/lxml/apihelpers.pxi":64
@@ -18768,6 +19553,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     _assertValidNode(node)
  *     return node
  */
+    __Pyx_TraceLine(64,0,__PYX_ERR(5, 64, __pyx_L1_error))
     __pyx_t_4 = _fqtypename(__pyx_v_input);
     __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 64, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -18794,6 +19580,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  *     return node
  * 
  */
+  __Pyx_TraceLine(65,0,__PYX_ERR(5, 65, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(5, 65, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":66
@@ -18803,6 +19590,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
  * 
  * cdef bint _isAncestorOrSame(xmlNode* c_ancestor, xmlNode* c_node):
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(5, 66, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __pyx_r = __pyx_v_node;
@@ -18825,6 +19613,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18839,10 +19628,12 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx
 
 static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_isAncestorOrSame", 0);
+  __Pyx_TraceCall("_isAncestorOrSame", __pyx_f[5], 68, 0, __PYX_ERR(5, 68, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":69
  * 
@@ -18851,6 +19642,7 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  *         if c_node is c_ancestor:
  *             return True
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(5, 69, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (__pyx_v_c_node != 0);
     if (!__pyx_t_1) break;
@@ -18862,6 +19654,7 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  *             return True
  *         c_node = c_node.parent
  */
+    __Pyx_TraceLine(70,0,__PYX_ERR(5, 70, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_node == __pyx_v_c_ancestor) != 0);
     if (__pyx_t_1) {
 
@@ -18872,6 +19665,7 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  *         c_node = c_node.parent
  *     return False
  */
+      __Pyx_TraceLine(71,0,__PYX_ERR(5, 71, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -18891,6 +19685,7 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  *     return False
  * 
  */
+    __Pyx_TraceLine(72,0,__PYX_ERR(5, 72, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->parent;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -18902,6 +19697,7 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  * 
  * cdef _Element _makeElement(tag, xmlDoc* c_doc, _Document doc,
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(5, 73, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -18914,7 +19710,11 @@ static int __pyx_f_4lxml_5etree__isAncestorOrSame(xmlNode *__pyx_v_c_ancestor, x
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._isAncestorOrSame", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18932,6 +19732,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
   PyObject *__pyx_v_ns_utf = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -18946,6 +19747,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_makeElement", 0);
+  __Pyx_TraceCall("_makeElement", __pyx_f[5], 75, 0, __PYX_ERR(5, 75, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_doc);
 
   /* "src/lxml/apihelpers.pxi":93
@@ -18955,6 +19757,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         c_doc = doc._c_doc
  *     ns_utf, name_utf = _getNsTag(tag)
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(5, 93, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -18966,6 +19769,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     ns_utf, name_utf = _getNsTag(tag)
  *     if parser is not None and parser._for_html:
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(5, 94, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_doc->_c_doc;
     __pyx_v_c_doc = __pyx_t_3;
 
@@ -18985,6 +19789,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     if parser is not None and parser._for_html:
  *         _htmlTagValidOrRaise(name_utf)
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(5, 95, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 95, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(__pyx_t_4 != Py_None)) {
@@ -19022,6 +19827,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         _htmlTagValidOrRaise(name_utf)
  *         if c_doc is NULL:
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(5, 96, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) != Py_None);
   __pyx_t_7 = (__pyx_t_1 != 0);
   if (__pyx_t_7) {
@@ -19041,6 +19847,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if c_doc is NULL:
  *             c_doc = _newHTMLDoc()
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(5, 97, __pyx_L1_error))
     __pyx_t_8 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(5, 97, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":98
@@ -19050,6 +19857,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             c_doc = _newHTMLDoc()
  *     else:
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(5, 98, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_doc == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -19060,6 +19868,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     else:
  *         _tagValidOrRaise(name_utf)
  */
+      __Pyx_TraceLine(99,0,__PYX_ERR(5, 99, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree__newHTMLDoc(); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(5, 99, __pyx_L1_error)
       __pyx_v_c_doc = __pyx_t_3;
 
@@ -19089,6 +19898,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if c_doc is NULL:
  *             c_doc = _newXMLDoc()
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(5, 101, __pyx_L1_error))
   /*else*/ {
     __pyx_t_8 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(5, 101, __pyx_L1_error)
 
@@ -19099,6 +19909,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             c_doc = _newXMLDoc()
  *     c_node = _createElement(c_doc, name_utf)
  */
+    __Pyx_TraceLine(102,0,__PYX_ERR(5, 102, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_doc == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -19109,6 +19920,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     c_node = _createElement(c_doc, name_utf)
  *     if c_node is NULL:
  */
+      __Pyx_TraceLine(103,0,__PYX_ERR(5, 103, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(5, 103, __pyx_L1_error)
       __pyx_v_c_doc = __pyx_t_3;
 
@@ -19130,6 +19942,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     if c_node is NULL:
  *         if doc is None and c_doc is not NULL:
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(5, 104, __pyx_L1_error))
   __pyx_t_9 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_9 == ((xmlNode *)NULL))) __PYX_ERR(5, 104, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_9;
 
@@ -19140,6 +19953,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if doc is None and c_doc is not NULL:
  *             tree.xmlFreeDoc(c_doc)
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(5, 105, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -19150,6 +19964,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             tree.xmlFreeDoc(c_doc)
  *         raise MemoryError()
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(5, 106, __pyx_L1_error))
     __pyx_t_7 = (((PyObject *)__pyx_v_doc) == Py_None);
     __pyx_t_1 = (__pyx_t_7 != 0);
     if (__pyx_t_1) {
@@ -19169,6 +19984,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         raise MemoryError()
  *     try:
  */
+      __Pyx_TraceLine(107,0,__PYX_ERR(5, 107, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_c_doc);
 
       /* "src/lxml/apihelpers.pxi":106
@@ -19187,6 +20003,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     try:
  *         if doc is None:
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(5, 108, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(5, 108, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":105
@@ -19205,6 +20022,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if doc is None:
  *             tree.xmlDocSetRootElement(c_doc, c_node)
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(5, 109, __pyx_L13_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -19221,6 +20039,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             tree.xmlDocSetRootElement(c_doc, c_node)
  *             doc = _documentFactory(c_doc, parser)
  */
+      __Pyx_TraceLine(110,0,__PYX_ERR(5, 110, __pyx_L13_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_doc) == Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -19232,6 +20051,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             doc = _documentFactory(c_doc, parser)
  *         if text is not None:
  */
+        __Pyx_TraceLine(111,0,__PYX_ERR(5, 111, __pyx_L13_error))
         (void)(xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_node));
 
         /* "src/lxml/apihelpers.pxi":112
@@ -19241,6 +20061,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if text is not None:
  *             _setNodeText(c_node, text)
  */
+        __Pyx_TraceLine(112,0,__PYX_ERR(5, 112, __pyx_L13_error))
         __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 112, __pyx_L13_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_doc, ((struct LxmlDocument *)__pyx_t_4));
@@ -19262,6 +20083,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             _setNodeText(c_node, text)
  *         if tail is not None:
  */
+      __Pyx_TraceLine(113,0,__PYX_ERR(5, 113, __pyx_L13_error))
       __pyx_t_1 = (__pyx_v_text != Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
@@ -19273,6 +20095,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if tail is not None:
  *             _setTailText(c_node, tail)
  */
+        __Pyx_TraceLine(114,0,__PYX_ERR(5, 114, __pyx_L13_error))
         __pyx_t_8 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(5, 114, __pyx_L13_error)
 
         /* "src/lxml/apihelpers.pxi":113
@@ -19291,6 +20114,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             _setTailText(c_node, tail)
  *         # add namespaces to node if necessary
  */
+      __Pyx_TraceLine(115,0,__PYX_ERR(5, 115, __pyx_L13_error))
       __pyx_t_2 = (__pyx_v_tail != Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -19302,6 +20126,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         # add namespaces to node if necessary
  *         _setNodeNamespaces(c_node, doc, ns_utf, nsmap)
  */
+        __Pyx_TraceLine(116,0,__PYX_ERR(5, 116, __pyx_L13_error))
         __pyx_t_8 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_tail); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(5, 116, __pyx_L13_error)
 
         /* "src/lxml/apihelpers.pxi":115
@@ -19320,6 +20145,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         _initNodeAttributes(c_node, doc, attrib, extra_attrs)
  *         return _elementFactory(doc, c_node)
  */
+      __Pyx_TraceLine(118,0,__PYX_ERR(5, 118, __pyx_L13_error))
       __pyx_t_8 = __pyx_f_4lxml_5etree__setNodeNamespaces(__pyx_v_c_node, __pyx_v_doc, __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(5, 118, __pyx_L13_error)
 
       /* "src/lxml/apihelpers.pxi":119
@@ -19329,6 +20155,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         return _elementFactory(doc, c_node)
  *     except:
  */
+      __Pyx_TraceLine(119,0,__PYX_ERR(5, 119, __pyx_L13_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, __pyx_v_doc, __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 119, __pyx_L13_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19340,6 +20167,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *     except:
  *         # free allocated c_node/c_doc unless Python does it for us
  */
+      __Pyx_TraceLine(120,0,__PYX_ERR(5, 120, __pyx_L13_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 120, __pyx_L13_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -19367,6 +20195,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         # free allocated c_node/c_doc unless Python does it for us
  *         if c_node.doc is not c_doc:
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(5, 121, __pyx_L15_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._makeElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(5, 121, __pyx_L15_except_error)
@@ -19381,6 +20210,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             # node not yet in document => will not be freed by document
  *             if tail is not None:
  */
+      __Pyx_TraceLine(123,0,__PYX_ERR(5, 123, __pyx_L15_except_error))
       __pyx_t_1 = ((__pyx_v_c_node->doc != __pyx_v_c_doc) != 0);
       if (__pyx_t_1) {
 
@@ -19391,6 +20221,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *                 _removeText(c_node.next) # tail
  *             tree.xmlFreeNode(c_node)
  */
+        __Pyx_TraceLine(125,0,__PYX_ERR(5, 125, __pyx_L15_except_error))
         __pyx_t_1 = (__pyx_v_tail != Py_None);
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
@@ -19402,6 +20233,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             tree.xmlFreeNode(c_node)
  *         if doc is None:
  */
+          __Pyx_TraceLine(126,0,__PYX_ERR(5, 126, __pyx_L15_except_error))
           __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
           /* "src/lxml/apihelpers.pxi":125
@@ -19420,6 +20252,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         if doc is None:
  *             # c_doc will not be freed by doc
  */
+        __Pyx_TraceLine(127,0,__PYX_ERR(5, 127, __pyx_L15_except_error))
         xmlFreeNode(__pyx_v_c_node);
 
         /* "src/lxml/apihelpers.pxi":123
@@ -19438,6 +20271,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *             # c_doc will not be freed by doc
  *             tree.xmlFreeDoc(c_doc)
  */
+      __Pyx_TraceLine(128,0,__PYX_ERR(5, 128, __pyx_L15_except_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_doc) == Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -19449,6 +20283,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  *         raise
  * 
  */
+        __Pyx_TraceLine(130,0,__PYX_ERR(5, 130, __pyx_L15_except_error))
         xmlFreeDoc(__pyx_v_c_doc);
 
         /* "src/lxml/apihelpers.pxi":128
@@ -19467,6 +20302,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
  * 
  * cdef int _initNewElement(_Element element, bint is_html, name_utf, ns_utf,
  */
+      __Pyx_TraceLine(131,0,__PYX_ERR(5, 131, __pyx_L15_except_error))
       __Pyx_GIVEREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_6);
       __Pyx_XGIVEREF(__pyx_t_5);
@@ -19516,6 +20352,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_t
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19533,6 +20370,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
   xmlNode *__pyx_v_c_node;
   struct LxmlDocument *__pyx_v_doc = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -19542,6 +20380,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("_initNewElement", 0);
+  __Pyx_TraceCall("_initNewElement", __pyx_f[5], 133, 0, __PYX_ERR(5, 133, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":143
  *     cdef xmlNode* c_node
@@ -19550,6 +20389,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *         _htmlTagValidOrRaise(name_utf)
  *         c_doc = _newHTMLDoc()
  */
+  __Pyx_TraceLine(143,0,__PYX_ERR(5, 143, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_is_html != 0);
   if (__pyx_t_1) {
 
@@ -19560,6 +20400,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *         c_doc = _newHTMLDoc()
  *     else:
  */
+    __Pyx_TraceLine(144,0,__PYX_ERR(5, 144, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 144, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":145
@@ -19569,6 +20410,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     else:
  *         _tagValidOrRaise(name_utf)
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(5, 145, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__newHTMLDoc(); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(5, 145, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_3;
 
@@ -19589,6 +20431,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *         c_doc = _newXMLDoc()
  *     c_node = _createElement(c_doc, name_utf)
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(5, 147, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 147, __pyx_L1_error)
 
@@ -19599,6 +20442,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     c_node = _createElement(c_doc, name_utf)
  *     if c_node is NULL:
  */
+    __Pyx_TraceLine(148,0,__PYX_ERR(5, 148, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(5, 148, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_3;
   }
@@ -19611,6 +20455,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     if c_node is NULL:
  *         if c_doc is not NULL:
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(5, 149, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_4 == ((xmlNode *)NULL))) __PYX_ERR(5, 149, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_4;
 
@@ -19621,6 +20466,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *         if c_doc is not NULL:
  *             tree.xmlFreeDoc(c_doc)
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(5, 150, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -19631,6 +20477,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *             tree.xmlFreeDoc(c_doc)
  *         raise MemoryError()
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(5, 151, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_doc != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -19641,6 +20488,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(c_doc, c_node)
  */
+      __Pyx_TraceLine(152,0,__PYX_ERR(5, 152, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_c_doc);
 
       /* "src/lxml/apihelpers.pxi":151
@@ -19659,6 +20507,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     tree.xmlDocSetRootElement(c_doc, c_node)
  *     doc = _documentFactory(c_doc, parser)
  */
+    __Pyx_TraceLine(153,0,__PYX_ERR(5, 153, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(5, 153, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":150
@@ -19677,6 +20526,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     doc = _documentFactory(c_doc, parser)
  *     # add namespaces to node if necessary
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(5, 154, __pyx_L1_error))
   (void)(xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_node));
 
   /* "src/lxml/apihelpers.pxi":155
@@ -19686,6 +20536,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     # add namespaces to node if necessary
  *     _setNodeNamespaces(c_node, doc, ns_utf, nsmap)
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(5, 155, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_5);
@@ -19698,6 +20549,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     _initNodeAttributes(c_node, doc, attrib, extra_attrs)
  *     _registerProxy(element, doc, c_node)
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(5, 157, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__setNodeNamespaces(__pyx_v_c_node, __pyx_v_doc, __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 157, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":158
@@ -19707,6 +20559,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     _registerProxy(element, doc, c_node)
  *     element._init()
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(5, 158, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, __pyx_v_doc, __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 158, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -19718,6 +20571,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     element._init()
  *     return 0
  */
+  __Pyx_TraceLine(159,0,__PYX_ERR(5, 159, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__registerProxy(__pyx_v_element, __pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 159, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":160
@@ -19727,6 +20581,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  *     return 0
  * 
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(5, 160, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_init_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
@@ -19756,6 +20611,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
  * 
  * cdef _Element _makeSubElement(_Element parent, tag, text, tail,
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(5, 161, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -19776,6 +20632,7 @@ static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_elem
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19794,6 +20651,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
   PyObject *__pyx_v_ns_utf = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -19809,6 +20667,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_makeSubElement", 0);
+  __Pyx_TraceCall("_makeSubElement", __pyx_f[5], 163, 0, __PYX_ERR(5, 163, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":170
  *     cdef xmlNode* c_node
@@ -19817,6 +20676,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         return None
  *     _assertValidNode(parent)
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(5, 170, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_parent) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -19837,6 +20697,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     _assertValidNode(parent)
  *     ns_utf, name_utf = _getNsTag(tag)
  */
+    __Pyx_TraceLine(171,0,__PYX_ERR(5, 171, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -19857,6 +20718,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     ns_utf, name_utf = _getNsTag(tag)
  *     c_doc = parent._doc._c_doc
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(5, 172, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_parent); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 172, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":173
@@ -19866,6 +20728,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     c_doc = parent._doc._c_doc
  * 
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(5, 173, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   if (likely(__pyx_t_5 != Py_None)) {
@@ -19903,6 +20766,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  * 
  *     if parent._doc._parser is not None and parent._doc._parser._for_html:
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(5, 174, __pyx_L1_error))
   __pyx_t_8 = __pyx_v_parent->_doc->_c_doc;
   __pyx_v_c_doc = __pyx_t_8;
 
@@ -19913,6 +20777,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         _htmlTagValidOrRaise(name_utf)
  *     else:
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(5, 176, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_parent->_doc->_parser) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -19932,6 +20797,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     else:
  *         _tagValidOrRaise(name_utf)
  */
+    __Pyx_TraceLine(177,0,__PYX_ERR(5, 177, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 177, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":176
@@ -19951,6 +20817,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  * 
  *     c_node = _createElement(c_doc, name_utf)
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(5, 179, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 179, __pyx_L1_error)
   }
@@ -19963,6 +20830,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     if c_node is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(181,0,__PYX_ERR(5, 181, __pyx_L1_error))
   __pyx_t_9 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_9 == ((xmlNode *)NULL))) __PYX_ERR(5, 181, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_9;
 
@@ -19973,6 +20841,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         raise MemoryError()
  *     tree.xmlAddChild(parent._c_node, c_node)
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(5, 182, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -19983,6 +20852,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     tree.xmlAddChild(parent._c_node, c_node)
  * 
  */
+    __Pyx_TraceLine(183,0,__PYX_ERR(5, 183, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(5, 183, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":182
@@ -20001,6 +20871,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  * 
  *     try:
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(5, 184, __pyx_L1_error))
   (void)(xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node));
 
   /* "src/lxml/apihelpers.pxi":186
@@ -20010,6 +20881,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         if text is not None:
  *             _setNodeText(c_node, text)
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(5, 186, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -20026,6 +20898,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *             _setNodeText(c_node, text)
  *         if tail is not None:
  */
+      __Pyx_TraceLine(187,0,__PYX_ERR(5, 187, __pyx_L10_error))
       __pyx_t_1 = (__pyx_v_text != Py_None);
       __pyx_t_3 = (__pyx_t_1 != 0);
       if (__pyx_t_3) {
@@ -20037,6 +20910,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         if tail is not None:
  *             _setTailText(c_node, tail)
  */
+        __Pyx_TraceLine(188,0,__PYX_ERR(5, 188, __pyx_L10_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 188, __pyx_L10_error)
 
         /* "src/lxml/apihelpers.pxi":187
@@ -20055,6 +20929,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *             _setTailText(c_node, tail)
  * 
  */
+      __Pyx_TraceLine(189,0,__PYX_ERR(5, 189, __pyx_L10_error))
       __pyx_t_3 = (__pyx_v_tail != Py_None);
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
@@ -20066,6 +20941,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  * 
  *         # add namespaces to node if necessary
  */
+        __Pyx_TraceLine(190,0,__PYX_ERR(5, 190, __pyx_L10_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_tail); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 190, __pyx_L10_error)
 
         /* "src/lxml/apihelpers.pxi":189
@@ -20084,6 +20960,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs)
  *         return _elementFactory(parent._doc, c_node)
  */
+      __Pyx_TraceLine(193,0,__PYX_ERR(5, 193, __pyx_L10_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_t_4 = __pyx_f_4lxml_5etree__setNodeNamespaces(__pyx_v_c_node, ((struct LxmlDocument *)__pyx_t_5), __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 193, __pyx_L10_error)
@@ -20096,6 +20973,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         return _elementFactory(parent._doc, c_node)
  *     except:
  */
+      __Pyx_TraceLine(194,0,__PYX_ERR(5, 194, __pyx_L10_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_t_7 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, ((struct LxmlDocument *)__pyx_t_5), __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 194, __pyx_L10_error)
@@ -20110,6 +20988,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *     except:
  *         # make sure we clean up in case of an error
  */
+      __Pyx_TraceLine(195,0,__PYX_ERR(5, 195, __pyx_L10_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __pyx_t_7 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_7);
@@ -20140,6 +21019,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         # make sure we clean up in case of an error
  *         _removeNode(parent._doc, c_node)
  */
+    __Pyx_TraceLine(196,0,__PYX_ERR(5, 196, __pyx_L12_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._makeSubElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(5, 196, __pyx_L12_except_error)
@@ -20154,6 +21034,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  *         raise
  * 
  */
+      __Pyx_TraceLine(198,0,__PYX_ERR(5, 198, __pyx_L12_except_error))
       __pyx_t_13 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_13);
       __pyx_t_4 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_13), __pyx_v_c_node); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 198, __pyx_L12_except_error)
@@ -20166,6 +21047,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
  * 
  * 
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(5, 199, __pyx_L12_except_error))
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_7);
       __Pyx_XGIVEREF(__pyx_t_6);
@@ -20215,6 +21097,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlEleme
   __Pyx_XDECREF(__pyx_v_ns_utf);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20236,6 +21119,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
   PyObject *__pyx_v_prefix_utf = NULL;
   const xmlChar *__pyx_v_c_prefix;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -20249,6 +21133,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
   int __pyx_t_10;
   int __pyx_t_11;
   __Pyx_RefNannySetupContext("_setNodeNamespaces", 0);
+  __Pyx_TraceCall("_setNodeNamespaces", __pyx_f[5], 202, 0, __PYX_ERR(5, 202, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_node_ns_utf);
 
   /* "src/lxml/apihelpers.pxi":212
@@ -20258,6 +21143,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *         for prefix, href in _iter_nsmap(nsmap):
  *             href_utf = _utf8(href)
  */
+  __Pyx_TraceLine(212,0,__PYX_ERR(5, 212, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 212, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -20268,6 +21154,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             href_utf = _utf8(href)
  *             _uriValidOrRaise(href_utf)
  */
+    __Pyx_TraceLine(213,0,__PYX_ERR(5, 213, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__iter_nsmap(__pyx_v_nsmap); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 213, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
@@ -20368,6 +21255,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             _uriValidOrRaise(href_utf)
  *             c_href = _xcstr(href_utf)
  */
+      __Pyx_TraceLine(214,0,__PYX_ERR(5, 214, __pyx_L1_error))
       __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_href); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 214, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_XDECREF_SET(__pyx_v_href_utf, ((PyObject*)__pyx_t_2));
@@ -20380,6 +21268,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             c_href = _xcstr(href_utf)
  *             if prefix is not None:
  */
+      __Pyx_TraceLine(215,0,__PYX_ERR(5, 215, __pyx_L1_error))
       __pyx_t_10 = __pyx_f_4lxml_5etree__uriValidOrRaise(__pyx_v_href_utf); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(5, 215, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":216
@@ -20389,6 +21278,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             if prefix is not None:
  *                 prefix_utf = _utf8(prefix)
  */
+      __Pyx_TraceLine(216,0,__PYX_ERR(5, 216, __pyx_L1_error))
       __pyx_v_c_href = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_href_utf);
 
       /* "src/lxml/apihelpers.pxi":217
@@ -20398,6 +21288,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 prefix_utf = _utf8(prefix)
  *                 _prefixValidOrRaise(prefix_utf)
  */
+      __Pyx_TraceLine(217,0,__PYX_ERR(5, 217, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_prefix != Py_None);
       __pyx_t_11 = (__pyx_t_1 != 0);
       if (__pyx_t_11) {
@@ -20409,6 +21300,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 _prefixValidOrRaise(prefix_utf)
  *                 c_prefix = _xcstr(prefix_utf)
  */
+        __Pyx_TraceLine(218,0,__PYX_ERR(5, 218, __pyx_L1_error))
         __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 218, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_XDECREF_SET(__pyx_v_prefix_utf, ((PyObject*)__pyx_t_2));
@@ -20421,6 +21313,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 c_prefix = _xcstr(prefix_utf)
  *             else:
  */
+        __Pyx_TraceLine(219,0,__PYX_ERR(5, 219, __pyx_L1_error))
         __pyx_t_10 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix_utf); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(5, 219, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":220
@@ -20430,6 +21323,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             else:
  *                 c_prefix = <const_xmlChar*>NULL
  */
+        __Pyx_TraceLine(220,0,__PYX_ERR(5, 220, __pyx_L1_error))
         __pyx_v_c_prefix = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf);
 
         /* "src/lxml/apihelpers.pxi":217
@@ -20449,6 +21343,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             # add namespace with prefix if it is not already known
  *             c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix)
  */
+      __Pyx_TraceLine(222,0,__PYX_ERR(5, 222, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_prefix = ((const xmlChar *)NULL);
       }
@@ -20461,6 +21356,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             if c_ns is NULL or \
  *                     c_ns.href is NULL or \
  */
+      __Pyx_TraceLine(224,0,__PYX_ERR(5, 224, __pyx_L1_error))
       __pyx_v_c_ns = xmlSearchNs(__pyx_v_doc->_c_doc, __pyx_v_c_node, __pyx_v_c_prefix);
 
       /* "src/lxml/apihelpers.pxi":225
@@ -20470,6 +21366,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                     c_ns.href is NULL or \
  *                     tree.xmlStrcmp(c_ns.href, c_href) != 0:
  */
+      __Pyx_TraceLine(225,0,__PYX_ERR(5, 225, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_ns == NULL) != 0);
       if (!__pyx_t_1) {
       } else {
@@ -20484,6 +21381,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                     tree.xmlStrcmp(c_ns.href, c_href) != 0:
  *                 c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
  */
+      __Pyx_TraceLine(226,0,__PYX_ERR(5, 226, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_ns->href == NULL) != 0);
       if (!__pyx_t_1) {
       } else {
@@ -20498,6 +21396,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
  *             if href_utf == node_ns_utf:
  */
+      __Pyx_TraceLine(227,0,__PYX_ERR(5, 227, __pyx_L1_error))
       __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_ns->href, __pyx_v_c_href) != 0) != 0);
       __pyx_t_11 = __pyx_t_1;
       __pyx_L10_bool_binop_done:;
@@ -20509,6 +21408,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                     c_ns.href is NULL or \
  *                     tree.xmlStrcmp(c_ns.href, c_href) != 0:
  */
+      __Pyx_TraceLine(225,0,__PYX_ERR(5, 225, __pyx_L1_error))
       if (__pyx_t_11) {
 
         /* "src/lxml/apihelpers.pxi":228
@@ -20518,6 +21418,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             if href_utf == node_ns_utf:
  *                 tree.xmlSetNs(c_node, c_ns)
  */
+        __Pyx_TraceLine(228,0,__PYX_ERR(5, 228, __pyx_L1_error))
         __pyx_v_c_ns = xmlNewNs(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_prefix);
 
         /* "src/lxml/apihelpers.pxi":225
@@ -20536,6 +21437,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 tree.xmlSetNs(c_node, c_ns)
  *                 node_ns_utf = None
  */
+      __Pyx_TraceLine(229,0,__PYX_ERR(5, 229, __pyx_L1_error))
       __pyx_t_11 = (__Pyx_PyBytes_Equals(__pyx_v_href_utf, __pyx_v_node_ns_utf, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(5, 229, __pyx_L1_error)
       if (__pyx_t_11) {
 
@@ -20546,6 +21448,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *                 node_ns_utf = None
  * 
  */
+        __Pyx_TraceLine(230,0,__PYX_ERR(5, 230, __pyx_L1_error))
         xmlSetNs(__pyx_v_c_node, __pyx_v_c_ns);
 
         /* "src/lxml/apihelpers.pxi":231
@@ -20555,6 +21458,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  * 
  *     if node_ns_utf is not None:
  */
+        __Pyx_TraceLine(231,0,__PYX_ERR(5, 231, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_node_ns_utf, Py_None);
 
@@ -20574,6 +21478,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *             href_utf = _utf8(href)
  *             _uriValidOrRaise(href_utf)
  */
+      __Pyx_TraceLine(213,0,__PYX_ERR(5, 213, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -20593,6 +21498,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *         _uriValidOrRaise(node_ns_utf)
  *         doc._setNodeNs(c_node, _xcstr(node_ns_utf))
  */
+  __Pyx_TraceLine(233,0,__PYX_ERR(5, 233, __pyx_L1_error))
   __pyx_t_11 = (__pyx_v_node_ns_utf != Py_None);
   __pyx_t_1 = (__pyx_t_11 != 0);
   if (__pyx_t_1) {
@@ -20604,6 +21510,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *         doc._setNodeNs(c_node, _xcstr(node_ns_utf))
  *     return 0
  */
+    __Pyx_TraceLine(234,0,__PYX_ERR(5, 234, __pyx_L1_error))
     __pyx_t_10 = __pyx_f_4lxml_5etree__uriValidOrRaise(__pyx_v_node_ns_utf); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(5, 234, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":235
@@ -20613,6 +21520,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  *     return 0
  * 
  */
+    __Pyx_TraceLine(235,0,__PYX_ERR(5, 235, __pyx_L1_error))
     __pyx_t_10 = __pyx_f_4lxml_5etree_9_Document__setNodeNs(__pyx_v_doc, __pyx_v_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_node_ns_utf)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(5, 235, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":233
@@ -20631,6 +21539,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
  * 
  * 
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(5, 236, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -20657,6 +21566,7 @@ static int __pyx_f_4lxml_5etree__setNodeNamespaces(xmlNode *__pyx_v_c_node, stru
   __Pyx_XDECREF(__pyx_v_href_utf);
   __Pyx_XDECREF(__pyx_v_prefix_utf);
   __Pyx_XDECREF(__pyx_v_node_ns_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20675,6 +21585,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   int __pyx_t_2;
@@ -20690,6 +21601,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_t_12 = NULL;
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("_iter_nsmap", 0);
+  __Pyx_TraceCall("_iter_nsmap", __pyx_f[5], 239, 0, __PYX_ERR(5, 239, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":247
  *     in Py3.x.
@@ -20698,6 +21610,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *         return nsmap.items()
  *     # nsmap will usually be a plain unordered dict => avoid type checking overhead
  */
+  __Pyx_TraceLine(247,0,__PYX_ERR(5, 247, __pyx_L1_error))
   __pyx_t_1 = PyObject_Length(__pyx_v_nsmap); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(5, 247, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_1 <= 1) != 0);
   if (__pyx_t_2) {
@@ -20709,6 +21622,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     # nsmap will usually be a plain unordered dict => avoid type checking overhead
  *     if OrderedDict is not None and type(nsmap) is not dict and isinstance(nsmap, OrderedDict):
  */
+    __Pyx_TraceLine(248,0,__PYX_ERR(5, 248, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 248, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -20750,6 +21664,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *         return nsmap.items()  # keep existing order
  *     if None not in nsmap:
  */
+  __Pyx_TraceLine(250,0,__PYX_ERR(5, 250, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_4lxml_5etree_OrderedDict != Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -20780,6 +21695,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     if None not in nsmap:
  *         return sorted(nsmap.items())
  */
+    __Pyx_TraceLine(251,0,__PYX_ERR(5, 251, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 251, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -20821,6 +21737,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *         return sorted(nsmap.items())
  * 
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(5, 252, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(Py_None, __pyx_v_nsmap, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 252, __pyx_L1_error)
   __pyx_t_7 = (__pyx_t_2 != 0);
   if (__pyx_t_7) {
@@ -20832,6 +21749,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  * 
  *     # Move the default namespace to the end.  This makes sure libxml2
  */
+    __Pyx_TraceLine(253,0,__PYX_ERR(5, 253, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 253, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -20879,6 +21797,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     nsdefs = [(k, v) for k, v in nsmap.items() if k is not None]
  *     nsdefs.sort()
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(5, 261, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_nsmap, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_default_ns = __pyx_t_3;
@@ -20891,6 +21810,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     nsdefs.sort()
  *     nsdefs.append((None, default_ns))
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(5, 262, __pyx_L1_error))
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 262, __pyx_L1_error)
@@ -21029,6 +21949,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     nsdefs.append((None, default_ns))
  *     return nsdefs
  */
+  __Pyx_TraceLine(263,0,__PYX_ERR(5, 263, __pyx_L1_error))
   __pyx_t_9 = PyList_Sort(__pyx_v_nsdefs); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 263, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":264
@@ -21038,6 +21959,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  *     return nsdefs
  * 
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(5, 264, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(Py_None);
@@ -21056,6 +21978,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
  * 
  * 
  */
+  __Pyx_TraceLine(265,0,__PYX_ERR(5, 265, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_nsdefs);
   __pyx_r = __pyx_v_nsdefs;
@@ -21085,6 +22008,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
   __Pyx_XDECREF(__pyx_v_k);
   __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21099,6 +22023,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_nsmap(PyObject *__pyx_v_nsmap) {
 
 static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -21109,6 +22034,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
   int __pyx_t_7;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_iter_attrib", 0);
+  __Pyx_TraceCall("_iter_attrib", __pyx_f[5], 268, 0, __PYX_ERR(5, 268, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":274
  *     """
@@ -21117,6 +22043,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *         return sorted(attrib.items())
  *     elif isinstance(attrib, _Attrib) or (
  */
+  __Pyx_TraceLine(274,0,__PYX_ERR(5, 274, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_attrib)) == ((PyObject *)(&PyDict_Type)));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -21128,6 +22055,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *     elif isinstance(attrib, _Attrib) or (
  *             OrderedDict is not None and isinstance(attrib, OrderedDict)):
  */
+    __Pyx_TraceLine(275,0,__PYX_ERR(5, 275, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 275, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -21175,6 +22103,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *             OrderedDict is not None and isinstance(attrib, OrderedDict)):
  *         return attrib.items()
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(5, 276, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_attrib, __pyx_ptype_4lxml_5etree__Attrib); 
   __pyx_t_8 = (__pyx_t_1 != 0);
   if (!__pyx_t_8) {
@@ -21190,6 +22119,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *         return attrib.items()
  *     else:
  */
+  __Pyx_TraceLine(277,0,__PYX_ERR(5, 277, __pyx_L1_error))
   __pyx_t_8 = (__pyx_v_4lxml_5etree_OrderedDict != Py_None);
   __pyx_t_1 = (__pyx_t_8 != 0);
   if (__pyx_t_1) {
@@ -21212,6 +22142,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *             OrderedDict is not None and isinstance(attrib, OrderedDict)):
  *         return attrib.items()
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(5, 276, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/apihelpers.pxi":278
@@ -21221,6 +22152,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  *     else:
  *         # assume it's an unordered mapping of some kind
  */
+    __Pyx_TraceLine(278,0,__PYX_ERR(5, 278, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 278, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -21262,6 +22194,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
  * 
  * 
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(5, 281, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 281, __pyx_L1_error)
@@ -21313,6 +22246,7 @@ static PyObject *__pyx_f_4lxml_5etree__iter_attrib(PyObject *__pyx_v_attrib) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21331,6 +22265,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -21347,6 +22282,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
   int __pyx_t_13;
   PyObject *(*__pyx_t_14)(PyObject *);
   __Pyx_RefNannySetupContext("_initNodeAttributes", 0);
+  __Pyx_TraceCall("_initNodeAttributes", __pyx_f[5], 284, 0, __PYX_ERR(5, 284, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":289
  *     cdef bint is_html
@@ -21355,6 +22291,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *         raise TypeError, f"Invalid attribute dictionary: {python._fqtypename(attrib).decode('utf8')}"
  *     if not attrib and not extra:
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(5, 289, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_attrib != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -21375,6 +22312,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *     if not attrib and not extra:
  *         return  # nothing to do
  */
+    __Pyx_TraceLine(290,0,__PYX_ERR(5, 290, __pyx_L1_error))
     __pyx_t_4 = _fqtypename(__pyx_v_attrib);
     __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 290, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -21401,6 +22339,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *         return  # nothing to do
  *     is_html = doc._parser._for_html
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(5, 291, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 291, __pyx_L1_error)
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (__pyx_t_3) {
@@ -21421,6 +22360,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *     is_html = doc._parser._for_html
  *     seen = set()
  */
+    __Pyx_TraceLine(292,0,__PYX_ERR(5, 292, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -21441,6 +22381,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *     seen = set()
  *     if extra:
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(5, 293, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_doc->_parser->_for_html;
   __pyx_v_is_html = __pyx_t_1;
 
@@ -21451,6 +22392,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *     if extra:
  *         for name, value in sorted(extra.items()):
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(5, 294, __pyx_L1_error))
   __pyx_t_6 = PySet_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 294, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_seen = ((PyObject*)__pyx_t_6);
@@ -21463,6 +22405,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *         for name, value in sorted(extra.items()):
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(5, 295, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_extra); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 295, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -21473,6 +22416,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  *     if attrib:
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(5, 296, __pyx_L1_error))
     if (unlikely(__pyx_v_extra == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
       __PYX_ERR(5, 296, __pyx_L1_error)
@@ -21557,6 +22501,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *     if attrib:
  *         for name, value in _iter_attrib(attrib):
  */
+      __Pyx_TraceLine(297,0,__PYX_ERR(5, 297, __pyx_L1_error))
       __pyx_t_13 = __pyx_f_4lxml_5etree__addAttributeToNode(__pyx_v_c_node, __pyx_v_doc, __pyx_v_is_html, __pyx_v_name, __pyx_v_value, __pyx_v_seen); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(5, 297, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":296
@@ -21566,6 +22511,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  *     if attrib:
  */
+      __Pyx_TraceLine(296,0,__PYX_ERR(5, 296, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -21585,6 +22531,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *         for name, value in _iter_attrib(attrib):
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  */
+  __Pyx_TraceLine(298,0,__PYX_ERR(5, 298, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(5, 298, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -21595,6 +22542,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  * 
  */
+    __Pyx_TraceLine(299,0,__PYX_ERR(5, 299, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__iter_attrib(__pyx_v_attrib); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 299, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
@@ -21695,6 +22643,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  * 
  * 
  */
+      __Pyx_TraceLine(300,0,__PYX_ERR(5, 300, __pyx_L1_error))
       __pyx_t_13 = __pyx_f_4lxml_5etree__addAttributeToNode(__pyx_v_c_node, __pyx_v_doc, __pyx_v_is_html, __pyx_v_name, __pyx_v_value, __pyx_v_seen); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(5, 300, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":299
@@ -21704,6 +22653,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
  *             _addAttributeToNode(c_node, doc, is_html, name, value, seen)
  * 
  */
+      __Pyx_TraceLine(299,0,__PYX_ERR(5, 299, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -21740,6 +22690,7 @@ static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_nod
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21759,6 +22710,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
   PyObject *__pyx_v_value_utf = NULL;
   xmlNs *__pyx_v_c_ns;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -21769,6 +22721,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
   int __pyx_t_7;
   xmlNs *__pyx_t_8;
   __Pyx_RefNannySetupContext("_addAttributeToNode", 0);
+  __Pyx_TraceCall("_addAttributeToNode", __pyx_f[5], 303, 0, __PYX_ERR(5, 303, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":305
  * cdef int _addAttributeToNode(xmlNode* c_node, _Document doc, bint is_html,
@@ -21777,6 +22730,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     if tag in seen_tags:
  *         return 0
  */
+  __Pyx_TraceLine(305,0,__PYX_ERR(5, 305, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 305, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -21816,6 +22770,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *         return 0
  *     seen_tags.add(tag)
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(5, 306, __pyx_L1_error))
   if (unlikely(__pyx_v_seen_tags == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(5, 306, __pyx_L1_error)
@@ -21831,6 +22786,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     seen_tags.add(tag)
  *     if not is_html:
  */
+    __Pyx_TraceLine(307,0,__PYX_ERR(5, 307, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -21850,6 +22806,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     if not is_html:
  *         _attributeValidOrRaise(name_utf)
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(5, 308, __pyx_L1_error))
   if (unlikely(__pyx_v_seen_tags == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
     __PYX_ERR(5, 308, __pyx_L1_error)
@@ -21863,6 +22820,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *         _attributeValidOrRaise(name_utf)
  *     value_utf = _utf8(value)
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(5, 309, __pyx_L1_error))
   __pyx_t_5 = ((!(__pyx_v_is_html != 0)) != 0);
   if (__pyx_t_5) {
 
@@ -21873,6 +22831,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     value_utf = _utf8(value)
  *     if ns_utf is None:
  */
+    __Pyx_TraceLine(310,0,__PYX_ERR(5, 310, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__attributeValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(5, 310, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":309
@@ -21891,6 +22850,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     if ns_utf is None:
  *         tree.xmlNewProp(c_node, _xcstr(name_utf), _xcstr(value_utf))
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(5, 311, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 311, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value_utf = ((PyObject*)__pyx_t_1);
@@ -21903,6 +22863,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *         tree.xmlNewProp(c_node, _xcstr(name_utf), _xcstr(value_utf))
  *     else:
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(5, 312, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns_utf == Py_None);
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
@@ -21914,6 +22875,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *     else:
  *         _uriValidOrRaise(ns_utf)
  */
+    __Pyx_TraceLine(313,0,__PYX_ERR(5, 313, __pyx_L1_error))
     (void)(xmlNewProp(__pyx_v_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf)));
 
     /* "src/lxml/apihelpers.pxi":312
@@ -21933,6 +22895,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *         c_ns = doc._findOrBuildNodeNs(c_node, _xcstr(ns_utf), NULL, 1)
  *         tree.xmlNewNsProp(c_node, c_ns,
  */
+  __Pyx_TraceLine(315,0,__PYX_ERR(5, 315, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __pyx_f_4lxml_5etree__uriValidOrRaise(__pyx_v_ns_utf); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(5, 315, __pyx_L1_error)
 
@@ -21943,6 +22906,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *         tree.xmlNewNsProp(c_node, c_ns,
  *                           _xcstr(name_utf), _xcstr(value_utf))
  */
+    __Pyx_TraceLine(316,0,__PYX_ERR(5, 316, __pyx_L1_error))
     __pyx_t_8 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_utf), NULL, 1); if (unlikely(__pyx_t_8 == ((xmlNs *)NULL))) __PYX_ERR(5, 316, __pyx_L1_error)
     __pyx_v_c_ns = __pyx_t_8;
 
@@ -21953,6 +22917,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  *                           _xcstr(name_utf), _xcstr(value_utf))
  *     return 0
  */
+    __Pyx_TraceLine(317,0,__PYX_ERR(5, 317, __pyx_L1_error))
     (void)(xmlNewNsProp(__pyx_v_c_node, __pyx_v_c_ns, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf)));
   }
   __pyx_L5:;
@@ -21964,6 +22929,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
  * 
  * 
  */
+  __Pyx_TraceLine(319,0,__PYX_ERR(5, 319, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -21987,6 +22953,7 @@ static int __pyx_f_4lxml_5etree__addAttributeToNode(xmlNode *__pyx_v_c_node, str
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_value_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22006,11 +22973,13 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
   xmlNs *__pyx_v_c_nsdef;
   __pyx_t_4lxml_5etree__ns_node_ref *__pyx_v_c_nsref_ptr;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNs *__pyx_t_1;
   int __pyx_t_2;
   __pyx_t_4lxml_5etree__ns_node_ref __pyx_t_3;
   __Pyx_RefNannySetupContext("_collectNsDefs", 0);
+  __Pyx_TraceCall("_collectNsDefs", __pyx_f[5], 327, 0, __PYX_ERR(5, 327, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":329
  * cdef int _collectNsDefs(xmlNode* c_element, _ns_node_ref **_c_ns_list,
@@ -22019,6 +22988,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *     cdef size_t c_ns_list_len = _c_ns_list_len[0]
  *     cdef size_t c_ns_list_size = _c_ns_list_size[0]
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(5, 329, __pyx_L1_error))
   __pyx_v_c_ns_list = (__pyx_v__c_ns_list[0]);
 
   /* "src/lxml/apihelpers.pxi":330
@@ -22028,6 +22998,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *     cdef size_t c_ns_list_size = _c_ns_list_size[0]
  * 
  */
+  __Pyx_TraceLine(330,0,__PYX_ERR(5, 330, __pyx_L1_error))
   __pyx_v_c_ns_list_len = (__pyx_v__c_ns_list_len[0]);
 
   /* "src/lxml/apihelpers.pxi":331
@@ -22037,6 +23008,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  * 
  *     c_nsdef = c_element.nsDef
  */
+  __Pyx_TraceLine(331,0,__PYX_ERR(5, 331, __pyx_L1_error))
   __pyx_v_c_ns_list_size = (__pyx_v__c_ns_list_size[0]);
 
   /* "src/lxml/apihelpers.pxi":333
@@ -22046,6 +23018,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *     while c_nsdef is not NULL:
  *         if c_ns_list_len >= c_ns_list_size:
  */
+  __Pyx_TraceLine(333,0,__PYX_ERR(5, 333, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_element->nsDef;
   __pyx_v_c_nsdef = __pyx_t_1;
 
@@ -22056,6 +23029,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *         if c_ns_list_len >= c_ns_list_size:
  *             if c_ns_list is NULL:
  */
+  __Pyx_TraceLine(334,0,__PYX_ERR(5, 334, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_nsdef != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -22067,6 +23041,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *             if c_ns_list is NULL:
  *                 c_ns_list_size = 20
  */
+    __Pyx_TraceLine(335,0,__PYX_ERR(5, 335, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_ns_list_len >= __pyx_v_c_ns_list_size) != 0);
     if (__pyx_t_2) {
 
@@ -22077,6 +23052,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                 c_ns_list_size = 20
  *             else:
  */
+      __Pyx_TraceLine(336,0,__PYX_ERR(5, 336, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_ns_list == NULL) != 0);
       if (__pyx_t_2) {
 
@@ -22087,6 +23063,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *             else:
  *                 c_ns_list_size *= 2
  */
+        __Pyx_TraceLine(337,0,__PYX_ERR(5, 337, __pyx_L1_error))
         __pyx_v_c_ns_list_size = 20;
 
         /* "src/lxml/apihelpers.pxi":336
@@ -22106,6 +23083,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *             c_nsref_ptr = <_ns_node_ref*> python.lxml_realloc(
  *                 c_ns_list, c_ns_list_size, sizeof(_ns_node_ref))
  */
+      __Pyx_TraceLine(339,0,__PYX_ERR(5, 339, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_ns_list_size = (__pyx_v_c_ns_list_size * 2);
       }
@@ -22118,6 +23096,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                 c_ns_list, c_ns_list_size, sizeof(_ns_node_ref))
  *             if c_nsref_ptr is NULL:
  */
+      __Pyx_TraceLine(340,0,__PYX_ERR(5, 340, __pyx_L1_error))
       __pyx_v_c_nsref_ptr = ((__pyx_t_4lxml_5etree__ns_node_ref *)lxml_realloc(__pyx_v_c_ns_list, __pyx_v_c_ns_list_size, (sizeof(__pyx_t_4lxml_5etree__ns_node_ref))));
 
       /* "src/lxml/apihelpers.pxi":342
@@ -22127,6 +23106,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                 if c_ns_list is not NULL:
  *                     python.lxml_free(c_ns_list)
  */
+      __Pyx_TraceLine(342,0,__PYX_ERR(5, 342, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_nsref_ptr == NULL) != 0);
       if (__pyx_t_2) {
 
@@ -22137,6 +23117,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                     python.lxml_free(c_ns_list)
  *                     _c_ns_list[0] = NULL
  */
+        __Pyx_TraceLine(343,0,__PYX_ERR(5, 343, __pyx_L1_error))
         __pyx_t_2 = ((__pyx_v_c_ns_list != NULL) != 0);
         if (__pyx_t_2) {
 
@@ -22147,6 +23128,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                     _c_ns_list[0] = NULL
  *                 raise MemoryError()
  */
+          __Pyx_TraceLine(344,0,__PYX_ERR(5, 344, __pyx_L1_error))
           lxml_free(__pyx_v_c_ns_list);
 
           /* "src/lxml/apihelpers.pxi":345
@@ -22156,6 +23138,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *                 raise MemoryError()
  *             c_ns_list = c_nsref_ptr
  */
+          __Pyx_TraceLine(345,0,__PYX_ERR(5, 345, __pyx_L1_error))
           (__pyx_v__c_ns_list[0]) = NULL;
 
           /* "src/lxml/apihelpers.pxi":343
@@ -22174,6 +23157,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *             c_ns_list = c_nsref_ptr
  * 
  */
+        __Pyx_TraceLine(346,0,__PYX_ERR(5, 346, __pyx_L1_error))
         PyErr_NoMemory(); __PYX_ERR(5, 346, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":342
@@ -22192,6 +23176,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  * 
  *         c_ns_list[c_ns_list_len] = _ns_node_ref(c_nsdef, c_element)
  */
+      __Pyx_TraceLine(347,0,__PYX_ERR(5, 347, __pyx_L1_error))
       __pyx_v_c_ns_list = __pyx_v_c_nsref_ptr;
 
       /* "src/lxml/apihelpers.pxi":335
@@ -22210,6 +23195,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *         c_ns_list_len += 1
  *         c_nsdef = c_nsdef.next
  */
+    __Pyx_TraceLine(349,0,__PYX_ERR(5, 349, __pyx_L1_error))
     __pyx_t_3.ns = __pyx_v_c_nsdef;
     __pyx_t_3.node = __pyx_v_c_element;
     (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]) = __pyx_t_3;
@@ -22221,6 +23207,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *         c_nsdef = c_nsdef.next
  * 
  */
+    __Pyx_TraceLine(350,0,__PYX_ERR(5, 350, __pyx_L1_error))
     __pyx_v_c_ns_list_len = (__pyx_v_c_ns_list_len + 1);
 
     /* "src/lxml/apihelpers.pxi":351
@@ -22230,6 +23217,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  * 
  *     _c_ns_list_size[0] = c_ns_list_size
  */
+    __Pyx_TraceLine(351,0,__PYX_ERR(5, 351, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_nsdef->next;
     __pyx_v_c_nsdef = __pyx_t_1;
   }
@@ -22241,6 +23229,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *     _c_ns_list_len[0] = c_ns_list_len
  *     _c_ns_list[0] = c_ns_list
  */
+  __Pyx_TraceLine(353,0,__PYX_ERR(5, 353, __pyx_L1_error))
   (__pyx_v__c_ns_list_size[0]) = __pyx_v_c_ns_list_size;
 
   /* "src/lxml/apihelpers.pxi":354
@@ -22250,6 +23239,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  *     _c_ns_list[0] = c_ns_list
  * 
  */
+  __Pyx_TraceLine(354,0,__PYX_ERR(5, 354, __pyx_L1_error))
   (__pyx_v__c_ns_list_len[0]) = __pyx_v_c_ns_list_len;
 
   /* "src/lxml/apihelpers.pxi":355
@@ -22259,6 +23249,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
  * 
  * 
  */
+  __Pyx_TraceLine(355,0,__PYX_ERR(5, 355, __pyx_L1_error))
   (__pyx_v__c_ns_list[0]) = __pyx_v_c_ns_list;
 
   /* "src/lxml/apihelpers.pxi":327
@@ -22276,6 +23267,7 @@ static int __pyx_f_4lxml_5etree__collectNsDefs(xmlNode *__pyx_v_c_element, __pyx
   __Pyx_AddTraceback("lxml.etree._collectNsDefs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22296,6 +23288,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
   size_t __pyx_v_i;
   xmlNs *__pyx_v_c_nsdef;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -22308,6 +23301,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
   int __pyx_t_9;
   xmlNs *__pyx_t_10;
   __Pyx_RefNannySetupContext("_removeUnusedNamespaceDeclarations", 0);
+  __Pyx_TraceCall("_removeUnusedNamespaceDeclarations", __pyx_f[5], 358, 0, __PYX_ERR(5, 358, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":366
  *     """
@@ -22316,6 +23310,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     cdef size_t c_ns_list_size = 0
  *     cdef size_t c_ns_list_len = 0
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(5, 366, __pyx_L1_error))
   __pyx_v_c_ns_list = NULL;
 
   /* "src/lxml/apihelpers.pxi":367
@@ -22325,6 +23320,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     cdef size_t c_ns_list_len = 0
  *     cdef size_t i
  */
+  __Pyx_TraceLine(367,0,__PYX_ERR(5, 367, __pyx_L1_error))
   __pyx_v_c_ns_list_size = 0;
 
   /* "src/lxml/apihelpers.pxi":368
@@ -22334,6 +23330,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     cdef size_t i
  * 
  */
+  __Pyx_TraceLine(368,0,__PYX_ERR(5, 368, __pyx_L1_error))
   __pyx_v_c_ns_list_len = 0;
 
   /* "src/lxml/apihelpers.pxi":371
@@ -22343,6 +23340,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         # include declarations on the document node
  *         _collectNsDefs(c_element.parent, &c_ns_list, &c_ns_list_len, &c_ns_list_size)
  */
+  __Pyx_TraceLine(371,0,__PYX_ERR(5, 371, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_element->parent != 0);
   if (__pyx_t_2) {
   } else {
@@ -22361,6 +23359,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_element, c_element, 1)
  */
+    __Pyx_TraceLine(373,0,__PYX_ERR(5, 373, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__collectNsDefs(__pyx_v_c_element->parent, (&__pyx_v_c_ns_list), (&__pyx_v_c_ns_list_len), (&__pyx_v_c_ns_list_size)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 373, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":371
@@ -22379,6 +23378,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     # collect all new namespace declarations into the ns list
  *     if c_element.nsDef:
  */
+  __Pyx_TraceLine(375,0,__PYX_ERR(5, 375, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);
 
   /* "src/lxml/apihelpers.pxi":377
@@ -22388,6 +23388,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         _collectNsDefs(c_element, &c_ns_list, &c_ns_list_len, &c_ns_list_size)
  * 
  */
+  __Pyx_TraceLine(377,0,__PYX_ERR(5, 377, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_c_element->nsDef != 0);
   if (__pyx_t_1) {
 
@@ -22398,6 +23399,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  *     # remove all namespace declarations from the list that are referenced
  */
+    __Pyx_TraceLine(378,0,__PYX_ERR(5, 378, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__collectNsDefs(__pyx_v_c_element, (&__pyx_v_c_ns_list), (&__pyx_v_c_ns_list_len), (&__pyx_v_c_ns_list_size)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 378, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":377
@@ -22416,6 +23418,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         c_node = c_element
  *         while c_node and c_ns_list_len:
  */
+  __Pyx_TraceLine(381,0,__PYX_ERR(5, 381, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_ns_list_len != 0);
   if (__pyx_t_2) {
   } else {
@@ -22434,6 +23437,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         while c_node and c_ns_list_len:
  *             if c_node.ns:
  */
+    __Pyx_TraceLine(382,0,__PYX_ERR(5, 382, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_element;
 
     /* "src/lxml/apihelpers.pxi":383
@@ -22443,6 +23447,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             if c_node.ns:
  *                 for i in range(c_ns_list_len):
  */
+    __Pyx_TraceLine(383,0,__PYX_ERR(5, 383, __pyx_L1_error))
     while (1) {
       __pyx_t_2 = (__pyx_v_c_node != 0);
       if (__pyx_t_2) {
@@ -22462,6 +23467,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                 for i in range(c_ns_list_len):
  *                     if c_node.ns is c_ns_list[i].ns:
  */
+      __Pyx_TraceLine(384,0,__PYX_ERR(5, 384, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_c_node->ns != 0);
       if (__pyx_t_1) {
 
@@ -22472,6 +23478,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                     if c_node.ns is c_ns_list[i].ns:
  *                         c_ns_list_len -= 1
  */
+        __Pyx_TraceLine(385,0,__PYX_ERR(5, 385, __pyx_L1_error))
         __pyx_t_4 = __pyx_v_c_ns_list_len;
         __pyx_t_5 = __pyx_t_4;
         for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
@@ -22484,6 +23491,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                         c_ns_list_len -= 1
  *                         c_ns_list[i] = c_ns_list[c_ns_list_len]
  */
+          __Pyx_TraceLine(386,0,__PYX_ERR(5, 386, __pyx_L1_error))
           __pyx_t_1 = ((__pyx_v_c_node->ns == (__pyx_v_c_ns_list[__pyx_v_i]).ns) != 0);
           if (__pyx_t_1) {
 
@@ -22494,6 +23502,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                         c_ns_list[i] = c_ns_list[c_ns_list_len]
  *                         #c_ns_list[c_ns_list_len] = _ns_node_ref(NULL, NULL)
  */
+            __Pyx_TraceLine(387,0,__PYX_ERR(5, 387, __pyx_L1_error))
             __pyx_v_c_ns_list_len = (__pyx_v_c_ns_list_len - 1);
 
             /* "src/lxml/apihelpers.pxi":388
@@ -22503,6 +23512,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                         #c_ns_list[c_ns_list_len] = _ns_node_ref(NULL, NULL)
  *                         break
  */
+            __Pyx_TraceLine(388,0,__PYX_ERR(5, 388, __pyx_L1_error))
             (__pyx_v_c_ns_list[__pyx_v_i]) = (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]);
 
             /* "src/lxml/apihelpers.pxi":390
@@ -22512,6 +23522,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             if c_node is c_element:
  *                 # continue with attributes
  */
+            __Pyx_TraceLine(390,0,__PYX_ERR(5, 390, __pyx_L1_error))
             goto __pyx_L16_break;
 
             /* "src/lxml/apihelpers.pxi":386
@@ -22541,6 +23552,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                 # continue with attributes
  *                 c_node = <xmlNode*>c_element.properties
  */
+      __Pyx_TraceLine(391,0,__PYX_ERR(5, 391, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_node == __pyx_v_c_element) != 0);
       if (__pyx_t_1) {
 
@@ -22551,6 +23563,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             else:
  *                 c_node = c_node.next
  */
+        __Pyx_TraceLine(393,0,__PYX_ERR(5, 393, __pyx_L1_error))
         __pyx_v_c_node = ((xmlNode *)__pyx_v_c_element->properties);
 
         /* "src/lxml/apihelpers.pxi":391
@@ -22570,6 +23583,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_element)
  * 
  */
+      __Pyx_TraceLine(395,0,__PYX_ERR(5, 395, __pyx_L1_error))
       /*else*/ {
         __pyx_t_7 = __pyx_v_c_node->next;
         __pyx_v_c_node = __pyx_t_7;
@@ -22593,6 +23607,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  *     if c_ns_list is NULL:
  */
+  __Pyx_TraceLine(396,0,__PYX_ERR(5, 396, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_element);
 
   /* "src/lxml/apihelpers.pxi":398
@@ -22602,6 +23617,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         return 0
  * 
  */
+  __Pyx_TraceLine(398,0,__PYX_ERR(5, 398, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ns_list == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -22612,6 +23628,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  *     # free all namespace declarations that remained in the list,
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(5, 399, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -22631,6 +23648,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         if prefixes_to_keep is not None:
  *             if c_ns_list[i].ns.prefix and c_ns_list[i].ns.prefix in prefixes_to_keep:
  */
+  __Pyx_TraceLine(404,0,__PYX_ERR(5, 404, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_ns_list_len;
   __pyx_t_5 = __pyx_t_4;
   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
@@ -22643,6 +23661,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             if c_ns_list[i].ns.prefix and c_ns_list[i].ns.prefix in prefixes_to_keep:
  *                 continue
  */
+    __Pyx_TraceLine(405,0,__PYX_ERR(5, 405, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_prefixes_to_keep != ((PyObject*)Py_None));
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -22654,6 +23673,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                 continue
  *         c_node = c_ns_list[i].node
  */
+      __Pyx_TraceLine(406,0,__PYX_ERR(5, 406, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_ns_list[__pyx_v_i]).ns->prefix != 0);
       if (__pyx_t_1) {
       } else {
@@ -22680,6 +23700,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         c_node = c_ns_list[i].node
  *         c_nsdef = c_node.nsDef
  */
+        __Pyx_TraceLine(407,0,__PYX_ERR(5, 407, __pyx_L1_error))
         goto __pyx_L20_continue;
 
         /* "src/lxml/apihelpers.pxi":406
@@ -22707,6 +23728,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         c_nsdef = c_node.nsDef
  *         if c_nsdef is c_ns_list[i].ns:
  */
+    __Pyx_TraceLine(408,0,__PYX_ERR(5, 408, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_c_ns_list[__pyx_v_i]).node;
     __pyx_v_c_node = __pyx_t_7;
 
@@ -22717,6 +23739,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         if c_nsdef is c_ns_list[i].ns:
  *             c_node.nsDef = c_node.nsDef.next
  */
+    __Pyx_TraceLine(409,0,__PYX_ERR(5, 409, __pyx_L1_error))
     __pyx_t_10 = __pyx_v_c_node->nsDef;
     __pyx_v_c_nsdef = __pyx_t_10;
 
@@ -22727,6 +23750,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             c_node.nsDef = c_node.nsDef.next
  *         else:
  */
+    __Pyx_TraceLine(410,0,__PYX_ERR(5, 410, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_nsdef == (__pyx_v_c_ns_list[__pyx_v_i]).ns) != 0);
     if (__pyx_t_2) {
 
@@ -22737,6 +23761,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         else:
  *             while c_nsdef.next is not c_ns_list[i].ns:
  */
+      __Pyx_TraceLine(411,0,__PYX_ERR(5, 411, __pyx_L1_error))
       __pyx_t_10 = __pyx_v_c_node->nsDef->next;
       __pyx_v_c_node->nsDef = __pyx_t_10;
 
@@ -22757,6 +23782,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *                 c_nsdef = c_nsdef.next
  *             c_nsdef.next = c_nsdef.next.next
  */
+    __Pyx_TraceLine(413,0,__PYX_ERR(5, 413, __pyx_L1_error))
     /*else*/ {
       while (1) {
         __pyx_t_2 = ((__pyx_v_c_nsdef->next != (__pyx_v_c_ns_list[__pyx_v_i]).ns) != 0);
@@ -22769,6 +23795,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *             c_nsdef.next = c_nsdef.next.next
  *         tree.xmlFreeNs(c_ns_list[i].ns)
  */
+        __Pyx_TraceLine(414,0,__PYX_ERR(5, 414, __pyx_L1_error))
         __pyx_t_10 = __pyx_v_c_nsdef->next;
         __pyx_v_c_nsdef = __pyx_t_10;
       }
@@ -22780,6 +23807,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         tree.xmlFreeNs(c_ns_list[i].ns)
  * 
  */
+      __Pyx_TraceLine(415,0,__PYX_ERR(5, 415, __pyx_L1_error))
       __pyx_t_10 = __pyx_v_c_nsdef->next->next;
       __pyx_v_c_nsdef->next = __pyx_t_10;
     }
@@ -22792,6 +23820,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  *     if c_ns_list is not NULL:
  */
+    __Pyx_TraceLine(416,0,__PYX_ERR(5, 416, __pyx_L1_error))
     xmlFreeNs((__pyx_v_c_ns_list[__pyx_v_i]).ns);
     __pyx_L20_continue:;
   }
@@ -22803,6 +23832,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *         python.lxml_free(c_ns_list)
  *     return 0
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(5, 418, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ns_list != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -22813,6 +23843,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  *     return 0
  * 
  */
+    __Pyx_TraceLine(419,0,__PYX_ERR(5, 419, __pyx_L1_error))
     lxml_free(__pyx_v_c_ns_list);
 
     /* "src/lxml/apihelpers.pxi":418
@@ -22831,6 +23862,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
  * 
  * cdef xmlNs* _searchNsByHref(xmlNode* c_node, const_xmlChar* c_href, bint is_attribute):
  */
+  __Pyx_TraceLine(420,0,__PYX_ERR(5, 420, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -22848,6 +23880,7 @@ static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__py
   __Pyx_AddTraceback("lxml.etree._removeUnusedNamespaceDeclarations", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22865,12 +23898,14 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
   xmlNs *__pyx_v_c_default_ns;
   xmlNode *__pyx_v_c_element;
   xmlNs *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   xmlNs *__pyx_t_4;
   __Pyx_RefNannySetupContext("_searchNsByHref", 0);
+  __Pyx_TraceCall("_searchNsByHref", __pyx_f[5], 422, 0, __PYX_ERR(5, 422, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":431
  *     """
@@ -22879,6 +23914,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     cdef xmlNode* c_element
  *     if c_href is NULL or c_node is NULL or c_node.type == tree.XML_ENTITY_REF_NODE:
  */
+  __Pyx_TraceLine(431,0,__PYX_ERR(5, 431, __pyx_L1_error))
   __pyx_v_c_default_ns = NULL;
 
   /* "src/lxml/apihelpers.pxi":433
@@ -22888,6 +23924,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         return NULL
  *     if tree.xmlStrcmp(c_href, tree.XML_XML_NAMESPACE) == 0:
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(5, 433, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_href == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -22912,6 +23949,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     if tree.xmlStrcmp(c_href, tree.XML_XML_NAMESPACE) == 0:
  *         # no special cases here, let libxml2 handle this
  */
+    __Pyx_TraceLine(434,0,__PYX_ERR(5, 434, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -22931,6 +23969,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         # no special cases here, let libxml2 handle this
  *         return tree.xmlSearchNsByHref(c_node.doc, c_node, c_href)
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(5, 435, __pyx_L1_error))
   __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_href, XML_XML_NAMESPACE) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -22941,6 +23980,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     if c_node.type == tree.XML_ATTRIBUTE_NODE:
  *         is_attribute = 1
  */
+    __Pyx_TraceLine(437,0,__PYX_ERR(5, 437, __pyx_L1_error))
     __pyx_r = xmlSearchNsByHref(__pyx_v_c_node->doc, __pyx_v_c_node, __pyx_v_c_href);
     goto __pyx_L0;
 
@@ -22960,6 +24000,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         is_attribute = 1
  *     while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(438,0,__PYX_ERR(5, 438, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ATTRIBUTE_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -22970,6 +24011,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
  *         c_node = c_node.parent
  */
+    __Pyx_TraceLine(439,0,__PYX_ERR(5, 439, __pyx_L1_error))
     __pyx_v_is_attribute = 1;
 
     /* "src/lxml/apihelpers.pxi":438
@@ -22988,6 +24030,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         c_node = c_node.parent
  *     c_element = c_node
  */
+  __Pyx_TraceLine(440,0,__PYX_ERR(5, 440, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_2) {
@@ -23007,6 +24050,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     c_element = c_node
  *     while c_node is not NULL:
  */
+    __Pyx_TraceLine(441,0,__PYX_ERR(5, 441, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_node->parent;
     __pyx_v_c_node = __pyx_t_3;
   }
@@ -23018,6 +24062,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     while c_node is not NULL:
  *         if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(442,0,__PYX_ERR(5, 442, __pyx_L1_error))
   __pyx_v_c_element = __pyx_v_c_node;
 
   /* "src/lxml/apihelpers.pxi":443
@@ -23027,6 +24072,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         if c_node.type == tree.XML_ELEMENT_NODE:
  *             c_ns = c_node.nsDef
  */
+  __Pyx_TraceLine(443,0,__PYX_ERR(5, 443, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -23038,6 +24084,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *             c_ns = c_node.nsDef
  *             while c_ns is not NULL:
  */
+    __Pyx_TraceLine(444,0,__PYX_ERR(5, 444, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
     if (__pyx_t_1) {
 
@@ -23048,6 +24095,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *             while c_ns is not NULL:
  *                 if c_ns.href is not NULL and tree.xmlStrcmp(c_href, c_ns.href) == 0:
  */
+      __Pyx_TraceLine(445,0,__PYX_ERR(5, 445, __pyx_L1_error))
       __pyx_t_4 = __pyx_v_c_node->nsDef;
       __pyx_v_c_ns = __pyx_t_4;
 
@@ -23058,6 +24106,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                 if c_ns.href is not NULL and tree.xmlStrcmp(c_href, c_ns.href) == 0:
  *                     if c_ns.prefix is NULL and is_attribute:
  */
+      __Pyx_TraceLine(446,0,__PYX_ERR(5, 446, __pyx_L1_error))
       while (1) {
         __pyx_t_1 = ((__pyx_v_c_ns != NULL) != 0);
         if (!__pyx_t_1) break;
@@ -23069,6 +24118,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                     if c_ns.prefix is NULL and is_attribute:
  *                         # for attributes, continue searching a named
  */
+        __Pyx_TraceLine(447,0,__PYX_ERR(5, 447, __pyx_L1_error))
         __pyx_t_2 = ((__pyx_v_c_ns->href != NULL) != 0);
         if (__pyx_t_2) {
         } else {
@@ -23087,6 +24137,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         # for attributes, continue searching a named
  *                         # prefix, but keep the first default namespace
  */
+          __Pyx_TraceLine(448,0,__PYX_ERR(5, 448, __pyx_L1_error))
           __pyx_t_2 = ((__pyx_v_c_ns->prefix == NULL) != 0);
           if (__pyx_t_2) {
           } else {
@@ -23105,6 +24156,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                             c_default_ns = c_ns
  *                     elif tree.xmlSearchNs(
  */
+            __Pyx_TraceLine(452,0,__PYX_ERR(5, 452, __pyx_L1_error))
             __pyx_t_1 = ((__pyx_v_c_default_ns == NULL) != 0);
             if (__pyx_t_1) {
 
@@ -23115,6 +24167,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                     elif tree.xmlSearchNs(
  *                         c_element.doc, c_element, c_ns.prefix) is c_ns:
  */
+              __Pyx_TraceLine(453,0,__PYX_ERR(5, 453, __pyx_L1_error))
               __pyx_v_c_default_ns = __pyx_v_c_ns;
 
               /* "src/lxml/apihelpers.pxi":452
@@ -23143,6 +24196,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         # start node is in namespace scope => found!
  *                         return c_ns
  */
+          __Pyx_TraceLine(455,0,__PYX_ERR(5, 455, __pyx_L1_error))
           __pyx_t_1 = ((xmlSearchNs(__pyx_v_c_element->doc, __pyx_v_c_element, __pyx_v_c_ns->prefix) == __pyx_v_c_ns) != 0);
 
           /* "src/lxml/apihelpers.pxi":454
@@ -23152,6 +24206,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         c_element.doc, c_element, c_ns.prefix) is c_ns:
  *                         # start node is in namespace scope => found!
  */
+          __Pyx_TraceLine(454,0,__PYX_ERR(5, 454, __pyx_L1_error))
           if (__pyx_t_1) {
 
             /* "src/lxml/apihelpers.pxi":457
@@ -23161,6 +24216,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                 c_ns = c_ns.next
  *             if c_node is not c_element and c_node.ns is not NULL:
  */
+            __Pyx_TraceLine(457,0,__PYX_ERR(5, 457, __pyx_L1_error))
             __pyx_r = __pyx_v_c_ns;
             goto __pyx_L0;
 
@@ -23190,6 +24246,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *             if c_node is not c_element and c_node.ns is not NULL:
  *                 # optimise: the node may have the namespace itself
  */
+        __Pyx_TraceLine(458,0,__PYX_ERR(5, 458, __pyx_L1_error))
         __pyx_t_4 = __pyx_v_c_ns->next;
         __pyx_v_c_ns = __pyx_t_4;
       }
@@ -23201,6 +24258,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                 # optimise: the node may have the namespace itself
  *                 c_ns = c_node.ns
  */
+      __Pyx_TraceLine(459,0,__PYX_ERR(5, 459, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_node != __pyx_v_c_element) != 0);
       if (__pyx_t_2) {
       } else {
@@ -23219,6 +24277,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                 if c_ns.href is not NULL and tree.xmlStrcmp(c_href, c_ns.href) == 0:
  *                     if c_ns.prefix is NULL and is_attribute:
  */
+        __Pyx_TraceLine(461,0,__PYX_ERR(5, 461, __pyx_L1_error))
         __pyx_t_4 = __pyx_v_c_node->ns;
         __pyx_v_c_ns = __pyx_t_4;
 
@@ -23229,6 +24288,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                     if c_ns.prefix is NULL and is_attribute:
  *                         # for attributes, continue searching a named
  */
+        __Pyx_TraceLine(462,0,__PYX_ERR(5, 462, __pyx_L1_error))
         __pyx_t_2 = ((__pyx_v_c_ns->href != NULL) != 0);
         if (__pyx_t_2) {
         } else {
@@ -23247,6 +24307,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         # for attributes, continue searching a named
  *                         # prefix, but keep the first default namespace
  */
+          __Pyx_TraceLine(463,0,__PYX_ERR(5, 463, __pyx_L1_error))
           __pyx_t_2 = ((__pyx_v_c_ns->prefix == NULL) != 0);
           if (__pyx_t_2) {
           } else {
@@ -23265,6 +24326,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                             c_default_ns = c_ns
  *                     elif tree.xmlSearchNs(
  */
+            __Pyx_TraceLine(467,0,__PYX_ERR(5, 467, __pyx_L1_error))
             __pyx_t_1 = ((__pyx_v_c_default_ns == NULL) != 0);
             if (__pyx_t_1) {
 
@@ -23275,6 +24337,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                     elif tree.xmlSearchNs(
  *                         c_element.doc, c_element, c_ns.prefix) is c_ns:
  */
+              __Pyx_TraceLine(468,0,__PYX_ERR(5, 468, __pyx_L1_error))
               __pyx_v_c_default_ns = __pyx_v_c_ns;
 
               /* "src/lxml/apihelpers.pxi":467
@@ -23303,6 +24366,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         # start node is in namespace scope => found!
  *                         return c_ns
  */
+          __Pyx_TraceLine(470,0,__PYX_ERR(5, 470, __pyx_L1_error))
           __pyx_t_1 = ((xmlSearchNs(__pyx_v_c_element->doc, __pyx_v_c_element, __pyx_v_c_ns->prefix) == __pyx_v_c_ns) != 0);
 
           /* "src/lxml/apihelpers.pxi":469
@@ -23312,6 +24376,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *                         c_element.doc, c_element, c_ns.prefix) is c_ns:
  *                         # start node is in namespace scope => found!
  */
+          __Pyx_TraceLine(469,0,__PYX_ERR(5, 469, __pyx_L1_error))
           if (__pyx_t_1) {
 
             /* "src/lxml/apihelpers.pxi":472
@@ -23321,6 +24386,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         c_node = c_node.parent
  *     # nothing found => use a matching default namespace or fail
  */
+            __Pyx_TraceLine(472,0,__PYX_ERR(5, 472, __pyx_L1_error))
             __pyx_r = __pyx_v_c_ns;
             goto __pyx_L0;
 
@@ -23368,6 +24434,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     # nothing found => use a matching default namespace or fail
  *     if c_default_ns is not NULL:
  */
+    __Pyx_TraceLine(473,0,__PYX_ERR(5, 473, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_node->parent;
     __pyx_v_c_node = __pyx_t_3;
   }
@@ -23379,6 +24446,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *         if tree.xmlSearchNs(c_element.doc, c_element, NULL) is c_default_ns:
  *             return c_default_ns
  */
+  __Pyx_TraceLine(475,0,__PYX_ERR(5, 475, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_default_ns != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23389,6 +24457,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *             return c_default_ns
  *     return NULL
  */
+    __Pyx_TraceLine(476,0,__PYX_ERR(5, 476, __pyx_L1_error))
     __pyx_t_1 = ((xmlSearchNs(__pyx_v_c_element->doc, __pyx_v_c_element, NULL) == __pyx_v_c_default_ns) != 0);
     if (__pyx_t_1) {
 
@@ -23399,6 +24468,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  *     return NULL
  * 
  */
+      __Pyx_TraceLine(477,0,__PYX_ERR(5, 477, __pyx_L1_error))
       __pyx_r = __pyx_v_c_default_ns;
       goto __pyx_L0;
 
@@ -23427,6 +24497,7 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  * 
  * cdef int _replaceNodeByChildren(_Document doc, xmlNode* c_node) except -1:
  */
+  __Pyx_TraceLine(478,0,__PYX_ERR(5, 478, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -23439,7 +24510,11 @@ static xmlNs *__pyx_f_4lxml_5etree__searchNsByHref(xmlNode *__pyx_v_c_node, cons
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._searchNsByHref", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23456,11 +24531,13 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
   xmlNode *__pyx_v_c_parent;
   xmlNode *__pyx_v_c_child;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_replaceNodeByChildren", 0);
+  __Pyx_TraceCall("_replaceNodeByChildren", __pyx_f[5], 480, 0, __PYX_ERR(5, 480, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":484
  *     cdef xmlNode* c_parent
@@ -23469,6 +24546,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         tree.xmlUnlinkNode(c_node)
  *         return 0
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(5, 484, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->children == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23479,6 +24557,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         return 0
  * 
  */
+    __Pyx_TraceLine(485,0,__PYX_ERR(5, 485, __pyx_L1_error))
     xmlUnlinkNode(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":486
@@ -23488,6 +24567,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  * 
  *     c_parent = c_node.parent
  */
+    __Pyx_TraceLine(486,0,__PYX_ERR(5, 486, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -23507,6 +24587,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     # fix parent links of children
  *     c_child = c_node.children
  */
+  __Pyx_TraceLine(488,0,__PYX_ERR(5, 488, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->parent;
   __pyx_v_c_parent = __pyx_t_2;
 
@@ -23517,6 +24598,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     while c_child is not NULL:
  *         c_child.parent = c_parent
  */
+  __Pyx_TraceLine(490,0,__PYX_ERR(5, 490, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->children;
   __pyx_v_c_child = __pyx_t_2;
 
@@ -23527,6 +24609,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_child.parent = c_parent
  *         c_child = c_child.next
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(5, 491, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -23538,6 +24621,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_child = c_child.next
  * 
  */
+    __Pyx_TraceLine(492,0,__PYX_ERR(5, 492, __pyx_L1_error))
     __pyx_v_c_child->parent = __pyx_v_c_parent;
 
     /* "src/lxml/apihelpers.pxi":493
@@ -23547,6 +24631,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  * 
  *     # fix namespace references of children if their parent's namespace
  */
+    __Pyx_TraceLine(493,0,__PYX_ERR(5, 493, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_child->next;
     __pyx_v_c_child = __pyx_t_2;
   }
@@ -23558,6 +24643,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_child = c_node.children
  *         while c_child is not NULL:
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(5, 497, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->nsDef != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23568,6 +24654,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         while c_child is not NULL:
  *             moveNodeToDocument(doc, doc._c_doc, c_child)
  */
+    __Pyx_TraceLine(498,0,__PYX_ERR(5, 498, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->children;
     __pyx_v_c_child = __pyx_t_2;
 
@@ -23578,6 +24665,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *             moveNodeToDocument(doc, doc._c_doc, c_child)
  *             c_child = c_child.next
  */
+    __Pyx_TraceLine(499,0,__PYX_ERR(5, 499, __pyx_L1_error))
     while (1) {
       __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_1) break;
@@ -23589,6 +24677,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *             c_child = c_child.next
  * 
  */
+      __Pyx_TraceLine(500,0,__PYX_ERR(5, 500, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_doc->_c_doc, __pyx_v_c_child); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 500, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":501
@@ -23598,6 +24687,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  * 
  *     # fix sibling links to/from child slice
  */
+      __Pyx_TraceLine(501,0,__PYX_ERR(5, 501, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_child->next;
       __pyx_v_c_child = __pyx_t_2;
     }
@@ -23618,6 +24708,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_parent.children = c_node.children
  *     else:
  */
+  __Pyx_TraceLine(504,0,__PYX_ERR(5, 504, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->prev == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23628,6 +24719,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     else:
  *         c_node.prev.next = c_node.children
  */
+    __Pyx_TraceLine(505,0,__PYX_ERR(5, 505, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->children;
     __pyx_v_c_parent->children = __pyx_t_2;
 
@@ -23648,6 +24740,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_node.children.prev = c_node.prev
  *     if c_node.next is NULL:
  */
+  __Pyx_TraceLine(507,0,__PYX_ERR(5, 507, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __pyx_v_c_node->children;
     __pyx_v_c_node->prev->next = __pyx_t_2;
@@ -23659,6 +24752,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     if c_node.next is NULL:
  *         c_parent.last = c_node.last
  */
+    __Pyx_TraceLine(508,0,__PYX_ERR(5, 508, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->prev;
     __pyx_v_c_node->children->prev = __pyx_t_2;
   }
@@ -23671,6 +24765,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_parent.last = c_node.last
  *     else:
  */
+  __Pyx_TraceLine(509,0,__PYX_ERR(5, 509, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->next == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23681,6 +24776,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     else:
  *         c_node.next.prev = c_node.last
  */
+    __Pyx_TraceLine(510,0,__PYX_ERR(5, 510, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->last;
     __pyx_v_c_parent->last = __pyx_t_2;
 
@@ -23701,6 +24797,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *         c_node.last.next = c_node.next
  * 
  */
+  __Pyx_TraceLine(512,0,__PYX_ERR(5, 512, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __pyx_v_c_node->last;
     __pyx_v_c_node->next->prev = __pyx_t_2;
@@ -23712,6 +24809,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  * 
  *     # unlink c_node
  */
+    __Pyx_TraceLine(513,0,__PYX_ERR(5, 513, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node->last->next = __pyx_t_2;
   }
@@ -23724,6 +24822,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     c_node.parent = c_node.next = c_node.prev = NULL
  *     return 0
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(5, 516, __pyx_L1_error))
   __pyx_v_c_node->children = NULL;
   __pyx_v_c_node->last = NULL;
 
@@ -23734,6 +24833,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  *     return 0
  * 
  */
+  __Pyx_TraceLine(517,0,__PYX_ERR(5, 517, __pyx_L1_error))
   __pyx_v_c_node->parent = NULL;
   __pyx_v_c_node->next = NULL;
   __pyx_v_c_node->prev = NULL;
@@ -23745,6 +24845,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
  * 
  * cdef object _attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):
  */
+  __Pyx_TraceLine(518,0,__PYX_ERR(5, 518, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -23761,6 +24862,7 @@ static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__py
   __Pyx_AddTraceback("lxml.etree._replaceNodeByChildren", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23778,6 +24880,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
   xmlChar *__pyx_v_value;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -23790,6 +24893,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   __Pyx_RefNannySetupContext("_attributeValue", 0);
+  __Pyx_TraceCall("_attributeValue", __pyx_f[5], 520, 0, __PYX_ERR(5, 520, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":521
  * 
@@ -23798,6 +24902,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  *     value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href)
  *     try:
  */
+  __Pyx_TraceLine(521,0,__PYX_ERR(5, 521, __pyx_L1_error))
   __pyx_v_c_href = _getNs(((xmlNode *)__pyx_v_c_attrib_node));
 
   /* "src/lxml/apihelpers.pxi":522
@@ -23807,6 +24912,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  *     try:
  *         result = funicode(value)
  */
+  __Pyx_TraceLine(522,0,__PYX_ERR(5, 522, __pyx_L1_error))
   __pyx_v_value = xmlGetNsProp(__pyx_v_c_element, __pyx_v_c_attrib_node->name, __pyx_v_c_href);
 
   /* "src/lxml/apihelpers.pxi":523
@@ -23816,6 +24922,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  *         result = funicode(value)
  *     finally:
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(5, 523, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/apihelpers.pxi":524
@@ -23825,6 +24932,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  *     finally:
  *         tree.xmlFree(value)
  */
+    __Pyx_TraceLine(524,0,__PYX_ERR(5, 524, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 524, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
@@ -23838,6 +24946,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  *     return result
  * 
  */
+  __Pyx_TraceLine(526,0,__PYX_ERR(5, 526, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_value);
@@ -23885,6 +24994,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
  * 
  * cdef object _attributeValueFromNsName(xmlNode* c_element,
  */
+  __Pyx_TraceLine(527,0,__PYX_ERR(5, 527, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -23906,6 +25016,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23922,6 +25033,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
   xmlChar *__pyx_v_c_result;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -23935,6 +25047,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("_attributeValueFromNsName", 0);
+  __Pyx_TraceCall("_attributeValueFromNsName", __pyx_f[5], 529, 0, __PYX_ERR(5, 529, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":531
  * cdef object _attributeValueFromNsName(xmlNode* c_element,
@@ -23943,6 +25056,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *     if c_result is NULL:
  *         return None
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(5, 531, __pyx_L1_error))
   __pyx_v_c_result = xmlGetNsProp(__pyx_v_c_element, __pyx_v_c_name, __pyx_v_c_href);
 
   /* "src/lxml/apihelpers.pxi":532
@@ -23952,6 +25066,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *         return None
  *     try:
  */
+  __Pyx_TraceLine(532,0,__PYX_ERR(5, 532, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_result == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -23962,6 +25077,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *     try:
  *         result = funicode(c_result)
  */
+    __Pyx_TraceLine(533,0,__PYX_ERR(5, 533, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -23982,6 +25098,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *         result = funicode(c_result)
  *     finally:
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(5, 534, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/apihelpers.pxi":535
@@ -23991,6 +25108,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *     finally:
  *         tree.xmlFree(c_result)
  */
+    __Pyx_TraceLine(535,0,__PYX_ERR(5, 535, __pyx_L5_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 535, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_result = __pyx_t_2;
@@ -24004,6 +25122,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  *     return result
  * 
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(5, 537, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_c_result);
@@ -24051,6 +25170,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
  * 
  * cdef object _getNodeAttributeValue(xmlNode* c_node, key, default):
  */
+  __Pyx_TraceLine(538,0,__PYX_ERR(5, 538, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -24072,6 +25192,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24091,6 +25212,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
   xmlChar *__pyx_v_c_result;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -24107,6 +25229,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   __Pyx_RefNannySetupContext("_getNodeAttributeValue", 0);
+  __Pyx_TraceCall("_getNodeAttributeValue", __pyx_f[5], 540, 0, __PYX_ERR(5, 540, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":541
  * 
@@ -24115,6 +25238,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)
  *     c_result = tree.xmlGetNsProp(c_node, _xcstr(tag), c_href)
  */
+  __Pyx_TraceLine(541,0,__PYX_ERR(5, 541, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -24152,6 +25276,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     c_result = tree.xmlGetNsProp(c_node, _xcstr(tag), c_href)
  *     if c_result is NULL:
  */
+  __Pyx_TraceLine(542,0,__PYX_ERR(5, 542, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns == Py_None);
   if ((__pyx_t_5 != 0)) {
     __pyx_t_4 = ((const xmlChar *)NULL);
@@ -24167,6 +25292,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     if c_result is NULL:
  *         # XXX free namespace that is not in use..?
  */
+  __Pyx_TraceLine(543,0,__PYX_ERR(5, 543, __pyx_L1_error))
   __pyx_v_c_result = xmlGetNsProp(__pyx_v_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag), __pyx_v_c_href);
 
   /* "src/lxml/apihelpers.pxi":544
@@ -24176,6 +25302,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *         # XXX free namespace that is not in use..?
  *         return default
  */
+  __Pyx_TraceLine(544,0,__PYX_ERR(5, 544, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_c_result == NULL) != 0);
   if (__pyx_t_5) {
 
@@ -24186,6 +25313,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     try:
  *         result = funicode(c_result)
  */
+    __Pyx_TraceLine(546,0,__PYX_ERR(5, 546, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_default);
     __pyx_r = __pyx_v_default;
@@ -24207,6 +25335,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *         result = funicode(c_result)
  *     finally:
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(5, 547, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/apihelpers.pxi":548
@@ -24216,6 +25345,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     finally:
  *         tree.xmlFree(c_result)
  */
+    __Pyx_TraceLine(548,0,__PYX_ERR(5, 548, __pyx_L5_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 548, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
@@ -24229,6 +25359,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  *     return result
  * 
  */
+  __Pyx_TraceLine(550,0,__PYX_ERR(5, 550, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_c_result);
@@ -24278,6 +25409,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
  * 
  * cdef inline object _getAttributeValue(_Element element, key, default):
  */
+  __Pyx_TraceLine(551,0,__PYX_ERR(5, 551, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -24303,6 +25435,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24317,9 +25450,11 @@ static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_getAttributeValue", 0);
+  __Pyx_TraceCall("_getAttributeValue", __pyx_f[5], 553, 0, __PYX_ERR(5, 553, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":554
  * 
@@ -24328,6 +25463,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__getAttributeValue(struct Lx
  * 
  * cdef int _setAttributeValue(_Element element, key, value) except -1:
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(5, 554, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNodeAttributeValue(__pyx_v_element->_c_node, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 554, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -24350,6 +25486,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__getAttributeValue(struct Lx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24370,6 +25507,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
   int __pyx_v_is_html;
   const xmlChar *__pyx_v_c_tag;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -24380,6 +25518,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
   int __pyx_t_7;
   xmlNs *__pyx_t_8;
   __Pyx_RefNannySetupContext("_setAttributeValue", 0);
+  __Pyx_TraceCall("_setAttributeValue", __pyx_f[5], 556, 0, __PYX_ERR(5, 556, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "src/lxml/apihelpers.pxi":559
@@ -24389,6 +25528,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     is_html = element._doc._parser._for_html
  *     if not is_html:
  */
+  __Pyx_TraceLine(559,0,__PYX_ERR(5, 559, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 559, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -24426,6 +25566,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     if not is_html:
  *         _attributeValidOrRaise(tag)
  */
+  __Pyx_TraceLine(560,0,__PYX_ERR(5, 560, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_element->_doc->_parser->_for_html;
   __pyx_v_is_html = __pyx_t_4;
 
@@ -24436,6 +25577,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *         _attributeValidOrRaise(tag)
  *     c_tag = _xcstr(tag)
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(5, 561, __pyx_L1_error))
   __pyx_t_4 = ((!(__pyx_v_is_html != 0)) != 0);
   if (__pyx_t_4) {
 
@@ -24446,6 +25588,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     c_tag = _xcstr(tag)
  *     if value is None and is_html:
  */
+    __Pyx_TraceLine(562,0,__PYX_ERR(5, 562, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree__attributeValidOrRaise(__pyx_v_tag); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 562, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":561
@@ -24464,6 +25607,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     if value is None and is_html:
  *         c_value = NULL
  */
+  __Pyx_TraceLine(563,0,__PYX_ERR(5, 563, __pyx_L1_error))
   __pyx_v_c_tag = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag);
 
   /* "src/lxml/apihelpers.pxi":564
@@ -24473,6 +25617,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *         c_value = NULL
  *     else:
  */
+  __Pyx_TraceLine(564,0,__PYX_ERR(5, 564, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_value == Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -24492,6 +25637,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     else:
  *         if isinstance(value, QName):
  */
+    __Pyx_TraceLine(565,0,__PYX_ERR(5, 565, __pyx_L1_error))
     __pyx_v_c_value = NULL;
 
     /* "src/lxml/apihelpers.pxi":564
@@ -24511,6 +25657,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *             value = _resolveQNameText(element, value)
  *         else:
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(5, 567, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree_QName); 
     __pyx_t_7 = (__pyx_t_4 != 0);
@@ -24523,6 +25670,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *         else:
  *             value = _utf8(value)
  */
+      __Pyx_TraceLine(568,0,__PYX_ERR(5, 568, __pyx_L1_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree__resolveQNameText(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 568, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
@@ -24545,6 +25693,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *         c_value = _xcstr(value)
  *     if ns is None:
  */
+    __Pyx_TraceLine(570,0,__PYX_ERR(5, 570, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 570, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -24560,6 +25709,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     if ns is None:
  *         c_ns = NULL
  */
+    __Pyx_TraceLine(571,0,__PYX_ERR(5, 571, __pyx_L1_error))
     __pyx_v_c_value = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
   }
   __pyx_L4:;
@@ -24571,6 +25721,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *         c_ns = NULL
  *     else:
  */
+  __Pyx_TraceLine(572,0,__PYX_ERR(5, 572, __pyx_L1_error))
   __pyx_t_7 = (__pyx_v_ns == Py_None);
   __pyx_t_4 = (__pyx_t_7 != 0);
   if (__pyx_t_4) {
@@ -24582,6 +25733,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     else:
  *         c_ns = element._doc._findOrBuildNodeNs(element._c_node, _xcstr(ns), NULL, 1)
  */
+    __Pyx_TraceLine(573,0,__PYX_ERR(5, 573, __pyx_L1_error))
     __pyx_v_c_ns = NULL;
 
     /* "src/lxml/apihelpers.pxi":572
@@ -24601,6 +25753,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     tree.xmlSetNsProp(element._c_node, c_ns, c_tag, c_value)
  *     return 0
  */
+  __Pyx_TraceLine(575,0,__PYX_ERR(5, 575, __pyx_L1_error))
   /*else*/ {
     __pyx_t_8 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns), NULL, 1); if (unlikely(__pyx_t_8 == ((xmlNs *)NULL))) __PYX_ERR(5, 575, __pyx_L1_error)
     __pyx_v_c_ns = __pyx_t_8;
@@ -24614,6 +25767,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  *     return 0
  * 
  */
+  __Pyx_TraceLine(576,0,__PYX_ERR(5, 576, __pyx_L1_error))
   (void)(xmlSetNsProp(__pyx_v_element->_c_node, __pyx_v_c_ns, __pyx_v_c_tag, __pyx_v_c_value));
 
   /* "src/lxml/apihelpers.pxi":577
@@ -24623,6 +25777,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
  * 
  * cdef int _delAttribute(_Element element, key) except -1:
  */
+  __Pyx_TraceLine(577,0,__PYX_ERR(5, 577, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -24645,6 +25800,7 @@ static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_e
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24662,6 +25818,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
   PyObject *__pyx_v_tag = NULL;
   const xmlChar *__pyx_v_c_href;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -24669,6 +25826,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
   const xmlChar *__pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_delAttribute", 0);
+  __Pyx_TraceCall("_delAttribute", __pyx_f[5], 579, 0, __PYX_ERR(5, 579, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":580
  * 
@@ -24677,6 +25835,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
  *     c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)
  *     if _delAttributeFromNsName(element._c_node, c_href, _xcstr(tag)):
  */
+  __Pyx_TraceLine(580,0,__PYX_ERR(5, 580, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 580, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -24714,6 +25873,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
  *     if _delAttributeFromNsName(element._c_node, c_href, _xcstr(tag)):
  *         raise KeyError, key
  */
+  __Pyx_TraceLine(581,0,__PYX_ERR(5, 581, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns == Py_None);
   if ((__pyx_t_5 != 0)) {
     __pyx_t_4 = ((const xmlChar *)NULL);
@@ -24729,6 +25889,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
  *         raise KeyError, key
  *     return 0
  */
+  __Pyx_TraceLine(582,0,__PYX_ERR(5, 582, __pyx_L1_error))
   __pyx_t_5 = (__pyx_f_4lxml_5etree__delAttributeFromNsName(__pyx_v_element->_c_node, __pyx_v_c_href, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag)) != 0);
   if (unlikely(__pyx_t_5)) {
 
@@ -24739,6 +25900,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
  *     return 0
  * 
  */
+    __Pyx_TraceLine(583,0,__PYX_ERR(5, 583, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
     __PYX_ERR(5, 583, __pyx_L1_error)
 
@@ -24758,6 +25920,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
  * 
  * cdef int _delAttributeFromNsName(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(584,0,__PYX_ERR(5, 584, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -24779,6 +25942,7 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24794,9 +25958,11 @@ static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_elemen
 static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   xmlAttr *__pyx_v_c_attr;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_delAttributeFromNsName", 0);
+  __Pyx_TraceCall("_delAttributeFromNsName", __pyx_f[5], 586, 0, __PYX_ERR(5, 586, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":587
  * 
@@ -24805,6 +25971,7 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  *     if c_attr is NULL:
  *         # XXX free namespace that is not in use..?
  */
+  __Pyx_TraceLine(587,0,__PYX_ERR(5, 587, __pyx_L1_error))
   __pyx_v_c_attr = xmlHasNsProp(__pyx_v_c_node, __pyx_v_c_name, __pyx_v_c_href);
 
   /* "src/lxml/apihelpers.pxi":588
@@ -24814,6 +25981,7 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  *         # XXX free namespace that is not in use..?
  *         return -1
  */
+  __Pyx_TraceLine(588,0,__PYX_ERR(5, 588, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_attr == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -24824,6 +25992,7 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  *     tree.xmlRemoveProp(c_attr)
  *     return 0
  */
+    __Pyx_TraceLine(590,0,__PYX_ERR(5, 590, __pyx_L1_error))
     __pyx_r = -1;
     goto __pyx_L0;
 
@@ -24843,6 +26012,7 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  *     return 0
  * 
  */
+  __Pyx_TraceLine(591,0,__PYX_ERR(5, 591, __pyx_L1_error))
   (void)(xmlRemoveProp(__pyx_v_c_attr));
 
   /* "src/lxml/apihelpers.pxi":592
@@ -24852,6 +26022,7 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  * 
  * cdef list _collectAttributes(xmlNode* c_node, int collecttype):
  */
+  __Pyx_TraceLine(592,0,__PYX_ERR(5, 592, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -24864,7 +26035,11 @@ static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node,
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._delAttributeFromNsName", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -24883,6 +26058,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
   PyObject *__pyx_v_attributes = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlAttr *__pyx_t_1;
   int __pyx_t_2;
@@ -24890,6 +26066,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_collectAttributes", 0);
+  __Pyx_TraceCall("_collectAttributes", __pyx_f[5], 594, 0, __PYX_ERR(5, 594, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":599
  *     """
@@ -24898,6 +26075,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     count = 0
  *     while c_attr is not NULL:
  */
+  __Pyx_TraceLine(599,0,__PYX_ERR(5, 599, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->properties;
   __pyx_v_c_attr = __pyx_t_1;
 
@@ -24908,6 +26086,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     while c_attr is not NULL:
  *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  */
+  __Pyx_TraceLine(600,0,__PYX_ERR(5, 600, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/apihelpers.pxi":601
@@ -24917,6 +26096,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *             count += 1
  */
+  __Pyx_TraceLine(601,0,__PYX_ERR(5, 601, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -24928,6 +26108,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             count += 1
  *         c_attr = c_attr.next
  */
+    __Pyx_TraceLine(602,0,__PYX_ERR(5, 602, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -24938,6 +26119,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *         c_attr = c_attr.next
  * 
  */
+      __Pyx_TraceLine(603,0,__PYX_ERR(5, 603, __pyx_L1_error))
       __pyx_v_count = (__pyx_v_count + 1);
 
       /* "src/lxml/apihelpers.pxi":602
@@ -24956,6 +26138,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  * 
  *     if not count:
  */
+    __Pyx_TraceLine(604,0,__PYX_ERR(5, 604, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_1;
   }
@@ -24967,6 +26150,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *         return []
  * 
  */
+  __Pyx_TraceLine(606,0,__PYX_ERR(5, 606, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_count != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -24977,6 +26161,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  * 
  *     attributes = [None] * count
  */
+    __Pyx_TraceLine(607,0,__PYX_ERR(5, 607, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 607, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -25000,6 +26185,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     c_attr = c_node.properties
  *     count = 0
  */
+  __Pyx_TraceLine(609,0,__PYX_ERR(5, 609, __pyx_L1_error))
   __pyx_t_3 = PyList_New(1 * ((__pyx_v_count<0) ? 0:__pyx_v_count)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 609, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   { Py_ssize_t __pyx_temp;
@@ -25019,6 +26205,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     count = 0
  *     while c_attr is not NULL:
  */
+  __Pyx_TraceLine(610,0,__PYX_ERR(5, 610, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->properties;
   __pyx_v_c_attr = __pyx_t_1;
 
@@ -25029,6 +26216,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     while c_attr is not NULL:
  *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  */
+  __Pyx_TraceLine(611,0,__PYX_ERR(5, 611, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/apihelpers.pxi":612
@@ -25038,6 +26226,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *             if collecttype == 1:
  */
+  __Pyx_TraceLine(612,0,__PYX_ERR(5, 612, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -25049,6 +26238,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             if collecttype == 1:
  *                 item = _namespacedName(<xmlNode*>c_attr)
  */
+    __Pyx_TraceLine(613,0,__PYX_ERR(5, 613, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -25059,6 +26249,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *                 item = _namespacedName(<xmlNode*>c_attr)
  *             elif collecttype == 2:
  */
+      __Pyx_TraceLine(614,0,__PYX_ERR(5, 614, __pyx_L1_error))
       switch (__pyx_v_collecttype) {
         case 1:
 
@@ -25069,6 +26260,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             elif collecttype == 2:
  *                 item = _attributeValue(c_node, c_attr)
  */
+        __Pyx_TraceLine(615,0,__PYX_ERR(5, 615, __pyx_L1_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 615, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3);
@@ -25090,6 +26282,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *                 item = _attributeValue(c_node, c_attr)
  *             else:
  */
+        __Pyx_TraceLine(616,0,__PYX_ERR(5, 616, __pyx_L1_error))
         case 2:
 
         /* "src/lxml/apihelpers.pxi":617
@@ -25099,6 +26292,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             else:
  *                 item = (_namespacedName(<xmlNode*>c_attr),
  */
+        __Pyx_TraceLine(617,0,__PYX_ERR(5, 617, __pyx_L1_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 617, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3);
@@ -25121,6 +26315,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *                         _attributeValue(c_node, c_attr))
  *             attributes[count] = item
  */
+        __Pyx_TraceLine(619,0,__PYX_ERR(5, 619, __pyx_L1_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 619, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
 
@@ -25131,6 +26326,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             attributes[count] = item
  *             count += 1
  */
+        __Pyx_TraceLine(620,0,__PYX_ERR(5, 620, __pyx_L1_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 620, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
 
@@ -25141,6 +26337,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *                         _attributeValue(c_node, c_attr))
  *             attributes[count] = item
  */
+        __Pyx_TraceLine(619,0,__PYX_ERR(5, 619, __pyx_L1_error))
         __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 619, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_3);
@@ -25161,6 +26358,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *             count += 1
  *         c_attr = c_attr.next
  */
+      __Pyx_TraceLine(621,0,__PYX_ERR(5, 621, __pyx_L1_error))
       if (unlikely(__Pyx_SetItemInt(__pyx_v_attributes, __pyx_v_count, __pyx_v_item, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1) < 0)) __PYX_ERR(5, 621, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":622
@@ -25170,6 +26368,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *         c_attr = c_attr.next
  *     return attributes
  */
+      __Pyx_TraceLine(622,0,__PYX_ERR(5, 622, __pyx_L1_error))
       __pyx_v_count = (__pyx_v_count + 1);
 
       /* "src/lxml/apihelpers.pxi":613
@@ -25188,6 +26387,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  *     return attributes
  * 
  */
+    __Pyx_TraceLine(623,0,__PYX_ERR(5, 623, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_1;
   }
@@ -25199,6 +26399,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
  * 
  * cdef object __RE_XML_ENCODING = re.compile(
  */
+  __Pyx_TraceLine(624,0,__PYX_ERR(5, 624, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_attributes);
   __pyx_r = __pyx_v_attributes;
@@ -25223,6 +26424,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
   __Pyx_XDECREF(__pyx_v_attributes);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25237,6 +26439,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node
 
 static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_v_xml_string) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -25244,6 +26447,7 @@ static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_stripEncodingDeclaration", 0);
+  __Pyx_TraceCall("_stripEncodingDeclaration", __pyx_f[5], 632, 0, __PYX_ERR(5, 632, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":634
  * cdef object _stripEncodingDeclaration(object xml_string):
@@ -25252,6 +26456,7 @@ static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_
  * 
  * cdef bint _hasEncodingDeclaration(object xml_string) except -1:
  */
+  __Pyx_TraceLine(634,0,__PYX_ERR(5, 634, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
   __pyx_t_2 = __pyx_v_4lxml_5etree___REPLACE_XML_ENCODING; __pyx_t_3 = NULL;
@@ -25321,6 +26526,7 @@ static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25335,6 +26541,7 @@ static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_
 
 static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_string) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -25342,6 +26549,7 @@ static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_st
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_hasEncodingDeclaration", 0);
+  __Pyx_TraceCall("_hasEncodingDeclaration", __pyx_f[5], 636, 0, __PYX_ERR(5, 636, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":638
  * cdef bint _hasEncodingDeclaration(object xml_string) except -1:
@@ -25350,6 +26558,7 @@ static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_st
  * 
  * cdef inline bint _hasText(xmlNode* c_node):
  */
+  __Pyx_TraceLine(638,0,__PYX_ERR(5, 638, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
   __pyx_t_2 = __pyx_v_4lxml_5etree___HAS_XML_ENCODING; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -25416,6 +26625,7 @@ static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_st
   __Pyx_AddTraceback("lxml.etree._hasEncodingDeclaration", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25430,10 +26640,12 @@ static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_st
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_hasText", 0);
+  __Pyx_TraceCall("_hasText", __pyx_f[5], 640, 0, __PYX_ERR(5, 640, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":641
  * 
@@ -25442,6 +26654,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *__pyx_v_c_node)
  * 
  * cdef inline bint _hasTail(xmlNode* c_node):
  */
+  __Pyx_TraceLine(641,0,__PYX_ERR(5, 641, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -25463,7 +26676,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *__pyx_v_c_node)
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._hasText", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25478,10 +26695,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *__pyx_v_c_node)
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasTail(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_hasTail", 0);
+  __Pyx_TraceCall("_hasTail", __pyx_f[5], 643, 0, __PYX_ERR(5, 643, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":644
  * 
@@ -25490,6 +26709,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasTail(xmlNode *__pyx_v_c_node)
  * 
  * cdef _collectText(xmlNode* c_node):
  */
+  __Pyx_TraceLine(644,0,__PYX_ERR(5, 644, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -25511,7 +26731,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasTail(xmlNode *__pyx_v_c_node)
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._hasTail", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25530,6 +26754,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_v_c_node_cur;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
@@ -25538,6 +26763,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_t_5 = NULL;
   unsigned char *__pyx_t_6;
   __Pyx_RefNannySetupContext("_collectText", 0);
+  __Pyx_TraceCall("_collectText", __pyx_f[5], 646, 0, __PYX_ERR(5, 646, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":657
  *     cdef xmlNode* c_node_cur
@@ -25546,6 +26772,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     c_text = NULL
  *     c_node_cur = c_node = _textNodeOrSkip(c_node)
  */
+  __Pyx_TraceLine(657,0,__PYX_ERR(5, 657, __pyx_L1_error))
   __pyx_v_scount = 0;
 
   /* "src/lxml/apihelpers.pxi":658
@@ -25555,6 +26782,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     c_node_cur = c_node = _textNodeOrSkip(c_node)
  *     while c_node_cur is not NULL:
  */
+  __Pyx_TraceLine(658,0,__PYX_ERR(5, 658, __pyx_L1_error))
   __pyx_v_c_text = NULL;
 
   /* "src/lxml/apihelpers.pxi":659
@@ -25564,6 +26792,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     while c_node_cur is not NULL:
  *         if c_node_cur.content[0] != c'\0':
  */
+  __Pyx_TraceLine(659,0,__PYX_ERR(5, 659, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node);
   __pyx_v_c_node_cur = __pyx_t_1;
   __pyx_v_c_node = __pyx_t_1;
@@ -25575,6 +26804,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         if c_node_cur.content[0] != c'\0':
  *             c_text = c_node_cur.content
  */
+  __Pyx_TraceLine(660,0,__PYX_ERR(5, 660, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node_cur != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -25586,6 +26816,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *             c_text = c_node_cur.content
  *         scount += 1
  */
+    __Pyx_TraceLine(661,0,__PYX_ERR(5, 661, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_c_node_cur->content[0]) != '\x00') != 0);
     if (__pyx_t_2) {
 
@@ -25596,6 +26827,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         scount += 1
  *         c_node_cur = _textNodeOrSkip(c_node_cur.next)
  */
+      __Pyx_TraceLine(662,0,__PYX_ERR(5, 662, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_c_node_cur->content;
       __pyx_v_c_text = __pyx_t_3;
 
@@ -25615,6 +26847,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         c_node_cur = _textNodeOrSkip(c_node_cur.next)
  * 
  */
+    __Pyx_TraceLine(663,0,__PYX_ERR(5, 663, __pyx_L1_error))
     __pyx_v_scount = (__pyx_v_scount + 1);
 
     /* "src/lxml/apihelpers.pxi":664
@@ -25624,6 +26857,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  * 
  *     # handle two most common cases first
  */
+    __Pyx_TraceLine(664,0,__PYX_ERR(5, 664, __pyx_L1_error))
     __pyx_v_c_node_cur = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node_cur->next);
   }
 
@@ -25634,6 +26868,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         return '' if scount > 0 else None
  *     if scount == 1:
  */
+  __Pyx_TraceLine(667,0,__PYX_ERR(5, 667, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_text == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -25644,10 +26879,11 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     if scount == 1:
  *         return funicode(c_text)
  */
+    __Pyx_TraceLine(668,0,__PYX_ERR(5, 668, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     if (((__pyx_v_scount > 0) != 0)) {
-      __Pyx_INCREF(__pyx_kp_s__16);
-      __pyx_t_4 = __pyx_kp_s__16;
+      __Pyx_INCREF(__pyx_kp_s__23);
+      __pyx_t_4 = __pyx_kp_s__23;
     } else {
       __Pyx_INCREF(Py_None);
       __pyx_t_4 = Py_None;
@@ -25672,6 +26908,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         return funicode(c_text)
  * 
  */
+  __Pyx_TraceLine(669,0,__PYX_ERR(5, 669, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_scount == 1) != 0);
   if (__pyx_t_2) {
 
@@ -25682,6 +26919,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  * 
  *     # the rest is not performance critical anymore
  */
+    __Pyx_TraceLine(670,0,__PYX_ERR(5, 670, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 670, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -25705,8 +26943,9 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     while c_node is not NULL:
  *         result += <unsigned char*>c_node.content
  */
-  __Pyx_INCREF(__pyx_kp_b__16);
-  __pyx_v_result = __pyx_kp_b__16;
+  __Pyx_TraceLine(673,0,__PYX_ERR(5, 673, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_kp_b__23);
+  __pyx_v_result = __pyx_kp_b__23;
 
   /* "src/lxml/apihelpers.pxi":674
  *     # the rest is not performance critical anymore
@@ -25715,6 +26954,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         result += <unsigned char*>c_node.content
  *         c_node = _textNodeOrSkip(c_node.next)
  */
+  __Pyx_TraceLine(674,0,__PYX_ERR(5, 674, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -25726,6 +26966,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *         c_node = _textNodeOrSkip(c_node.next)
  *     return funicode(<const_xmlChar*><unsigned char*>result)
  */
+    __Pyx_TraceLine(675,0,__PYX_ERR(5, 675, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_node->content)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 675, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 675, __pyx_L1_error)
@@ -25741,6 +26982,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  *     return funicode(<const_xmlChar*><unsigned char*>result)
  * 
  */
+    __Pyx_TraceLine(676,0,__PYX_ERR(5, 676, __pyx_L1_error))
     __pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
   }
 
@@ -25751,6 +26993,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  * 
  * cdef void _removeText(xmlNode* c_node):
  */
+  __Pyx_TraceLine(677,0,__PYX_ERR(5, 677, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_result == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
@@ -25780,6 +27023,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25794,9 +27038,11 @@ static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
 
 static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_v_c_next;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_removeText", 0);
+  __Pyx_TraceCall("_removeText", __pyx_f[5], 679, 0, __PYX_ERR(5, 679, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":685
  *     """
@@ -25805,6 +27051,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  *     while c_node is not NULL:
  *         c_next = _textNodeOrSkip(c_node.next)
  */
+  __Pyx_TraceLine(685,0,__PYX_ERR(5, 685, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":686
@@ -25814,6 +27061,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  *         c_next = _textNodeOrSkip(c_node.next)
  *         tree.xmlUnlinkNode(c_node)
  */
+  __Pyx_TraceLine(686,0,__PYX_ERR(5, 686, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -25825,6 +27073,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  *         tree.xmlUnlinkNode(c_node)
  *         tree.xmlFreeNode(c_node)
  */
+    __Pyx_TraceLine(687,0,__PYX_ERR(5, 687, __pyx_L1_error))
     __pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
 
     /* "src/lxml/apihelpers.pxi":688
@@ -25834,6 +27083,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  *         tree.xmlFreeNode(c_node)
  *         c_node = c_next
  */
+    __Pyx_TraceLine(688,0,__PYX_ERR(5, 688, __pyx_L1_error))
     xmlUnlinkNode(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":689
@@ -25843,6 +27093,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  *         c_node = c_next
  * 
  */
+    __Pyx_TraceLine(689,0,__PYX_ERR(5, 689, __pyx_L1_error))
     xmlFreeNode(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":690
@@ -25852,6 +27103,7 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  * 
  * cdef xmlNode* _createTextNode(xmlDoc* doc, value) except NULL:
  */
+    __Pyx_TraceLine(690,0,__PYX_ERR(5, 690, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -25864,6 +27116,11 @@ static void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._removeText", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -25879,12 +27136,14 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
   xmlNode *__pyx_v_c_text_node;
   PyObject *__pyx_v_text = NULL;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_createTextNode", 0);
+  __Pyx_TraceCall("_createTextNode", __pyx_f[5], 692, 0, __PYX_ERR(5, 692, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":694
  * cdef xmlNode* _createTextNode(xmlDoc* doc, value) except NULL:
@@ -25893,6 +27152,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *         c_text_node = tree.xmlNewCDataBlock(
  *             doc, _xcstr((<CDATA>value)._utf8_data),
  */
+  __Pyx_TraceLine(694,0,__PYX_ERR(5, 694, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree_CDATA); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -25904,6 +27164,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *             python.PyBytes_GET_SIZE((<CDATA>value)._utf8_data))
  *     else:
  */
+    __Pyx_TraceLine(696,0,__PYX_ERR(5, 696, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_value)->_utf8_data;
     __Pyx_INCREF(__pyx_t_3);
 
@@ -25914,6 +27175,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *     else:
  *         text = _utf8(value)
  */
+    __Pyx_TraceLine(697,0,__PYX_ERR(5, 697, __pyx_L1_error))
     __pyx_t_4 = ((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_value)->_utf8_data;
     __Pyx_INCREF(__pyx_t_4);
 
@@ -25924,6 +27186,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *             doc, _xcstr((<CDATA>value)._utf8_data),
  *             python.PyBytes_GET_SIZE((<CDATA>value)._utf8_data))
  */
+    __Pyx_TraceLine(695,0,__PYX_ERR(5, 695, __pyx_L1_error))
     __pyx_v_c_text_node = xmlNewCDataBlock(__pyx_v_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_t_3), PyBytes_GET_SIZE(__pyx_t_4));
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -25945,6 +27208,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *         c_text_node = tree.xmlNewDocText(doc, _xcstr(text))
  *     if not c_text_node:
  */
+  __Pyx_TraceLine(699,0,__PYX_ERR(5, 699, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 699, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -25958,6 +27222,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *     if not c_text_node:
  *         raise MemoryError()
  */
+    __Pyx_TraceLine(700,0,__PYX_ERR(5, 700, __pyx_L1_error))
     __pyx_v_c_text_node = xmlNewDocText(__pyx_v_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
   }
   __pyx_L3:;
@@ -25969,6 +27234,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *         raise MemoryError()
  *     return c_text_node
  */
+  __Pyx_TraceLine(701,0,__PYX_ERR(5, 701, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_c_text_node != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -25979,6 +27245,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  *     return c_text_node
  * 
  */
+    __Pyx_TraceLine(702,0,__PYX_ERR(5, 702, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(5, 702, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":701
@@ -25997,6 +27264,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
  * 
  * cdef int _setNodeText(xmlNode* c_node, value) except -1:
  */
+  __Pyx_TraceLine(703,0,__PYX_ERR(5, 703, __pyx_L1_error))
   __pyx_r = __pyx_v_c_text_node;
   goto __pyx_L0;
 
@@ -26016,6 +27284,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_text);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26031,11 +27300,13 @@ static xmlNode *__pyx_f_4lxml_5etree__createTextNode(xmlDoc *__pyx_v_doc, PyObje
 static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_value) {
   xmlNode *__pyx_v_c_text_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   __Pyx_RefNannySetupContext("_setNodeText", 0);
+  __Pyx_TraceCall("_setNodeText", __pyx_f[5], 705, 0, __PYX_ERR(5, 705, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":707
  * cdef int _setNodeText(xmlNode* c_node, value) except -1:
@@ -26044,6 +27315,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *     if value is None:
  *         return 0
  */
+  __Pyx_TraceLine(707,0,__PYX_ERR(5, 707, __pyx_L1_error))
   __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->children);
 
   /* "src/lxml/apihelpers.pxi":708
@@ -26053,6 +27325,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *         return 0
  *     # now add new text node with value at start
  */
+  __Pyx_TraceLine(708,0,__PYX_ERR(5, 708, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26064,6 +27337,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *     # now add new text node with value at start
  *     c_text_node = _createTextNode(c_node.doc, value)
  */
+    __Pyx_TraceLine(709,0,__PYX_ERR(5, 709, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -26083,6 +27357,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *     if c_node.children is NULL:
  *         tree.xmlAddChild(c_node, c_text_node)
  */
+  __Pyx_TraceLine(711,0,__PYX_ERR(5, 711, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__createTextNode(__pyx_v_c_node->doc, __pyx_v_value); if (unlikely(__pyx_t_3 == ((xmlNode *)NULL))) __PYX_ERR(5, 711, __pyx_L1_error)
   __pyx_v_c_text_node = __pyx_t_3;
 
@@ -26093,6 +27368,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *         tree.xmlAddChild(c_node, c_text_node)
  *     else:
  */
+  __Pyx_TraceLine(712,0,__PYX_ERR(5, 712, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->children == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -26103,6 +27379,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *     else:
  *         tree.xmlAddPrevSibling(c_node.children, c_text_node)
  */
+    __Pyx_TraceLine(713,0,__PYX_ERR(5, 713, __pyx_L1_error))
     (void)(xmlAddChild(__pyx_v_c_node, __pyx_v_c_text_node));
 
     /* "src/lxml/apihelpers.pxi":712
@@ -26122,6 +27399,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  *     return 0
  * 
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(5, 715, __pyx_L1_error))
   /*else*/ {
     (void)(xmlAddPrevSibling(__pyx_v_c_node->children, __pyx_v_c_text_node));
   }
@@ -26134,6 +27412,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
  * 
  * cdef int _setTailText(xmlNode* c_node, value) except -1:
  */
+  __Pyx_TraceLine(716,0,__PYX_ERR(5, 716, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -26150,6 +27429,7 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
   __Pyx_AddTraceback("lxml.etree._setNodeText", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26165,11 +27445,13 @@ static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *
 static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_value) {
   xmlNode *__pyx_v_c_text_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   __Pyx_RefNannySetupContext("_setTailText", 0);
+  __Pyx_TraceCall("_setTailText", __pyx_f[5], 718, 0, __PYX_ERR(5, 718, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":720
  * cdef int _setTailText(xmlNode* c_node, value) except -1:
@@ -26178,6 +27460,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  *     if value is None:
  *         return 0
  */
+  __Pyx_TraceLine(720,0,__PYX_ERR(5, 720, __pyx_L1_error))
   __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
   /* "src/lxml/apihelpers.pxi":721
@@ -26187,6 +27470,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  *         return 0
  *     # now append new text node with value
  */
+  __Pyx_TraceLine(721,0,__PYX_ERR(5, 721, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26198,6 +27482,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  *     # now append new text node with value
  *     c_text_node = _createTextNode(c_node.doc, value)
  */
+    __Pyx_TraceLine(722,0,__PYX_ERR(5, 722, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -26217,6 +27502,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  *     tree.xmlAddNextSibling(c_node, c_text_node)
  *     return 0
  */
+  __Pyx_TraceLine(724,0,__PYX_ERR(5, 724, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__createTextNode(__pyx_v_c_node->doc, __pyx_v_value); if (unlikely(__pyx_t_3 == ((xmlNode *)NULL))) __PYX_ERR(5, 724, __pyx_L1_error)
   __pyx_v_c_text_node = __pyx_t_3;
 
@@ -26227,6 +27513,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  *     return 0
  * 
  */
+  __Pyx_TraceLine(725,0,__PYX_ERR(5, 725, __pyx_L1_error))
   (void)(xmlAddNextSibling(__pyx_v_c_node, __pyx_v_c_text_node));
 
   /* "src/lxml/apihelpers.pxi":726
@@ -26236,6 +27523,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
  * 
  * cdef bytes _resolveQNameText(_Element element, value):
  */
+  __Pyx_TraceLine(726,0,__PYX_ERR(5, 726, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -26252,6 +27540,7 @@ static int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *
   __Pyx_AddTraceback("lxml.etree._setTailText", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26269,6 +27558,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -26277,6 +27567,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
   int __pyx_t_5;
   xmlNs *__pyx_t_6;
   __Pyx_RefNannySetupContext("_resolveQNameText", 0);
+  __Pyx_TraceCall("_resolveQNameText", __pyx_f[5], 728, 0, __PYX_ERR(5, 728, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":730
  * cdef bytes _resolveQNameText(_Element element, value):
@@ -26285,6 +27576,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  *     if ns is None:
  *         return tag
  */
+  __Pyx_TraceLine(730,0,__PYX_ERR(5, 730, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -26322,6 +27614,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  *         return tag
  *     else:
  */
+  __Pyx_TraceLine(731,0,__PYX_ERR(5, 731, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_ns == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -26333,6 +27626,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  *     else:
  *         c_ns = element._doc._findOrBuildNodeNs(
  */
+    __Pyx_TraceLine(732,0,__PYX_ERR(5, 732, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     if (!(likely(PyBytes_CheckExact(__pyx_v_tag))||((__pyx_v_tag) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_tag)->tp_name), 0))) __PYX_ERR(5, 732, __pyx_L1_error)
     __Pyx_INCREF(__pyx_v_tag);
@@ -26355,6 +27649,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  *             element._c_node, _xcstr(ns), NULL, 0)
  *         return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
  */
+  __Pyx_TraceLine(734,0,__PYX_ERR(5, 734, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/apihelpers.pxi":735
@@ -26364,6 +27659,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  *         return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
  * 
  */
+    __Pyx_TraceLine(735,0,__PYX_ERR(5, 735, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns), NULL, 0); if (unlikely(__pyx_t_6 == ((xmlNs *)NULL))) __PYX_ERR(5, 734, __pyx_L1_error)
     __pyx_v_c_ns = __pyx_t_6;
 
@@ -26374,6 +27670,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
  * 
  * cdef inline bint _hasChild(xmlNode* c_node):
  */
+    __Pyx_TraceLine(736,0,__PYX_ERR(5, 736, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyBytes_FromFormat(((char *)"%s:%s"), __pyx_v_c_ns->prefix, PyBytes_AS_STRING(__pyx_v_tag)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 736, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -26401,6 +27698,7 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26415,10 +27713,12 @@ static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__py
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_hasChild", 0);
+  __Pyx_TraceCall("_hasChild", __pyx_f[5], 738, 0, __PYX_ERR(5, 738, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":739
  * 
@@ -26427,6 +27727,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *__pyx_v_c_node)
  * 
  * cdef inline Py_ssize_t _countElements(xmlNode* c_node):
  */
+  __Pyx_TraceLine(739,0,__PYX_ERR(5, 739, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -26448,7 +27749,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *__pyx_v_c_node)
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._hasChild", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26464,10 +27769,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *__pyx_v_c_node)
 static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__pyx_v_c_node) {
   Py_ssize_t __pyx_v_count;
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_countElements", 0);
+  __Pyx_TraceCall("_countElements", __pyx_f[5], 741, 0, __PYX_ERR(5, 741, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":744
  *     u"Counts the elements within the following siblings and the node itself."
@@ -26476,6 +27783,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  *     while c_node is not NULL:
  *         if _isElement(c_node):
  */
+  __Pyx_TraceLine(744,0,__PYX_ERR(5, 744, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/apihelpers.pxi":745
@@ -26485,6 +27793,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  *         if _isElement(c_node):
  *             count += 1
  */
+  __Pyx_TraceLine(745,0,__PYX_ERR(5, 745, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -26496,6 +27805,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  *             count += 1
  *         c_node = c_node.next
  */
+    __Pyx_TraceLine(746,0,__PYX_ERR(5, 746, __pyx_L1_error))
     __pyx_t_1 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_1) {
 
@@ -26506,6 +27816,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  *         c_node = c_node.next
  *     return count
  */
+      __Pyx_TraceLine(747,0,__PYX_ERR(5, 747, __pyx_L1_error))
       __pyx_v_count = (__pyx_v_count + 1);
 
       /* "src/lxml/apihelpers.pxi":746
@@ -26524,6 +27835,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  *     return count
  * 
  */
+    __Pyx_TraceLine(748,0,__PYX_ERR(5, 748, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -26535,6 +27847,7 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  * 
  * cdef int _findChildSlice(
  */
+  __Pyx_TraceLine(749,0,__PYX_ERR(5, 749, __pyx_L1_error))
   __pyx_r = __pyx_v_count;
   goto __pyx_L0;
 
@@ -26547,7 +27860,11 @@ static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._countElements", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26565,12 +27882,14 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
   Py_ssize_t __pyx_v_stop;
   Py_ssize_t __pyx_v_childcount;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_findChildSlice", 0);
+  __Pyx_TraceCall("_findChildSlice", __pyx_f[5], 751, 0, __PYX_ERR(5, 751, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":759
  *     pointer arguments.
@@ -26579,6 +27898,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *     childcount = _countElements(c_parent.children)
  *     if childcount == 0:
  */
+  __Pyx_TraceLine(759,0,__PYX_ERR(5, 759, __pyx_L1_error))
   __pyx_v_start = 0;
   __pyx_v_stop = 0;
 
@@ -26589,6 +27909,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *     if childcount == 0:
  *         c_start_node[0] = NULL
  */
+  __Pyx_TraceLine(760,0,__PYX_ERR(5, 760, __pyx_L1_error))
   __pyx_v_childcount = __pyx_f_4lxml_5etree__countElements(__pyx_v_c_parent->children);
 
   /* "src/lxml/apihelpers.pxi":761
@@ -26598,6 +27919,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         c_start_node[0] = NULL
  *         c_length[0] = 0
  */
+  __Pyx_TraceLine(761,0,__PYX_ERR(5, 761, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_childcount == 0) != 0);
   if (__pyx_t_1) {
 
@@ -26608,6 +27930,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         c_length[0] = 0
  *         if sliceobject.step is None:
  */
+    __Pyx_TraceLine(762,0,__PYX_ERR(5, 762, __pyx_L1_error))
     (__pyx_v_c_start_node[0]) = NULL;
 
     /* "src/lxml/apihelpers.pxi":763
@@ -26617,6 +27940,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         if sliceobject.step is None:
  *             c_step[0] = 1
  */
+    __Pyx_TraceLine(763,0,__PYX_ERR(5, 763, __pyx_L1_error))
     (__pyx_v_c_length[0]) = 0;
 
     /* "src/lxml/apihelpers.pxi":764
@@ -26626,6 +27950,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *             c_step[0] = 1
  *         else:
  */
+    __Pyx_TraceLine(764,0,__PYX_ERR(5, 764, __pyx_L1_error))
     __pyx_t_1 = (((PySliceObject*)__pyx_v_sliceobject)->step == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -26637,6 +27962,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         else:
  *             python._PyEval_SliceIndex(sliceobject.step, c_step)
  */
+      __Pyx_TraceLine(765,0,__PYX_ERR(5, 765, __pyx_L1_error))
       (__pyx_v_c_step[0]) = 1;
 
       /* "src/lxml/apihelpers.pxi":764
@@ -26656,6 +27982,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         return 0
  *     python.PySlice_GetIndicesEx(
  */
+    __Pyx_TraceLine(767,0,__PYX_ERR(5, 767, __pyx_L1_error))
     /*else*/ {
       __pyx_t_3 = ((PySliceObject*)__pyx_v_sliceobject)->step;
       __Pyx_INCREF(__pyx_t_3);
@@ -26671,6 +27998,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *     python.PySlice_GetIndicesEx(
  *         sliceobject, childcount, &start, &stop, c_step, c_length)
  */
+    __Pyx_TraceLine(768,0,__PYX_ERR(5, 768, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -26690,6 +28018,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         sliceobject, childcount, &start, &stop, c_step, c_length)
  *     if start > childcount / 2:
  */
+  __Pyx_TraceLine(769,0,__PYX_ERR(5, 769, __pyx_L1_error))
   __pyx_t_4 = _lx_PySlice_GetIndicesEx(__pyx_v_sliceobject, __pyx_v_childcount, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_c_step, __pyx_v_c_length); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 769, __pyx_L1_error)
 
   /* "src/lxml/apihelpers.pxi":771
@@ -26699,6 +28028,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *         c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
  *     else:
  */
+  __Pyx_TraceLine(771,0,__PYX_ERR(5, 771, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_start > __Pyx_div_Py_ssize_t(__pyx_v_childcount, 2)) != 0);
   if (__pyx_t_2) {
 
@@ -26709,6 +28039,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *     else:
  *         c_start_node[0] = _findChild(c_parent, start)
  */
+    __Pyx_TraceLine(772,0,__PYX_ERR(5, 772, __pyx_L1_error))
     (__pyx_v_c_start_node[0]) = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_parent, ((__pyx_v_childcount - __pyx_v_start) - 1));
 
     /* "src/lxml/apihelpers.pxi":771
@@ -26728,6 +28059,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  *     return 0
  * 
  */
+  __Pyx_TraceLine(774,0,__PYX_ERR(5, 774, __pyx_L1_error))
   /*else*/ {
     (__pyx_v_c_start_node[0]) = __pyx_f_4lxml_5etree__findChild(__pyx_v_c_parent, __pyx_v_start);
   }
@@ -26740,6 +28072,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
  * 
  * cdef bint _isFullSlice(slice sliceobject) except -1:
  */
+  __Pyx_TraceLine(775,0,__PYX_ERR(5, 775, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -26757,6 +28090,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
   __Pyx_AddTraceback("lxml.etree._findChildSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26772,6 +28106,7 @@ static int __pyx_f_4lxml_5etree__findChildSlice(PyObject *__pyx_v_sliceobject, x
 static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
   Py_ssize_t __pyx_v_step;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -26779,6 +28114,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_isFullSlice", 0);
+  __Pyx_TraceCall("_isFullSlice", __pyx_f[5], 777, 0, __PYX_ERR(5, 777, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":780
  *     u"""Conservative guess if this slice is a full slice as in ``s[:]``.
@@ -26787,6 +28123,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *     if sliceobject is None:
  *         return 0
  */
+  __Pyx_TraceLine(780,0,__PYX_ERR(5, 780, __pyx_L1_error))
   __pyx_v_step = 0;
 
   /* "src/lxml/apihelpers.pxi":781
@@ -26796,6 +28133,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *         return 0
  *     if sliceobject.start is None and \
  */
+  __Pyx_TraceLine(781,0,__PYX_ERR(5, 781, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_sliceobject == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26807,6 +28145,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *     if sliceobject.start is None and \
  *             sliceobject.stop is None:
  */
+    __Pyx_TraceLine(782,0,__PYX_ERR(5, 782, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -26826,6 +28165,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *             sliceobject.stop is None:
  *         if sliceobject.step is None:
  */
+  __Pyx_TraceLine(783,0,__PYX_ERR(5, 783, __pyx_L1_error))
   __pyx_t_1 = (((PySliceObject*)__pyx_v_sliceobject)->start == Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -26841,6 +28181,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *         if sliceobject.step is None:
  *             return 1
  */
+  __Pyx_TraceLine(784,0,__PYX_ERR(5, 784, __pyx_L1_error))
   __pyx_t_3 = (((PySliceObject*)__pyx_v_sliceobject)->stop == Py_None);
   __pyx_t_1 = (__pyx_t_3 != 0);
   __pyx_t_2 = __pyx_t_1;
@@ -26853,6 +28194,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *             sliceobject.stop is None:
  *         if sliceobject.step is None:
  */
+  __Pyx_TraceLine(783,0,__PYX_ERR(5, 783, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/apihelpers.pxi":785
@@ -26862,6 +28204,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *             return 1
  *         python._PyEval_SliceIndex(sliceobject.step, &step)
  */
+    __Pyx_TraceLine(785,0,__PYX_ERR(5, 785, __pyx_L1_error))
     __pyx_t_2 = (((PySliceObject*)__pyx_v_sliceobject)->step == Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -26873,6 +28216,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *         python._PyEval_SliceIndex(sliceobject.step, &step)
  *         if step == 1:
  */
+      __Pyx_TraceLine(786,0,__PYX_ERR(5, 786, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -26892,6 +28236,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *         if step == 1:
  *             return 1
  */
+    __Pyx_TraceLine(787,0,__PYX_ERR(5, 787, __pyx_L1_error))
     __pyx_t_4 = ((PySliceObject*)__pyx_v_sliceobject)->step;
     __Pyx_INCREF(__pyx_t_4);
     __pyx_t_5 = _PyEval_SliceIndex(__pyx_t_4, (&__pyx_v_step)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(5, 787, __pyx_L1_error)
@@ -26904,6 +28249,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *             return 1
  *         return 0
  */
+    __Pyx_TraceLine(788,0,__PYX_ERR(5, 788, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_step == 1) != 0);
     if (__pyx_t_1) {
 
@@ -26914,6 +28260,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *         return 0
  *     return 0
  */
+      __Pyx_TraceLine(789,0,__PYX_ERR(5, 789, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -26933,6 +28280,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(790,0,__PYX_ERR(5, 790, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -26952,6 +28300,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
  * 
  * cdef _collectChildren(_Element element):
  */
+  __Pyx_TraceLine(791,0,__PYX_ERR(5, 791, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -26969,6 +28318,7 @@ static int __pyx_f_4lxml_5etree__isFullSlice(PyObject *__pyx_v_sliceobject) {
   __Pyx_AddTraceback("lxml.etree._isFullSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26985,6 +28335,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlNode *__pyx_t_2;
@@ -26992,6 +28343,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_collectChildren", 0);
+  __Pyx_TraceCall("_collectChildren", __pyx_f[5], 793, 0, __PYX_ERR(5, 793, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":795
  * cdef _collectChildren(_Element element):
@@ -27000,6 +28352,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *     c_node = element._c_node.children
  *     if c_node is not NULL:
  */
+  __Pyx_TraceLine(795,0,__PYX_ERR(5, 795, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 795, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((PyObject*)__pyx_t_1);
@@ -27012,6 +28365,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *     if c_node is not NULL:
  *         if not _isElement(c_node):
  */
+  __Pyx_TraceLine(796,0,__PYX_ERR(5, 796, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_element->_c_node->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -27022,6 +28376,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *         if not _isElement(c_node):
  *             c_node = _nextElement(c_node)
  */
+  __Pyx_TraceLine(797,0,__PYX_ERR(5, 797, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_3) {
 
@@ -27032,6 +28387,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *             c_node = _nextElement(c_node)
  *         while c_node is not NULL:
  */
+    __Pyx_TraceLine(798,0,__PYX_ERR(5, 798, __pyx_L1_error))
     __pyx_t_3 = ((!(_isElement(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_3) {
 
@@ -27042,6 +28398,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *         while c_node is not NULL:
  *             result.append(_elementFactory(element._doc, c_node))
  */
+      __Pyx_TraceLine(799,0,__PYX_ERR(5, 799, __pyx_L1_error))
       __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
       /* "src/lxml/apihelpers.pxi":798
@@ -27060,6 +28417,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *             result.append(_elementFactory(element._doc, c_node))
  *             c_node = _nextElement(c_node)
  */
+    __Pyx_TraceLine(800,0,__PYX_ERR(5, 800, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_3) break;
@@ -27071,6 +28429,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *             c_node = _nextElement(c_node)
  *     return result
  */
+      __Pyx_TraceLine(801,0,__PYX_ERR(5, 801, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)__pyx_v_element->_doc);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 801, __pyx_L1_error)
@@ -27086,6 +28445,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  *     return result
  * 
  */
+      __Pyx_TraceLine(802,0,__PYX_ERR(5, 802, __pyx_L1_error))
       __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
     }
 
@@ -27105,6 +28465,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
  * 
  * cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(803,0,__PYX_ERR(5, 803, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -27127,6 +28488,7 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27141,9 +28503,11 @@ static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_findChild", 0);
+  __Pyx_TraceCall("_findChild", __pyx_f[5], 805, 0, __PYX_ERR(5, 805, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":806
  * 
@@ -27152,6 +28516,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c
  *         return _findChildBackwards(c_node, -index - 1)
  *     else:
  */
+  __Pyx_TraceLine(806,0,__PYX_ERR(5, 806, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_index < 0) != 0);
   if (__pyx_t_1) {
 
@@ -27162,6 +28527,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c
  *     else:
  *         return _findChildForwards(c_node, index)
  */
+    __Pyx_TraceLine(807,0,__PYX_ERR(5, 807, __pyx_L1_error))
     __pyx_r = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_node, ((-__pyx_v_index) - 1));
     goto __pyx_L0;
 
@@ -27181,6 +28547,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c
  * 
  * cdef inline xmlNode* _findChildForwards(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(809,0,__PYX_ERR(5, 809, __pyx_L1_error))
   /*else*/ {
     __pyx_r = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, __pyx_v_index);
     goto __pyx_L0;
@@ -27195,7 +28562,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._findChild", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27212,10 +28583,12 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
   xmlNode *__pyx_v_c_child;
   Py_ssize_t __pyx_v_c;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_findChildForwards", 0);
+  __Pyx_TraceCall("_findChildForwards", __pyx_f[5], 811, 0, __PYX_ERR(5, 811, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":816
  *     cdef xmlNode* c_child
@@ -27224,6 +28597,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *     c = 0
  *     while c_child is not NULL:
  */
+  __Pyx_TraceLine(816,0,__PYX_ERR(5, 816, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->children;
   __pyx_v_c_child = __pyx_t_1;
 
@@ -27234,6 +28608,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *     while c_child is not NULL:
  *         if _isElement(c_child):
  */
+  __Pyx_TraceLine(817,0,__PYX_ERR(5, 817, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "src/lxml/apihelpers.pxi":818
@@ -27243,6 +28618,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *         if _isElement(c_child):
  *             if c == index:
  */
+  __Pyx_TraceLine(818,0,__PYX_ERR(5, 818, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -27254,6 +28630,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *             if c == index:
  *                 return c_child
  */
+    __Pyx_TraceLine(819,0,__PYX_ERR(5, 819, __pyx_L1_error))
     __pyx_t_2 = (_isElement(__pyx_v_c_child) != 0);
     if (__pyx_t_2) {
 
@@ -27264,6 +28641,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *                 return c_child
  *             c += 1
  */
+      __Pyx_TraceLine(820,0,__PYX_ERR(5, 820, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c == __pyx_v_index) != 0);
       if (__pyx_t_2) {
 
@@ -27274,6 +28652,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *             c += 1
  *         c_child = c_child.next
  */
+        __Pyx_TraceLine(821,0,__PYX_ERR(5, 821, __pyx_L1_error))
         __pyx_r = __pyx_v_c_child;
         goto __pyx_L0;
 
@@ -27293,6 +28672,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *         c_child = c_child.next
  *     return NULL
  */
+      __Pyx_TraceLine(822,0,__PYX_ERR(5, 822, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "src/lxml/apihelpers.pxi":819
@@ -27311,6 +28691,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  *     return NULL
  * 
  */
+    __Pyx_TraceLine(823,0,__PYX_ERR(5, 823, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_child->next;
     __pyx_v_c_child = __pyx_t_1;
   }
@@ -27322,6 +28703,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  * 
  * cdef inline xmlNode* _findChildBackwards(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(824,0,__PYX_ERR(5, 824, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -27334,7 +28716,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._findChildForwards", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27351,10 +28737,12 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
   xmlNode *__pyx_v_c_child;
   Py_ssize_t __pyx_v_c;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_findChildBackwards", 0);
+  __Pyx_TraceCall("_findChildBackwards", __pyx_f[5], 826, 0, __PYX_ERR(5, 826, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":832
  *     cdef xmlNode* c_child
@@ -27363,6 +28751,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *     c = 0
  *     while c_child is not NULL:
  */
+  __Pyx_TraceLine(832,0,__PYX_ERR(5, 832, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->last;
   __pyx_v_c_child = __pyx_t_1;
 
@@ -27373,6 +28762,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *     while c_child is not NULL:
  *         if _isElement(c_child):
  */
+  __Pyx_TraceLine(833,0,__PYX_ERR(5, 833, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "src/lxml/apihelpers.pxi":834
@@ -27382,6 +28772,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *         if _isElement(c_child):
  *             if c == index:
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(5, 834, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -27393,6 +28784,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *             if c == index:
  *                 return c_child
  */
+    __Pyx_TraceLine(835,0,__PYX_ERR(5, 835, __pyx_L1_error))
     __pyx_t_2 = (_isElement(__pyx_v_c_child) != 0);
     if (__pyx_t_2) {
 
@@ -27403,6 +28795,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *                 return c_child
  *             c += 1
  */
+      __Pyx_TraceLine(836,0,__PYX_ERR(5, 836, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c == __pyx_v_index) != 0);
       if (__pyx_t_2) {
 
@@ -27413,6 +28806,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *             c += 1
  *         c_child = c_child.prev
  */
+        __Pyx_TraceLine(837,0,__PYX_ERR(5, 837, __pyx_L1_error))
         __pyx_r = __pyx_v_c_child;
         goto __pyx_L0;
 
@@ -27432,6 +28826,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *         c_child = c_child.prev
  *     return NULL
  */
+      __Pyx_TraceLine(838,0,__PYX_ERR(5, 838, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "src/lxml/apihelpers.pxi":835
@@ -27450,6 +28845,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  *     return NULL
  * 
  */
+    __Pyx_TraceLine(839,0,__PYX_ERR(5, 839, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_child->prev;
     __pyx_v_c_child = __pyx_t_1;
   }
@@ -27461,6 +28857,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  * 
  * cdef inline xmlNode* _textNodeOrSkip(xmlNode* c_node) nogil:
  */
+  __Pyx_TraceLine(840,0,__PYX_ERR(5, 840, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -27473,7 +28870,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._findChildBackwards", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27488,8 +28889,10 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
+  __Pyx_TraceCall("_textNodeOrSkip", __pyx_f[5], 842, 1, __PYX_ERR(5, 842, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":849
  *     nodes.
@@ -27498,6 +28901,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *         if c_node.type == tree.XML_TEXT_NODE or \
  *                c_node.type == tree.XML_CDATA_SECTION_NODE:
  */
+  __Pyx_TraceLine(849,1,__PYX_ERR(5, 849, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -27509,6 +28913,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *                c_node.type == tree.XML_CDATA_SECTION_NODE:
  *             return c_node
  */
+    __Pyx_TraceLine(850,1,__PYX_ERR(5, 850, __pyx_L1_error))
     switch (__pyx_v_c_node->type) {
       case XML_TEXT_NODE:
 
@@ -27519,6 +28924,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *             return c_node
  *         elif c_node.type == tree.XML_XINCLUDE_START or \
  */
+      __Pyx_TraceLine(851,1,__PYX_ERR(5, 851, __pyx_L1_error))
       case XML_CDATA_SECTION_NODE:
 
       /* "src/lxml/apihelpers.pxi":852
@@ -27528,6 +28934,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *         elif c_node.type == tree.XML_XINCLUDE_START or \
  *                  c_node.type == tree.XML_XINCLUDE_END:
  */
+      __Pyx_TraceLine(852,1,__PYX_ERR(5, 852, __pyx_L1_error))
       __pyx_r = __pyx_v_c_node;
       goto __pyx_L0;
 
@@ -27547,6 +28954,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *                  c_node.type == tree.XML_XINCLUDE_END:
  *             c_node = c_node.next
  */
+      __Pyx_TraceLine(853,1,__PYX_ERR(5, 853, __pyx_L1_error))
       case XML_XINCLUDE_START:
 
       /* "src/lxml/apihelpers.pxi":854
@@ -27556,6 +28964,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *             c_node = c_node.next
  *         else:
  */
+      __Pyx_TraceLine(854,1,__PYX_ERR(5, 854, __pyx_L1_error))
       case XML_XINCLUDE_END:
 
       /* "src/lxml/apihelpers.pxi":855
@@ -27565,6 +28974,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *         else:
  *             return NULL
  */
+      __Pyx_TraceLine(855,1,__PYX_ERR(5, 855, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_node->next;
       __pyx_v_c_node = __pyx_t_2;
 
@@ -27585,6 +28995,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  *     return NULL
  * 
  */
+      __Pyx_TraceLine(857,1,__PYX_ERR(5, 857, __pyx_L1_error))
       __pyx_r = NULL;
       goto __pyx_L0;
       break;
@@ -27598,6 +29009,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  * 
  * cdef inline xmlNode* _nextElement(xmlNode* c_node):
  */
+  __Pyx_TraceLine(858,1,__PYX_ERR(5, 858, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -27610,7 +29022,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._textNodeOrSkip", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
@@ -27624,10 +29040,12 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__py
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_nextElement", 0);
+  __Pyx_TraceCall("_nextElement", __pyx_f[5], 860, 0, __PYX_ERR(5, 860, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":863
  *     u"""Given a node, find the next sibling that is an element.
@@ -27636,6 +29054,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *         return NULL
  *     c_node = c_node.next
  */
+  __Pyx_TraceLine(863,0,__PYX_ERR(5, 863, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -27646,6 +29065,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *     c_node = c_node.next
  *     while c_node is not NULL:
  */
+    __Pyx_TraceLine(864,0,__PYX_ERR(5, 864, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -27665,6 +29085,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *     while c_node is not NULL:
  *         if _isElement(c_node):
  */
+  __Pyx_TraceLine(865,0,__PYX_ERR(5, 865, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->next;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -27675,6 +29096,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *         if _isElement(c_node):
  *             return c_node
  */
+  __Pyx_TraceLine(866,0,__PYX_ERR(5, 866, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -27686,6 +29108,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *             return c_node
  *         c_node = c_node.next
  */
+    __Pyx_TraceLine(867,0,__PYX_ERR(5, 867, __pyx_L1_error))
     __pyx_t_1 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_1) {
 
@@ -27696,6 +29119,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *         c_node = c_node.next
  *     return NULL
  */
+      __Pyx_TraceLine(868,0,__PYX_ERR(5, 868, __pyx_L1_error))
       __pyx_r = __pyx_v_c_node;
       goto __pyx_L0;
 
@@ -27715,6 +29139,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  *     return NULL
  * 
  */
+    __Pyx_TraceLine(869,0,__PYX_ERR(5, 869, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -27726,6 +29151,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  * 
  * cdef inline xmlNode* _previousElement(xmlNode* c_node):
  */
+  __Pyx_TraceLine(870,0,__PYX_ERR(5, 870, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -27738,7 +29164,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._nextElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27753,10 +29183,12 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_previousElement", 0);
+  __Pyx_TraceCall("_previousElement", __pyx_f[5], 872, 0, __PYX_ERR(5, 872, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":875
  *     u"""Given a node, find the next sibling that is an element.
@@ -27765,6 +29197,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *         return NULL
  *     c_node = c_node.prev
  */
+  __Pyx_TraceLine(875,0,__PYX_ERR(5, 875, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -27775,6 +29208,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *     c_node = c_node.prev
  *     while c_node is not NULL:
  */
+    __Pyx_TraceLine(876,0,__PYX_ERR(5, 876, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -27794,6 +29228,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *     while c_node is not NULL:
  *         if _isElement(c_node):
  */
+  __Pyx_TraceLine(877,0,__PYX_ERR(5, 877, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->prev;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -27804,6 +29239,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *         if _isElement(c_node):
  *             return c_node
  */
+  __Pyx_TraceLine(878,0,__PYX_ERR(5, 878, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -27815,6 +29251,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *             return c_node
  *         c_node = c_node.prev
  */
+    __Pyx_TraceLine(879,0,__PYX_ERR(5, 879, __pyx_L1_error))
     __pyx_t_1 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_1) {
 
@@ -27825,6 +29262,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *         c_node = c_node.prev
  *     return NULL
  */
+      __Pyx_TraceLine(880,0,__PYX_ERR(5, 880, __pyx_L1_error))
       __pyx_r = __pyx_v_c_node;
       goto __pyx_L0;
 
@@ -27844,6 +29282,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  *     return NULL
  * 
  */
+    __Pyx_TraceLine(881,0,__PYX_ERR(5, 881, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->prev;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -27855,6 +29294,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  * 
  * cdef inline xmlNode* _parentElement(xmlNode* c_node):
  */
+  __Pyx_TraceLine(882,0,__PYX_ERR(5, 882, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -27867,7 +29307,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._previousElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -27882,11 +29326,13 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__p
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   __Pyx_RefNannySetupContext("_parentElement", 0);
+  __Pyx_TraceCall("_parentElement", __pyx_f[5], 884, 0, __PYX_ERR(5, 884, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":886
  * cdef inline xmlNode* _parentElement(xmlNode* c_node):
@@ -27895,6 +29341,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  *         return NULL
  *     c_node = c_node.parent
  */
+  __Pyx_TraceLine(886,0,__PYX_ERR(5, 886, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -27913,6 +29360,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  *     c_node = c_node.parent
  *     if c_node is NULL or not _isElement(c_node):
  */
+    __Pyx_TraceLine(887,0,__PYX_ERR(5, 887, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -27932,6 +29380,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  *     if c_node is NULL or not _isElement(c_node):
  *         return NULL
  */
+  __Pyx_TraceLine(888,0,__PYX_ERR(5, 888, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_node->parent;
   __pyx_v_c_node = __pyx_t_3;
 
@@ -27942,6 +29391,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  *         return NULL
  *     return c_node
  */
+  __Pyx_TraceLine(889,0,__PYX_ERR(5, 889, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -27960,6 +29410,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  *     return c_node
  * 
  */
+    __Pyx_TraceLine(890,0,__PYX_ERR(5, 890, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -27979,6 +29430,7 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  * 
  * cdef inline bint _tagMatches(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(891,0,__PYX_ERR(5, 891, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -27991,7 +29443,11 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._parentElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28007,10 +29463,12 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   const xmlChar *__pyx_v_c_node_href;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_tagMatches", 0);
+  __Pyx_TraceCall("_tagMatches", __pyx_f[5], 893, 0, __PYX_ERR(5, 893, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":907
  *     * its name string equals the c_name string
@@ -28019,6 +29477,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         return 0
  *     if c_node.type != tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(907,0,__PYX_ERR(5, 907, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28029,6 +29488,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *     if c_node.type != tree.XML_ELEMENT_NODE:
  *         # not an element, only succeed if we match everything
  */
+    __Pyx_TraceLine(908,0,__PYX_ERR(5, 908, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -28048,6 +29508,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         # not an element, only succeed if we match everything
  *         return c_name is NULL and c_href is NULL
  */
+  __Pyx_TraceLine(909,0,__PYX_ERR(5, 909, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type != XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -28058,6 +29519,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *     if c_name is NULL:
  *         if c_href is NULL:
  */
+    __Pyx_TraceLine(911,0,__PYX_ERR(5, 911, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_name == NULL) != 0);
     if (__pyx_t_2) {
     } else {
@@ -28086,6 +29548,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         if c_href is NULL:
  *             # always match
  */
+  __Pyx_TraceLine(912,0,__PYX_ERR(5, 912, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28096,6 +29559,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *             # always match
  *             return 1
  */
+    __Pyx_TraceLine(913,0,__PYX_ERR(5, 913, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_href == NULL) != 0);
     if (__pyx_t_1) {
 
@@ -28106,6 +29570,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         else:
  *             c_node_href = _getNs(c_node)
  */
+      __Pyx_TraceLine(915,0,__PYX_ERR(5, 915, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -28125,6 +29590,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *             if c_node_href is NULL:
  *                 return c_href[0] == c'\0'
  */
+    __Pyx_TraceLine(917,0,__PYX_ERR(5, 917, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_node_href = _getNs(__pyx_v_c_node);
 
@@ -28135,6 +29601,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *                 return c_href[0] == c'\0'
  *             else:
  */
+      __Pyx_TraceLine(918,0,__PYX_ERR(5, 918, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_node_href == NULL) != 0);
       if (__pyx_t_1) {
 
@@ -28145,6 +29612,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *             else:
  *                 return tree.xmlStrcmp(c_node_href, c_href) == 0
  */
+        __Pyx_TraceLine(919,0,__PYX_ERR(5, 919, __pyx_L1_error))
         __pyx_r = ((__pyx_v_c_href[0]) == '\x00');
         goto __pyx_L0;
 
@@ -28164,6 +29632,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *     elif c_href is NULL:
  *         if _getNs(c_node) is not NULL:
  */
+      __Pyx_TraceLine(921,0,__PYX_ERR(5, 921, __pyx_L1_error))
       /*else*/ {
         __pyx_r = (xmlStrcmp(__pyx_v_c_node_href, __pyx_v_c_href) == 0);
         goto __pyx_L0;
@@ -28186,6 +29655,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         if _getNs(c_node) is not NULL:
  *             return 0
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(5, 922, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28196,6 +29666,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *             return 0
  *         return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0
  */
+    __Pyx_TraceLine(923,0,__PYX_ERR(5, 923, __pyx_L1_error))
     __pyx_t_1 = ((_getNs(__pyx_v_c_node) != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -28206,6 +29677,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0
  *     elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0:
  */
+      __Pyx_TraceLine(924,0,__PYX_ERR(5, 924, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -28225,6 +29697,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *     elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0:
  *         c_node_href = _getNs(c_node)
  */
+    __Pyx_TraceLine(925,0,__PYX_ERR(5, 925, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->name == __pyx_v_c_name) != 0);
     if (!__pyx_t_2) {
     } else {
@@ -28253,6 +29726,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         c_node_href = _getNs(c_node)
  *         if c_node_href is NULL:
  */
+  __Pyx_TraceLine(926,0,__PYX_ERR(5, 926, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->name == __pyx_v_c_name) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -28271,6 +29745,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         if c_node_href is NULL:
  *             return c_href[0] == c'\0'
  */
+    __Pyx_TraceLine(927,0,__PYX_ERR(5, 927, __pyx_L1_error))
     __pyx_v_c_node_href = _getNs(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":928
@@ -28280,6 +29755,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *             return c_href[0] == c'\0'
  *         else:
  */
+    __Pyx_TraceLine(928,0,__PYX_ERR(5, 928, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_node_href == NULL) != 0);
     if (__pyx_t_1) {
 
@@ -28290,6 +29766,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *         else:
  *             return tree.xmlStrcmp(c_node_href, c_href) == 0
  */
+      __Pyx_TraceLine(929,0,__PYX_ERR(5, 929, __pyx_L1_error))
       __pyx_r = ((__pyx_v_c_href[0]) == '\x00');
       goto __pyx_L0;
 
@@ -28309,6 +29786,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  *     else:
  *         return 0
  */
+    __Pyx_TraceLine(931,0,__PYX_ERR(5, 931, __pyx_L1_error))
     /*else*/ {
       __pyx_r = (xmlStrcmp(__pyx_v_c_node_href, __pyx_v_c_href) == 0);
       goto __pyx_L0;
@@ -28330,6 +29808,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  * 
  * cdef inline bint _tagMatchesExactly(xmlNode* c_node, qname* c_qname):
  */
+  __Pyx_TraceLine(933,0,__PYX_ERR(5, 933, __pyx_L1_error))
   /*else*/ {
     __pyx_r = 0;
     goto __pyx_L0;
@@ -28344,7 +29823,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._tagMatches", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28359,8 +29842,10 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_nod
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *__pyx_v_c_node, struct __pyx_t_4lxml_5etree_qname *__pyx_v_c_qname) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_tagMatchesExactly", 0);
+  __Pyx_TraceCall("_tagMatchesExactly", __pyx_f[5], 935, 0, __PYX_ERR(5, 935, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":953
  *     * its name string points to the same address (!) as c_name
@@ -28369,6 +29854,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *__pyx_
  * 
  * cdef inline bint _nsTagMatchesExactly(const_xmlChar* c_node_href,
  */
+  __Pyx_TraceLine(953,0,__PYX_ERR(5, 953, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__nsTagMatchesExactly(_getNs(__pyx_v_c_node), __pyx_v_c_node->name, __pyx_v_c_qname);
   goto __pyx_L0;
 
@@ -28381,7 +29867,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *__pyx_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._tagMatchesExactly", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28397,10 +29887,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *__pyx_
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar *__pyx_v_c_node_href, const xmlChar *__pyx_v_c_node_name, struct __pyx_t_4lxml_5etree_qname *__pyx_v_c_qname) {
   char *__pyx_v_c_href;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_nsTagMatchesExactly", 0);
+  __Pyx_TraceCall("_nsTagMatchesExactly", __pyx_f[5], 955, 0, __PYX_ERR(5, 955, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":976
  *     """
@@ -28409,6 +29901,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *         return 0
  *     if c_qname.href is NULL:
  */
+  __Pyx_TraceLine(976,0,__PYX_ERR(5, 976, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_qname->c_name != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -28427,6 +29920,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *     if c_qname.href is NULL:
  *         return 1
  */
+    __Pyx_TraceLine(977,0,__PYX_ERR(5, 977, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -28446,6 +29940,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *         return 1
  *     c_href = python.__cstr(c_qname.href)
  */
+  __Pyx_TraceLine(978,0,__PYX_ERR(5, 978, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_qname->href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28456,6 +29951,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *     c_href = python.__cstr(c_qname.href)
  *     if c_href[0] == '\0':
  */
+    __Pyx_TraceLine(979,0,__PYX_ERR(5, 979, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -28475,6 +29971,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *     if c_href[0] == '\0':
  *         return c_node_href is NULL or c_node_href[0] == '\0'
  */
+  __Pyx_TraceLine(980,0,__PYX_ERR(5, 980, __pyx_L1_error))
   __pyx_v_c_href = PyBytes_AS_STRING(__pyx_v_c_qname->href);
 
   /* "src/lxml/apihelpers.pxi":981
@@ -28484,6 +29981,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *         return c_node_href is NULL or c_node_href[0] == '\0'
  *     elif c_node_href is NULL:
  */
+  __Pyx_TraceLine(981,0,__PYX_ERR(5, 981, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_c_href[0]) == '\x00') != 0);
   if (__pyx_t_1) {
 
@@ -28494,6 +29992,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *     elif c_node_href is NULL:
  *         return 0
  */
+    __Pyx_TraceLine(982,0,__PYX_ERR(5, 982, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node_href == NULL) != 0);
     if (!__pyx_t_2) {
     } else {
@@ -28522,6 +30021,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *         return 0
  *     else:
  */
+  __Pyx_TraceLine(983,0,__PYX_ERR(5, 983, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node_href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28532,6 +30032,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  *     else:
  *         return tree.xmlStrcmp(<const_xmlChar*>c_href, c_node_href) == 0
  */
+    __Pyx_TraceLine(984,0,__PYX_ERR(5, 984, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -28551,6 +30052,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  * 
  * cdef Py_ssize_t _mapTagsToQnameMatchArray(xmlDoc* c_doc, list ns_tags,
  */
+  __Pyx_TraceLine(986,0,__PYX_ERR(5, 986, __pyx_L1_error))
   /*else*/ {
     __pyx_r = (xmlStrcmp(((const xmlChar *)__pyx_v_c_href), __pyx_v_c_node_href) == 0);
     goto __pyx_L0;
@@ -28565,7 +30067,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__nsTagMatchesExactly(const xmlChar
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._nsTagMatchesExactly", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28585,6 +30091,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
   PyObject *__pyx_v_tag = 0;
   const xmlChar *__pyx_v_c_tag;
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -28599,6 +30106,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
   Py_ssize_t __pyx_t_11;
   Py_ssize_t __pyx_t_12;
   __Pyx_RefNannySetupContext("_mapTagsToQnameMatchArray", 0);
+  __Pyx_TraceCall("_mapTagsToQnameMatchArray", __pyx_f[5], 988, 0, __PYX_ERR(5, 988, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":996
  *     if it is not NULL.
@@ -28607,6 +30115,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *     cdef bytes ns, tag
  *     for ns, tag in ns_tags:
  */
+  __Pyx_TraceLine(996,0,__PYX_ERR(5, 996, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/apihelpers.pxi":998
@@ -28616,6 +30125,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         if tag is None:
  *             c_tag = <const_xmlChar*>NULL
  */
+  __Pyx_TraceLine(998,0,__PYX_ERR(5, 998, __pyx_L1_error))
   if (unlikely(__pyx_v_ns_tags == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(5, 998, __pyx_L1_error)
@@ -28689,6 +30199,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             c_tag = <const_xmlChar*>NULL
  *         elif force_into_dict:
  */
+    __Pyx_TraceLine(999,0,__PYX_ERR(5, 999, __pyx_L1_error))
     __pyx_t_8 = (__pyx_v_tag == ((PyObject*)Py_None));
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
@@ -28700,6 +30211,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         elif force_into_dict:
  *             c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), len(tag))
  */
+      __Pyx_TraceLine(1000,0,__PYX_ERR(5, 1000, __pyx_L1_error))
       __pyx_v_c_tag = ((const xmlChar *)NULL);
 
       /* "src/lxml/apihelpers.pxi":999
@@ -28719,6 +30231,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), len(tag))
  *             if c_tag is NULL:
  */
+    __Pyx_TraceLine(1001,0,__PYX_ERR(5, 1001, __pyx_L1_error))
     __pyx_t_9 = (__pyx_v_force_into_dict != 0);
     if (__pyx_t_9) {
 
@@ -28729,6 +30242,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             if c_tag is NULL:
  *                 # clean up before raising the error
  */
+      __Pyx_TraceLine(1002,0,__PYX_ERR(5, 1002, __pyx_L1_error))
       if (unlikely(__pyx_v_tag == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
         __PYX_ERR(5, 1002, __pyx_L1_error)
@@ -28743,6 +30257,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *                 # clean up before raising the error
  *                 for i in xrange(count):
  */
+      __Pyx_TraceLine(1003,0,__PYX_ERR(5, 1003, __pyx_L1_error))
       __pyx_t_9 = ((__pyx_v_c_tag == NULL) != 0);
       if (__pyx_t_9) {
 
@@ -28753,6 +30268,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *                     cpython.ref.Py_XDECREF(c_ns_tags[i].href)
  *                 raise MemoryError()
  */
+        __Pyx_TraceLine(1005,0,__PYX_ERR(5, 1005, __pyx_L1_error))
         __pyx_t_10 = __pyx_v_count;
         __pyx_t_11 = __pyx_t_10;
         for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
@@ -28765,6 +30281,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *                 raise MemoryError()
  *         else:
  */
+          __Pyx_TraceLine(1006,0,__PYX_ERR(5, 1006, __pyx_L1_error))
           Py_XDECREF((__pyx_v_c_ns_tags[__pyx_v_i]).href);
         }
 
@@ -28775,6 +30292,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         else:
  *             c_tag = tree.xmlDictExists(c_doc.dict, _xcstr(tag), len(tag))
  */
+        __Pyx_TraceLine(1007,0,__PYX_ERR(5, 1007, __pyx_L1_error))
         PyErr_NoMemory(); __PYX_ERR(5, 1007, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":1003
@@ -28803,6 +30321,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             if c_tag is NULL:
  *                 # not in the dict => not in the document
  */
+    __Pyx_TraceLine(1009,0,__PYX_ERR(5, 1009, __pyx_L1_error))
     /*else*/ {
       if (unlikely(__pyx_v_tag == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
@@ -28818,6 +30337,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *                 # not in the dict => not in the document
  *                 continue
  */
+      __Pyx_TraceLine(1010,0,__PYX_ERR(5, 1010, __pyx_L1_error))
       __pyx_t_9 = ((__pyx_v_c_tag == NULL) != 0);
       if (__pyx_t_9) {
 
@@ -28828,6 +30348,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         c_ns_tags[count].c_name = c_tag
  *         if ns is None:
  */
+        __Pyx_TraceLine(1012,0,__PYX_ERR(5, 1012, __pyx_L1_error))
         goto __pyx_L3_continue;
 
         /* "src/lxml/apihelpers.pxi":1010
@@ -28848,6 +30369,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         if ns is None:
  *             c_ns_tags[count].href = NULL
  */
+    __Pyx_TraceLine(1013,0,__PYX_ERR(5, 1013, __pyx_L1_error))
     (__pyx_v_c_ns_tags[__pyx_v_count]).c_name = __pyx_v_c_tag;
 
     /* "src/lxml/apihelpers.pxi":1014
@@ -28857,6 +30379,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             c_ns_tags[count].href = NULL
  *         else:
  */
+    __Pyx_TraceLine(1014,0,__PYX_ERR(5, 1014, __pyx_L1_error))
     __pyx_t_9 = (__pyx_v_ns == ((PyObject*)Py_None));
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
@@ -28868,6 +30391,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         else:
  *             cpython.ref.Py_INCREF(ns) # keep an owned reference!
  */
+      __Pyx_TraceLine(1015,0,__PYX_ERR(5, 1015, __pyx_L1_error))
       (__pyx_v_c_ns_tags[__pyx_v_count]).href = NULL;
 
       /* "src/lxml/apihelpers.pxi":1014
@@ -28887,6 +30411,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *             c_ns_tags[count].href = <python.PyObject*>ns
  *         count += 1
  */
+    __Pyx_TraceLine(1017,0,__PYX_ERR(5, 1017, __pyx_L1_error))
     /*else*/ {
       Py_INCREF(__pyx_v_ns);
 
@@ -28897,6 +30422,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         count += 1
  *     return count
  */
+      __Pyx_TraceLine(1018,0,__PYX_ERR(5, 1018, __pyx_L1_error))
       (__pyx_v_c_ns_tags[__pyx_v_count]).href = ((PyObject *)__pyx_v_ns);
     }
     __pyx_L12:;
@@ -28908,6 +30434,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *     return count
  * 
  */
+    __Pyx_TraceLine(1019,0,__PYX_ERR(5, 1019, __pyx_L1_error))
     __pyx_v_count = (__pyx_v_count + 1);
 
     /* "src/lxml/apihelpers.pxi":998
@@ -28917,6 +30444,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  *         if tag is None:
  *             c_tag = <const_xmlChar*>NULL
  */
+    __Pyx_TraceLine(998,0,__PYX_ERR(5, 998, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -28928,6 +30456,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
  * 
  * cdef int _removeNode(_Document doc, xmlNode* c_node) except -1:
  */
+  __Pyx_TraceLine(1020,0,__PYX_ERR(5, 1020, __pyx_L1_error))
   __pyx_r = __pyx_v_count;
   goto __pyx_L0;
 
@@ -28951,6 +30480,7 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28966,11 +30496,13 @@ static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(xmlDoc *__pyx_v
 static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_v_c_next;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_removeNode", 0);
+  __Pyx_TraceCall("_removeNode", __pyx_f[5], 1022, 0, __PYX_ERR(5, 1022, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1027
  *     """
@@ -28979,6 +30511,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  *     tree.xmlUnlinkNode(c_node)
  *     _moveTail(c_next, c_node)
  */
+  __Pyx_TraceLine(1027,0,__PYX_ERR(5, 1027, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
@@ -28989,6 +30522,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  *     _moveTail(c_next, c_node)
  *     if not attemptDeallocation(c_node):
  */
+  __Pyx_TraceLine(1028,0,__PYX_ERR(5, 1028, __pyx_L1_error))
   xmlUnlinkNode(__pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1029
@@ -28998,6 +30532,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  *     if not attemptDeallocation(c_node):
  *         # make namespaces absolute
  */
+  __Pyx_TraceLine(1029,0,__PYX_ERR(5, 1029, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1030
@@ -29007,6 +30542,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  *         # make namespaces absolute
  *         moveNodeToDocument(doc, c_node.doc, c_node)
  */
+  __Pyx_TraceLine(1030,0,__PYX_ERR(5, 1030, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node) != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -29017,6 +30553,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1032,0,__PYX_ERR(5, 1032, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 1032, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":1030
@@ -29035,6 +30572,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
  * 
  * cdef int _removeSiblings(xmlNode* c_element, tree.xmlElementType node_type, bint with_tail) except -1:
  */
+  __Pyx_TraceLine(1033,0,__PYX_ERR(5, 1033, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -29051,6 +30589,7 @@ static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xm
   __Pyx_AddTraceback("lxml.etree._removeNode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29067,10 +30606,12 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_v_c_next;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_removeSiblings", 0);
+  __Pyx_TraceCall("_removeSiblings", __pyx_f[5], 1035, 0, __PYX_ERR(5, 1035, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1038
  *     cdef xmlNode* c_node
@@ -29079,6 +30620,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *     while c_node is not NULL:
  *         c_next = _nextElement(c_node)
  */
+  __Pyx_TraceLine(1038,0,__PYX_ERR(5, 1038, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_element->next;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -29089,6 +30631,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         c_next = _nextElement(c_node)
  *         if c_node.type == node_type:
  */
+  __Pyx_TraceLine(1039,0,__PYX_ERR(5, 1039, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -29100,6 +30643,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         if c_node.type == node_type:
  *             if with_tail:
  */
+    __Pyx_TraceLine(1040,0,__PYX_ERR(5, 1040, __pyx_L1_error))
     __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":1041
@@ -29109,6 +30653,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             if with_tail:
  *                 _removeText(c_node.next)
  */
+    __Pyx_TraceLine(1041,0,__PYX_ERR(5, 1041, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->type == __pyx_v_node_type) != 0);
     if (__pyx_t_2) {
 
@@ -29119,6 +30664,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *                 _removeText(c_node.next)
  *             tree.xmlUnlinkNode(c_node)
  */
+      __Pyx_TraceLine(1042,0,__PYX_ERR(5, 1042, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_with_tail != 0);
       if (__pyx_t_2) {
 
@@ -29129,6 +30675,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             tree.xmlUnlinkNode(c_node)
  *             attemptDeallocation(c_node)
  */
+        __Pyx_TraceLine(1043,0,__PYX_ERR(5, 1043, __pyx_L1_error))
         __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
         /* "src/lxml/apihelpers.pxi":1042
@@ -29147,6 +30694,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             attemptDeallocation(c_node)
  *         c_node = c_next
  */
+      __Pyx_TraceLine(1044,0,__PYX_ERR(5, 1044, __pyx_L1_error))
       xmlUnlinkNode(__pyx_v_c_node);
 
       /* "src/lxml/apihelpers.pxi":1045
@@ -29156,6 +30704,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         c_node = c_next
  *     c_node = c_element.prev
  */
+      __Pyx_TraceLine(1045,0,__PYX_ERR(5, 1045, __pyx_L1_error))
       (void)(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node));
 
       /* "src/lxml/apihelpers.pxi":1041
@@ -29174,6 +30723,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *     c_node = c_element.prev
  *     while c_node is not NULL:
  */
+    __Pyx_TraceLine(1046,0,__PYX_ERR(5, 1046, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -29184,6 +30734,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *     while c_node is not NULL:
  *         c_next = _previousElement(c_node)
  */
+  __Pyx_TraceLine(1047,0,__PYX_ERR(5, 1047, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_element->prev;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -29194,6 +30745,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         c_next = _previousElement(c_node)
  *         if c_node.type == node_type:
  */
+  __Pyx_TraceLine(1048,0,__PYX_ERR(5, 1048, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -29205,6 +30757,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         if c_node.type == node_type:
  *             if with_tail:
  */
+    __Pyx_TraceLine(1049,0,__PYX_ERR(5, 1049, __pyx_L1_error))
     __pyx_v_c_next = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":1050
@@ -29214,6 +30767,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             if with_tail:
  *                 _removeText(c_node.next)
  */
+    __Pyx_TraceLine(1050,0,__PYX_ERR(5, 1050, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->type == __pyx_v_node_type) != 0);
     if (__pyx_t_2) {
 
@@ -29224,6 +30778,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *                 _removeText(c_node.next)
  *             tree.xmlUnlinkNode(c_node)
  */
+      __Pyx_TraceLine(1051,0,__PYX_ERR(5, 1051, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_with_tail != 0);
       if (__pyx_t_2) {
 
@@ -29234,6 +30789,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             tree.xmlUnlinkNode(c_node)
  *             attemptDeallocation(c_node)
  */
+        __Pyx_TraceLine(1052,0,__PYX_ERR(5, 1052, __pyx_L1_error))
         __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
         /* "src/lxml/apihelpers.pxi":1051
@@ -29252,6 +30808,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *             attemptDeallocation(c_node)
  *         c_node = c_next
  */
+      __Pyx_TraceLine(1053,0,__PYX_ERR(5, 1053, __pyx_L1_error))
       xmlUnlinkNode(__pyx_v_c_node);
 
       /* "src/lxml/apihelpers.pxi":1054
@@ -29261,6 +30818,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *         c_node = c_next
  *     return 0
  */
+      __Pyx_TraceLine(1054,0,__PYX_ERR(5, 1054, __pyx_L1_error))
       (void)(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node));
 
       /* "src/lxml/apihelpers.pxi":1050
@@ -29279,6 +30837,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1055,0,__PYX_ERR(5, 1055, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -29289,6 +30848,7 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  * 
  * cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target):
  */
+  __Pyx_TraceLine(1056,0,__PYX_ERR(5, 1056, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -29301,7 +30861,11 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._removeSiblings", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29316,9 +30880,11 @@ static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, xmlE
 
 static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__pyx_v_c_target) {
   xmlNode *__pyx_v_c_next;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_moveTail", 0);
+  __Pyx_TraceCall("_moveTail", __pyx_f[5], 1058, 0, __PYX_ERR(5, 1058, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1062
  *     # tail support: look for any text nodes trailing this node and
@@ -29327,6 +30893,7 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  *     while c_tail is not NULL:
  *         c_next = _textNodeOrSkip(c_tail.next)
  */
+  __Pyx_TraceLine(1062,0,__PYX_ERR(5, 1062, __pyx_L1_error))
   __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);
 
   /* "src/lxml/apihelpers.pxi":1063
@@ -29336,6 +30903,7 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  *         c_next = _textNodeOrSkip(c_tail.next)
  *         c_target = tree.xmlAddNextSibling(c_target, c_tail)
  */
+  __Pyx_TraceLine(1063,0,__PYX_ERR(5, 1063, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_tail != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -29347,6 +30915,7 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  *         c_target = tree.xmlAddNextSibling(c_target, c_tail)
  *         c_tail = c_next
  */
+    __Pyx_TraceLine(1064,0,__PYX_ERR(5, 1064, __pyx_L1_error))
     __pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);
 
     /* "src/lxml/apihelpers.pxi":1065
@@ -29356,6 +30925,7 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  *         c_tail = c_next
  * 
  */
+    __Pyx_TraceLine(1065,0,__PYX_ERR(5, 1065, __pyx_L1_error))
     __pyx_v_c_target = xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_tail);
 
     /* "src/lxml/apihelpers.pxi":1066
@@ -29365,6 +30935,7 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  * 
  * cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1:
  */
+    __Pyx_TraceLine(1066,0,__PYX_ERR(5, 1066, __pyx_L1_error))
     __pyx_v_c_tail = __pyx_v_c_next;
   }
 
@@ -29377,6 +30948,11 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._moveTail", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -29391,9 +30967,11 @@ static void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__p
 static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__pyx_v_c_target) {
   xmlNode *__pyx_v_c_new_tail;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_copyTail", 0);
+  __Pyx_TraceCall("_copyTail", __pyx_f[5], 1068, 0, __PYX_ERR(5, 1068, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1072
  *     # tail copying support: look for any text nodes trailing this node and
@@ -29402,6 +30980,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *     while c_tail is not NULL:
  *         if c_target.doc is not c_tail.doc:
  */
+  __Pyx_TraceLine(1072,0,__PYX_ERR(5, 1072, __pyx_L1_error))
   __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);
 
   /* "src/lxml/apihelpers.pxi":1073
@@ -29411,6 +30990,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *         if c_target.doc is not c_tail.doc:
  *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
  */
+  __Pyx_TraceLine(1073,0,__PYX_ERR(5, 1073, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_tail != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -29422,6 +31002,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
  *         else:
  */
+    __Pyx_TraceLine(1074,0,__PYX_ERR(5, 1074, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_target->doc != __pyx_v_c_tail->doc) != 0);
     if (__pyx_t_1) {
 
@@ -29432,6 +31013,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *         else:
  *             c_new_tail = tree.xmlCopyNode(c_tail, 0)
  */
+      __Pyx_TraceLine(1075,0,__PYX_ERR(5, 1075, __pyx_L1_error))
       __pyx_v_c_new_tail = xmlDocCopyNode(__pyx_v_c_tail, __pyx_v_c_target->doc, 0);
 
       /* "src/lxml/apihelpers.pxi":1074
@@ -29451,6 +31033,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *         if c_new_tail is NULL:
  *             raise MemoryError()
  */
+    __Pyx_TraceLine(1077,0,__PYX_ERR(5, 1077, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_new_tail = xmlCopyNode(__pyx_v_c_tail, 0);
     }
@@ -29463,6 +31046,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *             raise MemoryError()
  *         c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
  */
+    __Pyx_TraceLine(1078,0,__PYX_ERR(5, 1078, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_new_tail == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -29473,6 +31057,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *         c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
  *         c_tail = _textNodeOrSkip(c_tail.next)
  */
+      __Pyx_TraceLine(1079,0,__PYX_ERR(5, 1079, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(5, 1079, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1078
@@ -29491,6 +31076,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *         c_tail = _textNodeOrSkip(c_tail.next)
  *     return 0
  */
+    __Pyx_TraceLine(1080,0,__PYX_ERR(5, 1080, __pyx_L1_error))
     __pyx_v_c_target = xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_new_tail);
 
     /* "src/lxml/apihelpers.pxi":1081
@@ -29500,6 +31086,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1081,0,__PYX_ERR(5, 1081, __pyx_L1_error))
     __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);
   }
 
@@ -29510,6 +31097,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
  * 
  * cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:
  */
+  __Pyx_TraceLine(1082,0,__PYX_ERR(5, 1082, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -29526,6 +31114,7 @@ static int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__py
   __Pyx_AddTraceback("lxml.etree._copyTail", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29542,12 +31131,14 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
   xmlNode *__pyx_v_c_copy;
   xmlNode *__pyx_v_c_sibling;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   xmlDtd *__pyx_t_4;
   __Pyx_RefNannySetupContext("_copyNonElementSiblings", 0);
+  __Pyx_TraceCall("_copyNonElementSiblings", __pyx_f[5], 1084, 0, __PYX_ERR(5, 1084, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1086
  * cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:
@@ -29556,6 +31147,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *     while c_sibling.prev != NULL and \
  *             (c_sibling.prev.type == tree.XML_PI_NODE or
  */
+  __Pyx_TraceLine(1086,0,__PYX_ERR(5, 1086, __pyx_L1_error))
   __pyx_v_c_sibling = __pyx_v_c_node;
 
   /* "src/lxml/apihelpers.pxi":1087
@@ -29565,6 +31157,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             (c_sibling.prev.type == tree.XML_PI_NODE or
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE or
  */
+  __Pyx_TraceLine(1087,0,__PYX_ERR(5, 1087, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_sibling->prev != NULL) != 0);
     if (__pyx_t_2) {
@@ -29580,6 +31173,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE or
  *              c_sibling.prev.type == tree.XML_DTD_NODE):
  */
+    __Pyx_TraceLine(1088,0,__PYX_ERR(5, 1088, __pyx_L1_error))
     switch (__pyx_v_c_sibling->prev->type) {
       case XML_PI_NODE:
 
@@ -29590,6 +31184,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *              c_sibling.prev.type == tree.XML_DTD_NODE):
  *         c_sibling = c_sibling.prev
  */
+      __Pyx_TraceLine(1089,0,__PYX_ERR(5, 1089, __pyx_L1_error))
       case XML_COMMENT_NODE:
 
       /* "src/lxml/apihelpers.pxi":1090
@@ -29599,6 +31194,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         c_sibling = c_sibling.prev
  *     while c_sibling != c_node:
  */
+      __Pyx_TraceLine(1090,0,__PYX_ERR(5, 1090, __pyx_L1_error))
       case XML_DTD_NODE:
 
       /* "src/lxml/apihelpers.pxi":1088
@@ -29608,6 +31204,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE or
  *              c_sibling.prev.type == tree.XML_DTD_NODE):
  */
+      __Pyx_TraceLine(1088,0,__PYX_ERR(5, 1088, __pyx_L1_error))
       __pyx_t_2 = 1;
       break;
       default:
@@ -29625,6 +31222,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *     while c_sibling != c_node:
  *         if c_sibling.type == tree.XML_DTD_NODE:
  */
+    __Pyx_TraceLine(1091,0,__PYX_ERR(5, 1091, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->prev;
     __pyx_v_c_sibling = __pyx_t_3;
   }
@@ -29636,6 +31234,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         if c_sibling.type == tree.XML_DTD_NODE:
  *             c_copy = <xmlNode*>_copyDtd(<tree.xmlDtd*>c_sibling)
  */
+  __Pyx_TraceLine(1092,0,__PYX_ERR(5, 1092, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_sibling != __pyx_v_c_node) != 0);
     if (!__pyx_t_1) break;
@@ -29647,6 +31246,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             c_copy = <xmlNode*>_copyDtd(<tree.xmlDtd*>c_sibling)
  *             if c_sibling == <xmlNode*>c_node.doc.intSubset:
  */
+    __Pyx_TraceLine(1093,0,__PYX_ERR(5, 1093, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_sibling->type == XML_DTD_NODE) != 0);
     if (__pyx_t_1) {
 
@@ -29657,6 +31257,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             if c_sibling == <xmlNode*>c_node.doc.intSubset:
  *                 c_target.doc.intSubset = <tree.xmlDtd*>c_copy
  */
+      __Pyx_TraceLine(1094,0,__PYX_ERR(5, 1094, __pyx_L1_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree__copyDtd(((xmlDtd *)__pyx_v_c_sibling)); if (unlikely(__pyx_t_4 == ((xmlDtd *)NULL))) __PYX_ERR(5, 1094, __pyx_L1_error)
       __pyx_v_c_copy = ((xmlNode *)__pyx_t_4);
 
@@ -29667,6 +31268,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *                 c_target.doc.intSubset = <tree.xmlDtd*>c_copy
  *             else: # c_sibling == c_node.doc.extSubset
  */
+      __Pyx_TraceLine(1095,0,__PYX_ERR(5, 1095, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_sibling == ((xmlNode *)__pyx_v_c_node->doc->intSubset)) != 0);
       if (__pyx_t_1) {
 
@@ -29677,6 +31279,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             else: # c_sibling == c_node.doc.extSubset
  *                 c_target.doc.extSubset = <tree.xmlDtd*>c_copy
  */
+        __Pyx_TraceLine(1096,0,__PYX_ERR(5, 1096, __pyx_L1_error))
         __pyx_v_c_target->doc->intSubset = ((xmlDtd *)__pyx_v_c_copy);
 
         /* "src/lxml/apihelpers.pxi":1095
@@ -29696,6 +31299,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         else:
  *             c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
  */
+      __Pyx_TraceLine(1098,0,__PYX_ERR(5, 1098, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_target->doc->extSubset = ((xmlDtd *)__pyx_v_c_copy);
       }
@@ -29718,6 +31322,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             if c_copy is NULL:
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(1100,0,__PYX_ERR(5, 1100, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);
 
@@ -29728,6 +31333,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *                 raise MemoryError()
  *         tree.xmlAddPrevSibling(c_target, c_copy)
  */
+      __Pyx_TraceLine(1101,0,__PYX_ERR(5, 1101, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_copy == NULL) != 0);
       if (unlikely(__pyx_t_1)) {
 
@@ -29738,6 +31344,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         tree.xmlAddPrevSibling(c_target, c_copy)
  *         c_sibling = c_sibling.next
  */
+        __Pyx_TraceLine(1102,0,__PYX_ERR(5, 1102, __pyx_L1_error))
         PyErr_NoMemory(); __PYX_ERR(5, 1102, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":1101
@@ -29758,6 +31365,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         c_sibling = c_sibling.next
  *     while c_sibling.next != NULL and \
  */
+    __Pyx_TraceLine(1103,0,__PYX_ERR(5, 1103, __pyx_L1_error))
     (void)(xmlAddPrevSibling(__pyx_v_c_target, __pyx_v_c_copy));
 
     /* "src/lxml/apihelpers.pxi":1104
@@ -29767,6 +31375,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *     while c_sibling.next != NULL and \
  *             (c_sibling.next.type == tree.XML_PI_NODE or \
  */
+    __Pyx_TraceLine(1104,0,__PYX_ERR(5, 1104, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->next;
     __pyx_v_c_sibling = __pyx_t_3;
   }
@@ -29778,6 +31387,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             (c_sibling.next.type == tree.XML_PI_NODE or \
  *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(1105,0,__PYX_ERR(5, 1105, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_sibling->next != NULL) != 0);
     if (__pyx_t_2) {
@@ -29793,6 +31403,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
  *         c_sibling = c_sibling.next
  */
+    __Pyx_TraceLine(1106,0,__PYX_ERR(5, 1106, __pyx_L1_error))
     switch (__pyx_v_c_sibling->next->type) {
       case XML_PI_NODE:
 
@@ -29803,6 +31414,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         c_sibling = c_sibling.next
  *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
  */
+      __Pyx_TraceLine(1107,0,__PYX_ERR(5, 1107, __pyx_L1_error))
       case XML_COMMENT_NODE:
 
       /* "src/lxml/apihelpers.pxi":1106
@@ -29812,6 +31424,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
  *         c_sibling = c_sibling.next
  */
+      __Pyx_TraceLine(1106,0,__PYX_ERR(5, 1106, __pyx_L1_error))
       __pyx_t_2 = 1;
       break;
       default:
@@ -29829,6 +31442,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
  *         if c_copy is NULL:
  */
+    __Pyx_TraceLine(1108,0,__PYX_ERR(5, 1108, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->next;
     __pyx_v_c_sibling = __pyx_t_3;
 
@@ -29839,6 +31453,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         if c_copy is NULL:
  *             raise MemoryError()
  */
+    __Pyx_TraceLine(1109,0,__PYX_ERR(5, 1109, __pyx_L1_error))
     __pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);
 
     /* "src/lxml/apihelpers.pxi":1110
@@ -29848,6 +31463,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *             raise MemoryError()
  *         tree.xmlAddNextSibling(c_target, c_copy)
  */
+    __Pyx_TraceLine(1110,0,__PYX_ERR(5, 1110, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_copy == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -29858,6 +31474,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  *         tree.xmlAddNextSibling(c_target, c_copy)
  * 
  */
+      __Pyx_TraceLine(1111,0,__PYX_ERR(5, 1111, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(5, 1111, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1110
@@ -29876,6 +31493,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
  * 
  * cdef int _deleteSlice(_Document doc, xmlNode* c_node,
  */
+    __Pyx_TraceLine(1112,0,__PYX_ERR(5, 1112, __pyx_L1_error))
     (void)(xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_copy));
   }
 
@@ -29894,6 +31512,7 @@ static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node,
   __Pyx_AddTraceback("lxml.etree._copyNonElementSiblings", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29912,6 +31531,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
   _node_to_node_function __pyx_v_next_element;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -29920,6 +31540,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
   Py_ssize_t __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_deleteSlice", 0);
+  __Pyx_TraceCall("_deleteSlice", __pyx_f[5], 1114, 0, __PYX_ERR(5, 1114, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1122
  *     cdef Py_ssize_t c, i
@@ -29928,6 +31549,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         return 0
  *     if step > 0:
  */
+  __Pyx_TraceLine(1122,0,__PYX_ERR(5, 1122, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -29938,6 +31560,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     if step > 0:
  *         next_element = _nextElement
  */
+    __Pyx_TraceLine(1123,0,__PYX_ERR(5, 1123, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -29957,6 +31580,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         next_element = _nextElement
  *     else:
  */
+  __Pyx_TraceLine(1124,0,__PYX_ERR(5, 1124, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_step > 0) != 0);
   if (__pyx_t_1) {
 
@@ -29967,6 +31591,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     else:
  *         step = -step
  */
+    __Pyx_TraceLine(1125,0,__PYX_ERR(5, 1125, __pyx_L1_error))
     __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
 
     /* "src/lxml/apihelpers.pxi":1124
@@ -29986,6 +31611,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         next_element = _previousElement
  *     # now start deleting nodes
  */
+  __Pyx_TraceLine(1127,0,__PYX_ERR(5, 1127, __pyx_L1_error))
   /*else*/ {
     __pyx_v_step = (-__pyx_v_step);
 
@@ -29996,6 +31622,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     # now start deleting nodes
  *     c = 0
  */
+    __Pyx_TraceLine(1128,0,__PYX_ERR(5, 1128, __pyx_L1_error))
     __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
   }
   __pyx_L4:;
@@ -30007,6 +31634,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     c_next = c_node
  *     while c_node is not NULL and c < count:
  */
+  __Pyx_TraceLine(1130,0,__PYX_ERR(5, 1130, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "src/lxml/apihelpers.pxi":1131
@@ -30016,6 +31644,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     while c_node is not NULL and c < count:
  *         for i in range(step):
  */
+  __Pyx_TraceLine(1131,0,__PYX_ERR(5, 1131, __pyx_L1_error))
   __pyx_v_c_next = __pyx_v_c_node;
 
   /* "src/lxml/apihelpers.pxi":1132
@@ -30025,6 +31654,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         for i in range(step):
  *             c_next = next_element(c_next)
  */
+  __Pyx_TraceLine(1132,0,__PYX_ERR(5, 1132, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_2) {
@@ -30044,6 +31674,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *             c_next = next_element(c_next)
  *         _removeNode(doc, c_node)
  */
+    __Pyx_TraceLine(1133,0,__PYX_ERR(5, 1133, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_step;
     __pyx_t_4 = __pyx_t_3;
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
@@ -30056,6 +31687,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         _removeNode(doc, c_node)
  *         c += 1
  */
+      __Pyx_TraceLine(1134,0,__PYX_ERR(5, 1134, __pyx_L1_error))
       __pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
     }
 
@@ -30066,6 +31698,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         c += 1
  *         c_node = c_next
  */
+    __Pyx_TraceLine(1135,0,__PYX_ERR(5, 1135, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(5, 1135, __pyx_L1_error)
 
     /* "src/lxml/apihelpers.pxi":1136
@@ -30075,6 +31708,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *         c_node = c_next
  *     return 0
  */
+    __Pyx_TraceLine(1136,0,__PYX_ERR(5, 1136, __pyx_L1_error))
     __pyx_v_c = (__pyx_v_c + 1);
 
     /* "src/lxml/apihelpers.pxi":1137
@@ -30084,6 +31718,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1137,0,__PYX_ERR(5, 1137, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -30094,6 +31729,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
  * 
  * cdef int _replaceSlice(_Element parent, xmlNode* c_node,
  */
+  __Pyx_TraceLine(1138,0,__PYX_ERR(5, 1138, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -30110,6 +31746,7 @@ static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, x
   __Pyx_AddTraceback("lxml.etree._deleteSlice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -30132,6 +31769,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
   Py_ssize_t __pyx_v_c;
   _node_to_node_function __pyx_v_next_element;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -30148,6 +31786,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
   Py_ssize_t __pyx_t_13;
   xmlDoc *__pyx_t_14;
   __Pyx_RefNannySetupContext("_replaceSlice", 0);
+  __Pyx_TraceCall("_replaceSlice", __pyx_f[5], 1140, 0, __PYX_ERR(5, 1140, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_elements);
 
   /* "src/lxml/apihelpers.pxi":1155
@@ -30157,6 +31796,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     if left_to_right:
  *         next_element = _nextElement
  */
+  __Pyx_TraceLine(1155,0,__PYX_ERR(5, 1155, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_step > 0) != 0))) {
@@ -30173,6 +31813,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         next_element = _nextElement
  *     else:
  */
+  __Pyx_TraceLine(1156,0,__PYX_ERR(5, 1156, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_left_to_right != 0);
   if (__pyx_t_1) {
 
@@ -30183,6 +31824,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     else:
  *         next_element = _previousElement
  */
+    __Pyx_TraceLine(1157,0,__PYX_ERR(5, 1157, __pyx_L1_error))
     __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
 
     /* "src/lxml/apihelpers.pxi":1156
@@ -30202,6 +31844,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     if not isinstance(elements, (list, tuple)):
  */
+  __Pyx_TraceLine(1159,0,__PYX_ERR(5, 1159, __pyx_L1_error))
   /*else*/ {
     __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
   }
@@ -30214,6 +31857,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         elements = list(elements)
  * 
  */
+  __Pyx_TraceLine(1161,0,__PYX_ERR(5, 1161, __pyx_L1_error))
   __pyx_t_2 = PyList_Check(__pyx_v_elements); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -30235,6 +31879,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     if step > 1:
  */
+    __Pyx_TraceLine(1162,0,__PYX_ERR(5, 1162, __pyx_L1_error))
     __pyx_t_4 = PySequence_List(__pyx_v_elements); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1162, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_elements, __pyx_t_4);
@@ -30256,6 +31901,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         # *replacing* children stepwise with list => check size!
  *         seqlength = len(elements)
  */
+  __Pyx_TraceLine(1164,0,__PYX_ERR(5, 1164, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_step > 1) != 0);
   if (__pyx_t_2) {
 
@@ -30266,6 +31912,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         if seqlength != slicelength:
  *             raise ValueError, f"attempt to assign sequence of size {seqlength} " \
  */
+    __Pyx_TraceLine(1166,0,__PYX_ERR(5, 1166, __pyx_L1_error))
     __pyx_t_5 = PyObject_Length(__pyx_v_elements); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1166, __pyx_L1_error)
     __pyx_v_seqlength = __pyx_t_5;
 
@@ -30276,6 +31923,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             raise ValueError, f"attempt to assign sequence of size {seqlength} " \
  *                 f"to extended slice of size {slicelength}"
  */
+    __Pyx_TraceLine(1167,0,__PYX_ERR(5, 1167, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_seqlength != __pyx_v_slicelength) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -30286,6 +31934,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 f"to extended slice of size {slicelength}"
  * 
  */
+      __Pyx_TraceLine(1168,0,__PYX_ERR(5, 1168, __pyx_L1_error))
       __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1168, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = 0;
@@ -30312,6 +31961,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     if c_node is NULL:
  */
+      __Pyx_TraceLine(1169,0,__PYX_ERR(5, 1169, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_slicelength, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 1169, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
@@ -30326,6 +31976,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 f"to extended slice of size {slicelength}"
  * 
  */
+      __Pyx_TraceLine(1168,0,__PYX_ERR(5, 1168, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 1168, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -30358,6 +32009,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         # no children yet => add all elements straight away
  *         if left_to_right:
  */
+  __Pyx_TraceLine(1171,0,__PYX_ERR(5, 1171, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -30368,6 +32020,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             for element in elements:
  *                 assert element is not None, u"Node must not be None"
  */
+    __Pyx_TraceLine(1173,0,__PYX_ERR(5, 1173, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_left_to_right != 0);
     if (__pyx_t_2) {
 
@@ -30378,6 +32031,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 assert element is not None, u"Node must not be None"
  *                 _appendChild(parent, element)
  */
+      __Pyx_TraceLine(1174,0,__PYX_ERR(5, 1174, __pyx_L1_error))
       if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
         __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
         __pyx_t_8 = NULL;
@@ -30428,6 +32082,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 _appendChild(parent, element)
  *         else:
  */
+        __Pyx_TraceLine(1175,0,__PYX_ERR(5, 1175, __pyx_L1_error))
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
           __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -30445,6 +32100,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         else:
  *             for element in elements:
  */
+        __Pyx_TraceLine(1176,0,__PYX_ERR(5, 1176, __pyx_L1_error))
         __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1176, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":1174
@@ -30454,6 +32110,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 assert element is not None, u"Node must not be None"
  *                 _appendChild(parent, element)
  */
+        __Pyx_TraceLine(1174,0,__PYX_ERR(5, 1174, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -30474,6 +32131,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 assert element is not None, u"Node must not be None"
  *                 _prependChild(parent, element)
  */
+    __Pyx_TraceLine(1178,0,__PYX_ERR(5, 1178, __pyx_L1_error))
     /*else*/ {
       if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
         __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
@@ -30525,6 +32183,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 _prependChild(parent, element)
  *         return 0
  */
+        __Pyx_TraceLine(1179,0,__PYX_ERR(5, 1179, __pyx_L1_error))
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
           __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -30542,6 +32201,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         return 0
  * 
  */
+        __Pyx_TraceLine(1180,0,__PYX_ERR(5, 1180, __pyx_L1_error))
         __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1180, __pyx_L1_error)
 
         /* "src/lxml/apihelpers.pxi":1178
@@ -30551,6 +32211,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 assert element is not None, u"Node must not be None"
  *                 _prependChild(parent, element)
  */
+        __Pyx_TraceLine(1178,0,__PYX_ERR(5, 1178, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
@@ -30563,6 +32224,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # remove the elements first as some might be re-added
  */
+    __Pyx_TraceLine(1181,0,__PYX_ERR(5, 1181, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -30582,6 +32244,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         # L->R, remember left neighbour
  *         c_orig_neighbour = _previousElement(c_node)
  */
+  __Pyx_TraceLine(1184,0,__PYX_ERR(5, 1184, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_left_to_right != 0);
   if (__pyx_t_2) {
 
@@ -30592,6 +32255,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     else:
  *         # R->L, remember right neighbour
  */
+    __Pyx_TraceLine(1186,0,__PYX_ERR(5, 1186, __pyx_L1_error))
     __pyx_v_c_orig_neighbour = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":1184
@@ -30611,6 +32275,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # We remove the original slice elements one by one. Since we hold
  */
+  __Pyx_TraceLine(1189,0,__PYX_ERR(5, 1189, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_orig_neighbour = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
   }
@@ -30623,6 +32288,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     c_next = c_node
  *     while c_node is not NULL and c < slicelength:
  */
+  __Pyx_TraceLine(1195,0,__PYX_ERR(5, 1195, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "src/lxml/apihelpers.pxi":1196
@@ -30632,6 +32298,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     while c_node is not NULL and c < slicelength:
  *         for i in range(step):
  */
+  __Pyx_TraceLine(1196,0,__PYX_ERR(5, 1196, __pyx_L1_error))
   __pyx_v_c_next = __pyx_v_c_node;
 
   /* "src/lxml/apihelpers.pxi":1197
@@ -30641,6 +32308,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         for i in range(step):
  *             c_next = next_element(c_next)
  */
+  __Pyx_TraceLine(1197,0,__PYX_ERR(5, 1197, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_1) {
@@ -30660,6 +32328,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             c_next = next_element(c_next)
  *         _removeNode(parent._doc, c_node)
  */
+    __Pyx_TraceLine(1198,0,__PYX_ERR(5, 1198, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_step;
     __pyx_t_10 = __pyx_t_5;
     for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
@@ -30672,6 +32341,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         _removeNode(parent._doc, c_node)
  *         c += 1
  */
+      __Pyx_TraceLine(1199,0,__PYX_ERR(5, 1199, __pyx_L1_error))
       __pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
     }
 
@@ -30682,6 +32352,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         c += 1
  *         c_node = c_next
  */
+    __Pyx_TraceLine(1200,0,__PYX_ERR(5, 1200, __pyx_L1_error))
     __pyx_t_7 = ((PyObject *)__pyx_v_parent->_doc);
     __Pyx_INCREF(__pyx_t_7);
     __pyx_t_9 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_7), __pyx_v_c_node); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1200, __pyx_L1_error)
@@ -30694,6 +32365,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         c_node = c_next
  * 
  */
+    __Pyx_TraceLine(1201,0,__PYX_ERR(5, 1201, __pyx_L1_error))
     __pyx_v_c = (__pyx_v_c + 1);
 
     /* "src/lxml/apihelpers.pxi":1202
@@ -30703,6 +32375,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # make sure each element is inserted only once
  */
+    __Pyx_TraceLine(1202,0,__PYX_ERR(5, 1202, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -30713,6 +32386,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # find the first node right of the new insertion point
  */
+  __Pyx_TraceLine(1205,0,__PYX_ERR(5, 1205, __pyx_L1_error))
   __pyx_t_7 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 1205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF_SET(__pyx_v_elements, __pyx_t_7);
@@ -30725,6 +32399,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         if c_orig_neighbour is not NULL:
  *             c_node = next_element(c_orig_neighbour)
  */
+  __Pyx_TraceLine(1208,0,__PYX_ERR(5, 1208, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_left_to_right != 0);
   if (__pyx_t_2) {
 
@@ -30735,6 +32410,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             c_node = next_element(c_orig_neighbour)
  *         else:
  */
+    __Pyx_TraceLine(1209,0,__PYX_ERR(5, 1209, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_orig_neighbour != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -30745,6 +32421,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         else:
  *             # before the first element
  */
+      __Pyx_TraceLine(1210,0,__PYX_ERR(5, 1210, __pyx_L1_error))
       __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_orig_neighbour);
 
       /* "src/lxml/apihelpers.pxi":1209
@@ -30764,6 +32441,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     elif c_orig_neighbour is NULL:
  *         # at the end, but reversed stepping
  */
+    __Pyx_TraceLine(1213,0,__PYX_ERR(5, 1213, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);
     }
@@ -30786,6 +32464,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         # at the end, but reversed stepping
  *         # append one element and go to the next insertion point
  */
+  __Pyx_TraceLine(1214,0,__PYX_ERR(5, 1214, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_orig_neighbour == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -30796,6 +32475,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _appendChild(parent, element)
  */
+    __Pyx_TraceLine(1217,0,__PYX_ERR(5, 1217, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
       __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
       __pyx_t_8 = NULL;
@@ -30846,6 +32526,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _appendChild(parent, element)
  *             c_node = element._c_node
  */
+      __Pyx_TraceLine(1218,0,__PYX_ERR(5, 1218, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -30863,6 +32544,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             c_node = element._c_node
  *             if slicelength > 0:
  */
+      __Pyx_TraceLine(1219,0,__PYX_ERR(5, 1219, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1219, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1220
@@ -30872,6 +32554,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             if slicelength > 0:
  *                 slicelength -= 1
  */
+      __Pyx_TraceLine(1220,0,__PYX_ERR(5, 1220, __pyx_L1_error))
       __pyx_t_12 = __pyx_v_element->_c_node;
       __pyx_v_c_node = __pyx_t_12;
 
@@ -30882,6 +32565,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 slicelength -= 1
  *                 for i in range(1, step):
  */
+      __Pyx_TraceLine(1221,0,__PYX_ERR(5, 1221, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_slicelength > 0) != 0);
       if (__pyx_t_2) {
 
@@ -30892,6 +32576,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 for i in range(1, step):
  *                     c_node = next_element(c_node)
  */
+        __Pyx_TraceLine(1222,0,__PYX_ERR(5, 1222, __pyx_L1_error))
         __pyx_v_slicelength = (__pyx_v_slicelength - 1);
 
         /* "src/lxml/apihelpers.pxi":1223
@@ -30901,6 +32586,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                     c_node = next_element(c_node)
  *             break
  */
+        __Pyx_TraceLine(1223,0,__PYX_ERR(5, 1223, __pyx_L1_error))
         __pyx_t_10 = __pyx_v_step;
         __pyx_t_11 = __pyx_t_10;
         for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_11; __pyx_t_13+=1) {
@@ -30913,6 +32599,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             break
  * 
  */
+          __Pyx_TraceLine(1224,0,__PYX_ERR(5, 1224, __pyx_L1_error))
           __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
         }
 
@@ -30932,6 +32619,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     if left_to_right:
  */
+      __Pyx_TraceLine(1225,0,__PYX_ERR(5, 1225, __pyx_L1_error))
       goto __pyx_L25_break;
 
       /* "src/lxml/apihelpers.pxi":1217
@@ -30941,6 +32629,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _appendChild(parent, element)
  */
+      __Pyx_TraceLine(1217,0,__PYX_ERR(5, 1217, __pyx_L1_error))
     }
     __pyx_L25_break:;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -30962,6 +32651,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         # adjust step size after removing slice as we are not stepping
  *         # over the newly inserted elements
  */
+  __Pyx_TraceLine(1227,0,__PYX_ERR(5, 1227, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_left_to_right != 0);
   if (__pyx_t_2) {
 
@@ -30972,6 +32662,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # now insert elements where we removed them
  */
+    __Pyx_TraceLine(1230,0,__PYX_ERR(5, 1230, __pyx_L1_error))
     __pyx_v_step = (__pyx_v_step - 1);
 
     /* "src/lxml/apihelpers.pxi":1227
@@ -30990,6 +32681,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         for element in elements:
  *             assert element is not None, u"Node must not be None"
  */
+  __Pyx_TraceLine(1233,0,__PYX_ERR(5, 1233, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -31000,6 +32692,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+    __Pyx_TraceLine(1234,0,__PYX_ERR(5, 1234, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
       __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
       __pyx_t_8 = NULL;
@@ -31050,6 +32743,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _assertValidNode(element)
  *             # move element and tail over
  */
+      __Pyx_TraceLine(1235,0,__PYX_ERR(5, 1235, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -31067,6 +32761,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             # move element and tail over
  *             c_source_doc = element._c_node.doc
  */
+      __Pyx_TraceLine(1236,0,__PYX_ERR(5, 1236, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1236, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1238
@@ -31076,6 +32771,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             c_next = element._c_node.next
  *             tree.xmlAddPrevSibling(c_node, element._c_node)
  */
+      __Pyx_TraceLine(1238,0,__PYX_ERR(5, 1238, __pyx_L1_error))
       __pyx_t_14 = __pyx_v_element->_c_node->doc;
       __pyx_v_c_source_doc = __pyx_t_14;
 
@@ -31086,6 +32782,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             tree.xmlAddPrevSibling(c_node, element._c_node)
  *             _moveTail(c_next, element._c_node)
  */
+      __Pyx_TraceLine(1239,0,__PYX_ERR(5, 1239, __pyx_L1_error))
       __pyx_t_12 = __pyx_v_element->_c_node->next;
       __pyx_v_c_next = __pyx_t_12;
 
@@ -31096,6 +32793,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _moveTail(c_next, element._c_node)
  * 
  */
+      __Pyx_TraceLine(1240,0,__PYX_ERR(5, 1240, __pyx_L1_error))
       (void)(xmlAddPrevSibling(__pyx_v_c_node, __pyx_v_element->_c_node));
 
       /* "src/lxml/apihelpers.pxi":1241
@@ -31105,6 +32803,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *             # integrate element into new document
  */
+      __Pyx_TraceLine(1241,0,__PYX_ERR(5, 1241, __pyx_L1_error))
       __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);
 
       /* "src/lxml/apihelpers.pxi":1244
@@ -31114,6 +32813,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *             # stop at the end of the slice
  */
+      __Pyx_TraceLine(1244,0,__PYX_ERR(5, 1244, __pyx_L1_error))
       __pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_4);
       __pyx_t_9 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1244, __pyx_L1_error)
@@ -31126,6 +32826,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 slicelength -= 1
  *                 for i in range(step):
  */
+      __Pyx_TraceLine(1247,0,__PYX_ERR(5, 1247, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_slicelength > 0) != 0);
       if (__pyx_t_2) {
 
@@ -31136,6 +32837,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 for i in range(step):
  *                     c_node = next_element(c_node)
  */
+        __Pyx_TraceLine(1248,0,__PYX_ERR(5, 1248, __pyx_L1_error))
         __pyx_v_slicelength = (__pyx_v_slicelength - 1);
 
         /* "src/lxml/apihelpers.pxi":1249
@@ -31145,6 +32847,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                     c_node = next_element(c_node)
  *                 if c_node is NULL:
  */
+        __Pyx_TraceLine(1249,0,__PYX_ERR(5, 1249, __pyx_L1_error))
         __pyx_t_10 = __pyx_v_step;
         __pyx_t_11 = __pyx_t_10;
         for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_11; __pyx_t_13+=1) {
@@ -31157,6 +32860,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                 if c_node is NULL:
  *                     break
  */
+          __Pyx_TraceLine(1250,0,__PYX_ERR(5, 1250, __pyx_L1_error))
           __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
         }
 
@@ -31167,6 +32871,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *                     break
  *         else:
  */
+        __Pyx_TraceLine(1251,0,__PYX_ERR(5, 1251, __pyx_L1_error))
         __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
         if (__pyx_t_2) {
 
@@ -31177,6 +32882,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         else:
  *             # everything inserted
  */
+          __Pyx_TraceLine(1252,0,__PYX_ERR(5, 1252, __pyx_L1_error))
           goto __pyx_L32_break;
 
           /* "src/lxml/apihelpers.pxi":1251
@@ -31204,6 +32910,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+      __Pyx_TraceLine(1234,0,__PYX_ERR(5, 1234, __pyx_L1_error))
     }
     /*else*/ {
 
@@ -31214,6 +32921,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     # append the remaining elements at the respective end
  */
+      __Pyx_TraceLine(1255,0,__PYX_ERR(5, 1255, __pyx_L1_error))
       __pyx_r = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L0;
@@ -31226,6 +32934,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+    __Pyx_TraceLine(1234,0,__PYX_ERR(5, 1234, __pyx_L1_error))
     __pyx_L32_break:;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -31245,6 +32954,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *         for element in elements:
  *             assert element is not None, u"Node must not be None"
  */
+  __Pyx_TraceLine(1258,0,__PYX_ERR(5, 1258, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_left_to_right != 0);
   if (__pyx_t_2) {
 
@@ -31255,6 +32965,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+    __Pyx_TraceLine(1259,0,__PYX_ERR(5, 1259, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
       __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
       __pyx_t_8 = NULL;
@@ -31305,6 +33016,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _assertValidNode(element)
  *             _appendChild(parent, element)
  */
+      __Pyx_TraceLine(1260,0,__PYX_ERR(5, 1260, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -31322,6 +33034,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _appendChild(parent, element)
  *     else:
  */
+      __Pyx_TraceLine(1261,0,__PYX_ERR(5, 1261, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1261, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1262
@@ -31331,6 +33044,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *     else:
  *         for element in elements:
  */
+      __Pyx_TraceLine(1262,0,__PYX_ERR(5, 1262, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1262, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1259
@@ -31340,6 +33054,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+      __Pyx_TraceLine(1259,0,__PYX_ERR(5, 1259, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -31360,6 +33075,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+  __Pyx_TraceLine(1264,0,__PYX_ERR(5, 1264, __pyx_L1_error))
   /*else*/ {
     if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
       __pyx_t_7 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0;
@@ -31411,6 +33127,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _assertValidNode(element)
  *             _prependChild(parent, element)
  */
+      __Pyx_TraceLine(1265,0,__PYX_ERR(5, 1265, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
@@ -31428,6 +33145,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             _prependChild(parent, element)
  * 
  */
+      __Pyx_TraceLine(1266,0,__PYX_ERR(5, 1266, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1266, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1267
@@ -31437,6 +33155,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  *     return 0
  */
+      __Pyx_TraceLine(1267,0,__PYX_ERR(5, 1267, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(5, 1267, __pyx_L1_error)
 
       /* "src/lxml/apihelpers.pxi":1264
@@ -31446,6 +33165,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  *             assert element is not None, u"Node must not be None"
  *             _assertValidNode(element)
  */
+      __Pyx_TraceLine(1264,0,__PYX_ERR(5, 1264, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -31458,6 +33178,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  * cdef int _appendChild(_Element parent, _Element child) except -1:
  */
+  __Pyx_TraceLine(1269,0,__PYX_ERR(5, 1269, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -31478,6 +33199,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XDECREF(__pyx_v_elements);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31495,6 +33217,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   xmlDoc *__pyx_v_c_source_doc;
   xmlNode *__pyx_v_c_next;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   xmlDoc *__pyx_t_2;
@@ -31502,6 +33225,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_appendChild", 0);
+  __Pyx_TraceCall("_appendChild", __pyx_f[5], 1271, 0, __PYX_ERR(5, 1271, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1274
  *     u"""Append a new child to a parent element.
@@ -31510,6 +33234,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  */
+  __Pyx_TraceLine(1274,0,__PYX_ERR(5, 1274, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_child->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -31520,6 +33245,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):
  */
+  __Pyx_TraceLine(1275,0,__PYX_ERR(5, 1275, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
@@ -31530,6 +33256,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *         raise ValueError("cannot append parent to itself")
  *     # store possible text node
  */
+  __Pyx_TraceLine(1277,0,__PYX_ERR(5, 1277, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_parent->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -31540,7 +33267,8 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1278, __pyx_L1_error)
+    __Pyx_TraceLine(1278,0,__PYX_ERR(5, 1278, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1278, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -31562,6 +33290,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     # move node itself
  *     tree.xmlUnlinkNode(c_node)
  */
+  __Pyx_TraceLine(1280,0,__PYX_ERR(5, 1280, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
@@ -31572,6 +33301,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     tree.xmlAddChild(parent._c_node, c_node)
  *     _moveTail(c_next, c_node)
  */
+  __Pyx_TraceLine(1282,0,__PYX_ERR(5, 1282, __pyx_L1_error))
   xmlUnlinkNode(__pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1283
@@ -31581,6 +33311,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     _moveTail(c_next, c_node)
  *     # uh oh, elements may be pointing to different doc when
  */
+  __Pyx_TraceLine(1283,0,__PYX_ERR(5, 1283, __pyx_L1_error))
   (void)(xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node));
 
   /* "src/lxml/apihelpers.pxi":1284
@@ -31590,6 +33321,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  */
+  __Pyx_TraceLine(1284,0,__PYX_ERR(5, 1284, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1287
@@ -31599,6 +33331,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  *     return 0
  * 
  */
+  __Pyx_TraceLine(1287,0,__PYX_ERR(5, 1287, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_5 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1287, __pyx_L1_error)
@@ -31611,6 +33344,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  * 
  * cdef int _prependChild(_Element parent, _Element child) except -1:
  */
+  __Pyx_TraceLine(1288,0,__PYX_ERR(5, 1288, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -31628,6 +33362,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __Pyx_AddTraceback("lxml.etree._appendChild", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31646,6 +33381,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   xmlNode *__pyx_v_c_next;
   xmlNode *__pyx_v_c_child;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   xmlDoc *__pyx_t_2;
@@ -31653,6 +33389,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_prependChild", 0);
+  __Pyx_TraceCall("_prependChild", __pyx_f[5], 1290, 0, __PYX_ERR(5, 1290, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1293
  *     u"""Prepend a new child to a parent element.
@@ -31661,6 +33398,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  */
+  __Pyx_TraceLine(1293,0,__PYX_ERR(5, 1293, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_child->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -31671,6 +33409,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):
  */
+  __Pyx_TraceLine(1294,0,__PYX_ERR(5, 1294, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
@@ -31681,6 +33420,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *         raise ValueError("cannot append parent to itself")
  *     # store possible text node
  */
+  __Pyx_TraceLine(1296,0,__PYX_ERR(5, 1296, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_parent->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -31691,7 +33431,8 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1297, __pyx_L1_error)
+    __Pyx_TraceLine(1297,0,__PYX_ERR(5, 1297, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1297, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -31713,6 +33454,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     # move node itself
  *     c_child = _findChildForwards(parent._c_node, 0)
  */
+  __Pyx_TraceLine(1299,0,__PYX_ERR(5, 1299, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
@@ -31723,6 +33465,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     if c_child is NULL:
  *         tree.xmlUnlinkNode(c_node)
  */
+  __Pyx_TraceLine(1301,0,__PYX_ERR(5, 1301, __pyx_L1_error))
   __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);
 
   /* "src/lxml/apihelpers.pxi":1302
@@ -31732,6 +33475,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *         tree.xmlUnlinkNode(c_node)
  *         tree.xmlAddChild(parent._c_node, c_node)
  */
+  __Pyx_TraceLine(1302,0,__PYX_ERR(5, 1302, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_child == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -31742,6 +33486,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *         tree.xmlAddChild(parent._c_node, c_node)
  *     else:
  */
+    __Pyx_TraceLine(1303,0,__PYX_ERR(5, 1303, __pyx_L1_error))
     xmlUnlinkNode(__pyx_v_c_node);
 
     /* "src/lxml/apihelpers.pxi":1304
@@ -31751,6 +33496,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     else:
  *         tree.xmlAddPrevSibling(c_child, c_node)
  */
+    __Pyx_TraceLine(1304,0,__PYX_ERR(5, 1304, __pyx_L1_error))
     (void)(xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node));
 
     /* "src/lxml/apihelpers.pxi":1302
@@ -31770,6 +33516,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     _moveTail(c_next, c_node)
  *     # uh oh, elements may be pointing to different doc when
  */
+  __Pyx_TraceLine(1306,0,__PYX_ERR(5, 1306, __pyx_L1_error))
   /*else*/ {
     (void)(xmlAddPrevSibling(__pyx_v_c_child, __pyx_v_c_node));
   }
@@ -31782,6 +33529,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  */
+  __Pyx_TraceLine(1307,0,__PYX_ERR(5, 1307, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1310
@@ -31791,6 +33539,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  *     return 0
  * 
  */
+  __Pyx_TraceLine(1310,0,__PYX_ERR(5, 1310, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_5 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1310, __pyx_L1_error)
@@ -31803,6 +33552,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  * 
  * cdef int _appendSibling(_Element element, _Element sibling) except -1:
  */
+  __Pyx_TraceLine(1311,0,__PYX_ERR(5, 1311, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -31820,6 +33570,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __Pyx_AddTraceback("lxml.etree._prependChild", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31834,9 +33585,11 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
 
 static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_element, struct LxmlElement *__pyx_v_sibling) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_appendSibling", 0);
+  __Pyx_TraceCall("_appendSibling", __pyx_f[5], 1313, 0, __PYX_ERR(5, 1313, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1316
  *     u"""Add a new sibling behind an element.
@@ -31845,6 +33598,7 @@ static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_eleme
  * 
  * cdef int _prependSibling(_Element element, _Element sibling) except -1:
  */
+  __Pyx_TraceLine(1316,0,__PYX_ERR(5, 1316, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__addSibling(__pyx_v_element, __pyx_v_sibling, 1); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(5, 1316, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -31862,6 +33616,7 @@ static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_eleme
   __Pyx_AddTraceback("lxml.etree._appendSibling", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31876,9 +33631,11 @@ static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_eleme
 
 static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_element, struct LxmlElement *__pyx_v_sibling) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_prependSibling", 0);
+  __Pyx_TraceCall("_prependSibling", __pyx_f[5], 1318, 0, __PYX_ERR(5, 1318, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1321
  *     u"""Add a new sibling before an element.
@@ -31887,6 +33644,7 @@ static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_elem
  * 
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:
  */
+  __Pyx_TraceLine(1321,0,__PYX_ERR(5, 1321, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__addSibling(__pyx_v_element, __pyx_v_sibling, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(5, 1321, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -31904,6 +33662,7 @@ static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_elem
   __Pyx_AddTraceback("lxml.etree._prependSibling", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31921,6 +33680,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   xmlDoc *__pyx_v_c_source_doc;
   xmlNode *__pyx_v_c_next;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   xmlDoc *__pyx_t_2;
@@ -31928,6 +33688,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_addSibling", 0);
+  __Pyx_TraceCall("_addSibling", __pyx_f[5], 1323, 0, __PYX_ERR(5, 1323, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1324
  * 
@@ -31936,6 +33697,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  */
+  __Pyx_TraceLine(1324,0,__PYX_ERR(5, 1324, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_sibling->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -31946,6 +33708,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, element._c_node):
  */
+  __Pyx_TraceLine(1325,0,__PYX_ERR(5, 1325, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
@@ -31956,6 +33719,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *         if element._c_node is c_node:
  *             return 0  # nothing to do
  */
+  __Pyx_TraceLine(1327,0,__PYX_ERR(5, 1327, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_element->_c_node) != 0);
   if (__pyx_t_3) {
 
@@ -31966,6 +33730,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *             return 0  # nothing to do
  *         raise ValueError("cannot add ancestor as sibling, please break cycle first")
  */
+    __Pyx_TraceLine(1328,0,__PYX_ERR(5, 1328, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_element->_c_node == __pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
@@ -31976,6 +33741,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *         raise ValueError("cannot add ancestor as sibling, please break cycle first")
  *     # store possible text node
  */
+      __Pyx_TraceLine(1329,0,__PYX_ERR(5, 1329, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -31995,7 +33761,8 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1330, __pyx_L1_error)
+    __Pyx_TraceLine(1330,0,__PYX_ERR(5, 1330, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1330, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -32017,6 +33784,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     # move node itself
  *     if as_next:
  */
+  __Pyx_TraceLine(1332,0,__PYX_ERR(5, 1332, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
@@ -32027,6 +33795,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *         tree.xmlAddNextSibling(element._c_node, c_node)
  *     else:
  */
+  __Pyx_TraceLine(1334,0,__PYX_ERR(5, 1334, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_as_next != 0);
   if (__pyx_t_3) {
 
@@ -32037,6 +33806,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     else:
  *         tree.xmlAddPrevSibling(element._c_node, c_node)
  */
+    __Pyx_TraceLine(1335,0,__PYX_ERR(5, 1335, __pyx_L1_error))
     (void)(xmlAddNextSibling(__pyx_v_element->_c_node, __pyx_v_c_node));
 
     /* "src/lxml/apihelpers.pxi":1334
@@ -32056,6 +33826,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     _moveTail(c_next, c_node)
  *     # uh oh, elements may be pointing to different doc when
  */
+  __Pyx_TraceLine(1337,0,__PYX_ERR(5, 1337, __pyx_L1_error))
   /*else*/ {
     (void)(xmlAddPrevSibling(__pyx_v_element->_c_node, __pyx_v_c_node));
   }
@@ -32068,6 +33839,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  */
+  __Pyx_TraceLine(1338,0,__PYX_ERR(5, 1338, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/apihelpers.pxi":1341
@@ -32077,6 +33849,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  *     return 0
  * 
  */
+  __Pyx_TraceLine(1341,0,__PYX_ERR(5, 1341, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_element->_doc);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_5 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1341, __pyx_L1_error)
@@ -32089,6 +33862,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  * 
  * cdef inline int isutf8(const_xmlChar* s):
  */
+  __Pyx_TraceLine(1342,0,__PYX_ERR(5, 1342, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -32106,6 +33880,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __Pyx_AddTraceback("lxml.etree._addSibling", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32121,9 +33896,11 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
 static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
   xmlChar __pyx_v_c;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("isutf8", 0);
+  __Pyx_TraceCall("isutf8", __pyx_f[5], 1344, 0, __PYX_ERR(5, 1344, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1345
  * 
@@ -32132,6 +33909,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *     while c != c'\0':
  *         if c & 0x80:
  */
+  __Pyx_TraceLine(1345,0,__PYX_ERR(5, 1345, __pyx_L1_error))
   __pyx_v_c = (__pyx_v_s[0]);
 
   /* "src/lxml/apihelpers.pxi":1346
@@ -32141,6 +33919,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *         if c & 0x80:
  *             return 1
  */
+  __Pyx_TraceLine(1346,0,__PYX_ERR(5, 1346, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c != '\x00') != 0);
     if (!__pyx_t_1) break;
@@ -32152,6 +33931,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *             return 1
  *         s += 1
  */
+    __Pyx_TraceLine(1347,0,__PYX_ERR(5, 1347, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c & 0x80) != 0);
     if (__pyx_t_1) {
 
@@ -32162,6 +33942,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *         s += 1
  *         c = s[0]
  */
+      __Pyx_TraceLine(1348,0,__PYX_ERR(5, 1348, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -32181,6 +33962,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *         c = s[0]
  *     return 0
  */
+    __Pyx_TraceLine(1349,0,__PYX_ERR(5, 1349, __pyx_L1_error))
     __pyx_v_s = (__pyx_v_s + 1);
 
     /* "src/lxml/apihelpers.pxi":1350
@@ -32190,6 +33972,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1350,0,__PYX_ERR(5, 1350, __pyx_L1_error))
     __pyx_v_c = (__pyx_v_s[0]);
   }
 
@@ -32200,6 +33983,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  * 
  * cdef int _is_valid_xml_ascii(bytes pystring):
  */
+  __Pyx_TraceLine(1351,0,__PYX_ERR(5, 1351, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -32212,7 +33996,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.isutf8", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32228,6 +34016,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
 static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring) {
   signed char __pyx_v_ch;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   char *__pyx_t_2;
@@ -32236,6 +34025,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   char *__pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_is_valid_xml_ascii", 0);
+  __Pyx_TraceCall("_is_valid_xml_ascii", __pyx_f[5], 1353, 0, __PYX_ERR(5, 1353, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1358
  *     # When ch is a *signed* char, non-ascii characters are negative integers
@@ -32244,6 +34034,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
  *         if not tree.xmlIsChar_ch(ch):
  *             return 0
  */
+  __Pyx_TraceLine(1358,0,__PYX_ERR(5, 1358, __pyx_L1_error))
   if (unlikely(__pyx_v_pystring == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
     __PYX_ERR(5, 1358, __pyx_L1_error)
@@ -32263,6 +34054,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
  *             return 0
  *     return 1
  */
+    __Pyx_TraceLine(1359,0,__PYX_ERR(5, 1359, __pyx_L1_error))
     __pyx_t_6 = ((!(xmlIsChar_ch(__pyx_v_ch) != 0)) != 0);
     if (__pyx_t_6) {
 
@@ -32273,6 +34065,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
  *     return 1
  * 
  */
+      __Pyx_TraceLine(1360,0,__PYX_ERR(5, 1360, __pyx_L1_error))
       __pyx_r = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       goto __pyx_L0;
@@ -32295,6 +34088,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
  * 
  * cdef bint _is_valid_xml_utf8(bytes pystring):
  */
+  __Pyx_TraceLine(1361,0,__PYX_ERR(5, 1361, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -32312,6 +34106,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   __Pyx_WriteUnraisable("lxml.etree._is_valid_xml_ascii", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32329,11 +34124,13 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   const xmlChar *__pyx_v_c_end;
   unsigned long __pyx_v_next3;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_is_valid_xml_utf8", 0);
+  __Pyx_TraceCall("_is_valid_xml_utf8", __pyx_f[5], 1363, 0, __PYX_ERR(5, 1363, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1365
  * cdef bint _is_valid_xml_utf8(bytes pystring):
@@ -32342,6 +34139,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *     cdef const_xmlChar* c_end = s + len(pystring)
  *     cdef unsigned long next3 = 0
  */
+  __Pyx_TraceLine(1365,0,__PYX_ERR(5, 1365, __pyx_L1_error))
   __pyx_v_s = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_pystring);
 
   /* "src/lxml/apihelpers.pxi":1366
@@ -32351,6 +34149,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *     cdef unsigned long next3 = 0
  *     if s < c_end - 2:
  */
+  __Pyx_TraceLine(1366,0,__PYX_ERR(5, 1366, __pyx_L1_error))
   if (unlikely(__pyx_v_pystring == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
     __PYX_ERR(5, 1366, __pyx_L1_error)
@@ -32365,6 +34164,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *     if s < c_end - 2:
  *         next3 = (s[0] << 8) | (s[1])
  */
+  __Pyx_TraceLine(1367,0,__PYX_ERR(5, 1367, __pyx_L1_error))
   __pyx_v_next3 = 0;
 
   /* "src/lxml/apihelpers.pxi":1368
@@ -32374,6 +34174,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         next3 = (s[0] << 8) | (s[1])
  * 
  */
+  __Pyx_TraceLine(1368,0,__PYX_ERR(5, 1368, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_s < (__pyx_v_c_end - 2)) != 0);
   if (__pyx_t_2) {
 
@@ -32384,6 +34185,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  * 
  *     while s < c_end - 2:
  */
+    __Pyx_TraceLine(1369,0,__PYX_ERR(5, 1369, __pyx_L1_error))
     __pyx_v_next3 = (((__pyx_v_s[0]) << 8) | (__pyx_v_s[1]));
 
     /* "src/lxml/apihelpers.pxi":1368
@@ -32402,6 +34204,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         next3 = 0x00ffffff & ((next3 << 8) | s[2])
  *         if s[0] & 0x80:
  */
+  __Pyx_TraceLine(1371,0,__PYX_ERR(5, 1371, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_s < (__pyx_v_c_end - 2)) != 0);
     if (!__pyx_t_2) break;
@@ -32413,6 +34216,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         if s[0] & 0x80:
  *             # 0xefbfbe and 0xefbfbf are utf-8 encodings of
  */
+    __Pyx_TraceLine(1372,0,__PYX_ERR(5, 1372, __pyx_L1_error))
     __pyx_v_next3 = (0x00ffffff & ((__pyx_v_next3 << 8) | (__pyx_v_s[2])));
 
     /* "src/lxml/apihelpers.pxi":1373
@@ -32422,6 +34226,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *             # 0xefbfbe and 0xefbfbf are utf-8 encodings of
  *             # forbidden characters \ufffe and \uffff
  */
+    __Pyx_TraceLine(1373,0,__PYX_ERR(5, 1373, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_s[0]) & 0x80) != 0);
     if (__pyx_t_2) {
 
@@ -32432,6 +34237,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *                 return 0
  *             # 0xeda080 and 0xedbfbf are utf-8 encodings of
  */
+      __Pyx_TraceLine(1376,0,__PYX_ERR(5, 1376, __pyx_L1_error))
       switch (__pyx_v_next3) {
         case 0x00efbfbe:
         case 0x00efbfbf:
@@ -32443,6 +34249,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *             # 0xeda080 and 0xedbfbf are utf-8 encodings of
  *             # \ud800 and \udfff. Anything between them (inclusive)
  */
+        __Pyx_TraceLine(1377,0,__PYX_ERR(5, 1377, __pyx_L1_error))
         __pyx_r = 0;
         goto __pyx_L0;
 
@@ -32464,6 +34271,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *                 return 0
  *         elif not tree.xmlIsChar_ch(s[0]):
  */
+      __Pyx_TraceLine(1381,0,__PYX_ERR(5, 1381, __pyx_L1_error))
       __pyx_t_2 = (0x00eda080 <= __pyx_v_next3);
       if (__pyx_t_2) {
         __pyx_t_2 = (__pyx_v_next3 <= 0x00edbfbf);
@@ -32478,6 +34286,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         elif not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char
  */
+        __Pyx_TraceLine(1382,0,__PYX_ERR(5, 1382, __pyx_L1_error))
         __pyx_r = 0;
         goto __pyx_L0;
 
@@ -32507,6 +34316,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *             return 0  # invalid ascii char
  *         s += 1
  */
+    __Pyx_TraceLine(1383,0,__PYX_ERR(5, 1383, __pyx_L1_error))
     __pyx_t_3 = ((!(xmlIsChar_ch((__pyx_v_s[0])) != 0)) != 0);
     if (__pyx_t_3) {
 
@@ -32517,6 +34327,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         s += 1
  * 
  */
+      __Pyx_TraceLine(1384,0,__PYX_ERR(5, 1384, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -32537,6 +34348,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  * 
  *     while s < c_end:
  */
+    __Pyx_TraceLine(1385,0,__PYX_ERR(5, 1385, __pyx_L1_error))
     __pyx_v_s = (__pyx_v_s + 1);
   }
 
@@ -32547,6 +34359,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char
  */
+  __Pyx_TraceLine(1387,0,__PYX_ERR(5, 1387, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_s < __pyx_v_c_end) != 0);
     if (!__pyx_t_3) break;
@@ -32558,6 +34371,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *             return 0  # invalid ascii char
  *         s += 1
  */
+    __Pyx_TraceLine(1388,0,__PYX_ERR(5, 1388, __pyx_L1_error))
     __pyx_t_2 = ((!(((__pyx_v_s[0]) & 0x80) != 0)) != 0);
     if (__pyx_t_2) {
     } else {
@@ -32576,6 +34390,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  *         s += 1
  * 
  */
+      __Pyx_TraceLine(1389,0,__PYX_ERR(5, 1389, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -32595,6 +34410,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  * 
  *     return 1
  */
+    __Pyx_TraceLine(1390,0,__PYX_ERR(5, 1390, __pyx_L1_error))
     __pyx_v_s = (__pyx_v_s + 1);
   }
 
@@ -32605,6 +34421,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  * 
  * cdef inline object funicodeOrNone(const_xmlChar* s):
  */
+  __Pyx_TraceLine(1392,0,__PYX_ERR(5, 1392, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -32621,6 +34438,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   __Pyx_WriteUnraisable("lxml.etree._is_valid_xml_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32635,10 +34453,12 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicodeOrNone", 0);
+  __Pyx_TraceCall("funicodeOrNone", __pyx_f[5], 1394, 0, __PYX_ERR(5, 1394, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1395
  * 
@@ -32647,6 +34467,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
  * 
  * cdef inline object funicodeOrEmpty(const_xmlChar* s):
  */
+  __Pyx_TraceLine(1395,0,__PYX_ERR(5, 1395, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_s != NULL) != 0)) {
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1395, __pyx_L1_error)
@@ -32677,6 +34498,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32691,10 +34513,12 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlChar *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicodeOrEmpty", 0);
+  __Pyx_TraceCall("funicodeOrEmpty", __pyx_f[5], 1397, 0, __PYX_ERR(5, 1397, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1398
  * 
@@ -32703,6 +34527,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
  * 
  * cdef object funicode(const_xmlChar* s):
  */
+  __Pyx_TraceLine(1398,0,__PYX_ERR(5, 1398, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_s != NULL) != 0)) {
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1398, __pyx_L1_error)
@@ -32710,8 +34535,8 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
   } else {
-    __Pyx_INCREF(__pyx_kp_s__16);
-    __pyx_t_1 = __pyx_kp_s__16;
+    __Pyx_INCREF(__pyx_kp_s__23);
+    __pyx_t_1 = __pyx_kp_s__23;
   }
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -32733,6 +34558,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32750,10 +34576,12 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   const xmlChar *__pyx_v_spos;
   int __pyx_v_is_non_ascii;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicode", 0);
+  __Pyx_TraceCall("funicode", __pyx_f[5], 1400, 0, __PYX_ERR(5, 1400, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1404
  *     cdef const_xmlChar* spos
@@ -32762,6 +34590,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *         return s.decode('UTF-8')
  *     spos = s
  */
+  __Pyx_TraceLine(1404,0,__PYX_ERR(5, 1404, __pyx_L1_error))
   __pyx_t_1 = (LXML_UNICODE_STRINGS != 0);
   if (__pyx_t_1) {
 
@@ -32772,6 +34601,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     spos = s
  *     is_non_ascii = 0
  */
+    __Pyx_TraceLine(1405,0,__PYX_ERR(5, 1405, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_decode_c_string(((char const *)__pyx_v_s), 0, strlen(((char const *)__pyx_v_s)), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1405, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -32795,6 +34625,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     is_non_ascii = 0
  *     while spos[0] != c'\0':
  */
+  __Pyx_TraceLine(1406,0,__PYX_ERR(5, 1406, __pyx_L1_error))
   __pyx_v_spos = __pyx_v_s;
 
   /* "src/lxml/apihelpers.pxi":1407
@@ -32804,6 +34635,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     while spos[0] != c'\0':
  *         if spos[0] & 0x80:
  */
+  __Pyx_TraceLine(1407,0,__PYX_ERR(5, 1407, __pyx_L1_error))
   __pyx_v_is_non_ascii = 0;
 
   /* "src/lxml/apihelpers.pxi":1408
@@ -32813,6 +34645,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *         if spos[0] & 0x80:
  *             is_non_ascii = 1
  */
+  __Pyx_TraceLine(1408,0,__PYX_ERR(5, 1408, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (((__pyx_v_spos[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
@@ -32824,6 +34657,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *             is_non_ascii = 1
  *             break
  */
+    __Pyx_TraceLine(1409,0,__PYX_ERR(5, 1409, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_spos[0]) & 0x80) != 0);
     if (__pyx_t_1) {
 
@@ -32834,6 +34668,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *             break
  *         spos += 1
  */
+      __Pyx_TraceLine(1410,0,__PYX_ERR(5, 1410, __pyx_L1_error))
       __pyx_v_is_non_ascii = 1;
 
       /* "src/lxml/apihelpers.pxi":1411
@@ -32843,6 +34678,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *         spos += 1
  *     slen = spos - s
  */
+      __Pyx_TraceLine(1411,0,__PYX_ERR(5, 1411, __pyx_L1_error))
       goto __pyx_L5_break;
 
       /* "src/lxml/apihelpers.pxi":1409
@@ -32861,6 +34697,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     slen = spos - s
  *     if spos[0] != c'\0':
  */
+    __Pyx_TraceLine(1412,0,__PYX_ERR(5, 1412, __pyx_L1_error))
     __pyx_v_spos = (__pyx_v_spos + 1);
   }
   __pyx_L5_break:;
@@ -32872,6 +34709,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     if spos[0] != c'\0':
  *         slen += tree.xmlStrlen(spos)
  */
+  __Pyx_TraceLine(1413,0,__PYX_ERR(5, 1413, __pyx_L1_error))
   __pyx_v_slen = (__pyx_v_spos - __pyx_v_s);
 
   /* "src/lxml/apihelpers.pxi":1414
@@ -32881,6 +34719,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *         slen += tree.xmlStrlen(spos)
  *     if is_non_ascii:
  */
+  __Pyx_TraceLine(1414,0,__PYX_ERR(5, 1414, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_spos[0]) != '\x00') != 0);
   if (__pyx_t_1) {
 
@@ -32891,6 +34730,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     if is_non_ascii:
  *         return s[:slen].decode('UTF-8')
  */
+    __Pyx_TraceLine(1415,0,__PYX_ERR(5, 1415, __pyx_L1_error))
     __pyx_v_slen = (__pyx_v_slen + xmlStrlen(__pyx_v_spos));
 
     /* "src/lxml/apihelpers.pxi":1414
@@ -32909,6 +34749,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *         return s[:slen].decode('UTF-8')
  *     return <bytes>s[:slen]
  */
+  __Pyx_TraceLine(1416,0,__PYX_ERR(5, 1416, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_is_non_ascii != 0);
   if (__pyx_t_1) {
 
@@ -32919,6 +34760,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     return <bytes>s[:slen]
  * 
  */
+    __Pyx_TraceLine(1417,0,__PYX_ERR(5, 1417, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_decode_c_string(((char const *)__pyx_v_s), 0, __pyx_v_slen, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1417, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -32942,6 +34784,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  * 
  * cdef bytes _utf8(object s):
  */
+  __Pyx_TraceLine(1418,0,__PYX_ERR(5, 1418, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_s) + 0, __pyx_v_slen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1418, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -32965,6 +34808,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32981,6 +34825,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   int __pyx_v_valid;
   PyObject *__pyx_v_utf8_string = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -32988,6 +34833,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_utf8", 0);
+  __Pyx_TraceCall("_utf8", __pyx_f[5], 1420, 0, __PYX_ERR(5, 1420, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1427
  *     cdef int valid
@@ -32996,6 +34842,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         utf8_string = <bytes>s
  *         valid = _is_valid_xml_ascii(utf8_string)
  */
+  __Pyx_TraceLine(1427,0,__PYX_ERR(5, 1427, __pyx_L1_error))
   __pyx_t_2 = (IS_PYTHON2 != 0);
   if (__pyx_t_2) {
   } else {
@@ -33015,6 +34862,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     elif isinstance(s, unicode):
  */
+    __Pyx_TraceLine(1428,0,__PYX_ERR(5, 1428, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_s;
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
@@ -33027,6 +34875,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *     elif isinstance(s, unicode):
  *         utf8_string = (<unicode>s).encode('utf8')
  */
+    __Pyx_TraceLine(1429,0,__PYX_ERR(5, 1429, __pyx_L1_error))
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_ascii(__pyx_v_utf8_string);
 
     /* "src/lxml/apihelpers.pxi":1427
@@ -33046,6 +34895,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         utf8_string = (<unicode>s).encode('utf8')
  *         valid = _is_valid_xml_utf8(utf8_string)
  */
+  __Pyx_TraceLine(1430,0,__PYX_ERR(5, 1430, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_s); 
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -33057,6 +34907,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         valid = _is_valid_xml_utf8(utf8_string)
  *     elif isinstance(s, (bytes, bytearray)):
  */
+    __Pyx_TraceLine(1431,0,__PYX_ERR(5, 1431, __pyx_L1_error))
     if (unlikely(__pyx_v_s == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
       __PYX_ERR(5, 1431, __pyx_L1_error)
@@ -33073,6 +34924,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *     elif isinstance(s, (bytes, bytearray)):
  *         utf8_string = bytes(s)
  */
+    __Pyx_TraceLine(1432,0,__PYX_ERR(5, 1432, __pyx_L1_error))
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_utf8(__pyx_v_utf8_string);
 
     /* "src/lxml/apihelpers.pxi":1430
@@ -33092,6 +34944,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         utf8_string = bytes(s)
  *         valid = _is_valid_xml_ascii(utf8_string)
  */
+  __Pyx_TraceLine(1433,0,__PYX_ERR(5, 1433, __pyx_L1_error))
   __pyx_t_1 = PyBytes_Check(__pyx_v_s); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (!__pyx_t_2) {
@@ -33113,6 +34966,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     else:
  */
+    __Pyx_TraceLine(1434,0,__PYX_ERR(5, 1434, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1434, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
@@ -33125,6 +34979,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *     else:
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
  */
+    __Pyx_TraceLine(1435,0,__PYX_ERR(5, 1435, __pyx_L1_error))
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_ascii(__pyx_v_utf8_string);
 
     /* "src/lxml/apihelpers.pxi":1433
@@ -33144,6 +34999,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *     if not valid:
  *         raise ValueError(
  */
+  __Pyx_TraceLine(1437,0,__PYX_ERR(5, 1437, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_s)), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1437, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -33166,6 +35022,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         raise ValueError(
  *             "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
  */
+  __Pyx_TraceLine(1438,0,__PYX_ERR(5, 1438, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_valid != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -33176,7 +35033,8 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *             "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
  *     return utf8_string
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1439, __pyx_L1_error)
+    __Pyx_TraceLine(1439,0,__PYX_ERR(5, 1439, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1439, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -33198,6 +35056,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  * 
  * 
  */
+  __Pyx_TraceLine(1441,0,__PYX_ERR(5, 1441, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_utf8_string);
   __pyx_r = __pyx_v_utf8_string;
@@ -33220,6 +35079,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_utf8_string);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33234,11 +35094,13 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
 
 static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_utf8orNone", 0);
+  __Pyx_TraceCall("_utf8orNone", __pyx_f[5], 1444, 0, __PYX_ERR(5, 1444, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1445
  * 
@@ -33247,6 +35109,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
  * 
  * 
  */
+  __Pyx_TraceLine(1445,0,__PYX_ERR(5, 1445, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = (__pyx_v_s != Py_None);
   if ((__pyx_t_2 != 0)) {
@@ -33278,6 +35141,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33292,11 +35156,13 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
 
 static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("strrepr", 0);
+  __Pyx_TraceCall("strrepr", __pyx_f[5], 1448, 0, __PYX_ERR(5, 1448, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1452
  *     methods, e.g. _Element.__repr__().
@@ -33305,11 +35171,12 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
  * 
  * 
  */
+  __Pyx_TraceLine(1452,0,__PYX_ERR(5, 1452, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if ((IS_PYTHON2 != 0)) {
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1452, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1452, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1452, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_1 = __pyx_t_3;
@@ -33339,6 +35206,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33353,11 +35221,13 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
 
 static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_isFilePath", 0);
+  __Pyx_TraceCall("_isFilePath", __pyx_f[5], 1455, 0, __PYX_ERR(5, 1455, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1459
  *     cdef xmlChar c
@@ -33366,6 +35236,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *         return 1
  * 
  */
+  __Pyx_TraceLine(1459,0,__PYX_ERR(5, 1459, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_c_path[0]) == '/') != 0);
   if (__pyx_t_1) {
 
@@ -33376,6 +35247,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  * 
  *     # test if it looks like an absolute Windows path or URL
  */
+    __Pyx_TraceLine(1460,0,__PYX_ERR(5, 1460, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -33395,6 +35267,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *         c_path += 1
  *         if c_path[0] == c':' and c_path[1] in b'\0\\':
  */
+  __Pyx_TraceLine(1463,0,__PYX_ERR(5, 1463, __pyx_L1_error))
   __pyx_t_2 = ('a' <= (__pyx_v_c_path[0]));
   if (__pyx_t_2) {
     __pyx_t_2 = ((__pyx_v_c_path[0]) <= 'z');
@@ -33421,6 +35294,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *         if c_path[0] == c':' and c_path[1] in b'\0\\':
  *             return 1  # C: or C:\...
  */
+    __Pyx_TraceLine(1464,0,__PYX_ERR(5, 1464, __pyx_L1_error))
     __pyx_v_c_path = (__pyx_v_c_path + 1);
 
     /* "src/lxml/apihelpers.pxi":1465
@@ -33430,6 +35304,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *             return 1  # C: or C:\...
  * 
  */
+    __Pyx_TraceLine(1465,0,__PYX_ERR(5, 1465, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_c_path[0]) == ':') != 0);
     if (__pyx_t_2) {
     } else {
@@ -33457,6 +35332,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  * 
  *         # test if it looks like a URL with scheme://
  */
+      __Pyx_TraceLine(1466,0,__PYX_ERR(5, 1466, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -33476,6 +35352,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *             c_path += 1
  *         if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/':
  */
+    __Pyx_TraceLine(1469,0,__PYX_ERR(5, 1469, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ('a' <= (__pyx_v_c_path[0]));
       if (__pyx_t_3) {
@@ -33503,6 +35380,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *         if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/':
  *             return 0
  */
+      __Pyx_TraceLine(1470,0,__PYX_ERR(5, 1470, __pyx_L1_error))
       __pyx_v_c_path = (__pyx_v_c_path + 1);
     }
 
@@ -33513,6 +35391,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  *             return 0
  * 
  */
+    __Pyx_TraceLine(1471,0,__PYX_ERR(5, 1471, __pyx_L1_error))
     __pyx_t_3 = (((__pyx_v_c_path[0]) == ':') != 0);
     if (__pyx_t_3) {
     } else {
@@ -33537,6 +35416,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  * 
  *     # assume it's a relative path
  */
+      __Pyx_TraceLine(1472,0,__PYX_ERR(5, 1472, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -33565,6 +35445,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  * 
  * cdef object _encodeFilename(object filename):
  */
+  __Pyx_TraceLine(1475,0,__PYX_ERR(5, 1475, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -33577,7 +35458,11 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._isFilePath", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33593,6 +35478,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
 static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename) {
   PyObject *__pyx_v_filename8 = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -33603,6 +35489,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_encodeFilename", 0);
+  __Pyx_TraceCall("_encodeFilename", __pyx_f[5], 1477, 0, __PYX_ERR(5, 1477, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1480
  *     u"""Make sure a filename is 8-bit encoded (or None).
@@ -33611,6 +35498,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *         return None
  *     elif isinstance(filename, bytes):
  */
+  __Pyx_TraceLine(1480,0,__PYX_ERR(5, 1480, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_filename == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -33622,6 +35510,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *     elif isinstance(filename, bytes):
  *         return filename
  */
+    __Pyx_TraceLine(1481,0,__PYX_ERR(5, 1481, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -33642,6 +35531,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *         return filename
  *     elif isinstance(filename, unicode):
  */
+  __Pyx_TraceLine(1482,0,__PYX_ERR(5, 1482, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v_filename); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -33653,6 +35543,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *     elif isinstance(filename, unicode):
  *         filename8 = (<unicode>filename).encode('utf8')
  */
+    __Pyx_TraceLine(1483,0,__PYX_ERR(5, 1483, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_filename);
     __pyx_r = __pyx_v_filename;
@@ -33674,6 +35565,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):
  */
+  __Pyx_TraceLine(1484,0,__PYX_ERR(5, 1484, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_filename); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -33685,6 +35577,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *         if _isFilePath(<unsigned char*>filename8):
  *             try:
  */
+    __Pyx_TraceLine(1485,0,__PYX_ERR(5, 1485, __pyx_L1_error))
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
       __PYX_ERR(5, 1485, __pyx_L1_error)
@@ -33701,6 +35594,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *             try:
  *                 return python.PyUnicode_AsEncodedString(
  */
+    __Pyx_TraceLine(1486,0,__PYX_ERR(5, 1486, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_AsWritableUString(__pyx_v_filename8); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 1486, __pyx_L1_error)
     __pyx_t_2 = (__pyx_f_4lxml_5etree__isFilePath(((unsigned char *)__pyx_t_4)) != 0);
     if (__pyx_t_2) {
@@ -33712,6 +35606,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *                 return python.PyUnicode_AsEncodedString(
  *                     filename, _C_FILENAME_ENCODING, NULL)
  */
+      __Pyx_TraceLine(1487,0,__PYX_ERR(5, 1487, __pyx_L5_error))
       {
         __Pyx_PyThreadState_declare
         __Pyx_PyThreadState_assign
@@ -33728,6 +35623,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *                     filename, _C_FILENAME_ENCODING, NULL)
  *             except UnicodeEncodeError:
  */
+          __Pyx_TraceLine(1488,0,__PYX_ERR(5, 1488, __pyx_L5_error))
           __Pyx_XDECREF(__pyx_r);
 
           /* "src/lxml/apihelpers.pxi":1489
@@ -33737,6 +35633,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *             except UnicodeEncodeError:
  *                 pass
  */
+          __Pyx_TraceLine(1489,0,__PYX_ERR(5, 1489, __pyx_L5_error))
           __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1488, __pyx_L5_error)
           __Pyx_GOTREF(__pyx_t_3);
           __pyx_r = __pyx_t_3;
@@ -33761,6 +35658,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *                 pass
  *         return filename8
  */
+        __Pyx_TraceLine(1490,0,__PYX_ERR(5, 1490, __pyx_L7_except_error))
         __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeEncodeError);
         if (__pyx_t_8) {
           __Pyx_ErrRestore(0,0,0);
@@ -33810,6 +35708,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  *     else:
  *         raise TypeError("Argument must be string or unicode.")
  */
+    __Pyx_TraceLine(1492,0,__PYX_ERR(5, 1492, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_filename8);
     __pyx_r = __pyx_v_filename8;
@@ -33831,8 +35730,9 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  * 
  * cdef object _decodeFilename(const_xmlChar* c_path):
  */
+  __Pyx_TraceLine(1494,0,__PYX_ERR(5, 1494, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1494, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1494, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -33855,6 +35755,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_filename8);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33869,9 +35770,11 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
 
 static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_path) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_decodeFilename", 0);
+  __Pyx_TraceCall("_decodeFilename", __pyx_f[5], 1496, 0, __PYX_ERR(5, 1496, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1499
  *     u"""Make the filename a unicode string if we are in Py3.
@@ -33880,6 +35783,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_p
  * 
  * cdef object _decodeFilenameWithLength(const_xmlChar* c_path, size_t c_len):
  */
+  __Pyx_TraceLine(1499,0,__PYX_ERR(5, 1499, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__decodeFilenameWithLength(__pyx_v_c_path, xmlStrlen(__pyx_v_c_path)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -33902,6 +35806,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -33916,6 +35821,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_p
 
 static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *__pyx_v_c_path, size_t __pyx_v_c_len) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -33927,6 +35833,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_decodeFilenameWithLength", 0);
+  __Pyx_TraceCall("_decodeFilenameWithLength", __pyx_f[5], 1501, 0, __PYX_ERR(5, 1501, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1504
  *     u"""Make the filename a unicode string if we are in Py3.
@@ -33935,6 +35842,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *         try:
  *             return python.PyUnicode_Decode(
  */
+  __Pyx_TraceLine(1504,0,__PYX_ERR(5, 1504, __pyx_L1_error))
   __pyx_t_1 = (__pyx_f_4lxml_5etree__isFilePath(__pyx_v_c_path) != 0);
   if (__pyx_t_1) {
 
@@ -33945,6 +35853,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *             return python.PyUnicode_Decode(
  *                 <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL)
  */
+    __Pyx_TraceLine(1505,0,__PYX_ERR(5, 1505, __pyx_L4_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -33961,6 +35870,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *                 <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError:
  */
+        __Pyx_TraceLine(1506,0,__PYX_ERR(5, 1506, __pyx_L4_error))
         __Pyx_XDECREF(__pyx_r);
 
         /* "src/lxml/apihelpers.pxi":1507
@@ -33970,6 +35880,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *         except UnicodeDecodeError:
  *             pass
  */
+        __Pyx_TraceLine(1507,0,__PYX_ERR(5, 1507, __pyx_L4_error))
         __pyx_t_5 = PyUnicode_Decode(((const char *)__pyx_v_c_path), __pyx_v_c_len, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1506, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_r = __pyx_t_5;
@@ -33994,6 +35905,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *             pass
  *     try:
  */
+      __Pyx_TraceLine(1508,0,__PYX_ERR(5, 1508, __pyx_L6_except_error))
       __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
       if (__pyx_t_6) {
         __Pyx_ErrRestore(0,0,0);
@@ -34043,6 +35955,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *         return (<unsigned char*>c_path)[:c_len].decode('UTF-8')
  *     except UnicodeDecodeError:
  */
+  __Pyx_TraceLine(1510,0,__PYX_ERR(5, 1510, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -34059,6 +35972,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *     except UnicodeDecodeError:
  *         # this is a stupid fallback, but it might still work...
  */
+      __Pyx_TraceLine(1511,0,__PYX_ERR(5, 1511, __pyx_L10_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_5 = __Pyx_decode_c_string(((char const *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1511, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -34084,6 +35998,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *         # this is a stupid fallback, but it might still work...
  *         return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace')
  */
+    __Pyx_TraceLine(1512,0,__PYX_ERR(5, 1512, __pyx_L12_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree._decodeFilenameWithLength", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -34099,6 +36014,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  * 
  * cdef object _encodeFilenameUTF8(object filename):
  */
+      __Pyx_TraceLine(1514,0,__PYX_ERR(5, 1514, __pyx_L12_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_9 = __Pyx_decode_c_string(((char const *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, ((char const *)"replace"), PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 1514, __pyx_L12_except_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -34156,6 +36072,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -34172,6 +36089,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   char *__pyx_v_c_filename;
   PyObject *__pyx_v_decode_exc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -34191,6 +36109,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   PyObject *__pyx_t_16 = NULL;
   PyObject *__pyx_t_17 = NULL;
   __Pyx_RefNannySetupContext("_encodeFilenameUTF8", 0);
+  __Pyx_TraceCall("_encodeFilenameUTF8", __pyx_f[5], 1516, 0, __PYX_ERR(5, 1516, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_filename);
 
   /* "src/lxml/apihelpers.pxi":1521
@@ -34200,6 +36119,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         return None
  *     elif isinstance(filename, bytes):
  */
+  __Pyx_TraceLine(1521,0,__PYX_ERR(5, 1521, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_filename == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -34211,6 +36131,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *     elif isinstance(filename, bytes):
  *         if not isutf8(<bytes>filename):
  */
+    __Pyx_TraceLine(1522,0,__PYX_ERR(5, 1522, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -34231,6 +36152,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         if not isutf8(<bytes>filename):
  *             # plain ASCII!
  */
+  __Pyx_TraceLine(1523,0,__PYX_ERR(5, 1523, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v_filename); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -34242,6 +36164,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *             # plain ASCII!
  *             return filename
  */
+    __Pyx_TraceLine(1524,0,__PYX_ERR(5, 1524, __pyx_L1_error))
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
       __PYX_ERR(5, 1524, __pyx_L1_error)
@@ -34257,6 +36180,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         c_filename = _cstr(<bytes>filename)
  *         try:
  */
+      __Pyx_TraceLine(1526,0,__PYX_ERR(5, 1526, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_filename);
       __pyx_r = __pyx_v_filename;
@@ -34278,6 +36202,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         try:
  *             # try to decode with default encoding
  */
+    __Pyx_TraceLine(1527,0,__PYX_ERR(5, 1527, __pyx_L1_error))
     __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename);
 
     /* "src/lxml/apihelpers.pxi":1528
@@ -34287,6 +36212,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *             # try to decode with default encoding
  *             filename = python.PyUnicode_Decode(
  */
+    __Pyx_TraceLine(1528,0,__PYX_ERR(5, 1528, __pyx_L5_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -34303,6 +36229,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *                 _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError as decode_exc:
  */
+        __Pyx_TraceLine(1531,0,__PYX_ERR(5, 1531, __pyx_L5_error))
         if (unlikely(__pyx_v_filename == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
           __PYX_ERR(5, 1531, __pyx_L5_error)
@@ -34316,6 +36243,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *                 c_filename, len(<bytes>filename),
  *                 _C_FILENAME_ENCODING, NULL)
  */
+        __Pyx_TraceLine(1530,0,__PYX_ERR(5, 1530, __pyx_L5_error))
         __pyx_t_8 = PyUnicode_Decode(__pyx_v_c_filename, __pyx_t_7, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 1530, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_8);
@@ -34343,6 +36271,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *             try:
  *                 # try if it's proper UTF-8
  */
+      __Pyx_TraceLine(1533,0,__PYX_ERR(5, 1533, __pyx_L7_except_error))
       __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
       if (__pyx_t_9) {
         __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -34360,6 +36289,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *                 # try if it's proper UTF-8
  *                 (<bytes>filename).decode('utf8')
  */
+        __Pyx_TraceLine(1534,0,__PYX_ERR(5, 1534, __pyx_L13_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -34376,6 +36306,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *                 return filename
  *             except UnicodeDecodeError:
  */
+            __Pyx_TraceLine(1536,0,__PYX_ERR(5, 1536, __pyx_L13_error))
             if (unlikely(__pyx_v_filename == Py_None)) {
               PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
               __PYX_ERR(5, 1536, __pyx_L13_error)
@@ -34391,6 +36322,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *             except UnicodeDecodeError:
  *                 raise decode_exc # otherwise re-raise original exception
  */
+            __Pyx_TraceLine(1537,0,__PYX_ERR(5, 1537, __pyx_L13_error))
             __Pyx_XDECREF(__pyx_r);
             __Pyx_INCREF(__pyx_v_filename);
             __pyx_r = __pyx_v_filename;
@@ -34417,6 +36349,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *                 raise decode_exc # otherwise re-raise original exception
  *     if isinstance(filename, unicode):
  */
+          __Pyx_TraceLine(1538,0,__PYX_ERR(5, 1538, __pyx_L15_except_error))
           __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
           if (__pyx_t_9) {
             __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -34432,6 +36365,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *     if isinstance(filename, unicode):
  *         return (<unicode>filename).encode('utf8')
  */
+            __Pyx_TraceLine(1539,0,__PYX_ERR(5, 1539, __pyx_L15_except_error))
             __Pyx_Raise(__pyx_v_decode_exc, 0, 0, 0);
             __PYX_ERR(5, 1539, __pyx_L15_except_error)
           }
@@ -34498,6 +36432,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         return (<unicode>filename).encode('utf8')
  *     else:
  */
+  __Pyx_TraceLine(1540,0,__PYX_ERR(5, 1540, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_filename); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -34509,6 +36444,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *     else:
  *         raise TypeError("Argument must be string or unicode.")
  */
+    __Pyx_TraceLine(1541,0,__PYX_ERR(5, 1541, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
@@ -34536,8 +36472,9 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  * 
  * cdef tuple _getNsTag(tag):
  */
+  __Pyx_TraceLine(1543,0,__PYX_ERR(5, 1543, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1543, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1543, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_Raise(__pyx_t_11, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -34566,6 +36503,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   __Pyx_XDECREF(__pyx_v_decode_exc);
   __Pyx_XDECREF(__pyx_v_filename);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -34580,9 +36518,11 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
 
 static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_getNsTag", 0);
+  __Pyx_TraceCall("_getNsTag", __pyx_f[5], 1545, 0, __PYX_ERR(5, 1545, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1549
  *     Return None for NS uri if no namespace URI provided.
@@ -34591,6 +36531,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
  * 
  * cdef tuple _getNsTagWithEmptyNs(tag):
  */
+  __Pyx_TraceLine(1549,0,__PYX_ERR(5, 1549, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -34613,6 +36554,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -34627,9 +36569,11 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
 
 static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_getNsTagWithEmptyNs", 0);
+  __Pyx_TraceCall("_getNsTagWithEmptyNs", __pyx_f[5], 1551, 0, __PYX_ERR(5, 1551, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1556
  *     part is '{}'.
@@ -34638,6 +36582,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag
  * 
  * cdef tuple __getNsTag(tag, bint empty_ns):
  */
+  __Pyx_TraceLine(1556,0,__PYX_ERR(5, 1556, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1556, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -34660,6 +36605,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -34679,6 +36625,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   Py_ssize_t __pyx_v_nslen;
   PyObject *__pyx_v_ns = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -34686,6 +36633,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__getNsTag", 0);
+  __Pyx_TraceCall("__getNsTag", __pyx_f[5], 1558, 0, __PYX_ERR(5, 1558, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tag);
 
   /* "src/lxml/apihelpers.pxi":1563
@@ -34695,6 +36643,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     # _isString() is much faster than isinstance()
  *     if not _isString(tag) and isinstance(tag, QName):
  */
+  __Pyx_TraceLine(1563,0,__PYX_ERR(5, 1563, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_ns = ((PyObject*)Py_None);
 
@@ -34705,6 +36654,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         tag = (<QName>tag).text
  *     tag = _utf8(tag)
  */
+  __Pyx_TraceLine(1565,0,__PYX_ERR(5, 1565, __pyx_L1_error))
   __pyx_t_2 = ((!(_isString(__pyx_v_tag) != 0)) != 0);
   if (__pyx_t_2) {
   } else {
@@ -34724,6 +36674,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     tag = _utf8(tag)
  *     c_tag = _cstr(tag)
  */
+    __Pyx_TraceLine(1566,0,__PYX_ERR(5, 1566, __pyx_L1_error))
     __pyx_t_4 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_tag)->text;
     __Pyx_INCREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
@@ -34745,6 +36696,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     c_tag = _cstr(tag)
  *     if c_tag[0] == c'{':
  */
+  __Pyx_TraceLine(1567,0,__PYX_ERR(5, 1567, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1567, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
@@ -34757,6 +36709,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     if c_tag[0] == c'{':
  *         c_tag += 1
  */
+  __Pyx_TraceLine(1568,0,__PYX_ERR(5, 1568, __pyx_L1_error))
   __pyx_v_c_tag = PyBytes_AS_STRING(__pyx_v_tag);
 
   /* "src/lxml/apihelpers.pxi":1569
@@ -34766,6 +36719,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         c_tag += 1
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')
  */
+  __Pyx_TraceLine(1569,0,__PYX_ERR(5, 1569, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_c_tag[0]) == '{') != 0);
     if (__pyx_t_1) {
 
@@ -34776,6 +36730,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')
  *         if c_ns_end is NULL:
  */
+      __Pyx_TraceLine(1570,0,__PYX_ERR(5, 1570, __pyx_L1_error))
       __pyx_v_c_tag = (__pyx_v_c_tag + 1);
 
       /* "src/lxml/apihelpers.pxi":1571
@@ -34785,6 +36740,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         if c_ns_end is NULL:
  *             raise ValueError, u"Invalid tag name"
  */
+      __Pyx_TraceLine(1571,0,__PYX_ERR(5, 1571, __pyx_L1_error))
     __pyx_v_c_ns_end = strchr(__pyx_v_c_tag, '}');
 
     /* "src/lxml/apihelpers.pxi":1572
@@ -34794,6 +36750,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *             raise ValueError, u"Invalid tag name"
  *         nslen  = c_ns_end - c_tag
  */
+    __Pyx_TraceLine(1572,0,__PYX_ERR(5, 1572, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_ns_end == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -34804,6 +36761,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         nslen  = c_ns_end - c_tag
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  */
+      __Pyx_TraceLine(1573,0,__PYX_ERR(5, 1573, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Invalid_tag_name, 0, 0);
       __PYX_ERR(5, 1573, __pyx_L1_error)
 
@@ -34823,6 +36781,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  *         if taglen == 0:
  */
+    __Pyx_TraceLine(1574,0,__PYX_ERR(5, 1574, __pyx_L1_error))
     __pyx_v_nslen = (__pyx_v_c_ns_end - __pyx_v_c_tag);
 
     /* "src/lxml/apihelpers.pxi":1575
@@ -34832,6 +36791,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         if taglen == 0:
  *             raise ValueError, u"Empty tag name"
  */
+    __Pyx_TraceLine(1575,0,__PYX_ERR(5, 1575, __pyx_L1_error))
     __pyx_v_taglen = ((PyBytes_GET_SIZE(__pyx_v_tag) - __pyx_v_nslen) - 2);
 
     /* "src/lxml/apihelpers.pxi":1576
@@ -34841,6 +36801,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *             raise ValueError, u"Empty tag name"
  *         if nslen > 0:
  */
+    __Pyx_TraceLine(1576,0,__PYX_ERR(5, 1576, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_taglen == 0) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -34851,6 +36812,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         if nslen > 0:
  *             ns = <bytes>c_tag[:nslen]
  */
+      __Pyx_TraceLine(1577,0,__PYX_ERR(5, 1577, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Empty_tag_name, 0, 0);
       __PYX_ERR(5, 1577, __pyx_L1_error)
 
@@ -34870,6 +36832,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *             ns = <bytes>c_tag[:nslen]
  *         elif empty_ns:
  */
+    __Pyx_TraceLine(1578,0,__PYX_ERR(5, 1578, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_nslen > 0) != 0);
     if (__pyx_t_1) {
 
@@ -34880,6 +36843,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         elif empty_ns:
  *             ns = b''
  */
+      __Pyx_TraceLine(1579,0,__PYX_ERR(5, 1579, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_tag + 0, __pyx_v_nslen - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1579, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = __pyx_t_4;
@@ -34905,6 +36869,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *             ns = b''
  *         tag = <bytes>c_ns_end[1:taglen+1]
  */
+    __Pyx_TraceLine(1580,0,__PYX_ERR(5, 1580, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_empty_ns != 0);
     if (__pyx_t_1) {
 
@@ -34915,8 +36880,9 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         tag = <bytes>c_ns_end[1:taglen+1]
  *     elif python.PyBytes_GET_SIZE(tag) == 0:
  */
-      __Pyx_INCREF(__pyx_kp_b__16);
-      __Pyx_DECREF_SET(__pyx_v_ns, __pyx_kp_b__16);
+      __Pyx_TraceLine(1581,0,__PYX_ERR(5, 1581, __pyx_L1_error))
+      __Pyx_INCREF(__pyx_kp_b__23);
+      __Pyx_DECREF_SET(__pyx_v_ns, __pyx_kp_b__23);
 
       /* "src/lxml/apihelpers.pxi":1580
  *         if nslen > 0:
@@ -34935,6 +36901,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     elif python.PyBytes_GET_SIZE(tag) == 0:
  *         raise ValueError, u"Empty tag name"
  */
+    __Pyx_TraceLine(1582,0,__PYX_ERR(5, 1582, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_ns_end + 1, (__pyx_v_taglen + 1) - 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1582, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_4 = __pyx_t_5;
@@ -34960,6 +36927,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         raise ValueError, u"Empty tag name"
  *     return ns, tag
  */
+  __Pyx_TraceLine(1583,0,__PYX_ERR(5, 1583, __pyx_L1_error))
   __pyx_t_1 = ((PyBytes_GET_SIZE(__pyx_v_tag) == 0) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -34970,6 +36938,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *     return ns, tag
  * 
  */
+    __Pyx_TraceLine(1584,0,__PYX_ERR(5, 1584, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Empty_tag_name, 0, 0);
     __PYX_ERR(5, 1584, __pyx_L1_error)
 
@@ -34990,6 +36959,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  * 
  * cdef inline int _pyXmlNameIsValid(name_utf8):
  */
+  __Pyx_TraceLine(1585,0,__PYX_ERR(5, 1585, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1585, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -35021,6 +36991,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35035,11 +37006,13 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_v_name_utf8) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_pyXmlNameIsValid", 0);
+  __Pyx_TraceCall("_pyXmlNameIsValid", __pyx_f[5], 1587, 0, __PYX_ERR(5, 1587, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1588
  * 
@@ -35048,13 +37021,14 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
  * 
  * cdef inline int _pyHtmlNameIsValid(name_utf8):
  */
+  __Pyx_TraceLine(1588,0,__PYX_ERR(5, 1588, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__xmlNameIsValid((const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf8));
   if (__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L3_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__24, __pyx_v_name_utf8, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(5, 1588, __pyx_L1_error)
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__31, __pyx_v_name_utf8, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(5, 1588, __pyx_L1_error)
   __pyx_t_1 = __pyx_t_3;
   __pyx_L3_bool_binop_done:;
   __pyx_r = __pyx_t_1;
@@ -35073,6 +37047,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
   __Pyx_WriteUnraisable("lxml.etree._pyXmlNameIsValid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35087,8 +37062,10 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx_v_name_utf8) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_pyHtmlNameIsValid", 0);
+  __Pyx_TraceCall("_pyHtmlNameIsValid", __pyx_f[5], 1590, 0, __PYX_ERR(5, 1590, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1591
  * 
@@ -35097,6 +37074,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
  * 
  * cdef inline int _xmlNameIsValid(const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(1591,0,__PYX_ERR(5, 1591, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__htmlNameIsValid((const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf8));
   goto __pyx_L0;
 
@@ -35109,7 +37087,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._pyHtmlNameIsValid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35124,8 +37106,10 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__pyx_v_c_name) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_xmlNameIsValid", 0);
+  __Pyx_TraceCall("_xmlNameIsValid", __pyx_f[5], 1593, 0, __PYX_ERR(5, 1593, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1594
  * 
@@ -35134,6 +37118,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
  * 
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(1594,0,__PYX_ERR(5, 1594, __pyx_L1_error))
   __pyx_r = xmlValidateNameValue(__pyx_v_c_name);
   goto __pyx_L0;
 
@@ -35146,7 +37131,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._xmlNameIsValid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35161,10 +37150,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
 
 static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_htmlNameIsValid", 0);
+  __Pyx_TraceCall("_htmlNameIsValid", __pyx_f[5], 1596, 0, __PYX_ERR(5, 1596, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1597
  * 
@@ -35173,6 +37164,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *         return 0
  *     while c_name[0] != c'\0':
  */
+  __Pyx_TraceLine(1597,0,__PYX_ERR(5, 1597, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_name == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -35191,6 +37183,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *     while c_name[0] != c'\0':
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':
  */
+    __Pyx_TraceLine(1598,0,__PYX_ERR(5, 1598, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -35210,6 +37203,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':
  *             return 0
  */
+  __Pyx_TraceLine(1599,0,__PYX_ERR(5, 1599, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (((__pyx_v_c_name[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
@@ -35221,6 +37215,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *             return 0
  *         c_name += 1
  */
+    __Pyx_TraceLine(1600,0,__PYX_ERR(5, 1600, __pyx_L1_error))
     switch ((__pyx_v_c_name[0])) {
       case '\t':
       case '\n':
@@ -35242,6 +37237,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *         c_name += 1
  *     return 1
  */
+      __Pyx_TraceLine(1601,0,__PYX_ERR(5, 1601, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -35263,6 +37259,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  *     return 1
  * 
  */
+    __Pyx_TraceLine(1602,0,__PYX_ERR(5, 1602, __pyx_L1_error))
     __pyx_v_c_name = (__pyx_v_c_name + 1);
   }
 
@@ -35273,6 +37270,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  * 
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(1603,0,__PYX_ERR(5, 1603, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -35285,7 +37283,11 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._htmlNameIsValid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35301,10 +37303,12 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
 static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_v_c_name) {
   int __pyx_v_is_hex;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_characterReferenceIsValid", 0);
+  __Pyx_TraceCall("_characterReferenceIsValid", __pyx_f[5], 1605, 0, __PYX_ERR(5, 1605, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1607
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):
@@ -35313,6 +37317,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *         c_name += 1
  *         is_hex = 1
  */
+  __Pyx_TraceLine(1607,0,__PYX_ERR(5, 1607, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_c_name[0]) == 'x') != 0);
   if (__pyx_t_1) {
 
@@ -35323,6 +37328,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *         is_hex = 1
  *     else:
  */
+    __Pyx_TraceLine(1608,0,__PYX_ERR(5, 1608, __pyx_L1_error))
     __pyx_v_c_name = (__pyx_v_c_name + 1);
 
     /* "src/lxml/apihelpers.pxi":1609
@@ -35332,6 +37338,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *     else:
  *         is_hex = 0
  */
+    __Pyx_TraceLine(1609,0,__PYX_ERR(5, 1609, __pyx_L1_error))
     __pyx_v_is_hex = 1;
 
     /* "src/lxml/apihelpers.pxi":1607
@@ -35351,6 +37358,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *     if c_name[0] == c'\0':
  *         return 0
  */
+  __Pyx_TraceLine(1611,0,__PYX_ERR(5, 1611, __pyx_L1_error))
   /*else*/ {
     __pyx_v_is_hex = 0;
   }
@@ -35363,6 +37371,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *         return 0
  *     while c_name[0] != c'\0':
  */
+  __Pyx_TraceLine(1612,0,__PYX_ERR(5, 1612, __pyx_L1_error))
   __pyx_t_1 = (((__pyx_v_c_name[0]) == '\x00') != 0);
   if (__pyx_t_1) {
 
@@ -35373,6 +37382,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *     while c_name[0] != c'\0':
  *         if c_name[0] < c'0' or c_name[0] > c'9':
  */
+    __Pyx_TraceLine(1613,0,__PYX_ERR(5, 1613, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -35392,6 +37402,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *         if c_name[0] < c'0' or c_name[0] > c'9':
  *             if not is_hex:
  */
+  __Pyx_TraceLine(1614,0,__PYX_ERR(5, 1614, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (((__pyx_v_c_name[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
@@ -35403,6 +37414,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *             if not is_hex:
  *                 return 0
  */
+    __Pyx_TraceLine(1615,0,__PYX_ERR(5, 1615, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_c_name[0]) < '0') != 0);
     if (!__pyx_t_2) {
     } else {
@@ -35421,6 +37433,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *                 return 0
  *             if not (c'a' <= c_name[0] <= c'f'):
  */
+      __Pyx_TraceLine(1616,0,__PYX_ERR(5, 1616, __pyx_L1_error))
       __pyx_t_1 = ((!(__pyx_v_is_hex != 0)) != 0);
       if (__pyx_t_1) {
 
@@ -35431,6 +37444,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *             if not (c'a' <= c_name[0] <= c'f'):
  *                 if not (c'A' <= c_name[0] <= c'F'):
  */
+        __Pyx_TraceLine(1617,0,__PYX_ERR(5, 1617, __pyx_L1_error))
         __pyx_r = 0;
         goto __pyx_L0;
 
@@ -35450,6 +37464,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *                 if not (c'A' <= c_name[0] <= c'F'):
  *                     return 0
  */
+      __Pyx_TraceLine(1618,0,__PYX_ERR(5, 1618, __pyx_L1_error))
       __pyx_t_1 = ('a' <= (__pyx_v_c_name[0]));
       if (__pyx_t_1) {
         __pyx_t_1 = ((__pyx_v_c_name[0]) <= 'f');
@@ -35464,6 +37479,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *                     return 0
  *         c_name += 1
  */
+        __Pyx_TraceLine(1619,0,__PYX_ERR(5, 1619, __pyx_L1_error))
         __pyx_t_2 = ('A' <= (__pyx_v_c_name[0]));
         if (__pyx_t_2) {
           __pyx_t_2 = ((__pyx_v_c_name[0]) <= 'F');
@@ -35478,6 +37494,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *         c_name += 1
  *     return 1
  */
+          __Pyx_TraceLine(1620,0,__PYX_ERR(5, 1620, __pyx_L1_error))
           __pyx_r = 0;
           goto __pyx_L0;
 
@@ -35515,6 +37532,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  *     return 1
  * 
  */
+    __Pyx_TraceLine(1621,0,__PYX_ERR(5, 1621, __pyx_L1_error))
     __pyx_v_c_name = (__pyx_v_c_name + 1);
   }
 
@@ -35525,6 +37543,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  * 
  * cdef int _tagValidOrRaise(tag_utf) except -1:
  */
+  __Pyx_TraceLine(1622,0,__PYX_ERR(5, 1622, __pyx_L1_error))
   __pyx_r = 1;
   goto __pyx_L0;
 
@@ -35537,7 +37556,11 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._characterReferenceIsValid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35552,11 +37575,13 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
 
 static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_tagValidOrRaise", 0);
+  __Pyx_TraceCall("_tagValidOrRaise", __pyx_f[5], 1624, 0, __PYX_ERR(5, 1624, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1625
  * 
@@ -35565,6 +37590,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  *         raise ValueError(f"Invalid tag name {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0
  */
+  __Pyx_TraceLine(1625,0,__PYX_ERR(5, 1625, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -35575,6 +37601,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1626,0,__PYX_ERR(5, 1626, __pyx_L1_error))
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(5, 1626, __pyx_L1_error)
@@ -35610,6 +37637,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  * 
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
  */
+  __Pyx_TraceLine(1627,0,__PYX_ERR(5, 1627, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -35628,6 +37656,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __Pyx_AddTraceback("lxml.etree._tagValidOrRaise", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35642,11 +37671,13 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
 
 static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_htmlTagValidOrRaise", 0);
+  __Pyx_TraceCall("_htmlTagValidOrRaise", __pyx_f[5], 1629, 0, __PYX_ERR(5, 1629, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1630
  * 
@@ -35655,6 +37686,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
  *         raise ValueError(f"Invalid HTML tag name {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0
  */
+  __Pyx_TraceLine(1630,0,__PYX_ERR(5, 1630, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyHtmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -35665,6 +37697,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1631,0,__PYX_ERR(5, 1631, __pyx_L1_error))
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(5, 1631, __pyx_L1_error)
@@ -35700,6 +37733,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
  * 
  * cdef int _attributeValidOrRaise(name_utf) except -1:
  */
+  __Pyx_TraceLine(1632,0,__PYX_ERR(5, 1632, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -35718,6 +37752,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
   __Pyx_AddTraceback("lxml.etree._htmlTagValidOrRaise", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35732,11 +37767,13 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
 
 static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_attributeValidOrRaise", 0);
+  __Pyx_TraceCall("_attributeValidOrRaise", __pyx_f[5], 1634, 0, __PYX_ERR(5, 1634, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1635
  * 
@@ -35745,6 +37782,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
  *         raise ValueError(f"Invalid attribute name {(<bytes>name_utf).decode('utf8')!r}")
  *     return 0
  */
+  __Pyx_TraceLine(1635,0,__PYX_ERR(5, 1635, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_name_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -35755,6 +37793,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1636,0,__PYX_ERR(5, 1636, __pyx_L1_error))
     if (unlikely(__pyx_v_name_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(5, 1636, __pyx_L1_error)
@@ -35790,6 +37829,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
  * 
  * cdef int _prefixValidOrRaise(tag_utf) except -1:
  */
+  __Pyx_TraceLine(1637,0,__PYX_ERR(5, 1637, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -35808,6 +37848,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
   __Pyx_AddTraceback("lxml.etree._attributeValidOrRaise", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35822,11 +37863,13 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
 
 static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_prefixValidOrRaise", 0);
+  __Pyx_TraceCall("_prefixValidOrRaise", __pyx_f[5], 1639, 0, __PYX_ERR(5, 1639, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1640
  * 
@@ -35835,6 +37878,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  *         raise ValueError(f"Invalid namespace prefix {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0
  */
+  __Pyx_TraceLine(1640,0,__PYX_ERR(5, 1640, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -35845,6 +37889,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(1641,0,__PYX_ERR(5, 1641, __pyx_L1_error))
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(5, 1641, __pyx_L1_error)
@@ -35880,6 +37925,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  * 
  * cdef int _uriValidOrRaise(uri_utf) except -1:
  */
+  __Pyx_TraceLine(1642,0,__PYX_ERR(5, 1642, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -35898,6 +37944,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __Pyx_AddTraceback("lxml.etree._prefixValidOrRaise", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -35913,11 +37960,13 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
 static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   xmlURI *__pyx_v_c_uri;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_uriValidOrRaise", 0);
+  __Pyx_TraceCall("_uriValidOrRaise", __pyx_f[5], 1644, 0, __PYX_ERR(5, 1644, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1645
  * 
@@ -35926,6 +37975,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  *     if c_uri is NULL:
  *         raise ValueError(f"Invalid namespace URI {(<bytes>uri_utf).decode('utf8')!r}")
  */
+  __Pyx_TraceLine(1645,0,__PYX_ERR(5, 1645, __pyx_L1_error))
   __pyx_v_c_uri = xmlParseURI(PyBytes_AS_STRING(__pyx_v_uri_utf));
 
   /* "src/lxml/apihelpers.pxi":1646
@@ -35935,6 +37985,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  *         raise ValueError(f"Invalid namespace URI {(<bytes>uri_utf).decode('utf8')!r}")
  *     uri.xmlFreeURI(c_uri)
  */
+  __Pyx_TraceLine(1646,0,__PYX_ERR(5, 1646, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_uri == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -35945,6 +37996,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  *     uri.xmlFreeURI(c_uri)
  *     return 0
  */
+    __Pyx_TraceLine(1647,0,__PYX_ERR(5, 1647, __pyx_L1_error))
     if (unlikely(__pyx_v_uri_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(5, 1647, __pyx_L1_error)
@@ -35980,6 +38032,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  *     return 0
  * 
  */
+  __Pyx_TraceLine(1648,0,__PYX_ERR(5, 1648, __pyx_L1_error))
   xmlFreeURI(__pyx_v_c_uri);
 
   /* "src/lxml/apihelpers.pxi":1649
@@ -35989,6 +38042,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  * 
  * cdef inline object _namespacedName(xmlNode* c_node):
  */
+  __Pyx_TraceLine(1649,0,__PYX_ERR(5, 1649, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -36007,6 +38061,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   __Pyx_AddTraceback("lxml.etree._uriValidOrRaise", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -36021,9 +38076,11 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_namespacedName", 0);
+  __Pyx_TraceCall("_namespacedName", __pyx_f[5], 1651, 0, __PYX_ERR(5, 1651, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1652
  * 
@@ -36032,6 +38089,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
  * 
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  */
+  __Pyx_TraceLine(1652,0,__PYX_ERR(5, 1652, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(_getNs(__pyx_v_c_node), __pyx_v_c_node->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1652, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -36054,6 +38112,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -36069,11 +38128,13 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
 static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *__pyx_v_href, const xmlChar *__pyx_v_name) {
   PyObject *__pyx_v_s = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_namespacedNameFromNsName", 0);
+  __Pyx_TraceCall("_namespacedNameFromNsName", __pyx_f[5], 1654, 0, __PYX_ERR(5, 1654, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1655
  * 
@@ -36082,6 +38143,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         return funicode(name)
  *     elif not python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(name) or isutf8(href)):
  */
+  __Pyx_TraceLine(1655,0,__PYX_ERR(5, 1655, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -36092,6 +38154,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *     elif not python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(name) or isutf8(href)):
  *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
  */
+    __Pyx_TraceLine(1656,0,__PYX_ERR(5, 1656, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -36115,6 +38178,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
  *     else:
  */
+  __Pyx_TraceLine(1657,0,__PYX_ERR(5, 1657, __pyx_L1_error))
   __pyx_t_3 = ((!(IS_PYPY != 0)) != 0);
   if (__pyx_t_3) {
   } else {
@@ -36145,6 +38209,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *     else:
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)
  */
+    __Pyx_TraceLine(1658,0,__PYX_ERR(5, 1658, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = PyUnicode_FromFormat(((char *)"{%s}%s"), __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1658, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -36168,6 +38233,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         if python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(_xcstr(s))):
  *             return (<bytes>s).decode('utf8')
  */
+  __Pyx_TraceLine(1660,0,__PYX_ERR(5, 1660, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = PyBytes_FromFormat(((char *)"{%s}%s"), __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1660, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -36181,6 +38247,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *             return (<bytes>s).decode('utf8')
  *         else:
  */
+    __Pyx_TraceLine(1661,0,__PYX_ERR(5, 1661, __pyx_L1_error))
     __pyx_t_3 = (IS_PYPY != 0);
     if (__pyx_t_3) {
     } else {
@@ -36205,6 +38272,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         else:
  *             return s
  */
+      __Pyx_TraceLine(1662,0,__PYX_ERR(5, 1662, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(__pyx_v_s == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
@@ -36232,6 +38300,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  * 
  * cdef _getFilenameForFile(source):
  */
+    __Pyx_TraceLine(1664,0,__PYX_ERR(5, 1664, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_s);
@@ -36256,6 +38325,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_s);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -36271,6 +38341,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
 static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_source) {
   PyObject *__pyx_v_filename = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -36281,6 +38352,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_getFilenameForFile", 0);
+  __Pyx_TraceCall("_getFilenameForFile", __pyx_f[5], 1666, 0, __PYX_ERR(5, 1666, __pyx_L1_error));
 
   /* "src/lxml/apihelpers.pxi":1672
  *     """
@@ -36289,6 +38361,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         return source.geturl()
  *     except:
  */
+  __Pyx_TraceLine(1672,0,__PYX_ERR(5, 1672, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -36305,6 +38378,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *     except:
  *         pass
  */
+      __Pyx_TraceLine(1673,0,__PYX_ERR(5, 1673, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_geturl); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1673, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -36350,11 +38424,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         pass
  *     # file instances have a name attribute
  */
+    __Pyx_TraceLine(1674,0,__PYX_ERR(5, 1674, __pyx_L5_except_error))
     /*except:*/ {
       __Pyx_ErrRestore(0,0,0);
       goto __pyx_L4_exception_handled;
     }
-    __pyx_L7_try_return:;
+    __pyx_L5_except_error:;
 
     /* "src/lxml/apihelpers.pxi":1672
  *     """
@@ -36367,6 +38442,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
     goto __pyx_L0;
     __pyx_L4_exception_handled:;
     __Pyx_XGIVEREF(__pyx_t_1);
@@ -36382,6 +38463,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         filename = source.name
  *         if _isString(filename):
  */
+  __Pyx_TraceLine(1677,0,__PYX_ERR(5, 1677, __pyx_L9_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -36398,6 +38480,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  */
+      __Pyx_TraceLine(1678,0,__PYX_ERR(5, 1678, __pyx_L9_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1678, __pyx_L9_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_filename = __pyx_t_4;
@@ -36410,6 +38493,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *             return os_path_abspath(filename)
  *     except:
  */
+      __Pyx_TraceLine(1679,0,__PYX_ERR(5, 1679, __pyx_L9_error))
       __pyx_t_7 = (_isString(__pyx_v_filename) != 0);
       if (__pyx_t_7) {
 
@@ -36420,6 +38504,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *     except:
  *         pass
  */
+        __Pyx_TraceLine(1680,0,__PYX_ERR(5, 1680, __pyx_L9_error))
         __Pyx_XDECREF(__pyx_r);
         __Pyx_INCREF(__pyx_v_4lxml_5etree_os_path_abspath);
         __pyx_t_5 = __pyx_v_4lxml_5etree_os_path_abspath; __pyx_t_6 = NULL;
@@ -36503,11 +38588,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         pass
  *     # gzip file instances have a filename attribute (before Py3k)
  */
+    __Pyx_TraceLine(1681,0,__PYX_ERR(5, 1681, __pyx_L11_except_error))
     /*except:*/ {
       __Pyx_ErrRestore(0,0,0);
       goto __pyx_L10_exception_handled;
     }
-    __pyx_L13_try_return:;
+    __pyx_L11_except_error:;
 
     /* "src/lxml/apihelpers.pxi":1677
  *         pass
@@ -36520,6 +38606,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_1);
     __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+    goto __pyx_L1_error;
+    __pyx_L13_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
     goto __pyx_L0;
     __pyx_L10_exception_handled:;
     __Pyx_XGIVEREF(__pyx_t_3);
@@ -36536,6 +38628,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         filename = source.filename
  *         if _isString(filename):
  */
+  __Pyx_TraceLine(1684,0,__PYX_ERR(5, 1684, __pyx_L16_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -36552,6 +38645,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  */
+      __Pyx_TraceLine(1685,0,__PYX_ERR(5, 1685, __pyx_L16_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1685, __pyx_L16_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_4);
@@ -36564,6 +38658,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *             return os_path_abspath(filename)
  *     except:
  */
+      __Pyx_TraceLine(1686,0,__PYX_ERR(5, 1686, __pyx_L16_error))
       __pyx_t_7 = (_isString(__pyx_v_filename) != 0);
       if (__pyx_t_7) {
 
@@ -36574,6 +38669,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *     except:
  *         pass
  */
+        __Pyx_TraceLine(1687,0,__PYX_ERR(5, 1687, __pyx_L16_error))
         __Pyx_XDECREF(__pyx_r);
         __Pyx_INCREF(__pyx_v_4lxml_5etree_os_path_abspath);
         __pyx_t_5 = __pyx_v_4lxml_5etree_os_path_abspath; __pyx_t_8 = NULL;
@@ -36657,11 +38753,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         pass
  *     # can't determine filename
  */
+    __Pyx_TraceLine(1688,0,__PYX_ERR(5, 1688, __pyx_L18_except_error))
     /*except:*/ {
       __Pyx_ErrRestore(0,0,0);
       goto __pyx_L17_exception_handled;
     }
-    __pyx_L20_try_return:;
+    __pyx_L18_except_error:;
 
     /* "src/lxml/apihelpers.pxi":1684
  *         pass
@@ -36674,6 +38771,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L20_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
     goto __pyx_L0;
     __pyx_L17_exception_handled:;
     __Pyx_XGIVEREF(__pyx_t_1);
@@ -36688,6 +38791,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *     # can't determine filename
  *     return None             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(1691,0,__PYX_ERR(5, 1691, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -36701,9 +38805,17 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("lxml.etree._getFilenameForFile", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_filename);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -36733,11 +38845,14 @@ static PyObject *__pyx_pw_4lxml_5etree_3clear_error_log(PyObject *__pyx_self, CY
 
 static PyObject *__pyx_pf_4lxml_5etree_2clear_error_log(CYTHON_UNUSED PyObject *__pyx_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__32)
   __Pyx_RefNannySetupContext("clear_error_log", 0);
+  __Pyx_TraceCall("clear_error_log", __pyx_f[1], 11, 0, __PYX_ERR(1, 11, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":21
  *     current thread.
@@ -36746,6 +38861,7 @@ static PyObject *__pyx_pf_4lxml_5etree_2clear_error_log(CYTHON_UNUSED PyObject *
  * 
  * 
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(1, 21, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_clear); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 21, __pyx_L1_error)
@@ -36790,6 +38906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_2clear_error_log(CYTHON_UNUSED PyObject *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -36803,8 +38920,10 @@ static PyObject *__pyx_pf_4lxml_5etree_2clear_error_log(CYTHON_UNUSED PyObject *
  */
 
 static void __pyx_f_4lxml_5etree__initThreadLogging(void) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_initThreadLogging", 0);
+  __Pyx_TraceCall("_initThreadLogging", __pyx_f[1], 26, 0, __PYX_ERR(1, 26, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":28
  * cdef void _initThreadLogging():
@@ -36813,6 +38932,7 @@ static void __pyx_f_4lxml_5etree__initThreadLogging(void) {
  * 
  *     # Divert XSLT error messages to the global XSLT error log instead of stderr.
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(1, 28, __pyx_L1_error))
   __pyx_f_4lxml_5etree__connectGenericErrorLog(Py_None, NULL);
 
   /* "src/lxml/xmlerror.pxi":31
@@ -36822,6 +38942,7 @@ static void __pyx_f_4lxml_5etree__initThreadLogging(void) {
  * 
  * 
  */
+  __Pyx_TraceLine(31,0,__PYX_ERR(1, 31, __pyx_L1_error))
   xsltSetGenericErrorFunc(NULL, ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError));
 
   /* "src/lxml/xmlerror.pxi":26
@@ -36833,6 +38954,11 @@ static void __pyx_f_4lxml_5etree__initThreadLogging(void) {
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._initThreadLogging", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -36856,8 +38982,10 @@ static void __pyx_pw_4lxml_5etree_9_LogEntry_1__dealloc__(PyObject *__pyx_v_self
 }
 
 static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[1], 63, 0, __PYX_ERR(1, 63, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":64
  * 
@@ -36866,6 +38994,7 @@ static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_
  *         tree.xmlFree(self._c_filename)
  *         tree.xmlFree(self._c_path)
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(1, 64, __pyx_L1_error))
   xmlFree(__pyx_v_self->_c_message);
 
   /* "src/lxml/xmlerror.pxi":65
@@ -36875,6 +39004,7 @@ static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_
  *         tree.xmlFree(self._c_path)
  * 
  */
+  __Pyx_TraceLine(65,0,__PYX_ERR(1, 65, __pyx_L1_error))
   xmlFree(__pyx_v_self->_c_filename);
 
   /* "src/lxml/xmlerror.pxi":66
@@ -36884,6 +39014,7 @@ static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(1, 66, __pyx_L1_error))
   xmlFree(__pyx_v_self->_c_path);
 
   /* "src/lxml/xmlerror.pxi":63
@@ -36895,6 +39026,11 @@ static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._LogEntry.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -36908,11 +39044,13 @@ static void __pyx_pf_4lxml_5etree_9_LogEntry___dealloc__(struct __pyx_obj_4lxml_
 
 static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self, xmlError *__pyx_v_error) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_setError", 0);
+  __Pyx_TraceCall("_setError", __pyx_f[1], 69, 0, __PYX_ERR(1, 69, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":70
  *     @cython.final
@@ -36921,6 +39059,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self.type     = error.code
  *         self.level    = <int>error.level
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(1, 70, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_error->domain;
   __pyx_v_self->domain = __pyx_t_1;
 
@@ -36931,6 +39070,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self.level    = <int>error.level
  *         self.line     = error.line
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(1, 71, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_error->code;
   __pyx_v_self->type = __pyx_t_1;
 
@@ -36941,6 +39081,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self.line     = error.line
  *         self.column   = error.int2
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(1, 72, __pyx_L1_error))
   __pyx_v_self->level = ((int)__pyx_v_error->level);
 
   /* "src/lxml/xmlerror.pxi":73
@@ -36950,6 +39091,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self.column   = error.int2
  *         self._c_message = NULL
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(1, 73, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_error->line;
   __pyx_v_self->line = __pyx_t_1;
 
@@ -36960,6 +39102,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self._c_message = NULL
  *         self._c_filename = NULL
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(1, 74, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_error->int2;
   __pyx_v_self->column = __pyx_t_1;
 
@@ -36970,6 +39113,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self._c_filename = NULL
  *         self._c_path = NULL
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(1, 75, __pyx_L1_error))
   __pyx_v_self->_c_message = NULL;
 
   /* "src/lxml/xmlerror.pxi":76
@@ -36979,6 +39123,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         self._c_path = NULL
  *         if (error.message is NULL or
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(1, 76, __pyx_L1_error))
   __pyx_v_self->_c_filename = NULL;
 
   /* "src/lxml/xmlerror.pxi":77
@@ -36988,6 +39133,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         if (error.message is NULL or
  *                 error.message[0] == b'\0' or
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(1, 77, __pyx_L1_error))
   __pyx_v_self->_c_path = NULL;
 
   /* "src/lxml/xmlerror.pxi":78
@@ -36997,6 +39143,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 error.message[0] == b'\0' or
  *                 error.message[0] == b'\n' and error.message[1] == b'\0'):
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(1, 78, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_error->message == NULL) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -37011,6 +39158,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 error.message[0] == b'\n' and error.message[1] == b'\0'):
  *             self._message = u"unknown error"
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(1, 79, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_error->message[0]) == '\x00') != 0);
   if (!__pyx_t_3) {
   } else {
@@ -37025,6 +39173,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             self._message = u"unknown error"
  *         else:
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(1, 80, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_error->message[0]) == '\n') != 0);
   if (__pyx_t_3) {
   } else {
@@ -37042,6 +39191,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 error.message[0] == b'\0' or
  *                 error.message[0] == b'\n' and error.message[1] == b'\0'):
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(1, 78, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/xmlerror.pxi":81
@@ -37051,6 +39201,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         else:
  *             self._message = None
  */
+    __Pyx_TraceLine(81,0,__PYX_ERR(1, 81, __pyx_L1_error))
     __Pyx_INCREF(__pyx_kp_u_unknown_error);
     __Pyx_GIVEREF(__pyx_kp_u_unknown_error);
     __Pyx_GOTREF(__pyx_v_self->_message);
@@ -37074,6 +39225,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             self._c_message = <char*> tree.xmlStrdup(
  *                 <const_xmlChar*> error.message)
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(1, 83, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
@@ -37088,6 +39240,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 <const_xmlChar*> error.message)
  *             if not self._c_message:
  */
+    __Pyx_TraceLine(84,0,__PYX_ERR(1, 84, __pyx_L1_error))
     __pyx_v_self->_c_message = ((char *)xmlStrdup(((const xmlChar *)__pyx_v_error->message)));
 
     /* "src/lxml/xmlerror.pxi":86
@@ -37097,6 +39250,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 raise MemoryError()
  *         if error.file is NULL:
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(1, 86, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_self->_c_message != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -37107,6 +39261,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         if error.file is NULL:
  *             self._filename = u'<string>'
  */
+      __Pyx_TraceLine(87,0,__PYX_ERR(1, 87, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(1, 87, __pyx_L1_error)
 
       /* "src/lxml/xmlerror.pxi":86
@@ -37127,6 +39282,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             self._filename = u'<string>'
  *         else:
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(1, 88, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error->file == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -37137,6 +39293,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         else:
  *             self._filename = None
  */
+    __Pyx_TraceLine(89,0,__PYX_ERR(1, 89, __pyx_L1_error))
     __Pyx_INCREF(__pyx_kp_u_string);
     __Pyx_GIVEREF(__pyx_kp_u_string);
     __Pyx_GOTREF(__pyx_v_self->_filename);
@@ -37160,6 +39317,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             self._c_filename = tree.xmlStrdup(<const_xmlChar*> error.file)
  *             if not self._c_filename:
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(1, 91, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
@@ -37174,6 +39332,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             if not self._c_filename:
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(1, 92, __pyx_L1_error))
     __pyx_v_self->_c_filename = xmlStrdup(((const xmlChar *)__pyx_v_error->file));
 
     /* "src/lxml/xmlerror.pxi":93
@@ -37183,6 +39342,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *                 raise MemoryError()
  *         if error.node is not NULL:
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(1, 93, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_self->_c_filename != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -37193,6 +39353,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *         if error.node is not NULL:
  *             self._c_path = tree.xmlGetNodePath(<xmlNode*> error.node)
  */
+      __Pyx_TraceLine(94,0,__PYX_ERR(1, 94, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(1, 94, __pyx_L1_error)
 
       /* "src/lxml/xmlerror.pxi":93
@@ -37213,6 +39374,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  *             self._c_path = tree.xmlGetNodePath(<xmlNode*> error.node)
  * 
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(1, 95, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error->node != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -37223,6 +39385,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
  * 
  *     @cython.final
  */
+    __Pyx_TraceLine(96,0,__PYX_ERR(1, 96, __pyx_L1_error))
     __pyx_v_self->_c_path = xmlGetNodePath(((xmlNode *)__pyx_v_error->node));
 
     /* "src/lxml/xmlerror.pxi":95
@@ -37250,6 +39413,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -37264,9 +39428,11 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxm
 
 static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self, int __pyx_v_domain, int __pyx_v_type, int __pyx_v_level, int __pyx_v_line, PyObject *__pyx_v_message, PyObject *__pyx_v_filename) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_setGeneric", 0);
+  __Pyx_TraceCall("_setGeneric", __pyx_f[1], 99, 0, __PYX_ERR(1, 99, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":101
  *     cdef _setGeneric(self, int domain, int type, int level, int line,
@@ -37275,6 +39441,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self.type    = type
  *         self.level   = level
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(1, 101, __pyx_L1_error))
   __pyx_v_self->domain = __pyx_v_domain;
 
   /* "src/lxml/xmlerror.pxi":102
@@ -37284,6 +39451,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self.level   = level
  *         self.line    = line
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(1, 102, __pyx_L1_error))
   __pyx_v_self->type = __pyx_v_type;
 
   /* "src/lxml/xmlerror.pxi":103
@@ -37293,6 +39461,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self.line    = line
  *         self.column  = 0
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(1, 103, __pyx_L1_error))
   __pyx_v_self->level = __pyx_v_level;
 
   /* "src/lxml/xmlerror.pxi":104
@@ -37302,6 +39471,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self.column  = 0
  *         self._message = message
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(1, 104, __pyx_L1_error))
   __pyx_v_self->line = __pyx_v_line;
 
   /* "src/lxml/xmlerror.pxi":105
@@ -37311,6 +39481,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self._message = message
  *         self._filename = filename
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(1, 105, __pyx_L1_error))
   __pyx_v_self->column = 0;
 
   /* "src/lxml/xmlerror.pxi":106
@@ -37320,6 +39491,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self._filename = filename
  *         self._c_path = NULL
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(1, 106, __pyx_L1_error))
   if (!(likely(__Pyx_PyBaseString_CheckExact(__pyx_v_message))||((__pyx_v_message) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", (PY_MAJOR_VERSION < 3 ? "basestring" : "str"), Py_TYPE(__pyx_v_message)->tp_name), 0))) __PYX_ERR(1, 106, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_message;
   __Pyx_INCREF(__pyx_t_1);
@@ -37336,6 +39508,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  *         self._c_path = NULL
  * 
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(1, 107, __pyx_L1_error))
   if (!(likely(__Pyx_PyBaseString_CheckExact(__pyx_v_filename))||((__pyx_v_filename) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", (PY_MAJOR_VERSION < 3 ? "basestring" : "str"), Py_TYPE(__pyx_v_filename)->tp_name), 0))) __PYX_ERR(1, 107, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_filename;
   __Pyx_INCREF(__pyx_t_1);
@@ -37352,6 +39525,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(1, 108, __pyx_L1_error))
   __pyx_v_self->_c_path = NULL;
 
   /* "src/lxml/xmlerror.pxi":99
@@ -37371,6 +39545,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4l
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -37398,6 +39573,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_3__repr__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -37405,6 +39581,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[1], 110, 0, __PYX_ERR(1, 110, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":111
  * 
@@ -37413,6 +39590,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
  *             self.filename, self.line, self.column, self.level_name,
  *             self.domain_name, self.type_name, self.message)
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(1, 111, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(13); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -37426,9 +39604,10 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
  *             self.domain_name, self.type_name, self.message)
  * 
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(1, 112, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
@@ -37436,33 +39615,33 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__24);
+  __Pyx_INCREF(__pyx_kp_u__31);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__24);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__24);
+  __Pyx_GIVEREF(__pyx_kp_u__31);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__31);
   __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_self->line, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__24);
+  __Pyx_INCREF(__pyx_kp_u__31);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__24);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__24);
+  __Pyx_GIVEREF(__pyx_kp_u__31);
+  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__31);
   __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_self->column, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__24);
+  __Pyx_INCREF(__pyx_kp_u__31);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__24);
-  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_kp_u__24);
+  __Pyx_GIVEREF(__pyx_kp_u__31);
+  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_kp_u__31);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_level_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
@@ -37470,10 +39649,10 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_t_4);
   __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__24);
+  __Pyx_INCREF(__pyx_kp_u__31);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__24);
-  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_kp_u__24);
+  __Pyx_GIVEREF(__pyx_kp_u__31);
+  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_kp_u__31);
 
   /* "src/lxml/xmlerror.pxi":113
  *         return u"%s:%d:%d:%s:%s:%s: %s" % (
@@ -37482,9 +39661,10 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
  * 
  *     property domain_name:
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(1, 113, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_domain_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 113, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
@@ -37492,13 +39672,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__24);
+  __Pyx_INCREF(__pyx_kp_u__31);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__24);
-  PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_kp_u__24);
+  __Pyx_GIVEREF(__pyx_kp_u__31);
+  PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_kp_u__31);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 113, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
@@ -37506,13 +39686,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_t_4);
   __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__25);
+  __Pyx_INCREF(__pyx_kp_u__33);
   __pyx_t_2 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__25);
-  PyTuple_SET_ITEM(__pyx_t_1, 11, __pyx_kp_u__25);
+  __Pyx_GIVEREF(__pyx_kp_u__33);
+  PyTuple_SET_ITEM(__pyx_t_1, 11, __pyx_kp_u__33);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 113, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
@@ -37528,6 +39708,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
  *             self.filename, self.line, self.column, self.level_name,
  *             self.domain_name, self.type_name, self.message)
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(1, 111, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 13, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37552,6 +39733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -37579,6 +39761,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_11domain_name_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -37587,6 +39770,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 118, 0, __PYX_ERR(1, 118, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":119
  *         """
@@ -37595,6 +39779,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
  * 
  *     property type_name:
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(1, 119, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 119, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -37673,6 +39858,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -37701,6 +39887,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_9type_name_1__get__(PyObject *
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_v_getName = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -37710,6 +39897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 124, 0, __PYX_ERR(1, 124, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":125
  *         """
@@ -37718,6 +39906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
  *                 getName = RelaxNGErrorTypes._getName
  *             else:
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(1, 125, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->domain); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 125, __pyx_L1_error)
@@ -37739,6 +39928,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
  *             else:
  *                 getName = ErrorTypes._getName
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(1, 126, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getName); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 126, __pyx_L1_error)
@@ -37764,6 +39954,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
  *             return getName(self.type, u"unknown")
  * 
  */
+  __Pyx_TraceLine(128,0,__PYX_ERR(1, 128, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 128, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -37782,6 +39973,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
  * 
  *     property level_name:
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(1, 129, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -37857,6 +40049,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_getName);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -37884,6 +40077,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_10level_name_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -37892,6 +40086,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 134, 0, __PYX_ERR(1, 134, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":135
  *         """
@@ -37900,6 +40095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
  * 
  *     property message:
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(1, 135, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -37978,6 +40174,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38006,6 +40203,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_7message_1__get__(PyObject *__
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   size_t __pyx_v_size;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -38023,6 +40221,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 138, 0, __PYX_ERR(1, 138, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":140
  *         def __get__(self):
@@ -38031,6 +40230,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 return self._message
  *             if self._c_message is NULL:
  */
+  __Pyx_TraceLine(140,0,__PYX_ERR(1, 140, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_message != ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -38042,6 +40242,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             if self._c_message is NULL:
  *                 return None
  */
+    __Pyx_TraceLine(141,0,__PYX_ERR(1, 141, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_message);
     __pyx_r = __pyx_v_self->_message;
@@ -38063,6 +40264,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 return None
  *             size = cstring_h.strlen(self._c_message)
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(1, 142, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_c_message == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -38073,6 +40275,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             size = cstring_h.strlen(self._c_message)
  *             if size > 0 and self._c_message[size-1] == '\n':
  */
+    __Pyx_TraceLine(143,0,__PYX_ERR(1, 143, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -38093,6 +40296,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             if size > 0 and self._c_message[size-1] == '\n':
  *                 size -= 1  # strip EOL
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(1, 144, __pyx_L1_error))
   __pyx_v_size = strlen(__pyx_v_self->_c_message);
 
   /* "src/lxml/xmlerror.pxi":145
@@ -38102,6 +40306,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 size -= 1  # strip EOL
  *             # cannot use funicode() here because the message may contain
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(1, 145, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_size > 0) != 0);
   if (__pyx_t_1) {
   } else {
@@ -38120,6 +40325,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             # cannot use funicode() here because the message may contain
  *             # byte encoded file paths etc.
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(1, 146, __pyx_L1_error))
     __pyx_v_size = (__pyx_v_size - 1);
 
     /* "src/lxml/xmlerror.pxi":145
@@ -38138,6 +40344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 self._message = self._c_message[:size].decode('utf8')
  *             except UnicodeDecodeError:
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(1, 149, __pyx_L8_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -38154,6 +40361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             except UnicodeDecodeError:
  *                 try:
  */
+      __Pyx_TraceLine(150,0,__PYX_ERR(1, 150, __pyx_L8_error))
       __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_self->_c_message, 0, __pyx_v_size, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 150, __pyx_L8_error)
       __Pyx_GOTREF(__pyx_t_6);
       if (!(likely(__Pyx_PyBaseString_CheckExact(__pyx_t_6))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", (PY_MAJOR_VERSION < 3 ? "basestring" : "str"), Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(1, 150, __pyx_L8_error)
@@ -38185,6 +40393,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 try:
  *                     self._message = self._c_message[:size].decode(
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(1, 151, __pyx_L10_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree._LogEntry.message.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -38200,6 +40409,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                     self._message = self._c_message[:size].decode(
  *                         'ascii', 'backslashreplace')
  */
+      __Pyx_TraceLine(152,0,__PYX_ERR(1, 152, __pyx_L16_error))
       {
         __Pyx_PyThreadState_declare
         __Pyx_PyThreadState_assign
@@ -38216,6 +40426,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                         'ascii', 'backslashreplace')
  *                 except UnicodeDecodeError:
  */
+          __Pyx_TraceLine(153,0,__PYX_ERR(1, 153, __pyx_L16_error))
           __pyx_t_13 = __Pyx_decode_c_string(__pyx_v_self->_c_message, 0, __pyx_v_size, NULL, ((char const *)"backslashreplace"), PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 153, __pyx_L16_error)
           __Pyx_GOTREF(__pyx_t_13);
           if (!(likely(__Pyx_PyBaseString_CheckExact(__pyx_t_13))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", (PY_MAJOR_VERSION < 3 ? "basestring" : "str"), Py_TYPE(__pyx_t_13)->tp_name), 0))) __PYX_ERR(1, 153, __pyx_L16_error)
@@ -38247,6 +40458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                     self._message = u'<undecodable error message>'
  *             if self._c_message:
  */
+        __Pyx_TraceLine(155,0,__PYX_ERR(1, 155, __pyx_L18_except_error))
         __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
         if (__pyx_t_7) {
           __Pyx_AddTraceback("lxml.etree._LogEntry.message.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -38262,6 +40474,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             if self._c_message:
  *                 # clean up early
  */
+          __Pyx_TraceLine(156,0,__PYX_ERR(1, 156, __pyx_L18_except_error))
           __Pyx_INCREF(__pyx_kp_u_undecodable_error_message);
           __Pyx_GIVEREF(__pyx_kp_u_undecodable_error_message);
           __Pyx_GOTREF(__pyx_v_self->_message);
@@ -38329,6 +40542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 # clean up early
  *                 tree.xmlFree(self._c_message)
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(1, 157, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_c_message != 0);
   if (__pyx_t_2) {
 
@@ -38339,6 +40553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *                 self._c_message = NULL
  *             return self._message
  */
+    __Pyx_TraceLine(159,0,__PYX_ERR(1, 159, __pyx_L1_error))
     xmlFree(__pyx_v_self->_c_message);
 
     /* "src/lxml/xmlerror.pxi":160
@@ -38348,6 +40563,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  *             return self._message
  * 
  */
+    __Pyx_TraceLine(160,0,__PYX_ERR(1, 160, __pyx_L1_error))
     __pyx_v_self->_c_message = NULL;
 
     /* "src/lxml/xmlerror.pxi":157
@@ -38366,6 +40582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
  * 
  *     property filename:
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(1, 161, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_message);
   __pyx_r = __pyx_v_self->_message;
@@ -38391,6 +40608,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38418,11 +40636,13 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_8filename_1__get__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 164, 0, __PYX_ERR(1, 164, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":165
  *     property filename:
@@ -38431,6 +40651,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  *                 if self._c_filename is not NULL:
  *                     self._filename = _decodeFilename(self._c_filename)
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(1, 165, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_filename == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -38442,6 +40663,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  *                     self._filename = _decodeFilename(self._c_filename)
  *                     # clean up early
  */
+    __Pyx_TraceLine(166,0,__PYX_ERR(1, 166, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->_c_filename != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -38452,6 +40674,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  *                     # clean up early
  *                     tree.xmlFree(self._c_filename)
  */
+      __Pyx_TraceLine(167,0,__PYX_ERR(1, 167, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_self->_c_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       if (!(likely(__Pyx_PyBaseString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", (PY_MAJOR_VERSION < 3 ? "basestring" : "str"), Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 167, __pyx_L1_error)
@@ -38468,6 +40691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  *                     self._c_filename = NULL
  *             return self._filename
  */
+      __Pyx_TraceLine(169,0,__PYX_ERR(1, 169, __pyx_L1_error))
       xmlFree(__pyx_v_self->_c_filename);
 
       /* "src/lxml/xmlerror.pxi":170
@@ -38477,6 +40701,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  *             return self._filename
  * 
  */
+      __Pyx_TraceLine(170,0,__PYX_ERR(1, 170, __pyx_L1_error))
       __pyx_v_self->_c_filename = NULL;
 
       /* "src/lxml/xmlerror.pxi":166
@@ -38504,6 +40729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
  * 
  *     property path:
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(1, 171, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_filename);
   __pyx_r = __pyx_v_self->_filename;
@@ -38524,6 +40750,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38551,10 +40778,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_4path_1__get__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4path___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 176, 0, __PYX_ERR(1, 176, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":177
  *         """
@@ -38563,6 +40792,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4path___get__(struct __pyx_obj
  * 
  * 
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(1, 177, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_path != NULL) != 0)) {
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 177, __pyx_L1_error)
@@ -38593,6 +40823,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4path___get__(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38620,9 +40851,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_6domain_1__get__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_6domain___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 52, 0, __PYX_ERR(1, 52, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->domain); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 52, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -38637,6 +40870,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_6domain___get__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38664,9 +40898,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_4type_1__get__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4type___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 53, 0, __PYX_ERR(1, 53, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 53, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -38681,6 +40917,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4type___get__(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38708,9 +40945,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_5level_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_5level___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 54, 0, __PYX_ERR(1, 54, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->level); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 54, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -38725,6 +40964,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_5level___get__(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38752,9 +40992,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_4line_1__get__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4line___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 55, 0, __PYX_ERR(1, 55, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->line); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -38769,6 +41011,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4line___get__(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38796,9 +41039,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9_LogEntry_6column_1__get__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_6column___get__(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 56, 0, __PYX_ERR(1, 56, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->column); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -38813,6 +41058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_6column___get__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38888,9 +41134,11 @@ static int __pyx_pw_4lxml_5etree_13_BaseErrorLog_1__init__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, PyObject *__pyx_v_first_error, PyObject *__pyx_v_last_error) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 183, 0, __PYX_ERR(1, 183, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":184
  *     cdef readonly object last_error
@@ -38899,6 +41147,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
  *         self.last_error = last_error
  * 
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(1, 184, __pyx_L1_error))
   if (!(likely(((__pyx_v_first_error) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_first_error, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 184, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_first_error;
   __Pyx_INCREF(__pyx_t_1);
@@ -38915,6 +41164,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
  * 
  *     cpdef copy(self):
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(1, 185, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_last_error);
   __Pyx_GIVEREF(__pyx_v_last_error);
   __Pyx_GOTREF(__pyx_v_self->last_error);
@@ -38937,6 +41187,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
   __Pyx_AddTraceback("lxml.etree._BaseErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -38952,12 +41203,15 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
 static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__34)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[1], 187, 0, __PYX_ERR(1, 187, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -39000,6 +41254,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(188,0,__PYX_ERR(1, 188, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 188, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -39034,6 +41289,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -39054,9 +41310,12 @@ static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_3copy(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_2copy(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__34)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy (wrapper)", __pyx_f[1], 187, 0, __PYX_ERR(1, 187, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -39071,6 +41330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_2copy(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -39098,8 +41358,10 @@ static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_5__repr__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[1], 190, 0, __PYX_ERR(1, 190, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":191
  * 
@@ -39108,9 +41370,10 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
+  __Pyx_TraceLine(191,0,__PYX_ERR(1, 191, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_kp_u__16);
-  __pyx_r = __pyx_kp_u__16;
+  __Pyx_INCREF(__pyx_kp_u__23);
+  __pyx_r = __pyx_kp_u__23;
   goto __pyx_L0;
 
   /* "src/lxml/xmlerror.pxi":190
@@ -39122,8 +41385,12 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseErrorLog.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -39139,13 +41406,16 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
 static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_7receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__35)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive", __pyx_f[1], 193, 0, __PYX_ERR(1, 193, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -39213,6 +41483,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(194,0,__PYX_ERR(1, 194, __pyx_L1_error))
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -39227,6 +41498,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -39260,9 +41532,12 @@ static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_7receive(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_6receive(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__35)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive (wrapper)", __pyx_f[1], 193, 0, __PYX_ERR(1, 193, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 193, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -39277,6 +41552,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_6receive(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -39293,11 +41569,13 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   int __pyx_v_is_error;
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_global_log = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_receive", 0);
+  __Pyx_TraceCall("_receive", __pyx_f[1], 197, 0, __PYX_ERR(1, 197, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":201
  *         cdef _LogEntry entry
@@ -39306,6 +41584,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         entry._setError(error)
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(1, 201, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__LogEntry(((PyTypeObject *)__pyx_ptype_4lxml_5etree__LogEntry), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 201, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
@@ -39318,6 +41597,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  *                    error.level == xmlerror.XML_ERR_FATAL
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(1, 202, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_LogEntry__setError(__pyx_v_entry, __pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 202, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39329,6 +41609,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *                    error.level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(1, 203, __pyx_L1_error))
   switch (__pyx_v_error->level) {
     case XML_ERR_ERROR:
 
@@ -39339,6 +41620,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(1, 204, __pyx_L1_error))
     case XML_ERR_FATAL:
 
     /* "src/lxml/xmlerror.pxi":203
@@ -39348,6 +41630,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *                    error.level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
+    __Pyx_TraceLine(203,0,__PYX_ERR(1, 203, __pyx_L1_error))
     __pyx_t_2 = 1;
     break;
     default:
@@ -39363,6 +41646,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         if global_log is not self:
  *             global_log.receive(entry)
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(1, 205, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
@@ -39375,6 +41659,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *             global_log.receive(entry)
  *             if is_error:
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(1, 206, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_global_log != __pyx_v_self);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -39386,6 +41671,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *             if is_error:
  *                 global_log.last_error = entry
  */
+    __Pyx_TraceLine(207,0,__PYX_ERR(1, 207, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_global_log->__pyx_vtab)->receive(__pyx_v_global_log, __pyx_v_entry, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 207, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39397,6 +41683,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *                 global_log.last_error = entry
  *         self.receive(entry)
  */
+    __Pyx_TraceLine(208,0,__PYX_ERR(1, 208, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_is_error != 0);
     if (__pyx_t_3) {
 
@@ -39407,6 +41694,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         self.receive(entry)
  *         if is_error:
  */
+      __Pyx_TraceLine(209,0,__PYX_ERR(1, 209, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_entry));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
       __Pyx_GOTREF(__pyx_v_global_log->last_error);
@@ -39438,6 +41726,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *         if is_error:
  *             self.last_error = entry
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(1, 210, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_vtab)->receive(__pyx_v_self, __pyx_v_entry, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 210, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39449,6 +41738,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  *             self.last_error = entry
  * 
  */
+  __Pyx_TraceLine(211,0,__PYX_ERR(1, 211, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_is_error != 0);
   if (__pyx_t_3) {
 
@@ -39459,6 +41749,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  * 
  *     @cython.final
  */
+    __Pyx_TraceLine(212,0,__PYX_ERR(1, 212, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_entry));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
     __Pyx_GOTREF(__pyx_v_self->last_error);
@@ -39490,6 +41781,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_entry);
   __Pyx_XDECREF((PyObject *)__pyx_v_global_log);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -39505,11 +41797,13 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   int __pyx_v_is_error;
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_global_log = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_receiveGeneric", 0);
+  __Pyx_TraceCall("_receiveGeneric", __pyx_f[1], 215, 0, __PYX_ERR(1, 215, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":220
  *         cdef _LogEntry entry
@@ -39518,6 +41812,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         entry._setGeneric(domain, type, level, line, message, filename)
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  */
+  __Pyx_TraceLine(220,0,__PYX_ERR(1, 220, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__LogEntry(((PyTypeObject *)__pyx_ptype_4lxml_5etree__LogEntry), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 220, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
@@ -39530,6 +41825,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  *                    level == xmlerror.XML_ERR_FATAL
  */
+  __Pyx_TraceLine(221,0,__PYX_ERR(1, 221, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_LogEntry__setGeneric(__pyx_v_entry, __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39541,6 +41837,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *                    level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
+  __Pyx_TraceLine(222,0,__PYX_ERR(1, 222, __pyx_L1_error))
   switch (__pyx_v_level) {
     case XML_ERR_ERROR:
 
@@ -39551,6 +41848,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:
  */
+    __Pyx_TraceLine(223,0,__PYX_ERR(1, 223, __pyx_L1_error))
     case XML_ERR_FATAL:
 
     /* "src/lxml/xmlerror.pxi":222
@@ -39560,6 +41858,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *                    level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
+    __Pyx_TraceLine(222,0,__PYX_ERR(1, 222, __pyx_L1_error))
     __pyx_t_2 = 1;
     break;
     default:
@@ -39575,6 +41874,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         if global_log is not self:
  *             global_log.receive(entry)
  */
+  __Pyx_TraceLine(224,0,__PYX_ERR(1, 224, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
@@ -39587,6 +41887,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *             global_log.receive(entry)
  *             if is_error:
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(1, 225, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_global_log != __pyx_v_self);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -39598,6 +41899,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *             if is_error:
  *                 global_log.last_error = entry
  */
+    __Pyx_TraceLine(226,0,__PYX_ERR(1, 226, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_global_log->__pyx_vtab)->receive(__pyx_v_global_log, __pyx_v_entry, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 226, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39609,6 +41911,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *                 global_log.last_error = entry
  *         self.receive(entry)
  */
+    __Pyx_TraceLine(227,0,__PYX_ERR(1, 227, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_is_error != 0);
     if (__pyx_t_3) {
 
@@ -39619,6 +41922,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         self.receive(entry)
  *         if is_error:
  */
+      __Pyx_TraceLine(228,0,__PYX_ERR(1, 228, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_entry));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
       __Pyx_GOTREF(__pyx_v_global_log->last_error);
@@ -39650,6 +41954,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *         if is_error:
  *             self.last_error = entry
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(1, 229, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_vtab)->receive(__pyx_v_self, __pyx_v_entry, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 229, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39661,6 +41966,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  *             self.last_error = entry
  * 
  */
+  __Pyx_TraceLine(230,0,__PYX_ERR(1, 230, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_is_error != 0);
   if (__pyx_t_3) {
 
@@ -39671,6 +41977,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  * 
  *     @cython.final
  */
+    __Pyx_TraceLine(231,0,__PYX_ERR(1, 231, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_entry));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
     __Pyx_GOTREF(__pyx_v_self->last_error);
@@ -39702,6 +42009,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_entry);
   __Pyx_XDECREF((PyObject *)__pyx_v_global_log);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -39720,6 +42028,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   int __pyx_v_column;
   PyObject *__pyx_v_filename = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -39734,6 +42043,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_buildParseException", 0);
+  __Pyx_TraceCall("_buildParseException", __pyx_f[1], 234, 0, __PYX_ERR(1, 234, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":235
  *     @cython.final
@@ -39742,6 +42052,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         if self._first_error is None:
  *             return exctype(default_message, code, 0, 0)
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(1, 235, __pyx_L1_error))
   __pyx_v_code = XML_ERR_INTERNAL_ERROR;
 
   /* "src/lxml/xmlerror.pxi":236
@@ -39751,6 +42062,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *             return exctype(default_message, code, 0, 0)
  *         message = self._first_error.message
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(1, 236, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_first_error) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -39762,6 +42074,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         message = self._first_error.message
  *         if message:
  */
+    __Pyx_TraceLine(237,0,__PYX_ERR(1, 237, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 237, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -39839,6 +42152,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         if message:
  *             code = self._first_error.type
  */
+  __Pyx_TraceLine(238,0,__PYX_ERR(1, 238, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 238, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_message = __pyx_t_3;
@@ -39851,6 +42165,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *             code = self._first_error.type
  *         else:
  */
+  __Pyx_TraceLine(239,0,__PYX_ERR(1, 239, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_message); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 239, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -39861,6 +42176,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         else:
  *             message = default_message
  */
+    __Pyx_TraceLine(240,0,__PYX_ERR(1, 240, __pyx_L1_error))
     __pyx_t_7 = __pyx_v_self->_first_error->type;
     __pyx_v_code = __pyx_t_7;
 
@@ -39881,6 +42197,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         line = self._first_error.line
  *         column = self._first_error.column
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(1, 242, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_default_message);
     __Pyx_DECREF_SET(__pyx_v_message, __pyx_v_default_message);
@@ -39894,6 +42211,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         column = self._first_error.column
  *         filename = self._first_error.filename
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(1, 243, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_self->_first_error->line;
   __pyx_v_line = __pyx_t_7;
 
@@ -39904,6 +42222,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         filename = self._first_error.filename
  *         if line > 0:
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(1, 244, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_self->_first_error->column;
   __pyx_v_column = __pyx_t_7;
 
@@ -39914,6 +42233,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         if line > 0:
  *             if column > 0:
  */
+  __Pyx_TraceLine(245,0,__PYX_ERR(1, 245, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 245, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_filename = __pyx_t_3;
@@ -39926,6 +42246,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *             if column > 0:
  *                 message = f"{message}, line {line}, column {column}"
  */
+  __Pyx_TraceLine(246,0,__PYX_ERR(1, 246, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_line > 0) != 0);
   if (__pyx_t_2) {
 
@@ -39936,6 +42257,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *                 message = f"{message}, line {line}, column {column}"
  *             else:
  */
+    __Pyx_TraceLine(247,0,__PYX_ERR(1, 247, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_column > 0) != 0);
     if (__pyx_t_2) {
 
@@ -39946,6 +42268,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *             else:
  *                 message = f"{message}, line {line}"
  */
+      __Pyx_TraceLine(248,0,__PYX_ERR(1, 248, __pyx_L1_error))
       __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 248, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = 0;
@@ -40000,6 +42323,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         return exctype(message, code, line, column, filename)
  * 
  */
+    __Pyx_TraceLine(250,0,__PYX_ERR(1, 250, __pyx_L1_error))
     /*else*/ {
       __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 250, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -40046,6 +42370,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(251,0,__PYX_ERR(1, 251, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -40141,6 +42466,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XDECREF(__pyx_v_filename);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40156,6 +42482,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
 static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, PyObject *__pyx_v_default_message) {
   PyObject *__pyx_v_message = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -40164,6 +42491,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   Py_UCS4 __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_buildExceptionMessage", 0);
+  __Pyx_TraceCall("_buildExceptionMessage", __pyx_f[1], 254, 0, __PYX_ERR(1, 254, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":255
  *     @cython.final
@@ -40172,6 +42500,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *             return default_message
  *         if self._first_error.message:
  */
+  __Pyx_TraceLine(255,0,__PYX_ERR(1, 255, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_first_error) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -40183,6 +42512,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *         if self._first_error.message:
  *             message = self._first_error.message
  */
+    __Pyx_TraceLine(256,0,__PYX_ERR(1, 256, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_default_message);
     __pyx_r = __pyx_v_default_message;
@@ -40204,6 +42534,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *             message = self._first_error.message
  *         elif default_message is None:
  */
+  __Pyx_TraceLine(257,0,__PYX_ERR(1, 257, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 257, __pyx_L1_error)
@@ -40217,6 +42548,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *         elif default_message is None:
  *             return None
  */
+    __Pyx_TraceLine(258,0,__PYX_ERR(1, 258, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 258, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_message = __pyx_t_3;
@@ -40239,6 +42571,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *             return None
  *         else:
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(1, 259, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_default_message == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -40250,6 +42583,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *         else:
  *             message = default_message
  */
+    __Pyx_TraceLine(260,0,__PYX_ERR(1, 260, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -40270,6 +42604,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *         if self._first_error.line > 0:
  *             if self._first_error.column > 0:
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(1, 262, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_default_message);
     __pyx_v_message = __pyx_v_default_message;
@@ -40283,6 +42618,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *             if self._first_error.column > 0:
  *                 message = f"{message}, line {self._first_error.line}, column {self._first_error.column}"
  */
+  __Pyx_TraceLine(263,0,__PYX_ERR(1, 263, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_first_error->line > 0) != 0);
   if (__pyx_t_1) {
 
@@ -40293,6 +42629,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *                 message = f"{message}, line {self._first_error.line}, column {self._first_error.column}"
  *             else:
  */
+    __Pyx_TraceLine(264,0,__PYX_ERR(1, 264, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_first_error->column > 0) != 0);
     if (__pyx_t_1) {
 
@@ -40303,6 +42640,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *             else:
  *                 message = f"{message}, line {self._first_error.line}"
  */
+      __Pyx_TraceLine(265,0,__PYX_ERR(1, 265, __pyx_L1_error))
       __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 265, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 = 0;
@@ -40357,6 +42695,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  *         return message
  * 
  */
+    __Pyx_TraceLine(267,0,__PYX_ERR(1, 267, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 267, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -40403,6 +42742,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  * 
  * cdef class _ListErrorLog(_BaseErrorLog):
  */
+  __Pyx_TraceLine(268,0,__PYX_ERR(1, 268, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_message);
   __pyx_r = __pyx_v_message;
@@ -40425,6 +42765,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40452,16 +42793,22 @@ static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_10last_error_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_10last_error___get__(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 182, 0, __PYX_ERR(1, 182, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->last_error);
   __pyx_r = __pyx_v_self->last_error;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseErrorLog.last_error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40548,6 +42895,7 @@ static int __pyx_pw_4lxml_5etree_13_ListErrorLog_1__init__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self, PyObject *__pyx_v_entries, PyObject *__pyx_v_first_error, PyObject *__pyx_v_last_error) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -40557,6 +42905,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 274, 0, __PYX_ERR(1, 274, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_first_error);
   __Pyx_INCREF(__pyx_v_last_error);
 
@@ -40567,6 +42916,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *             if first_error is None:
  *                 first_error = entries[0]
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(1, 275, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_entries); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 275, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -40577,6 +42927,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *                 first_error = entries[0]
  *             if last_error is None:
  */
+    __Pyx_TraceLine(276,0,__PYX_ERR(1, 276, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_first_error == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -40588,6 +42939,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *             if last_error is None:
  *                 last_error = entries[-1]
  */
+      __Pyx_TraceLine(277,0,__PYX_ERR(1, 277, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_entries, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 277, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_first_error, __pyx_t_3);
@@ -40609,6 +42961,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *                 last_error = entries[-1]
  *         _BaseErrorLog.__init__(self, first_error, last_error)
  */
+    __Pyx_TraceLine(278,0,__PYX_ERR(1, 278, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_last_error == Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -40620,6 +42973,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *         _BaseErrorLog.__init__(self, first_error, last_error)
  *         self._entries = entries
  */
+      __Pyx_TraceLine(279,0,__PYX_ERR(1, 279, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_entries, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 279, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_last_error, __pyx_t_3);
@@ -40650,6 +43004,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  *         self._entries = entries
  * 
  */
+  __Pyx_TraceLine(280,0,__PYX_ERR(1, 280, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 280, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
@@ -40709,6 +43064,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  * 
  *     cpdef copy(self):
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(1, 281, __pyx_L1_error))
   if (!(likely(PyList_CheckExact(__pyx_v_entries))||((__pyx_v_entries) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_entries)->tp_name), 0))) __PYX_ERR(1, 281, __pyx_L1_error)
   __pyx_t_3 = __pyx_v_entries;
   __Pyx_INCREF(__pyx_t_3);
@@ -40739,6 +43095,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_first_error);
   __Pyx_XDECREF(__pyx_v_last_error);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40755,13 +43112,16 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_3copy(PyObject *__pyx_v_s
 static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self, int __pyx_skip_dispatch) {
   struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_log = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__36)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[1], 283, 0, __PYX_ERR(1, 283, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -40804,6 +43164,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
  *             self._entries, self._first_error, self.last_error)
  *         log._offset = self._offset
  */
+  __Pyx_TraceLine(287,0,__PYX_ERR(1, 287, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->_entries);
@@ -40828,6 +43189,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
  *         return log
  * 
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(1, 289, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_offset;
   __pyx_v_log->_offset = __pyx_t_5;
 
@@ -40838,6 +43200,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(290,0,__PYX_ERR(1, 290, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_log));
   __pyx_r = ((PyObject *)__pyx_v_log);
@@ -40862,6 +43225,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_log);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40883,9 +43247,12 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_3copy(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_2copy(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__36)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy (wrapper)", __pyx_f[1], 283, 0, __PYX_ERR(1, 283, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_13_ListErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 283, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -40900,6 +43267,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_2copy(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -40928,6 +43296,7 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_5__iter__(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_v_entries = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -40937,6 +43306,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[1], 292, 0, __PYX_ERR(1, 292, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":293
  * 
@@ -40945,6 +43315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  *         if self._offset:
  *             entries = islice(entries, self._offset)
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(1, 293, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_entries = __pyx_t_1;
@@ -40957,6 +43328,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  *             entries = islice(entries, self._offset)
  *         return iter(entries)
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(1, 294, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_offset != 0);
   if (__pyx_t_2) {
 
@@ -40967,6 +43339,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  *         return iter(entries)
  * 
  */
+    __Pyx_TraceLine(295,0,__PYX_ERR(1, 295, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 295, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_4lxml_5etree_islice);
@@ -41036,6 +43409,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(296,0,__PYX_ERR(1, 296, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyObject_GetIter(__pyx_v_entries); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 296, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -41063,6 +43437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_entries);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41091,6 +43466,7 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_7__repr__(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_v_entry = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -41098,6 +43474,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
   PyObject *(*__pyx_t_4)(PyObject *);
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[1], 298, 0, __PYX_ERR(1, 298, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":299
  * 
@@ -41106,6 +43483,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
  * 
  *     def __getitem__(self, index):
  */
+  __Pyx_TraceLine(299,0,__PYX_ERR(1, 299, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -41156,7 +43534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__26, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 299, __pyx_L1_error)
+  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__37, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
@@ -41181,6 +43559,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_entry);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41208,11 +43587,13 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_9__getitem__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self, PyObject *__pyx_v_index) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[1], 301, 0, __PYX_ERR(1, 301, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_index);
 
   /* "src/lxml/xmlerror.pxi":302
@@ -41222,6 +43603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
  *             index += self._offset
  *         return self._entries[index]
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(1, 302, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_offset != 0);
   if (__pyx_t_1) {
 
@@ -41232,6 +43614,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
  *         return self._entries[index]
  * 
  */
+    __Pyx_TraceLine(303,0,__PYX_ERR(1, 303, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 303, __pyx_L1_error)
@@ -41256,6 +43639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(1, 304, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -41284,6 +43668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41311,10 +43696,12 @@ static Py_ssize_t __pyx_pw_4lxml_5etree_13_ListErrorLog_11__len__(PyObject *__py
 
 static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[1], 306, 0, __PYX_ERR(1, 306, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":307
  * 
@@ -41323,6 +43710,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_o
  * 
  *     def __contains__(self, error_type):
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(1, 307, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
@@ -41348,6 +43736,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree._ListErrorLog.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41377,6 +43766,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   Py_ssize_t __pyx_v_i;
   PyObject *__pyx_v_entry = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -41385,6 +43775,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__contains__", 0);
+  __Pyx_TraceCall("__contains__", __pyx_f[1], 309, 0, __PYX_ERR(1, 309, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":311
  *     def __contains__(self, error_type):
@@ -41393,6 +43784,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *             if i < self._offset:
  *                 continue
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(1, 311, __pyx_L1_error))
   __pyx_t_1 = 0;
   __pyx_t_2 = __pyx_v_self->_entries; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
   for (;;) {
@@ -41415,6 +43807,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *                 continue
  *             if entry.type == error_type:
  */
+    __Pyx_TraceLine(312,0,__PYX_ERR(1, 312, __pyx_L1_error))
     __pyx_t_5 = ((__pyx_v_i < __pyx_v_self->_offset) != 0);
     if (__pyx_t_5) {
 
@@ -41425,6 +43818,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *             if entry.type == error_type:
  *                 return True
  */
+      __Pyx_TraceLine(313,0,__PYX_ERR(1, 313, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "src/lxml/xmlerror.pxi":312
@@ -41443,6 +43837,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *                 return True
  *         return False
  */
+    __Pyx_TraceLine(314,0,__PYX_ERR(1, 314, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 314, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_error_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 314, __pyx_L1_error)
@@ -41458,6 +43853,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *         return False
  * 
  */
+      __Pyx_TraceLine(315,0,__PYX_ERR(1, 315, __pyx_L1_error))
       __pyx_r = 1;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       goto __pyx_L0;
@@ -41478,6 +43874,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  *             if i < self._offset:
  *                 continue
  */
+    __Pyx_TraceLine(311,0,__PYX_ERR(1, 311, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -41489,6 +43886,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(1, 316, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -41509,6 +43907,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_entry);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41536,10 +43935,12 @@ static int __pyx_pw_4lxml_5etree_13_ListErrorLog_15__nonzero__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[1], 318, 0, __PYX_ERR(1, 318, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":319
  * 
@@ -41548,6 +43949,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_
  * 
  *     def filter_domains(self, domains):
  */
+  __Pyx_TraceLine(319,0,__PYX_ERR(1, 319, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
@@ -41573,6 +43975,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree._ListErrorLog.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41604,6 +44007,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   PyObject *__pyx_v_filtered = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -41613,7 +44017,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   Py_ssize_t __pyx_t_6;
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__38)
   __Pyx_RefNannySetupContext("filter_domains", 0);
+  __Pyx_TraceCall("filter_domains", __pyx_f[1], 321, 0, __PYX_ERR(1, 321, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_domains);
 
   /* "src/lxml/xmlerror.pxi":326
@@ -41623,6 +44029,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  *             domains = (domains,)
  *         filtered = [entry for entry in self if entry.domain in domains]
  */
+  __Pyx_TraceLine(326,0,__PYX_ERR(1, 326, __pyx_L1_error))
   __pyx_t_2 = PyInt_Check(__pyx_v_domains); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -41644,6 +44051,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  *         filtered = [entry for entry in self if entry.domain in domains]
  *         return _ListErrorLog(filtered, None, None)
  */
+    __Pyx_TraceLine(327,0,__PYX_ERR(1, 327, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 327, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_domains);
@@ -41668,6 +44076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
+  __Pyx_TraceLine(328,0,__PYX_ERR(1, 328, __pyx_L1_error))
   __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
@@ -41732,6 +44141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  * 
  *     def filter_types(self, types):
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(1, 329, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -41771,6 +44181,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   __Pyx_XDECREF(__pyx_v_filtered);
   __Pyx_XDECREF(__pyx_v_domains);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -41802,6 +44213,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   PyObject *__pyx_v_filtered = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -41811,7 +44223,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   Py_ssize_t __pyx_t_6;
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__39)
   __Pyx_RefNannySetupContext("filter_types", 0);
+  __Pyx_TraceCall("filter_types", __pyx_f[1], 331, 0, __PYX_ERR(1, 331, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_types);
 
   /* "src/lxml/xmlerror.pxi":338
@@ -41821,6 +44235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  *             types = (types,)
  *         filtered = [entry for entry in self if entry.type in types]
  */
+  __Pyx_TraceLine(338,0,__PYX_ERR(1, 338, __pyx_L1_error))
   __pyx_t_2 = PyInt_Check(__pyx_v_types); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -41842,6 +44257,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  *         filtered = [entry for entry in self if entry.type in types]
  *         return _ListErrorLog(filtered, None, None)
  */
+    __Pyx_TraceLine(339,0,__PYX_ERR(1, 339, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 339, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_types);
@@ -41866,6 +44282,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
+  __Pyx_TraceLine(340,0,__PYX_ERR(1, 340, __pyx_L1_error))
   __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 340, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
@@ -41930,6 +44347,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  * 
  *     def filter_levels(self, levels):
  */
+  __Pyx_TraceLine(341,0,__PYX_ERR(1, 341, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -41969,6 +44387,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   __Pyx_XDECREF(__pyx_v_filtered);
   __Pyx_XDECREF(__pyx_v_types);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42000,6 +44419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   PyObject *__pyx_v_filtered = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -42009,7 +44429,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   Py_ssize_t __pyx_t_6;
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__40)
   __Pyx_RefNannySetupContext("filter_levels", 0);
+  __Pyx_TraceCall("filter_levels", __pyx_f[1], 343, 0, __PYX_ERR(1, 343, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_levels);
 
   /* "src/lxml/xmlerror.pxi":350
@@ -42019,6 +44441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  *             levels = (levels,)
  *         filtered = [entry for entry in self if entry.level in levels]
  */
+  __Pyx_TraceLine(350,0,__PYX_ERR(1, 350, __pyx_L1_error))
   __pyx_t_2 = PyInt_Check(__pyx_v_levels); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -42040,6 +44463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  *         filtered = [entry for entry in self if entry.level in levels]
  *         return _ListErrorLog(filtered, None, None)
  */
+    __Pyx_TraceLine(351,0,__PYX_ERR(1, 351, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 351, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_levels);
@@ -42064,6 +44488,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
+  __Pyx_TraceLine(352,0,__PYX_ERR(1, 352, __pyx_L1_error))
   __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 352, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
@@ -42128,6 +44553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  * 
  *     def filter_from_level(self, level):
  */
+  __Pyx_TraceLine(353,0,__PYX_ERR(1, 353, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -42167,6 +44593,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   __Pyx_XDECREF(__pyx_v_filtered);
   __Pyx_XDECREF(__pyx_v_levels);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42198,6 +44625,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry = 0;
   PyObject *__pyx_v_filtered = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -42206,7 +44634,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__41)
   __Pyx_RefNannySetupContext("filter_from_level", 0);
+  __Pyx_TraceCall("filter_from_level", __pyx_f[1], 355, 0, __PYX_ERR(1, 355, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":361
  *         """
@@ -42215,6 +44645,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
+  __Pyx_TraceLine(361,0,__PYX_ERR(1, 361, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 361, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
@@ -42280,6 +44711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
  * 
  *     def filter_from_fatals(self):
  */
+  __Pyx_TraceLine(362,0,__PYX_ERR(1, 362, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 362, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -42319,6 +44751,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   __Pyx_XDECREF((PyObject *)__pyx_v_entry);
   __Pyx_XDECREF(__pyx_v_filtered);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42348,13 +44781,16 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_25filter_from_fatals(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__42)
   __Pyx_RefNannySetupContext("filter_from_fatals", 0);
+  __Pyx_TraceCall("filter_from_fatals", __pyx_f[1], 364, 0, __PYX_ERR(1, 364, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":369
  *         Convenience method to get all fatal error messages.
@@ -42363,6 +44799,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
  * 
  *     def filter_from_errors(self):
  */
+  __Pyx_TraceLine(369,0,__PYX_ERR(1, 369, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 369, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -42440,6 +44877,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42469,13 +44907,16 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_27filter_from_errors(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__43)
   __Pyx_RefNannySetupContext("filter_from_errors", 0);
+  __Pyx_TraceCall("filter_from_errors", __pyx_f[1], 371, 0, __PYX_ERR(1, 371, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":376
  *         Convenience method to get all error messages or worse.
@@ -42484,6 +44925,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
  * 
  *     def filter_from_warnings(self):
  */
+  __Pyx_TraceLine(376,0,__PYX_ERR(1, 376, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 376, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -42561,6 +45003,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42590,13 +45033,16 @@ static PyObject *__pyx_pw_4lxml_5etree_13_ListErrorLog_29filter_from_warnings(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(struct __pyx_obj_4lxml_5etree__ListErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__44)
   __Pyx_RefNannySetupContext("filter_from_warnings", 0);
+  __Pyx_TraceCall("filter_from_warnings", __pyx_f[1], 378, 0, __PYX_ERR(1, 378, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":383
  *         Convenience method to get all warnings or worse.
@@ -42605,6 +45051,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
  * 
  * 
  */
+  __Pyx_TraceLine(383,0,__PYX_ERR(1, 383, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 383, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -42682,6 +45129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42696,9 +45144,11 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
 
 static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_obj_4lxml_5etree__ErrorLogContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_log) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("push_error_log", 0);
+  __Pyx_TraceCall("push_error_log", __pyx_f[1], 400, 0, __PYX_ERR(1, 400, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":401
  * 
@@ -42707,6 +45157,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         self.old_error_context = xmlerror.xmlStructuredErrorContext
  *         xmlerror.xmlSetStructuredErrorFunc(
  */
+  __Pyx_TraceLine(401,0,__PYX_ERR(1, 401, __pyx_L1_error))
   __pyx_v_self->old_error_func = xmlStructuredError;
 
   /* "src/lxml/xmlerror.pxi":402
@@ -42716,6 +45167,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         xmlerror.xmlSetStructuredErrorFunc(
  *             <void*>log, <xmlerror.xmlStructuredErrorFunc>_receiveError)
  */
+  __Pyx_TraceLine(402,0,__PYX_ERR(1, 402, __pyx_L1_error))
   __pyx_v_self->old_error_context = xmlStructuredErrorContext;
 
   /* "src/lxml/xmlerror.pxi":403
@@ -42725,6 +45177,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *             <void*>log, <xmlerror.xmlStructuredErrorFunc>_receiveError)
  * 
  */
+  __Pyx_TraceLine(403,0,__PYX_ERR(1, 403, __pyx_L1_error))
   xmlSetStructuredErrorFunc(((void *)__pyx_v_log), ((xmlStructuredErrorFunc)__pyx_f_4lxml_5etree__receiveError));
 
   /* "src/lxml/xmlerror.pxi":407
@@ -42734,6 +45187,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         self.old_xslt_error_context = xslt.xsltGenericErrorContext
  *         self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)
  */
+  __Pyx_TraceLine(407,0,__PYX_ERR(1, 407, __pyx_L1_error))
   __pyx_v_self->old_xslt_error_func = xsltGenericError;
 
   /* "src/lxml/xmlerror.pxi":408
@@ -42743,6 +45197,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, log)
  */
+  __Pyx_TraceLine(408,0,__PYX_ERR(1, 408, __pyx_L1_error))
   __pyx_v_self->old_xslt_error_context = xsltGenericErrorContext;
 
   /* "src/lxml/xmlerror.pxi":409
@@ -42752,6 +45207,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         _setThreadErrorLog(XSLT_ERROR_LOG, log)
  *         xslt.xsltSetGenericErrorFunc(
  */
+  __Pyx_TraceLine(409,0,__PYX_ERR(1, 409, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_XSLTErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -42767,6 +45223,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *         xslt.xsltSetGenericErrorFunc(
  *             NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  */
+  __Pyx_TraceLine(410,0,__PYX_ERR(1, 410, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setThreadErrorLog(__pyx_n_u_XSLTErrorLog, __pyx_v_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 410, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -42778,6 +45235,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  *             NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  *         return 0
  */
+  __Pyx_TraceLine(411,0,__PYX_ERR(1, 411, __pyx_L1_error))
   xsltSetGenericErrorFunc(NULL, ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError));
 
   /* "src/lxml/xmlerror.pxi":413
@@ -42787,6 +45245,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  * 
  *     cdef int pop_error_log(self) except -1:
  */
+  __Pyx_TraceLine(413,0,__PYX_ERR(1, 413, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -42804,6 +45263,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree._ErrorLogContext.push_error_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42818,10 +45278,12 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
 
 static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_obj_4lxml_5etree__ErrorLogContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("pop_error_log", 0);
+  __Pyx_TraceCall("pop_error_log", __pyx_f[1], 415, 0, __PYX_ERR(1, 415, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":416
  * 
@@ -42830,6 +45292,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  *             self.old_error_context, self.old_error_func)
  *         xslt.xsltSetGenericErrorFunc(
  */
+  __Pyx_TraceLine(416,0,__PYX_ERR(1, 416, __pyx_L1_error))
   xmlSetStructuredErrorFunc(__pyx_v_self->old_error_context, __pyx_v_self->old_error_func);
 
   /* "src/lxml/xmlerror.pxi":418
@@ -42839,6 +45302,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  *             self.old_xslt_error_context, self.old_xslt_error_func)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, self.old_xslt_error_log)
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(1, 418, __pyx_L1_error))
   xsltSetGenericErrorFunc(__pyx_v_self->old_xslt_error_context, __pyx_v_self->old_xslt_error_func);
 
   /* "src/lxml/xmlerror.pxi":420
@@ -42848,6 +45312,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  *         self.old_xslt_error_log= None
  *         return 0
  */
+  __Pyx_TraceLine(420,0,__PYX_ERR(1, 420, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->old_xslt_error_log);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__setThreadErrorLog(__pyx_n_u_XSLTErrorLog, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 420, __pyx_L1_error)
@@ -42862,6 +45327,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  *         return 0
  * 
  */
+  __Pyx_TraceLine(421,0,__PYX_ERR(1, 421, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->old_xslt_error_log);
@@ -42875,6 +45341,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  * 
  * 
  */
+  __Pyx_TraceLine(422,0,__PYX_ERR(1, 422, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -42893,6 +45360,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
   __Pyx_AddTraceback("lxml.etree._ErrorLogContext.pop_error_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42923,9 +45391,11 @@ static int __pyx_pw_4lxml_5etree_9_ErrorLog_1__cinit__(PyObject *__pyx_v_self, P
 
 static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[1], 427, 0, __PYX_ERR(1, 427, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":428
  *     cdef list _logContexts
@@ -42934,6 +45404,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
  * 
  *     def __init__(self):
  */
+  __Pyx_TraceLine(428,0,__PYX_ERR(1, 428, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -42958,6 +45429,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   __Pyx_AddTraceback("lxml.etree._ErrorLog.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -42988,6 +45460,7 @@ static int __pyx_pw_4lxml_5etree_9_ErrorLog_3__init__(PyObject *__pyx_v_self, Py
 
 static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -42996,6 +45469,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 430, 0, __PYX_ERR(1, 430, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":431
  * 
@@ -43004,6 +45478,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(431,0,__PYX_ERR(1, 431, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 431, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error)
@@ -43083,6 +45558,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   __Pyx_AddTraceback("lxml.etree._ErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43097,9 +45573,11 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
 
 static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__enter__", 0);
+  __Pyx_TraceCall("__enter__", __pyx_f[1], 434, 0, __PYX_ERR(1, 434, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":435
  *     @cython.final
@@ -43108,6 +45586,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
  * 
  *     def __exit__(self, *args):
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(1, 435, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_connect(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 435, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -43125,6 +45604,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
   __Pyx_AddTraceback("lxml.etree._ErrorLog.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43158,9 +45638,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_5__exit__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__45)
   __Pyx_RefNannySetupContext("__exit__", 0);
+  __Pyx_TraceCall("__exit__", __pyx_f[1], 437, 0, __PYX_ERR(1, 437, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":439
  *     def __exit__(self, *args):
@@ -43169,6 +45652,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(439,0,__PYX_ERR(1, 439, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":437
@@ -43187,6 +45671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43202,11 +45687,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
 static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ErrorLogContext *__pyx_v_context = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("connect", 0);
+  __Pyx_TraceCall("connect", __pyx_f[1], 442, 0, __PYX_ERR(1, 442, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":443
  *     @cython.final
@@ -43215,6 +45702,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  *         del self._entries[:]
  * 
  */
+  __Pyx_TraceLine(443,0,__PYX_ERR(1, 443, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._first_error);
@@ -43228,6 +45716,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  * 
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  */
+  __Pyx_TraceLine(444,0,__PYX_ERR(1, 444, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(1, 444, __pyx_L1_error)
@@ -43241,6 +45730,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  *         context.push_error_log(self)
  *         self._logContexts.append(context)
  */
+  __Pyx_TraceLine(446,0,__PYX_ERR(1, 446, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ErrorLogContext(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ErrorLogContext), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 446, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ErrorLogContext *)__pyx_t_1);
@@ -43253,6 +45743,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  *         self._logContexts.append(context)
  *         return 0
  */
+  __Pyx_TraceLine(447,0,__PYX_ERR(1, 447, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 447, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":448
@@ -43262,6 +45753,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  *         return 0
  * 
  */
+  __Pyx_TraceLine(448,0,__PYX_ERR(1, 448, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_logContexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(1, 448, __pyx_L1_error)
@@ -43275,6 +45767,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(1, 449, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -43293,6 +45786,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43308,10 +45802,12 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
 static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ErrorLogContext *__pyx_v_context = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("disconnect", 0);
+  __Pyx_TraceCall("disconnect", __pyx_f[1], 452, 0, __PYX_ERR(1, 452, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":453
  *     @cython.final
@@ -43320,6 +45816,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
  *         context.pop_error_log()
  *         return 0
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(1, 453, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_logContexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
     __PYX_ERR(1, 453, __pyx_L1_error)
@@ -43337,6 +45834,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
  *         return 0
  * 
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(1, 454, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(__pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 454, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":455
@@ -43346,6 +45844,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
  * 
  *     cpdef clear(self):
  */
+  __Pyx_TraceLine(455,0,__PYX_ERR(1, 455, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -43364,6 +45863,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43379,12 +45879,15 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
 static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_7clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__46)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[1], 457, 0, __PYX_ERR(1, 457, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -43427,6 +45930,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  *         self.last_error = None
  *         self._offset = 0
  */
+  __Pyx_TraceLine(458,0,__PYX_ERR(1, 458, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._first_error);
@@ -43440,6 +45944,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  *         self._offset = 0
  *         del self._entries[:]
  */
+  __Pyx_TraceLine(459,0,__PYX_ERR(1, 459, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base.last_error);
@@ -43453,6 +45958,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  *         del self._entries[:]
  * 
  */
+  __Pyx_TraceLine(460,0,__PYX_ERR(1, 460, __pyx_L1_error))
   __pyx_v_self->__pyx_base._offset = 0;
 
   /* "src/lxml/xmlerror.pxi":461
@@ -43462,6 +45968,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  * 
  *     cpdef copy(self):
  */
+  __Pyx_TraceLine(461,0,__PYX_ERR(1, 461, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(1, 461, __pyx_L1_error)
@@ -43488,6 +45995,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43508,9 +46016,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_7clear(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__46)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear (wrapper)", __pyx_f[1], 457, 0, __PYX_ERR(1, 457, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_clear(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -43525,6 +46036,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43540,12 +46052,15 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
 static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_9copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__47)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[1], 463, 0, __PYX_ERR(1, 463, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -43588,6 +46103,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  *             self._entries[self._offset:],
  *             self._first_error, self.last_error)
  */
+  __Pyx_TraceLine(466,0,__PYX_ERR(1, 466, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "src/lxml/xmlerror.pxi":467
@@ -43597,6 +46113,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  *             self._first_error, self.last_error)
  * 
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(1, 467, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(1, 467, __pyx_L1_error)
@@ -43611,6 +46128,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  *             self._entries[self._offset:],
  *             self._first_error, self.last_error)
  */
+  __Pyx_TraceLine(466,0,__PYX_ERR(1, 466, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 466, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -43647,6 +46165,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43668,9 +46187,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_9copy(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__47)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy (wrapper)", __pyx_f[1], 463, 0, __PYX_ERR(1, 463, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 463, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -43685,6 +46207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43712,10 +46235,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_11__iter__(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[1], 470, 0, __PYX_ERR(1, 470, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":471
  * 
@@ -43724,6 +46249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
+  __Pyx_TraceLine(471,0,__PYX_ERR(1, 471, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -43754,6 +46280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43769,6 +46296,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
 static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_13receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -43779,7 +46307,9 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__48)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive", __pyx_f[1], 473, 0, __PYX_ERR(1, 473, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -43847,6 +46377,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  *             self._first_error = entry
  *         self._entries.append(entry)
  */
+  __Pyx_TraceLine(474,0,__PYX_ERR(1, 474, __pyx_L1_error))
   __pyx_t_7 = (((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error) == Py_None);
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
@@ -43866,6 +46397,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  *         self._entries.append(entry)
  * 
  */
+    __Pyx_TraceLine(475,0,__PYX_ERR(1, 475, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_entry));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
     __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._first_error);
@@ -43888,6 +46420,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  * 
  * cdef class _DomainErrorLog(_ErrorLog):
  */
+  __Pyx_TraceLine(476,0,__PYX_ERR(1, 476, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(1, 476, __pyx_L1_error)
@@ -43915,6 +46448,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -43940,9 +46474,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_13receive(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__48)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive (wrapper)", __pyx_f[1], 473, 0, __PYX_ERR(1, 473, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 473, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -43957,6 +46494,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44021,12 +46559,14 @@ static int __pyx_pw_4lxml_5etree_15_DomainErrorLog_1__init__(PyObject *__pyx_v_s
 
 static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lxml_5etree__DomainErrorLog *__pyx_v_self, PyObject *__pyx_v_domains) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 479, 0, __PYX_ERR(1, 479, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":480
  * cdef class _DomainErrorLog(_ErrorLog):
@@ -44035,6 +46575,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
  *         self._accepted_domains = tuple(domains)
  * 
  */
+  __Pyx_TraceLine(480,0,__PYX_ERR(1, 480, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 480, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -44089,6 +46630,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
+  __Pyx_TraceLine(481,0,__PYX_ERR(1, 481, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_domains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 481, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains, __pyx_t_1) < 0) __PYX_ERR(1, 481, __pyx_L1_error)
@@ -44113,6 +46655,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   __Pyx_AddTraceback("lxml.etree._DomainErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44128,6 +46671,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
 static PyObject *__pyx_pw_4lxml_5etree_15_DomainErrorLog_3receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj_4lxml_5etree__DomainErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -44136,7 +46680,9 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__49)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive", __pyx_f[1], 483, 0, __PYX_ERR(1, 483, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -44204,6 +46750,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
  *             _ErrorLog.receive(self, entry)
  * 
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(1, 484, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 484, __pyx_L1_error)
@@ -44221,6 +46768,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):
  */
+    __Pyx_TraceLine(485,0,__PYX_ERR(1, 485, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self), __pyx_v_entry, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 485, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -44255,6 +46803,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44280,9 +46829,12 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DomainErrorLog_3receive(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_obj_4lxml_5etree__DomainErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__49)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive (wrapper)", __pyx_f[1], 483, 0, __PYX_ERR(1, 483, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_15_DomainErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 483, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -44297,6 +46849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44361,6 +46914,7 @@ static int __pyx_pw_4lxml_5etree_17_RotatingErrorLog_1__init__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4lxml_5etree__RotatingErrorLog *__pyx_v_self, PyObject *__pyx_v_max_len) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -44368,6 +46922,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 489, 0, __PYX_ERR(1, 489, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":490
  *     cdef int _max_len
@@ -44376,6 +46931,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
  *         self._max_len = max_len
  * 
  */
+  __Pyx_TraceLine(490,0,__PYX_ERR(1, 490, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 490, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -44430,6 +46986,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(1, 491, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_max_len); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 491, __pyx_L1_error)
   __pyx_v_self->_max_len = __pyx_t_5;
 
@@ -44452,6 +47009,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44468,6 +47026,7 @@ static PyObject *__pyx_pw_4lxml_5etree_17_RotatingErrorLog_3receive(PyObject *__
 static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_obj_4lxml_5etree__RotatingErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry, int __pyx_skip_dispatch) {
   int __pyx_v_offset;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -44480,7 +47039,9 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   int __pyx_t_9;
   Py_ssize_t __pyx_t_10;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__50)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive", __pyx_f[1], 493, 0, __PYX_ERR(1, 493, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -44548,6 +47109,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *             self._first_error = entry
  *         self._entries.append(entry)
  */
+  __Pyx_TraceLine(494,0,__PYX_ERR(1, 494, __pyx_L1_error))
   __pyx_t_7 = (((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error) == Py_None);
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
@@ -44567,6 +47129,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *         self._entries.append(entry)
  * 
  */
+    __Pyx_TraceLine(495,0,__PYX_ERR(1, 495, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_entry));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
     __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error);
@@ -44589,6 +47152,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  * 
  *         if len(self._entries) > self._max_len:
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(1, 496, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base.__pyx_base._entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(1, 496, __pyx_L1_error)
@@ -44602,6 +47166,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:
  */
+  __Pyx_TraceLine(498,0,__PYX_ERR(1, 498, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base._entries;
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
@@ -44620,6 +47185,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *             if self._offset > self._max_len // 3:
  *                 offset = self._offset
  */
+    __Pyx_TraceLine(499,0,__PYX_ERR(1, 499, __pyx_L1_error))
     __pyx_v_self->__pyx_base.__pyx_base._offset = (__pyx_v_self->__pyx_base.__pyx_base._offset + 1);
 
     /* "src/lxml/xmlerror.pxi":500
@@ -44629,6 +47195,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *                 offset = self._offset
  *                 self._offset = 0
  */
+    __Pyx_TraceLine(500,0,__PYX_ERR(1, 500, __pyx_L1_error))
     __pyx_t_6 = ((__pyx_v_self->__pyx_base.__pyx_base._offset > __Pyx_div_long(__pyx_v_self->_max_len, 3)) != 0);
     if (__pyx_t_6) {
 
@@ -44639,6 +47206,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *                 self._offset = 0
  *                 del self._entries[:offset]
  */
+      __Pyx_TraceLine(501,0,__PYX_ERR(1, 501, __pyx_L1_error))
       __pyx_t_11 = __pyx_v_self->__pyx_base.__pyx_base._offset;
       __pyx_v_offset = __pyx_t_11;
 
@@ -44649,6 +47217,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  *                 del self._entries[:offset]
  * 
  */
+      __Pyx_TraceLine(502,0,__PYX_ERR(1, 502, __pyx_L1_error))
       __pyx_v_self->__pyx_base.__pyx_base._offset = 0;
 
       /* "src/lxml/xmlerror.pxi":503
@@ -44658,6 +47227,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  * 
  * cdef class PyErrorLog(_BaseErrorLog):
  */
+      __Pyx_TraceLine(503,0,__PYX_ERR(1, 503, __pyx_L1_error))
       if (unlikely(__pyx_v_self->__pyx_base.__pyx_base._entries == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(1, 503, __pyx_L1_error)
@@ -44703,6 +47273,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44728,9 +47299,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17_RotatingErrorLog_3receive(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx_obj_4lxml_5etree__RotatingErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__50)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive (wrapper)", __pyx_f[1], 493, 0, __PYX_ERR(1, 493, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -44745,6 +47319,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -44829,6 +47404,7 @@ static int __pyx_pw_4lxml_5etree_10PyErrorLog_1__init__(PyObject *__pyx_v_self,
 static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self, PyObject *__pyx_v_logger_name, PyObject *__pyx_v_logger) {
   PyObject *__pyx_v_logging = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -44838,6 +47414,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   int __pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 528, 0, __PYX_ERR(1, 528, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_logger);
 
   /* "src/lxml/xmlerror.pxi":529
@@ -44847,6 +47424,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *         import logging
  *         self.level_map = {
  */
+  __Pyx_TraceLine(529,0,__PYX_ERR(1, 529, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 529, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -44906,6 +47484,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,
  */
+  __Pyx_TraceLine(530,0,__PYX_ERR(1, 530, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 530, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_logging = __pyx_t_1;
@@ -44918,6 +47497,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             ErrorLevels.ERROR   : logging.ERROR,
  *             ErrorLevels.FATAL   : logging.CRITICAL
  */
+  __Pyx_TraceLine(532,0,__PYX_ERR(1, 532, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 532, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 532, __pyx_L1_error)
@@ -44938,6 +47518,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             ErrorLevels.FATAL   : logging.CRITICAL
  *             }
  */
+  __Pyx_TraceLine(533,0,__PYX_ERR(1, 533, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 533, __pyx_L1_error)
@@ -44956,6 +47537,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             }
  *         self._map_level = self.level_map.get
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(1, 534, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 534, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 534, __pyx_L1_error)
@@ -44974,6 +47556,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             ErrorLevels.WARNING : logging.WARNING,
  *             ErrorLevels.ERROR   : logging.ERROR,
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(1, 531, __pyx_L1_error))
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->level_map);
   __Pyx_DECREF(__pyx_v_self->level_map);
@@ -44987,6 +47570,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *         if logger is None:
  *             if logger_name:
  */
+  __Pyx_TraceLine(536,0,__PYX_ERR(1, 536, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->level_map, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -45002,6 +47586,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             if logger_name:
  *                 logger = logging.getLogger(logger_name)
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(1, 537, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_logger == Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -45013,6 +47598,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *                 logger = logging.getLogger(logger_name)
  *             else:
  */
+    __Pyx_TraceLine(538,0,__PYX_ERR(1, 538, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_logger_name); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 538, __pyx_L1_error)
     if (__pyx_t_7) {
 
@@ -45023,6 +47609,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *             else:
  *                 logger = logging.getLogger()
  */
+      __Pyx_TraceLine(539,0,__PYX_ERR(1, 539, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 539, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_5 = NULL;
@@ -45088,6 +47675,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  *         self._log = logger.log
  * 
  */
+    __Pyx_TraceLine(541,0,__PYX_ERR(1, 541, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 541, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -45130,6 +47718,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  * 
  *     cpdef copy(self):
  */
+  __Pyx_TraceLine(542,0,__PYX_ERR(1, 542, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_logger, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 542, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -45159,6 +47748,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_logging);
   __Pyx_XDECREF(__pyx_v_logger);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45174,12 +47764,15 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
 static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__51)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[1], 544, 0, __PYX_ERR(1, 544, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -45222,6 +47815,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
  * 
  *     def log(self, log_entry, message, *args):
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(1, 547, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -45261,6 +47855,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45282,9 +47877,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_3copy(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__51)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy (wrapper)", __pyx_f[1], 544, 0, __PYX_ERR(1, 544, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -45299,6 +47897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45390,6 +47989,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_5log(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self, PyObject *__pyx_v_log_entry, PyObject *__pyx_v_message, PyObject *__pyx_v_args) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -45397,7 +47997,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__52)
   __Pyx_RefNannySetupContext("log", 0);
+  __Pyx_TraceCall("log", __pyx_f[1], 549, 0, __PYX_ERR(1, 549, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":562
  *         """
@@ -45406,6 +48008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
  *             message, *args
  *             )
  */
+  __Pyx_TraceLine(562,0,__PYX_ERR(1, 562, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_log_entry, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 562, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->_map_level);
@@ -45464,6 +48067,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(1, 561, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -45480,6 +48084,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
  *             )
  * 
  */
+  __Pyx_TraceLine(563,0,__PYX_ERR(1, 563, __pyx_L1_error))
   __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -45491,6 +48096,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(1, 561, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_log, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -45517,6 +48123,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45532,6 +48139,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
 static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_7receive(PyObject *__pyx_v_self, PyObject *__pyx_v_log_entry); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_log_entry, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -45539,7 +48147,9 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__53)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive", __pyx_f[1], 566, 0, __PYX_ERR(1, 566, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -45607,6 +48217,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
  * 
  * # thread-local, global list log to collect error output messages from
  */
+  __Pyx_TraceLine(577,0,__PYX_ERR(1, 577, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = PyObject_Repr(((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 577, __pyx_L1_error)
@@ -45681,6 +48292,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45707,9 +48319,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_7receive(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self, struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_log_entry) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__53)
   __Pyx_RefNannySetupContext("receive", 0);
+  __Pyx_TraceCall("receive (wrapper)", __pyx_f[1], 566, 0, __PYX_ERR(1, 566, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_receive(__pyx_v_self, __pyx_v_log_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -45724,6 +48339,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45751,16 +48367,22 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_9level_map_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_9level_map___get__(struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 525, 0, __PYX_ERR(1, 525, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->level_map);
   __pyx_r = __pyx_v_self->level_map;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.PyErrorLog.level_map.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45777,6 +48399,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   PyObject *__pyx_v_thread_dict;
   struct __pyx_obj_4lxml_5etree__RotatingErrorLog *__pyx_v_log = NULL;
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -45788,6 +48411,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_getThreadErrorLog", 0);
+  __Pyx_TraceCall("_getThreadErrorLog", __pyx_f[1], 585, 0, __PYX_ERR(1, 585, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":588
  *     u"""Retrieve the current error log with name 'name' of this thread."""
@@ -45796,6 +48420,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  */
+  __Pyx_TraceLine(588,0,__PYX_ERR(1, 588, __pyx_L1_error))
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
   /* "src/lxml/xmlerror.pxi":589
@@ -45805,6 +48430,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *         return __GLOBAL_ERROR_LOG
  *     try:
  */
+  __Pyx_TraceLine(589,0,__PYX_ERR(1, 589, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -45815,6 +48441,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *     try:
  *         return (<object>thread_dict)[name]
  */
+    __Pyx_TraceLine(590,0,__PYX_ERR(1, 590, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
     __pyx_r = __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG;
@@ -45836,6 +48463,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *         return (<object>thread_dict)[name]
  *     except KeyError:
  */
+  __Pyx_TraceLine(591,0,__PYX_ERR(1, 591, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -45852,6 +48480,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *     except KeyError:
  *         log = (<object>thread_dict)[name] = \
  */
+      __Pyx_TraceLine(592,0,__PYX_ERR(1, 592, __pyx_L4_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 592, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -45878,6 +48507,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *         log = (<object>thread_dict)[name] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  */
+    __Pyx_TraceLine(593,0,__PYX_ERR(1, 593, __pyx_L6_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree._getThreadErrorLog", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -45893,7 +48523,8 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *         return log
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 595, __pyx_L6_except_error)
+      __Pyx_TraceLine(595,0,__PYX_ERR(1, 595, __pyx_L6_except_error))
+      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 595, __pyx_L6_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_t_9);
       __pyx_v_log = ((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_t_9);
@@ -45905,6 +48536,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  *         return log
  */
+      __Pyx_TraceLine(594,0,__PYX_ERR(1, 594, __pyx_L6_except_error))
       if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name, __pyx_t_9) < 0)) __PYX_ERR(1, 594, __pyx_L6_except_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
@@ -45915,6 +48547,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  * 
  * 
  */
+      __Pyx_TraceLine(596,0,__PYX_ERR(1, 596, __pyx_L6_except_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __Pyx_INCREF(((PyObject *)__pyx_v_log));
       __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log);
@@ -45971,6 +48604,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_log);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -45986,9 +48620,11 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
 static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name, struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_log) {
   PyObject *__pyx_v_thread_dict;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_setThreadErrorLog", 0);
+  __Pyx_TraceCall("_setThreadErrorLog", __pyx_f[1], 599, 0, __PYX_ERR(1, 599, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":602
  *     u"""Set the global error log of this thread."""
@@ -45997,6 +48633,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  *     if thread_dict is NULL:
  *         if name == GLOBAL_ERROR_LOG:
  */
+  __Pyx_TraceLine(602,0,__PYX_ERR(1, 602, __pyx_L1_error))
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
   /* "src/lxml/xmlerror.pxi":603
@@ -46006,6 +48643,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  *         if name == GLOBAL_ERROR_LOG:
  *             global __GLOBAL_ERROR_LOG
  */
+  __Pyx_TraceLine(603,0,__PYX_ERR(1, 603, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -46016,6 +48654,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  *             global __GLOBAL_ERROR_LOG
  *             __GLOBAL_ERROR_LOG = log
  */
+    __Pyx_TraceLine(604,0,__PYX_ERR(1, 604, __pyx_L1_error))
     __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_GlobalErrorLog, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 604, __pyx_L1_error)
     if (__pyx_t_1) {
 
@@ -46026,6 +48665,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  *     else:
  *         (<object>thread_dict)[name] = log
  */
+      __Pyx_TraceLine(606,0,__PYX_ERR(1, 606, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_log));
       __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
       __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG, __pyx_v_log);
@@ -46057,6 +48697,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  * 
  * 
  */
+  __Pyx_TraceLine(608,0,__PYX_ERR(1, 608, __pyx_L1_error))
   /*else*/ {
     if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name, ((PyObject *)__pyx_v_log)) < 0)) __PYX_ERR(1, 608, __pyx_L1_error)
   }
@@ -46078,6 +48719,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -46092,10 +48734,12 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
 
 static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__copyGlobalErrorLog", 0);
+  __Pyx_TraceCall("__copyGlobalErrorLog", __pyx_f[1], 611, 0, __PYX_ERR(1, 611, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":613
  * cdef __copyGlobalErrorLog():
@@ -46104,6 +48748,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
  * 
  * 
  */
+  __Pyx_TraceLine(613,0,__PYX_ERR(1, 613, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 613, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -46130,6 +48775,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -46164,9 +48810,12 @@ static PyObject *__pyx_pw_4lxml_5etree_5use_global_python_log(PyObject *__pyx_se
 
 static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4lxml_5etree_PyErrorLog *__pyx_v_log) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__55)
   __Pyx_RefNannySetupContext("use_global_python_log", 0);
+  __Pyx_TraceCall("use_global_python_log", __pyx_f[1], 616, 0, __PYX_ERR(1, 616, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":629
  *     function will only set the global error log of the current thread.
@@ -46175,6 +48824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
  * 
  * 
  */
+  __Pyx_TraceLine(629,0,__PYX_ERR(1, 629, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setThreadErrorLog(__pyx_n_u_GlobalErrorLog, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -46196,6 +48846,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -46210,6 +48861,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
 
 static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_log_handler = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -46217,6 +48869,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_forwardError", 0);
+  __Pyx_TraceCall("_forwardError", __pyx_f[1], 633, 0, __PYX_ERR(1, 633, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":635
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
@@ -46225,6 +48878,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  *         log_handler = <_BaseErrorLog>c_log_handler
  *     elif error.domain == xmlerror.XML_FROM_XSLT:
  */
+  __Pyx_TraceLine(635,0,__PYX_ERR(1, 635, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_log_handler != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -46235,6 +48889,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  *     elif error.domain == xmlerror.XML_FROM_XSLT:
  *         log_handler = _getThreadErrorLog(XSLT_ERROR_LOG)
  */
+    __Pyx_TraceLine(636,0,__PYX_ERR(1, 636, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_c_log_handler);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
@@ -46257,6 +48912,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  *         log_handler = _getThreadErrorLog(XSLT_ERROR_LOG)
  *     else:
  */
+  __Pyx_TraceLine(637,0,__PYX_ERR(1, 637, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_error->domain == XML_FROM_XSLT) != 0);
   if (__pyx_t_1) {
 
@@ -46267,6 +48923,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  *     else:
  *         log_handler = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
+    __Pyx_TraceLine(638,0,__PYX_ERR(1, 638, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_XSLTErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
@@ -46289,6 +48946,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  *     log_handler._receive(error)
  * 
  */
+  __Pyx_TraceLine(640,0,__PYX_ERR(1, 640, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 640, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -46304,6 +48962,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  * 
  * 
  */
+  __Pyx_TraceLine(641,0,__PYX_ERR(1, 641, __pyx_L1_error))
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(__pyx_v_log_handler, __pyx_v_error);
 
   /* "src/lxml/xmlerror.pxi":633
@@ -46321,6 +48980,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   __Pyx_WriteUnraisable("lxml.etree._forwardError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_log_handler);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -46336,6 +48996,8 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  */
 
 static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_receiveError", __pyx_f[1], 644, 1, __PYX_ERR(1, 644, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":647
  *     # no Python objects here, may be called without thread context !
@@ -46344,6 +49006,7 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
  * 
  * 
  */
+  __Pyx_TraceLine(647,1,__PYX_ERR(1, 647, __pyx_L1_error))
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, __pyx_v_error);
 
   /* "src/lxml/xmlerror.pxi":644
@@ -46355,6 +49018,11 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":650
@@ -46367,6 +49035,8 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
 
 static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler, char *__pyx_v_msg, ...) {
   va_list __pyx_v_args;
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_receiveXSLTError", __pyx_f[1], 650, 1, __PYX_ERR(1, 650, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":653
  *     # no Python objects here, may be called without thread context !
@@ -46375,6 +49045,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_XSLT, msg, args)
  *     cvarargs.va_end(args)
  */
+  __Pyx_TraceLine(653,1,__PYX_ERR(1, 653, __pyx_L1_error))
   va_start(__pyx_v_args, __pyx_v_msg);
 
   /* "src/lxml/xmlerror.pxi":654
@@ -46384,6 +49055,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  *     cvarargs.va_end(args)
  * 
  */
+  __Pyx_TraceLine(654,1,__PYX_ERR(1, 654, __pyx_L1_error))
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_XSLT, __pyx_v_msg, __pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":655
@@ -46393,6 +49065,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  * 
  * cdef void _receiveRelaxNGParseError(void* c_log_handler, char* msg, ...) nogil:
  */
+  __Pyx_TraceLine(655,1,__PYX_ERR(1, 655, __pyx_L1_error))
   va_end(__pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":650
@@ -46404,6 +49077,11 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveXSLTError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":657
@@ -46416,6 +49094,8 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
 
 static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_handler, char *__pyx_v_msg, ...) {
   va_list __pyx_v_args;
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_receiveRelaxNGParseError", __pyx_f[1], 657, 1, __PYX_ERR(1, 657, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":660
  *     # no Python objects here, may be called without thread context !
@@ -46424,6 +49104,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGP, msg, args)
  *     cvarargs.va_end(args)
  */
+  __Pyx_TraceLine(660,1,__PYX_ERR(1, 660, __pyx_L1_error))
   va_start(__pyx_v_args, __pyx_v_msg);
 
   /* "src/lxml/xmlerror.pxi":661
@@ -46433,6 +49114,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  *     cvarargs.va_end(args)
  * 
  */
+  __Pyx_TraceLine(661,1,__PYX_ERR(1, 661, __pyx_L1_error))
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_RELAXNGP, __pyx_v_msg, __pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":662
@@ -46442,6 +49124,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  * 
  * cdef void _receiveRelaxNGValidationError(void* c_log_handler, char* msg, ...) nogil:
  */
+  __Pyx_TraceLine(662,1,__PYX_ERR(1, 662, __pyx_L1_error))
   va_end(__pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":657
@@ -46453,6 +49136,11 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveRelaxNGParseError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":664
@@ -46465,6 +49153,8 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
 
 static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_log_handler, char *__pyx_v_msg, ...) {
   va_list __pyx_v_args;
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_receiveRelaxNGValidationError", __pyx_f[1], 664, 1, __PYX_ERR(1, 664, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":667
  *     # no Python objects here, may be called without thread context !
@@ -46473,6 +49163,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGV, msg, args)
  *     cvarargs.va_end(args)
  */
+  __Pyx_TraceLine(667,1,__PYX_ERR(1, 667, __pyx_L1_error))
   va_start(__pyx_v_args, __pyx_v_msg);
 
   /* "src/lxml/xmlerror.pxi":668
@@ -46482,6 +49173,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  *     cvarargs.va_end(args)
  * 
  */
+  __Pyx_TraceLine(668,1,__PYX_ERR(1, 668, __pyx_L1_error))
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_RELAXNGV, __pyx_v_msg, __pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":669
@@ -46491,6 +49183,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  * 
  * # dummy function: no log output at all
  */
+  __Pyx_TraceLine(669,1,__PYX_ERR(1, 669, __pyx_L1_error))
   va_end(__pyx_v_args);
 
   /* "src/lxml/xmlerror.pxi":664
@@ -46502,6 +49195,11 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveRelaxNGValidationError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":672
@@ -46513,8 +49211,15 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  */
 
 static void __pyx_f_4lxml_5etree__nullGenericErrorFunc(CYTHON_UNUSED void *__pyx_v_ctxt, CYTHON_UNUSED char *__pyx_v_msg, ...) {
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_nullGenericErrorFunc", __pyx_f[1], 672, 1, __PYX_ERR(1, 672, __pyx_L1_error));
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._nullGenericErrorFunc", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":676
@@ -46529,11 +49234,13 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
   int __pyx_v_c_domain = ((int)-1);
   xmlGenericErrorFunc __pyx_v_error_func;
   void *__pyx_v_c_log;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_connectGenericErrorLog", 0);
+  __Pyx_TraceCall("_connectGenericErrorLog", __pyx_f[1], 676, 0, __PYX_ERR(1, 676, __pyx_L1_error));
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
       __pyx_v_c_domain = __pyx_optional_args->c_domain;
@@ -46547,6 +49254,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *     c_log = <void*>log
  *     if c_domain == xmlerror.XML_FROM_XSLT:
  */
+  __Pyx_TraceLine(677,0,__PYX_ERR(1, 677, __pyx_L1_error))
   __pyx_v_error_func = NULL;
 
   /* "src/lxml/xmlerror.pxi":678
@@ -46556,6 +49264,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *     if c_domain == xmlerror.XML_FROM_XSLT:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError
  */
+  __Pyx_TraceLine(678,0,__PYX_ERR(1, 678, __pyx_L1_error))
   __pyx_v_c_log = ((void *)__pyx_v_log);
 
   /* "src/lxml/xmlerror.pxi":679
@@ -46565,6 +49274,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGP:
  */
+  __Pyx_TraceLine(679,0,__PYX_ERR(1, 679, __pyx_L1_error))
   switch (__pyx_v_c_domain) {
     case XML_FROM_XSLT:
 
@@ -46575,6 +49285,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGP:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError
  */
+    __Pyx_TraceLine(680,0,__PYX_ERR(1, 680, __pyx_L1_error))
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError);
 
     /* "src/lxml/xmlerror.pxi":679
@@ -46593,6 +49304,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGV:
  */
+    __Pyx_TraceLine(681,0,__PYX_ERR(1, 681, __pyx_L1_error))
     case XML_FROM_RELAXNGP:
 
     /* "src/lxml/xmlerror.pxi":682
@@ -46602,6 +49314,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGV:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError
  */
+    __Pyx_TraceLine(682,0,__PYX_ERR(1, 682, __pyx_L1_error))
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveRelaxNGParseError);
 
     /* "src/lxml/xmlerror.pxi":681
@@ -46620,6 +49333,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError
  * 
  */
+    __Pyx_TraceLine(683,0,__PYX_ERR(1, 683, __pyx_L1_error))
     case XML_FROM_RELAXNGV:
 
     /* "src/lxml/xmlerror.pxi":684
@@ -46629,6 +49343,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  * 
  *     if log is None or error_func is NULL:
  */
+    __Pyx_TraceLine(684,0,__PYX_ERR(1, 684, __pyx_L1_error))
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveRelaxNGValidationError);
 
     /* "src/lxml/xmlerror.pxi":683
@@ -46649,6 +49364,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *         c_log = NULL
  *         error_func = <xmlerror.xmlGenericErrorFunc>_nullGenericErrorFunc
  */
+  __Pyx_TraceLine(686,0,__PYX_ERR(1, 686, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_log == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -46668,6 +49384,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *         error_func = <xmlerror.xmlGenericErrorFunc>_nullGenericErrorFunc
  *     xmlerror.xmlSetGenericErrorFunc(c_log, error_func)
  */
+    __Pyx_TraceLine(687,0,__PYX_ERR(1, 687, __pyx_L1_error))
     __pyx_v_c_log = NULL;
 
     /* "src/lxml/xmlerror.pxi":688
@@ -46677,6 +49394,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  *     xmlerror.xmlSetGenericErrorFunc(c_log, error_func)
  * 
  */
+    __Pyx_TraceLine(688,0,__PYX_ERR(1, 688, __pyx_L1_error))
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__nullGenericErrorFunc);
 
     /* "src/lxml/xmlerror.pxi":686
@@ -46695,6 +49413,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  * 
  * 
  */
+  __Pyx_TraceLine(689,0,__PYX_ERR(1, 689, __pyx_L1_error))
   xmlSetGenericErrorFunc(__pyx_v_c_log, __pyx_v_error_func);
 
   /* "src/lxml/xmlerror.pxi":676
@@ -46706,6 +49425,11 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._connectGenericErrorLog", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -46729,8 +49453,10 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   int __pyx_v_element_size;
   int __pyx_v_format_count;
   int __pyx_v_c_int;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("_receiveGenericError", __pyx_f[1], 692, 1, __PYX_ERR(1, 692, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":703
  *     cdef char* c_str
@@ -46739,6 +49465,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         return
  *     if msg[0] in b'\n\0':
  */
+  __Pyx_TraceLine(703,1,__PYX_ERR(1, 703, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_msg == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -46749,6 +49476,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     if msg[0] in b'\n\0':
  *         return
  */
+    __Pyx_TraceLine(704,1,__PYX_ERR(1, 704, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xmlerror.pxi":703
@@ -46767,6 +49495,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         return
  * 
  */
+  __Pyx_TraceLine(705,1,__PYX_ERR(1, 705, __pyx_L1_error))
   switch ((__pyx_v_msg[0])) {
     case '\x00':
     case '\n':
@@ -46778,6 +49507,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     c_text = c_element = c_error.file = c_error.node = NULL
  */
+    __Pyx_TraceLine(706,1,__PYX_ERR(1, 706, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xmlerror.pxi":705
@@ -46798,6 +49528,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     c_error.line = 0
  * 
  */
+  __Pyx_TraceLine(708,1,__PYX_ERR(1, 708, __pyx_L1_error))
   __pyx_v_c_text = NULL;
   __pyx_v_c_element = NULL;
   __pyx_v_c_error.file = NULL;
@@ -46810,6 +49541,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     # parse "NAME %s" chunks from the format string
  */
+  __Pyx_TraceLine(709,1,__PYX_ERR(1, 709, __pyx_L1_error))
   __pyx_v_c_error.line = 0;
 
   /* "src/lxml/xmlerror.pxi":712
@@ -46819,6 +49551,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     format_count = 0
  *     while c_pos[0]:
  */
+  __Pyx_TraceLine(712,1,__PYX_ERR(1, 712, __pyx_L1_error))
   __pyx_v_c_name_pos = __pyx_v_msg;
   __pyx_v_c_pos = __pyx_v_msg;
 
@@ -46829,6 +49562,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':
  */
+  __Pyx_TraceLine(713,1,__PYX_ERR(1, 713, __pyx_L1_error))
   __pyx_v_format_count = 0;
 
   /* "src/lxml/xmlerror.pxi":714
@@ -46838,6 +49572,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         if c_pos[0] == b'%':
  *             c_pos += 1
  */
+  __Pyx_TraceLine(714,1,__PYX_ERR(1, 714, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_pos[0]) != 0);
     if (!__pyx_t_1) break;
@@ -46849,6 +49584,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"
  */
+    __Pyx_TraceLine(715,1,__PYX_ERR(1, 715, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == '%') != 0);
     if (__pyx_t_1) {
 
@@ -46859,6 +49595,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             if c_pos[0] == b's':  # "%s"
  *                 format_count += 1
  */
+      __Pyx_TraceLine(716,1,__PYX_ERR(1, 716, __pyx_L1_error))
       __pyx_v_c_pos = (__pyx_v_c_pos + 1);
 
       /* "src/lxml/xmlerror.pxi":717
@@ -46868,6 +49605,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)
  */
+      __Pyx_TraceLine(717,1,__PYX_ERR(1, 717, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 's') != 0);
       if (__pyx_t_1) {
 
@@ -46878,6 +49616,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:
  */
+        __Pyx_TraceLine(718,1,__PYX_ERR(1, 718, __pyx_L1_error))
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
         /* "src/lxml/xmlerror.pxi":719
@@ -46887,6 +49626,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."
  */
+        __Pyx_TraceLine(719,1,__PYX_ERR(1, 719, __pyx_L1_error))
         __pyx_v_c_str = va_charptr(__pyx_v_args);
 
         /* "src/lxml/xmlerror.pxi":720
@@ -46896,6 +49636,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':
  */
+        __Pyx_TraceLine(720,1,__PYX_ERR(1, 720, __pyx_L1_error))
         __pyx_t_1 = ((__pyx_v_c_pos == (__pyx_v_msg + 1)) != 0);
         if (__pyx_t_1) {
 
@@ -46906,6 +49647,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  */
+          __Pyx_TraceLine(721,1,__PYX_ERR(1, 721, __pyx_L1_error))
           __pyx_v_c_text = __pyx_v_c_str;
 
           /* "src/lxml/xmlerror.pxi":720
@@ -46925,6 +49667,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  *                         c_element = c_str
  */
+        __Pyx_TraceLine(722,1,__PYX_ERR(1, 722, __pyx_L1_error))
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'e') != 0);
         if (__pyx_t_1) {
 
@@ -46935,6 +49678,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':
  */
+          __Pyx_TraceLine(723,1,__PYX_ERR(1, 723, __pyx_L1_error))
           __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"element %s"), 10) == 0) != 0);
           if (__pyx_t_1) {
 
@@ -46945,6 +49689,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  */
+            __Pyx_TraceLine(724,1,__PYX_ERR(1, 724, __pyx_L1_error))
             __pyx_v_c_element = __pyx_v_c_str;
 
             /* "src/lxml/xmlerror.pxi":723
@@ -46973,6 +49718,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  */
+        __Pyx_TraceLine(725,1,__PYX_ERR(1, 725, __pyx_L1_error))
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'f') != 0);
         if (__pyx_t_1) {
 
@@ -46983,6 +49729,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  *                                              c_str, 23) == 0:
  */
+          __Pyx_TraceLine(726,1,__PYX_ERR(1, 726, __pyx_L1_error))
           __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"file %s"), 7) == 0) != 0);
           if (__pyx_t_1) {
 
@@ -46993,6 +49740,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str
  */
+            __Pyx_TraceLine(728,1,__PYX_ERR(1, 728, __pyx_L1_error))
             __pyx_t_1 = ((strncmp(((char const *)"string://__STRING__XSLT"), __pyx_v_c_str, 23) == 0) != 0);
 
             /* "src/lxml/xmlerror.pxi":727
@@ -47002,6 +49750,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                                              c_str, 23) == 0:
  *                             c_str = '<xslt>'
  */
+            __Pyx_TraceLine(727,1,__PYX_ERR(1, 727, __pyx_L1_error))
             if (__pyx_t_1) {
 
               /* "src/lxml/xmlerror.pxi":729
@@ -47011,6 +49760,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"
  */
+              __Pyx_TraceLine(729,1,__PYX_ERR(1, 729, __pyx_L1_error))
               __pyx_v_c_str = ((char *)"<xslt>");
 
               /* "src/lxml/xmlerror.pxi":727
@@ -47029,6 +49779,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             elif c_pos[0] == b'd':  # "%d"
  *                 format_count += 1
  */
+            __Pyx_TraceLine(730,1,__PYX_ERR(1, 730, __pyx_L1_error))
             __pyx_v_c_error.file = __pyx_v_c_str;
 
             /* "src/lxml/xmlerror.pxi":726
@@ -47067,6 +49818,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)
  */
+      __Pyx_TraceLine(731,1,__PYX_ERR(1, 731, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 'd') != 0);
       if (__pyx_t_1) {
 
@@ -47077,6 +49829,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  */
+        __Pyx_TraceLine(732,1,__PYX_ERR(1, 732, __pyx_L1_error))
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
         /* "src/lxml/xmlerror.pxi":733
@@ -47086,6 +49839,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  *                     c_error.line = c_int
  */
+        __Pyx_TraceLine(733,1,__PYX_ERR(1, 733, __pyx_L1_error))
         __pyx_v_c_int = va_int(__pyx_v_args);
 
         /* "src/lxml/xmlerror.pxi":734
@@ -47095,6 +49849,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  */
+        __Pyx_TraceLine(734,1,__PYX_ERR(1, 734, __pyx_L1_error))
         __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"line %d"), 7) == 0) != 0);
         if (__pyx_t_1) {
 
@@ -47105,6 +49860,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  *                 format_count += 1
  */
+          __Pyx_TraceLine(735,1,__PYX_ERR(1, 735, __pyx_L1_error))
           __pyx_v_c_error.line = __pyx_v_c_int;
 
           /* "src/lxml/xmlerror.pxi":734
@@ -47133,6 +49889,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort
  */
+      __Pyx_TraceLine(736,1,__PYX_ERR(1, 736, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_c_pos[0]) != '%') != 0);
       if (__pyx_t_1) {
 
@@ -47143,6 +49900,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':
  */
+        __Pyx_TraceLine(737,1,__PYX_ERR(1, 737, __pyx_L1_error))
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
         /* "src/lxml/xmlerror.pxi":738
@@ -47152,6 +49910,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':
  */
+        __Pyx_TraceLine(738,1,__PYX_ERR(1, 738, __pyx_L1_error))
         goto __pyx_L5_break;
 
         /* "src/lxml/xmlerror.pxi":736
@@ -47181,6 +49940,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             if c_pos[1] != b'%':
  *                 c_name_pos = c_pos + 1
  */
+    __Pyx_TraceLine(739,1,__PYX_ERR(1, 739, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == ' ') != 0);
     if (__pyx_t_1) {
 
@@ -47191,6 +49951,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 c_name_pos = c_pos + 1
  *         c_pos += 1
  */
+      __Pyx_TraceLine(740,1,__PYX_ERR(1, 740, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_c_pos[1]) != '%') != 0);
       if (__pyx_t_1) {
 
@@ -47201,6 +49962,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         c_pos += 1
  * 
  */
+        __Pyx_TraceLine(741,1,__PYX_ERR(1, 741, __pyx_L1_error))
         __pyx_v_c_name_pos = (__pyx_v_c_pos + 1);
 
         /* "src/lxml/xmlerror.pxi":740
@@ -47229,6 +49991,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     c_message = NULL
  */
+    __Pyx_TraceLine(742,1,__PYX_ERR(1, 742, __pyx_L1_error))
     __pyx_v_c_pos = (__pyx_v_c_pos + 1);
   }
   __pyx_L5_break:;
@@ -47240,6 +50003,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     if c_text is NULL:
  *         if c_element is not NULL and format_count == 1:
  */
+  __Pyx_TraceLine(744,1,__PYX_ERR(1, 744, __pyx_L1_error))
   __pyx_v_c_message = NULL;
 
   /* "src/lxml/xmlerror.pxi":745
@@ -47249,6 +50013,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         if c_element is not NULL and format_count == 1:
  *             # special case: a single occurrence of 'element %s'
  */
+  __Pyx_TraceLine(745,1,__PYX_ERR(1, 745, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_text == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -47259,6 +50024,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             # special case: a single occurrence of 'element %s'
  *             text_size    = cstring_h.strlen(msg)
  */
+    __Pyx_TraceLine(746,1,__PYX_ERR(1, 746, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_element != NULL) != 0);
     if (__pyx_t_2) {
     } else {
@@ -47277,6 +50043,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             element_size = cstring_h.strlen(c_element)
  *             c_message = <char*>stdlib.malloc(
  */
+      __Pyx_TraceLine(748,1,__PYX_ERR(1, 748, __pyx_L1_error))
       __pyx_v_text_size = strlen(__pyx_v_msg);
 
       /* "src/lxml/xmlerror.pxi":749
@@ -47286,6 +50053,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             c_message = <char*>stdlib.malloc(
  *                 (text_size + element_size + 1) * sizeof(char))
  */
+      __Pyx_TraceLine(749,1,__PYX_ERR(1, 749, __pyx_L1_error))
       __pyx_v_element_size = strlen(__pyx_v_c_element);
 
       /* "src/lxml/xmlerror.pxi":750
@@ -47295,6 +50063,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *                 (text_size + element_size + 1) * sizeof(char))
  *             stdio.sprintf(c_message, msg, c_element)
  */
+      __Pyx_TraceLine(750,1,__PYX_ERR(1, 750, __pyx_L1_error))
       __pyx_v_c_message = ((char *)malloc((((__pyx_v_text_size + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
       /* "src/lxml/xmlerror.pxi":752
@@ -47304,6 +50073,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             c_error.message = c_message
  *         else:
  */
+      __Pyx_TraceLine(752,1,__PYX_ERR(1, 752, __pyx_L1_error))
       (void)(sprintf(__pyx_v_c_message, __pyx_v_msg, __pyx_v_c_element));
 
       /* "src/lxml/xmlerror.pxi":753
@@ -47313,6 +50083,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         else:
  *             c_error.message = ''
  */
+      __Pyx_TraceLine(753,1,__PYX_ERR(1, 753, __pyx_L1_error))
       __pyx_v_c_error.message = __pyx_v_c_message;
 
       /* "src/lxml/xmlerror.pxi":746
@@ -47332,6 +50103,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     elif c_element is NULL:
  *         c_error.message = c_text
  */
+    __Pyx_TraceLine(755,1,__PYX_ERR(1, 755, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_error.message = ((char *)"");
     }
@@ -47354,6 +50126,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         c_error.message = c_text
  *     else:
  */
+  __Pyx_TraceLine(756,1,__PYX_ERR(1, 756, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_element == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -47364,6 +50137,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     else:
  *         text_size    = cstring_h.strlen(c_text)
  */
+    __Pyx_TraceLine(757,1,__PYX_ERR(1, 757, __pyx_L1_error))
     __pyx_v_c_error.message = __pyx_v_c_text;
 
     /* "src/lxml/xmlerror.pxi":756
@@ -47383,6 +50157,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         element_size = cstring_h.strlen(c_element)
  *         c_message = <char*>stdlib.malloc(
  */
+  __Pyx_TraceLine(759,1,__PYX_ERR(1, 759, __pyx_L1_error))
   /*else*/ {
     __pyx_v_text_size = strlen(__pyx_v_c_text);
 
@@ -47393,6 +50168,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         c_message = <char*>stdlib.malloc(
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  */
+    __Pyx_TraceLine(760,1,__PYX_ERR(1, 760, __pyx_L1_error))
     __pyx_v_element_size = strlen(__pyx_v_c_element);
 
     /* "src/lxml/xmlerror.pxi":761
@@ -47402,6 +50178,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  *         stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)
  */
+    __Pyx_TraceLine(761,1,__PYX_ERR(1, 761, __pyx_L1_error))
     __pyx_v_c_message = ((char *)malloc(((((__pyx_v_text_size + 12) + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
     /* "src/lxml/xmlerror.pxi":763
@@ -47411,6 +50188,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         c_error.message = c_message
  * 
  */
+    __Pyx_TraceLine(763,1,__PYX_ERR(1, 763, __pyx_L1_error))
     (void)(sprintf(__pyx_v_c_message, ((char const *)"%s, element '%s'"), __pyx_v_c_text, __pyx_v_c_element));
 
     /* "src/lxml/xmlerror.pxi":764
@@ -47420,6 +50198,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     c_error.domain = c_domain
  */
+    __Pyx_TraceLine(764,1,__PYX_ERR(1, 764, __pyx_L1_error))
     __pyx_v_c_error.message = __pyx_v_c_message;
   }
   __pyx_L14:;
@@ -47431,6 +50210,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
  */
+  __Pyx_TraceLine(766,1,__PYX_ERR(1, 766, __pyx_L1_error))
   __pyx_v_c_error.domain = __pyx_v_c_domain;
 
   /* "src/lxml/xmlerror.pxi":767
@@ -47440,6 +50220,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
  *     c_error.int2   = 0
  */
+  __Pyx_TraceLine(767,1,__PYX_ERR(1, 767, __pyx_L1_error))
   __pyx_v_c_error.code = XML_ERR_OK;
 
   /* "src/lxml/xmlerror.pxi":768
@@ -47449,6 +50230,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *     c_error.int2   = 0
  * 
  */
+  __Pyx_TraceLine(768,1,__PYX_ERR(1, 768, __pyx_L1_error))
   __pyx_v_c_error.level = XML_ERR_ERROR;
 
   /* "src/lxml/xmlerror.pxi":769
@@ -47458,6 +50240,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     _forwardError(c_log_handler, &c_error)
  */
+  __Pyx_TraceLine(769,1,__PYX_ERR(1, 769, __pyx_L1_error))
   __pyx_v_c_error.int2 = 0;
 
   /* "src/lxml/xmlerror.pxi":771
@@ -47467,6 +50250,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  *     if c_message is not NULL:
  */
+  __Pyx_TraceLine(771,1,__PYX_ERR(1, 771, __pyx_L1_error))
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, (&__pyx_v_c_error));
 
   /* "src/lxml/xmlerror.pxi":773
@@ -47476,6 +50260,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  *         stdlib.free(c_message)
  * 
  */
+  __Pyx_TraceLine(773,1,__PYX_ERR(1, 773, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_message != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -47486,6 +50271,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  * 
  * ################################################################################
  */
+    __Pyx_TraceLine(774,1,__PYX_ERR(1, 774, __pyx_L1_error))
     free(__pyx_v_c_message);
 
     /* "src/lxml/xmlerror.pxi":773
@@ -47506,7 +50292,11 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveGenericError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/xmlerror.pxi":780
@@ -47526,6 +50316,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -47541,6 +50332,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyObject *(*__pyx_t_12)(PyObject *);
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("__initErrorConstants", 0);
+  __Pyx_TraceCall("__initErrorConstants", __pyx_f[1], 780, 0, __PYX_ERR(1, 780, __pyx_L1_error));
 
   /* "src/lxml/xmlerror.pxi":783
  *     "Called at setup time to parse the constants and build the classes below."
@@ -47549,6 +50341,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
+  __Pyx_TraceLine(783,0,__PYX_ERR(1, 783, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 783, __pyx_L1_error)
@@ -47567,6 +50360,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  */
+  __Pyx_TraceLine(784,0,__PYX_ERR(1, 784, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 784, __pyx_L1_error)
@@ -47585,6 +50379,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  * 
  */
+  __Pyx_TraceLine(785,0,__PYX_ERR(1, 785, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 785, __pyx_L1_error)
@@ -47603,6 +50398,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  * 
  *     for cls, constants in const_defs:
  */
+  __Pyx_TraceLine(786,0,__PYX_ERR(1, 786, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 786, __pyx_L1_error)
@@ -47621,6 +50417,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
+  __Pyx_TraceLine(783,0,__PYX_ERR(1, 783, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -47645,6 +50442,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *         reverse_dict = {}
  *         cls._names   = reverse_dict
  */
+  __Pyx_TraceLine(788,0,__PYX_ERR(1, 788, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_const_defs; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
   for (;;) {
     if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
@@ -47689,6 +50487,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  */
+    __Pyx_TraceLine(789,0,__PYX_ERR(1, 789, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 789, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_reverse_dict, ((PyObject*)__pyx_t_5));
@@ -47701,6 +50500,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():
  */
+    __Pyx_TraceLine(790,0,__PYX_ERR(1, 790, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_names, __pyx_v_reverse_dict) < 0) __PYX_ERR(1, 790, __pyx_L1_error)
 
     /* "src/lxml/xmlerror.pxi":791
@@ -47710,6 +50510,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *         for line in constants.splitlines():
  *             if not line:
  */
+    __Pyx_TraceLine(791,0,__PYX_ERR(1, 791, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 791, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_getName, __pyx_t_5) < 0) __PYX_ERR(1, 791, __pyx_L1_error)
@@ -47722,6 +50523,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             if not line:
  *                 continue
  */
+    __Pyx_TraceLine(792,0,__PYX_ERR(1, 792, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_constants, __pyx_n_s_splitlines); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 792, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
@@ -47792,6 +50594,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *                 continue
  *             name, value = line.split('=')
  */
+      __Pyx_TraceLine(793,0,__PYX_ERR(1, 793, __pyx_L1_error))
       __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_line); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 793, __pyx_L1_error)
       __pyx_t_10 = ((!__pyx_t_9) != 0);
       if (__pyx_t_10) {
@@ -47803,6 +50606,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             name, value = line.split('=')
  *             value = int(value)
  */
+        __Pyx_TraceLine(794,0,__PYX_ERR(1, 794, __pyx_L1_error))
         goto __pyx_L5_continue;
 
         /* "src/lxml/xmlerror.pxi":793
@@ -47821,9 +50625,10 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             value = int(value)
  *             setattr(cls, name, value)
  */
+      __Pyx_TraceLine(795,0,__PYX_ERR(1, 795, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 795, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -47884,6 +50689,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             setattr(cls, name, value)
  *             reverse_dict[value] = name
  */
+      __Pyx_TraceLine(796,0,__PYX_ERR(1, 796, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
@@ -47896,6 +50702,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             reverse_dict[value] = name
  * 
  */
+      __Pyx_TraceLine(797,0,__PYX_ERR(1, 797, __pyx_L1_error))
       __pyx_t_13 = PyObject_SetAttr(__pyx_v_cls, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(1, 797, __pyx_L1_error)
 
       /* "src/lxml/xmlerror.pxi":798
@@ -47905,6 +50712,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  * 
  *     # discard the global tuple references after use
  */
+      __Pyx_TraceLine(798,0,__PYX_ERR(1, 798, __pyx_L1_error))
       if (unlikely(PyDict_SetItem(__pyx_v_reverse_dict, __pyx_v_value, __pyx_v_name) < 0)) __PYX_ERR(1, 798, __pyx_L1_error)
 
       /* "src/lxml/xmlerror.pxi":792
@@ -47914,6 +50722,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *             if not line:
  *                 continue
  */
+      __Pyx_TraceLine(792,0,__PYX_ERR(1, 792, __pyx_L1_error))
       __pyx_L5_continue:;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -47925,6 +50734,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  *         reverse_dict = {}
  *         cls._names   = reverse_dict
  */
+    __Pyx_TraceLine(788,0,__PYX_ERR(1, 788, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -47935,6 +50745,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  * 
  * 
  */
+  __Pyx_TraceLine(801,0,__PYX_ERR(1, 801, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_LEVELS, Py_None);
@@ -47981,6 +50792,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48005,8 +50817,10 @@ static void __pyx_pw_4lxml_5etree_9_Document_1__dealloc__(PyObject *__pyx_v_self
 }
 
 static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(struct LxmlDocument *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[0], 347, 0, __PYX_ERR(0, 347, __pyx_L1_error));
 
   /* "lxml/etree.pyx":351
  *         # to clean the whole thing up, as all nodes have a reference to
@@ -48015,6 +50829,7 @@ static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(struct LxmlDocument *__
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(351,0,__PYX_ERR(0, 351, __pyx_L1_error))
   xmlFreeDoc(__pyx_v_self->_c_doc);
 
   /* "lxml/etree.pyx":347
@@ -48026,6 +50841,11 @@ static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(struct LxmlDocument *__
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._Document.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -48040,10 +50860,12 @@ static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(struct LxmlDocument *__
 static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getroot", 0);
+  __Pyx_TraceCall("getroot", __pyx_f[0], 354, 0, __PYX_ERR(0, 354, __pyx_L1_error));
 
   /* "lxml/etree.pyx":357
  *         # return an element proxy for the document root
@@ -48052,6 +50874,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
  *         if c_node is NULL:
  *             return None
  */
+  __Pyx_TraceLine(357,0,__PYX_ERR(0, 357, __pyx_L1_error))
   __pyx_v_c_node = xmlDocGetRootElement(__pyx_v_self->_c_doc);
 
   /* "lxml/etree.pyx":358
@@ -48061,6 +50884,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
  *             return None
  *         return _elementFactory(self, c_node)
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(0, 358, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -48071,6 +50895,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
  *         return _elementFactory(self, c_node)
  * 
  */
+    __Pyx_TraceLine(359,0,__PYX_ERR(0, 359, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -48091,6 +50916,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(0, 360, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_self, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -48113,6 +50939,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48127,10 +50954,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__
 
 static int __pyx_f_4lxml_5etree_9_Document_hasdoctype(struct LxmlDocument *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("hasdoctype", 0);
+  __Pyx_TraceCall("hasdoctype", __pyx_f[0], 363, 0, __PYX_ERR(0, 363, __pyx_L1_error));
 
   /* "lxml/etree.pyx":365
  *     cdef bint hasdoctype(self):
@@ -48139,6 +50968,7 @@ static int __pyx_f_4lxml_5etree_9_Document_hasdoctype(struct LxmlDocument *__pyx
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(365,0,__PYX_ERR(0, 365, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_c_doc != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -48160,7 +50990,11 @@ static int __pyx_f_4lxml_5etree_9_Document_hasdoctype(struct LxmlDocument *__pyx
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._Document.hasdoctype", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48180,6 +51014,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
   PyObject *__pyx_v_sys_url = NULL;
   PyObject *__pyx_v_root_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDtd *__pyx_t_1;
   int __pyx_t_2;
@@ -48187,6 +51022,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("getdoctype", 0);
+  __Pyx_TraceCall("getdoctype", __pyx_f[0], 368, 0, __PYX_ERR(0, 368, __pyx_L1_error));
 
   /* "lxml/etree.pyx":372
  *         cdef tree.xmlDtd* c_dtd
@@ -48195,6 +51031,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         sys_url   = None
  *         c_dtd = self._c_doc.intSubset
  */
+  __Pyx_TraceLine(372,0,__PYX_ERR(0, 372, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_public_id = Py_None;
 
@@ -48205,6 +51042,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         c_dtd = self._c_doc.intSubset
  *         if c_dtd is not NULL:
  */
+  __Pyx_TraceLine(373,0,__PYX_ERR(0, 373, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_sys_url = Py_None;
 
@@ -48215,6 +51053,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         if c_dtd is not NULL:
  *             if c_dtd.ExternalID is not NULL:
  */
+  __Pyx_TraceLine(374,0,__PYX_ERR(0, 374, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_c_doc->intSubset;
   __pyx_v_c_dtd = __pyx_t_1;
 
@@ -48225,6 +51064,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *             if c_dtd.ExternalID is not NULL:
  *                 public_id = funicode(c_dtd.ExternalID)
  */
+  __Pyx_TraceLine(375,0,__PYX_ERR(0, 375, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_dtd != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -48235,6 +51075,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *                 public_id = funicode(c_dtd.ExternalID)
  *             if c_dtd.SystemID is not NULL:
  */
+    __Pyx_TraceLine(376,0,__PYX_ERR(0, 376, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_dtd->ExternalID != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -48245,6 +51086,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *             if c_dtd.SystemID is not NULL:
  *                 sys_url = funicode(c_dtd.SystemID)
  */
+      __Pyx_TraceLine(377,0,__PYX_ERR(0, 377, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->ExternalID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_public_id, __pyx_t_3);
@@ -48266,6 +51108,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *                 sys_url = funicode(c_dtd.SystemID)
  *         c_dtd = self._c_doc.extSubset
  */
+    __Pyx_TraceLine(378,0,__PYX_ERR(0, 378, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_dtd->SystemID != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -48276,6 +51119,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         c_dtd = self._c_doc.extSubset
  *         if c_dtd is not NULL:
  */
+      __Pyx_TraceLine(379,0,__PYX_ERR(0, 379, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->SystemID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_sys_url, __pyx_t_3);
@@ -48306,6 +51150,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         if c_dtd is not NULL:
  *             if not public_id and c_dtd.ExternalID is not NULL:
  */
+  __Pyx_TraceLine(380,0,__PYX_ERR(0, 380, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_c_doc->extSubset;
   __pyx_v_c_dtd = __pyx_t_1;
 
@@ -48316,6 +51161,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *             if not public_id and c_dtd.ExternalID is not NULL:
  *                 public_id = funicode(c_dtd.ExternalID)
  */
+  __Pyx_TraceLine(381,0,__PYX_ERR(0, 381, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_dtd != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -48326,6 +51172,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *                 public_id = funicode(c_dtd.ExternalID)
  *             if not sys_url and c_dtd.SystemID is not NULL:
  */
+    __Pyx_TraceLine(382,0,__PYX_ERR(0, 382, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 382, __pyx_L1_error)
     __pyx_t_5 = ((!__pyx_t_4) != 0);
     if (__pyx_t_5) {
@@ -48345,6 +51192,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *             if not sys_url and c_dtd.SystemID is not NULL:
  *                 sys_url = funicode(c_dtd.SystemID)
  */
+      __Pyx_TraceLine(383,0,__PYX_ERR(0, 383, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->ExternalID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_public_id, __pyx_t_3);
@@ -48366,6 +51214,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *                 sys_url = funicode(c_dtd.SystemID)
  *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
  */
+    __Pyx_TraceLine(384,0,__PYX_ERR(0, 384, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_sys_url); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 384, __pyx_L1_error)
     __pyx_t_4 = ((!__pyx_t_5) != 0);
     if (__pyx_t_4) {
@@ -48385,6 +51234,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
  *         if c_root_node is NULL:
  */
+      __Pyx_TraceLine(385,0,__PYX_ERR(0, 385, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->SystemID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 385, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_sys_url, __pyx_t_3);
@@ -48415,6 +51265,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         if c_root_node is NULL:
  *             root_name = None
  */
+  __Pyx_TraceLine(386,0,__PYX_ERR(0, 386, __pyx_L1_error))
   __pyx_v_c_root_node = xmlDocGetRootElement(__pyx_v_self->_c_doc);
 
   /* "lxml/etree.pyx":387
@@ -48424,6 +51275,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *             root_name = None
  *         else:
  */
+  __Pyx_TraceLine(387,0,__PYX_ERR(0, 387, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_root_node == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -48434,6 +51286,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         else:
  *             root_name = funicode(c_root_node.name)
  */
+    __Pyx_TraceLine(388,0,__PYX_ERR(0, 388, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_root_name = Py_None;
 
@@ -48454,6 +51307,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  *         return (root_name, public_id, sys_url)
  * 
  */
+  __Pyx_TraceLine(390,0,__PYX_ERR(0, 390, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_root_node->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 390, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -48469,6 +51323,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(391,0,__PYX_ERR(0, 391, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 391, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -48503,6 +51358,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument
   __Pyx_XDECREF(__pyx_v_sys_url);
   __Pyx_XDECREF(__pyx_v_root_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48520,11 +51376,13 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
   PyObject *__pyx_v_version = NULL;
   PyObject *__pyx_v_encoding = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("getxmlinfo", 0);
+  __Pyx_TraceCall("getxmlinfo", __pyx_f[0], 394, 0, __PYX_ERR(0, 394, __pyx_L1_error));
 
   /* "lxml/etree.pyx":396
  *     cdef getxmlinfo(self):
@@ -48533,6 +51391,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *         if c_doc.version is NULL:
  *             version = None
  */
+  __Pyx_TraceLine(396,0,__PYX_ERR(0, 396, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_c_doc;
   __pyx_v_c_doc = __pyx_t_1;
 
@@ -48543,6 +51402,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *             version = None
  *         else:
  */
+  __Pyx_TraceLine(397,0,__PYX_ERR(0, 397, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_doc->version == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -48553,6 +51413,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *         else:
  *             version = funicode(c_doc.version)
  */
+    __Pyx_TraceLine(398,0,__PYX_ERR(0, 398, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_version = Py_None;
 
@@ -48573,6 +51434,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *         if c_doc.encoding is NULL:
  *             encoding = None
  */
+  __Pyx_TraceLine(400,0,__PYX_ERR(0, 400, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_doc->version); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 400, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -48588,6 +51450,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *             encoding = None
  *         else:
  */
+  __Pyx_TraceLine(401,0,__PYX_ERR(0, 401, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_doc->encoding == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -48598,6 +51461,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *         else:
  *             encoding = funicode(c_doc.encoding)
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(0, 402, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_encoding = Py_None;
 
@@ -48618,6 +51482,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  *         return (version, encoding)
  * 
  */
+  __Pyx_TraceLine(404,0,__PYX_ERR(0, 404, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_doc->encoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -48633,6 +51498,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(405,0,__PYX_ERR(0, 405, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -48663,6 +51529,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
   __Pyx_XDECREF(__pyx_v_version);
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48677,10 +51544,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument
 
 static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocument *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("isstandalone", 0);
+  __Pyx_TraceCall("isstandalone", __pyx_f[0], 408, 0, __PYX_ERR(0, 408, __pyx_L1_error));
 
   /* "lxml/etree.pyx":411
  *         # returns True for "standalone=true",
@@ -48689,6 +51558,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocumen
  *             return None
  *         else:
  */
+  __Pyx_TraceLine(411,0,__PYX_ERR(0, 411, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_doc->standalone == -1L) != 0);
   if (__pyx_t_1) {
 
@@ -48699,6 +51569,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocumen
  *         else:
  *             return <bint>(self._c_doc.standalone == 1)
  */
+    __Pyx_TraceLine(412,0,__PYX_ERR(0, 412, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -48719,6 +51590,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocumen
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(414,0,__PYX_ERR(0, 414, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_PyBool_FromLong(((__pyx_v_self->_c_doc->standalone == 1) != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 414, __pyx_L1_error)
@@ -48743,6 +51615,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocumen
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48758,12 +51631,14 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocumen
 static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocument *__pyx_v_self) {
   PyObject *__pyx_v_ns = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("buildNewPrefix", 0);
+  __Pyx_TraceCall("buildNewPrefix", __pyx_f[0], 417, 0, __PYX_ERR(0, 417, __pyx_L1_error));
 
   /* "lxml/etree.pyx":420
  *         # get a new unique prefix ("nsX") for this document
@@ -48772,6 +51647,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *             ns = _PREFIX_CACHE[self._ns_counter]
  *         else:
  */
+  __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_4lxml_5etree__PREFIX_CACHE;
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
@@ -48790,6 +51666,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *         else:
  *             ns = python.PyBytes_FromFormat("ns%d", self._ns_counter)
  */
+    __Pyx_TraceLine(421,0,__PYX_ERR(0, 421, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_5etree__PREFIX_CACHE == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 421, __pyx_L1_error)
@@ -48817,6 +51694,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *         if self._prefix_tail is not None:
  *             ns += self._prefix_tail
  */
+  __Pyx_TraceLine(423,0,__PYX_ERR(0, 423, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = PyBytes_FromFormat(((char *)"ns%d"), __pyx_v_self->_ns_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -48832,6 +51710,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *             ns += self._prefix_tail
  *         self._ns_counter += 1
  */
+  __Pyx_TraceLine(424,0,__PYX_ERR(0, 424, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_prefix_tail != ((PyObject*)Py_None));
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -48843,6 +51722,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *         self._ns_counter += 1
  *         if self._ns_counter < 0:
  */
+    __Pyx_TraceLine(425,0,__PYX_ERR(0, 425, __pyx_L1_error))
     __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_ns, __pyx_v_self->_prefix_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_ns, ((PyObject*)__pyx_t_1));
@@ -48864,6 +51744,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *         if self._ns_counter < 0:
  *             # overflow!
  */
+  __Pyx_TraceLine(426,0,__PYX_ERR(0, 426, __pyx_L1_error))
   __pyx_v_self->_ns_counter = (__pyx_v_self->_ns_counter + 1);
 
   /* "lxml/etree.pyx":427
@@ -48873,6 +51754,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *             # overflow!
  *             self._ns_counter = 0
  */
+  __Pyx_TraceLine(427,0,__PYX_ERR(0, 427, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_self->_ns_counter < 0) != 0);
   if (__pyx_t_4) {
 
@@ -48883,6 +51765,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *             if self._prefix_tail is None:
  *                 self._prefix_tail = b"A"
  */
+    __Pyx_TraceLine(429,0,__PYX_ERR(0, 429, __pyx_L1_error))
     __pyx_v_self->_ns_counter = 0;
 
     /* "lxml/etree.pyx":430
@@ -48892,6 +51775,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *                 self._prefix_tail = b"A"
  *             else:
  */
+    __Pyx_TraceLine(430,0,__PYX_ERR(0, 430, __pyx_L1_error))
     __pyx_t_4 = (__pyx_v_self->_prefix_tail == ((PyObject*)Py_None));
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
@@ -48903,6 +51787,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *             else:
  *                 self._prefix_tail += b"A"
  */
+      __Pyx_TraceLine(431,0,__PYX_ERR(0, 431, __pyx_L1_error))
       __Pyx_INCREF(__pyx_n_b_A);
       __Pyx_GIVEREF(__pyx_n_b_A);
       __Pyx_GOTREF(__pyx_v_self->_prefix_tail);
@@ -48926,6 +51811,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  *         return ns
  * 
  */
+    __Pyx_TraceLine(433,0,__PYX_ERR(0, 433, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_self->_prefix_tail, __pyx_n_b_A); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -48953,6 +51839,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(434,0,__PYX_ERR(0, 434, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_ns);
   __pyx_r = __pyx_v_ns;
@@ -48974,6 +51861,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocum
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -48991,6 +51879,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
   PyObject *__pyx_v_dict_result;
   PyObject *__pyx_v_prefix = NULL;
   xmlNs *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -48999,6 +51888,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_findOrBuildNodeNs", 0);
+  __Pyx_TraceCall("_findOrBuildNodeNs", __pyx_f[0], 437, 0, __PYX_ERR(0, 437, __pyx_L1_error));
 
   /* "lxml/etree.pyx":446
  *         cdef xmlNs* c_doc_ns
@@ -49007,6 +51897,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             assert c_node.type == tree.XML_ELEMENT_NODE, \
  *                 u"invalid node type %d, expected %d" % (
  */
+  __Pyx_TraceLine(446,0,__PYX_ERR(0, 446, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type != XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -49017,6 +51908,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 u"invalid node type %d, expected %d" % (
  *                 c_node.type, tree.XML_ELEMENT_NODE)
  */
+    __Pyx_TraceLine(447,0,__PYX_ERR(0, 447, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       if (unlikely(!((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0))) {
@@ -49028,6 +51920,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 c_node.type, tree.XML_ELEMENT_NODE)
  *         # look for existing ns declaration
  */
+        __Pyx_TraceLine(448,0,__PYX_ERR(0, 448, __pyx_L1_error))
         __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __pyx_t_3 = 0;
@@ -49044,6 +51937,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *         # look for existing ns declaration
  *         c_ns = _searchNsByHref(c_node, c_href, is_attribute)
  */
+        __Pyx_TraceLine(449,0,__PYX_ERR(0, 449, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 449, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
@@ -49070,6 +51964,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 c_node.type, tree.XML_ELEMENT_NODE)
  *         # look for existing ns declaration
  */
+        __Pyx_TraceLine(448,0,__PYX_ERR(0, 448, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 448, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -49096,6 +51991,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *         if c_ns is not NULL:
  *             if is_attribute and c_ns.prefix is NULL:
  */
+  __Pyx_TraceLine(451,0,__PYX_ERR(0, 451, __pyx_L1_error))
   __pyx_v_c_ns = __pyx_f_4lxml_5etree__searchNsByHref(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_is_attribute);
 
   /* "lxml/etree.pyx":452
@@ -49105,6 +52001,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             if is_attribute and c_ns.prefix is NULL:
  *                 # do not put namespaced attributes into the default
  */
+  __Pyx_TraceLine(452,0,__PYX_ERR(0, 452, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ns != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -49115,6 +52012,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 # do not put namespaced attributes into the default
  *                 # namespace as this would break serialisation
  */
+    __Pyx_TraceLine(453,0,__PYX_ERR(0, 453, __pyx_L1_error))
     __pyx_t_6 = (__pyx_v_is_attribute != 0);
     if (__pyx_t_6) {
     } else {
@@ -49135,6 +52033,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  * 
  *         # none found => determine a suitable new prefix
  */
+    __Pyx_TraceLine(458,0,__PYX_ERR(0, 458, __pyx_L1_error))
     /*else*/ {
       __pyx_r = __pyx_v_c_ns;
       goto __pyx_L0;
@@ -49157,6 +52056,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             dict_result = python.PyDict_GetItem(
  *                 _DEFAULT_NAMESPACE_PREFIXES, <unsigned char*>c_href)
  */
+  __Pyx_TraceLine(461,0,__PYX_ERR(0, 461, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_prefix == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -49167,6 +52067,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             if dict_result is not NULL:
  *                 prefix = <object>dict_result
  */
+    __Pyx_TraceLine(463,0,__PYX_ERR(0, 463, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES;
     __Pyx_INCREF(__pyx_t_5);
     __pyx_t_2 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_href)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error)
@@ -49179,6 +52080,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 _DEFAULT_NAMESPACE_PREFIXES, <unsigned char*>c_href)
  *             if dict_result is not NULL:
  */
+    __Pyx_TraceLine(462,0,__PYX_ERR(0, 462, __pyx_L1_error))
     __pyx_v_dict_result = PyDict_GetItem(__pyx_t_5, __pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -49190,6 +52092,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *                 prefix = <object>dict_result
  *             else:
  */
+    __Pyx_TraceLine(464,0,__PYX_ERR(0, 464, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_dict_result != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -49200,6 +52103,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             else:
  *                 prefix = self.buildNewPrefix()
  */
+      __Pyx_TraceLine(465,0,__PYX_ERR(0, 465, __pyx_L1_error))
       __pyx_t_2 = ((PyObject *)__pyx_v_dict_result);
       __Pyx_INCREF(__pyx_t_2);
       __pyx_v_prefix = __pyx_t_2;
@@ -49222,6 +52126,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             c_prefix = _xcstr(prefix)
  * 
  */
+    __Pyx_TraceLine(467,0,__PYX_ERR(0, 467, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_buildNewPrefix(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -49237,6 +52142,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  * 
  *         # make sure the prefix is not in use already
  */
+    __Pyx_TraceLine(468,0,__PYX_ERR(0, 468, __pyx_L1_error))
     __pyx_v_c_prefix = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix);
 
     /* "lxml/etree.pyx":461
@@ -49255,6 +52161,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             prefix = self.buildNewPrefix()
  *             c_prefix = _xcstr(prefix)
  */
+  __Pyx_TraceLine(471,0,__PYX_ERR(0, 471, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((xmlSearchNs(__pyx_v_self->_c_doc, __pyx_v_c_node, __pyx_v_c_prefix) != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -49266,6 +52173,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             c_prefix = _xcstr(prefix)
  * 
  */
+    __Pyx_TraceLine(472,0,__PYX_ERR(0, 472, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_buildNewPrefix(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_2);
@@ -49278,6 +52186,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  * 
  *         # declare the namespace and return it
  */
+    __Pyx_TraceLine(473,0,__PYX_ERR(0, 473, __pyx_L1_error))
     __pyx_v_c_prefix = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix);
   }
 
@@ -49288,6 +52197,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *         if c_ns is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(476,0,__PYX_ERR(0, 476, __pyx_L1_error))
   __pyx_v_c_ns = xmlNewNs(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_prefix);
 
   /* "lxml/etree.pyx":477
@@ -49297,6 +52207,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *             raise MemoryError()
  *         return c_ns
  */
+  __Pyx_TraceLine(477,0,__PYX_ERR(0, 477, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ns == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -49307,6 +52218,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  *         return c_ns
  * 
  */
+    __Pyx_TraceLine(478,0,__PYX_ERR(0, 478, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(0, 478, __pyx_L1_error)
 
     /* "lxml/etree.pyx":477
@@ -49325,6 +52237,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(479,0,__PYX_ERR(0, 479, __pyx_L1_error))
   __pyx_r = __pyx_v_c_ns;
   goto __pyx_L0;
 
@@ -49344,6 +52257,7 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_prefix);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -49359,9 +52273,11 @@ static xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocu
 static int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx_v_self, xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href) {
   xmlNs *__pyx_v_c_ns;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNs *__pyx_t_1;
   __Pyx_RefNannySetupContext("_setNodeNs", 0);
+  __Pyx_TraceCall("_setNodeNs", __pyx_f[0], 482, 0, __PYX_ERR(0, 482, __pyx_L1_error));
 
   /* "lxml/etree.pyx":484
  *     cdef int _setNodeNs(self, xmlNode* c_node, const_xmlChar* c_href) except -1:
@@ -49370,6 +52286,7 @@ static int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx
  *         tree.xmlSetNs(c_node, c_ns)
  * 
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(0, 484, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_self, __pyx_v_c_node, __pyx_v_c_href, NULL, 0); if (unlikely(__pyx_t_1 == ((xmlNs *)NULL))) __PYX_ERR(0, 484, __pyx_L1_error)
   __pyx_v_c_ns = __pyx_t_1;
 
@@ -49380,6 +52297,7 @@ static int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx
  * 
  * cdef tuple __initPrefixCache():
  */
+  __Pyx_TraceLine(485,0,__PYX_ERR(0, 485, __pyx_L1_error))
   xmlSetNs(__pyx_v_c_node, __pyx_v_c_ns);
 
   /* "lxml/etree.pyx":482
@@ -49397,6 +52315,7 @@ static int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx
   __Pyx_AddTraceback("lxml.etree._Document._setNodeNs", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -49412,11 +52331,13 @@ static int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx
 static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
   int __pyx_v_i;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__initPrefixCache", 0);
+  __Pyx_TraceCall("__initPrefixCache", __pyx_f[0], 487, 0, __PYX_ERR(0, 487, __pyx_L1_error));
 
   /* "lxml/etree.pyx":489
  * cdef tuple __initPrefixCache():
@@ -49425,6 +52346,7 @@ static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
  *                    for i in range(30) ])
  * 
  */
+  __Pyx_TraceLine(489,0,__PYX_ERR(0, 489, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -49436,6 +52358,7 @@ static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
  * 
  * cdef tuple _PREFIX_CACHE = __initPrefixCache()
  */
+  __Pyx_TraceLine(490,0,__PYX_ERR(0, 490, __pyx_L1_error))
   for (__pyx_t_2 = 0; __pyx_t_2 < 30; __pyx_t_2+=1) {
     __pyx_v_i = __pyx_t_2;
 
@@ -49446,6 +52369,7 @@ static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
  *                    for i in range(30) ])
  * 
  */
+    __Pyx_TraceLine(489,0,__PYX_ERR(0, 489, __pyx_L1_error))
     __pyx_t_3 = PyBytes_FromFormat(((char *)"ns%d"), __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 489, __pyx_L1_error)
@@ -49474,6 +52398,7 @@ static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -49489,11 +52414,13 @@ static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
 static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_v_c_doc, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   struct LxmlDocument *__pyx_v_result = 0;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_documentFactory", 0);
+  __Pyx_TraceCall("_documentFactory", __pyx_f[0], 494, 0, __PYX_ERR(0, 494, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
   /* "lxml/etree.pyx":496
@@ -49503,6 +52430,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     result._c_doc = c_doc
  *     result._ns_counter = 0
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(0, 496, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__Document(((PyTypeObject *)__pyx_ptype_4lxml_5etree__Document), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_result = ((struct LxmlDocument *)__pyx_t_1);
@@ -49515,6 +52443,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     result._ns_counter = 0
  *     result._prefix_tail = None
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(0, 497, __pyx_L1_error))
   __pyx_v_result->_c_doc = __pyx_v_c_doc;
 
   /* "lxml/etree.pyx":498
@@ -49524,6 +52453,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     result._prefix_tail = None
  *     if parser is None:
  */
+  __Pyx_TraceLine(498,0,__PYX_ERR(0, 498, __pyx_L1_error))
   __pyx_v_result->_ns_counter = 0;
 
   /* "lxml/etree.pyx":499
@@ -49533,6 +52463,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(0, 499, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_result->_prefix_tail);
@@ -49546,6 +52477,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     result._parser = parser
  */
+  __Pyx_TraceLine(500,0,__PYX_ERR(0, 500, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -49557,6 +52489,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     result._parser = parser
  *     return result
  */
+    __Pyx_TraceLine(501,0,__PYX_ERR(0, 501, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 501, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1));
@@ -49578,6 +52511,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  *     return result
  * 
  */
+  __Pyx_TraceLine(502,0,__PYX_ERR(0, 502, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
   __Pyx_GOTREF(__pyx_v_result->_parser);
@@ -49591,6 +52525,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
  * 
  * 
  */
+  __Pyx_TraceLine(503,0,__PYX_ERR(0, 503, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_result));
   __pyx_r = __pyx_v_result;
@@ -49613,6 +52548,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_
   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -49680,6 +52616,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
   PyObject *__pyx_v_public_id = NULL;
   PyObject *__pyx_v_system_url = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -49691,6 +52628,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
   int __pyx_t_8;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 513, 0, __PYX_ERR(0, 513, __pyx_L1_error));
 
   /* "lxml/etree.pyx":515
  *     def __cinit__(self, tree):
@@ -49699,6 +52637,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
  *         root_name, public_id, system_url = self._doc.getdoctype()
  *         if not root_name and (public_id or system_url):
  */
+  __Pyx_TraceLine(515,0,__PYX_ERR(0, 515, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -49714,6 +52653,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
  *         if not root_name and (public_id or system_url):
  *             raise ValueError, u"Could not find root node"
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(0, 516, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -49783,6 +52723,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
  *             raise ValueError, u"Could not find root node"
  * 
  */
+  __Pyx_TraceLine(517,0,__PYX_ERR(0, 517, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_root_name); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 517, __pyx_L1_error)
   __pyx_t_9 = ((!__pyx_t_8) != 0);
   if (__pyx_t_9) {
@@ -49808,6 +52749,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
  * 
  *     property root_name:
  */
+    __Pyx_TraceLine(518,0,__PYX_ERR(0, 518, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Could_not_find_root_node, 0, 0);
     __PYX_ERR(0, 518, __pyx_L1_error)
 
@@ -49843,6 +52785,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
   __Pyx_XDECREF(__pyx_v_root_name);
   __Pyx_XDECREF(__pyx_v_public_id);
   __Pyx_XDECREF(__pyx_v_system_url);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -49873,6 +52816,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   CYTHON_UNUSED PyObject *__pyx_v_public_id = NULL;
   CYTHON_UNUSED PyObject *__pyx_v_system_url = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -49881,6 +52825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   PyObject *__pyx_t_5 = NULL;
   PyObject *(*__pyx_t_6)(PyObject *);
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 522, 0, __PYX_ERR(0, 522, __pyx_L1_error));
 
   /* "lxml/etree.pyx":523
  *         u"Returns the name of the root node as defined by the DOCTYPE."
@@ -49889,6 +52834,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
  *             return root_name
  * 
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(0, 523, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -49958,6 +52904,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(0, 524, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_root_name);
   __pyx_r = __pyx_v_root_name;
@@ -49985,6 +52932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   __Pyx_XDECREF(__pyx_v_public_id);
   __Pyx_XDECREF(__pyx_v_system_url);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50002,11 +52950,13 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
   xmlNode *__pyx_v_c_root_node;
   const xmlChar *__pyx_v_c_name;
   xmlDtd *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
   const xmlChar *__pyx_t_3;
   __Pyx_RefNannySetupContext("_get_c_dtd", 0);
+  __Pyx_TraceCall("_get_c_dtd", __pyx_f[0], 527, 0, __PYX_ERR(0, 527, __pyx_L1_error));
 
   /* "lxml/etree.pyx":529
  *     cdef tree.xmlDtd* _get_c_dtd(self):
@@ -50015,6 +52965,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  *         cdef xmlNode* c_root_node
  *         cdef const_xmlChar* c_name
  */
+  __Pyx_TraceLine(529,0,__PYX_ERR(0, 529, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_doc->_c_doc;
   __pyx_v_c_doc = __pyx_t_1;
 
@@ -50025,6 +52976,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  *             return c_doc.intSubset
  * 
  */
+  __Pyx_TraceLine(533,0,__PYX_ERR(0, 533, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_doc->intSubset != 0);
   if (__pyx_t_2) {
 
@@ -50035,6 +52987,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  * 
  *         c_root_node = tree.xmlDocGetRootElement(c_doc)
  */
+    __Pyx_TraceLine(534,0,__PYX_ERR(0, 534, __pyx_L1_error))
     __pyx_r = __pyx_v_c_doc->intSubset;
     goto __pyx_L0;
 
@@ -50054,6 +53007,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  *         c_name = c_root_node.name if c_root_node else NULL
  *         return  tree.xmlCreateIntSubset(c_doc, c_name, NULL, NULL)
  */
+  __Pyx_TraceLine(536,0,__PYX_ERR(0, 536, __pyx_L1_error))
   __pyx_v_c_root_node = xmlDocGetRootElement(__pyx_v_c_doc);
 
   /* "lxml/etree.pyx":537
@@ -50063,6 +53017,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  *         return  tree.xmlCreateIntSubset(c_doc, c_name, NULL, NULL)
  * 
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(0, 537, __pyx_L1_error))
   if ((__pyx_v_c_root_node != 0)) {
     __pyx_t_3 = __pyx_v_c_root_node->name;
   } else {
@@ -50077,6 +53032,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  * 
  *     def clear(self):
  */
+  __Pyx_TraceLine(538,0,__PYX_ERR(0, 538, __pyx_L1_error))
   __pyx_r = xmlCreateIntSubset(__pyx_v_c_doc, __pyx_v_c_name, NULL, NULL);
   goto __pyx_L0;
 
@@ -50089,7 +53045,11 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.DocInfo._get_c_dtd", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50121,10 +53081,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
   xmlDoc *__pyx_v_c_doc;
   xmlNode *__pyx_v_c_dtd;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__58)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[0], 540, 0, __PYX_ERR(0, 540, __pyx_L1_error));
 
   /* "lxml/etree.pyx":542
  *     def clear(self):
@@ -50133,6 +53096,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  *         cdef tree.xmlNode* c_dtd = <xmlNode*>c_doc.intSubset
  *         if c_dtd is NULL:
  */
+  __Pyx_TraceLine(542,0,__PYX_ERR(0, 542, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_doc->_c_doc;
   __pyx_v_c_doc = __pyx_t_1;
 
@@ -50143,6 +53107,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  *         if c_dtd is NULL:
  *             return
  */
+  __Pyx_TraceLine(543,0,__PYX_ERR(0, 543, __pyx_L1_error))
   __pyx_v_c_dtd = ((xmlNode *)__pyx_v_c_doc->intSubset);
 
   /* "lxml/etree.pyx":544
@@ -50152,6 +53117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  *             return
  *         tree.xmlUnlinkNode(c_dtd)
  */
+  __Pyx_TraceLine(544,0,__PYX_ERR(0, 544, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_dtd == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -50162,6 +53128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  *         tree.xmlUnlinkNode(c_dtd)
  *         tree.xmlFreeNode(c_dtd)
  */
+    __Pyx_TraceLine(545,0,__PYX_ERR(0, 545, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -50182,6 +53149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  *         tree.xmlFreeNode(c_dtd)
  * 
  */
+  __Pyx_TraceLine(546,0,__PYX_ERR(0, 546, __pyx_L1_error))
   xmlUnlinkNode(__pyx_v_c_dtd);
 
   /* "lxml/etree.pyx":547
@@ -50191,6 +53159,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
  * 
  *     property public_id:
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(0, 547, __pyx_L1_error))
   xmlFreeNode(__pyx_v_c_dtd);
 
   /* "lxml/etree.pyx":540
@@ -50203,8 +53172,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_2clear(struct __pyx_obj_4lxml_5e
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.DocInfo.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50235,6 +53209,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(struct __pyx_
   PyObject *__pyx_v_public_id = NULL;
   CYTHON_UNUSED PyObject *__pyx_v_system_url = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -50243,6 +53218,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(struct __pyx_
   PyObject *__pyx_t_5 = NULL;
   PyObject *(*__pyx_t_6)(PyObject *);
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 555, 0, __PYX_ERR(0, 555, __pyx_L1_error));
 
   /* "lxml/etree.pyx":556
  *         """
@@ -50251,6 +53227,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(struct __pyx_
  *             return public_id
  * 
  */
+  __Pyx_TraceLine(556,0,__PYX_ERR(0, 556, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -50320,6 +53297,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(struct __pyx_
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(557,0,__PYX_ERR(0, 557, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_public_id);
   __pyx_r = __pyx_v_public_id;
@@ -50347,6 +53325,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(struct __pyx_
   __Pyx_XDECREF(__pyx_v_public_id);
   __Pyx_XDECREF(__pyx_v_system_url);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50377,6 +53356,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
   PyObject *__pyx_v_match = NULL;
   xmlDtd *__pyx_v_c_dtd;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -50387,6 +53367,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
   Py_ssize_t __pyx_t_7;
   Py_UCS4 __pyx_t_8;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 559, 0, __PYX_ERR(0, 559, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "lxml/etree.pyx":560
@@ -50396,6 +53377,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *             if value is not None:
  *                 match = _find_invalid_public_id_characters(value)
  */
+  __Pyx_TraceLine(560,0,__PYX_ERR(0, 560, __pyx_L1_error))
   __pyx_v_c_value = NULL;
 
   /* "lxml/etree.pyx":561
@@ -50405,6 +53387,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 match = _find_invalid_public_id_characters(value)
  *                 if match:
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(0, 561, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -50416,6 +53399,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 if match:
  *                     raise ValueError, f'Invalid character(s) {match.group(0)!r} in public_id.'
  */
+    __Pyx_TraceLine(562,0,__PYX_ERR(0, 562, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_5etree__find_invalid_public_id_characters);
     __pyx_t_4 = __pyx_v_4lxml_5etree__find_invalid_public_id_characters; __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -50470,6 +53454,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                     raise ValueError, f'Invalid character(s) {match.group(0)!r} in public_id.'
  *                 value = _utf8(value)
  */
+    __Pyx_TraceLine(563,0,__PYX_ERR(0, 563, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 563, __pyx_L1_error)
     if (unlikely(__pyx_t_2)) {
 
@@ -50480,6 +53465,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 value = _utf8(value)
  *                 c_value = tree.xmlStrdup(_xcstr(value))
  */
+      __Pyx_TraceLine(564,0,__PYX_ERR(0, 564, __pyx_L1_error))
       __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_7 = 0;
@@ -50490,7 +53476,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Invalid_character_s);
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 564, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 564, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_6), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error)
@@ -50528,6 +53514,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 c_value = tree.xmlStrdup(_xcstr(value))
  *                 if not c_value:
  */
+    __Pyx_TraceLine(565,0,__PYX_ERR(0, 565, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 565, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
@@ -50540,6 +53527,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 if not c_value:
  *                     raise MemoryError()
  */
+    __Pyx_TraceLine(566,0,__PYX_ERR(0, 566, __pyx_L1_error))
     __pyx_v_c_value = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_value));
 
     /* "lxml/etree.pyx":567
@@ -50549,6 +53537,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                     raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(567,0,__PYX_ERR(0, 567, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_c_value != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -50559,6 +53548,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  * 
  *             c_dtd = self._get_c_dtd()
  */
+      __Pyx_TraceLine(568,0,__PYX_ERR(0, 568, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(0, 568, __pyx_L1_error)
 
       /* "lxml/etree.pyx":567
@@ -50586,6 +53576,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *             if not c_dtd:
  *                 tree.xmlFree(c_value)
  */
+  __Pyx_TraceLine(570,0,__PYX_ERR(0, 570, __pyx_L1_error))
   __pyx_v_c_dtd = __pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(__pyx_v_self);
 
   /* "lxml/etree.pyx":571
@@ -50595,6 +53586,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 tree.xmlFree(c_value)
  *                 raise MemoryError()
  */
+  __Pyx_TraceLine(571,0,__PYX_ERR(0, 571, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_c_dtd != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -50605,6 +53597,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 raise MemoryError()
  *             if c_dtd.ExternalID:
  */
+    __Pyx_TraceLine(572,0,__PYX_ERR(0, 572, __pyx_L1_error))
     xmlFree(__pyx_v_c_value);
 
     /* "lxml/etree.pyx":573
@@ -50614,6 +53607,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *             if c_dtd.ExternalID:
  *                 tree.xmlFree(<void*>c_dtd.ExternalID)
  */
+    __Pyx_TraceLine(573,0,__PYX_ERR(0, 573, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(0, 573, __pyx_L1_error)
 
     /* "lxml/etree.pyx":571
@@ -50632,6 +53626,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *                 tree.xmlFree(<void*>c_dtd.ExternalID)
  *             c_dtd.ExternalID = c_value
  */
+  __Pyx_TraceLine(574,0,__PYX_ERR(0, 574, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_dtd->ExternalID != 0);
   if (__pyx_t_2) {
 
@@ -50642,6 +53637,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  *             c_dtd.ExternalID = c_value
  * 
  */
+    __Pyx_TraceLine(575,0,__PYX_ERR(0, 575, __pyx_L1_error))
     xmlFree(((void *)__pyx_v_c_dtd->ExternalID));
 
     /* "lxml/etree.pyx":574
@@ -50660,6 +53656,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
  * 
  *     property system_url:
  */
+  __Pyx_TraceLine(576,0,__PYX_ERR(0, 576, __pyx_L1_error))
   __pyx_v_c_dtd->ExternalID = __pyx_v_c_value;
 
   /* "lxml/etree.pyx":559
@@ -50683,6 +53680,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_9public_id_2__set__(struct __pyx_obj_4
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_match);
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50713,6 +53711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(struct __py
   CYTHON_UNUSED PyObject *__pyx_v_public_id = NULL;
   PyObject *__pyx_v_system_url = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -50721,6 +53720,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(struct __py
   PyObject *__pyx_t_5 = NULL;
   PyObject *(*__pyx_t_6)(PyObject *);
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 584, 0, __PYX_ERR(0, 584, __pyx_L1_error));
 
   /* "lxml/etree.pyx":585
  *         """
@@ -50729,6 +53729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(struct __py
  *             return system_url
  * 
  */
+  __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -50798,6 +53799,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(struct __py
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(586,0,__PYX_ERR(0, 586, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_system_url);
   __pyx_r = __pyx_v_system_url;
@@ -50825,6 +53827,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(struct __py
   __Pyx_XDECREF(__pyx_v_public_id);
   __Pyx_XDECREF(__pyx_v_system_url);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -50855,12 +53858,14 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
   PyObject *__pyx_v_bvalue = NULL;
   xmlDtd *__pyx_v_c_dtd;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 588, 0, __PYX_ERR(0, 588, __pyx_L1_error));
 
   /* "lxml/etree.pyx":589
  * 
@@ -50869,6 +53874,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *             if value is not None:
  *                 bvalue = _utf8(value)
  */
+  __Pyx_TraceLine(589,0,__PYX_ERR(0, 589, __pyx_L1_error))
   __pyx_v_c_value = NULL;
 
   /* "lxml/etree.pyx":590
@@ -50878,6 +53884,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 bvalue = _utf8(value)
  *                 # sys_url may be any valid unicode string that can be
  */
+  __Pyx_TraceLine(590,0,__PYX_ERR(0, 590, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -50889,6 +53896,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 # sys_url may be any valid unicode string that can be
  *                 # enclosed in single quotes or quotes.
  */
+    __Pyx_TraceLine(591,0,__PYX_ERR(0, 591, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 591, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_bvalue = ((PyObject*)__pyx_t_3);
@@ -50901,14 +53909,15 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                     raise ValueError(
  *                         'System URL may not contain both single (\') and double quotes (").')
  */
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__31, __pyx_v_bvalue, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
+    __Pyx_TraceLine(594,0,__PYX_ERR(0, 594, __pyx_L1_error))
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__60, __pyx_v_bvalue, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
     __pyx_t_4 = (__pyx_t_1 != 0);
     if (__pyx_t_4) {
     } else {
       __pyx_t_2 = __pyx_t_4;
       goto __pyx_L5_bool_binop_done;
     }
-    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__32, __pyx_v_bvalue, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
+    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__61, __pyx_v_bvalue, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
     __pyx_t_1 = (__pyx_t_4 != 0);
     __pyx_t_2 = __pyx_t_1;
     __pyx_L5_bool_binop_done:;
@@ -50921,7 +53930,8 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                         'System URL may not contain both single (\') and double quotes (").')
  *                 c_value = tree.xmlStrdup(_xcstr(bvalue))
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 595, __pyx_L1_error)
+      __Pyx_TraceLine(595,0,__PYX_ERR(0, 595, __pyx_L1_error))
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 595, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -50943,6 +53953,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 if not c_value:
  *                     raise MemoryError()
  */
+    __Pyx_TraceLine(597,0,__PYX_ERR(0, 597, __pyx_L1_error))
     __pyx_v_c_value = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_bvalue));
 
     /* "lxml/etree.pyx":598
@@ -50952,6 +53963,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                     raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(598,0,__PYX_ERR(0, 598, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_c_value != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -50962,6 +53974,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  * 
  *             c_dtd = self._get_c_dtd()
  */
+      __Pyx_TraceLine(599,0,__PYX_ERR(0, 599, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(0, 599, __pyx_L1_error)
 
       /* "lxml/etree.pyx":598
@@ -50989,6 +54002,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *             if not c_dtd:
  *                 tree.xmlFree(c_value)
  */
+  __Pyx_TraceLine(601,0,__PYX_ERR(0, 601, __pyx_L1_error))
   __pyx_v_c_dtd = __pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(__pyx_v_self);
 
   /* "lxml/etree.pyx":602
@@ -50998,6 +54012,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 tree.xmlFree(c_value)
  *                 raise MemoryError()
  */
+  __Pyx_TraceLine(602,0,__PYX_ERR(0, 602, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_c_dtd != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -51008,6 +54023,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 raise MemoryError()
  *             if c_dtd.SystemID:
  */
+    __Pyx_TraceLine(603,0,__PYX_ERR(0, 603, __pyx_L1_error))
     xmlFree(__pyx_v_c_value);
 
     /* "lxml/etree.pyx":604
@@ -51017,6 +54033,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *             if c_dtd.SystemID:
  *                 tree.xmlFree(<void*>c_dtd.SystemID)
  */
+    __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(0, 604, __pyx_L1_error)
 
     /* "lxml/etree.pyx":602
@@ -51035,6 +54052,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *                 tree.xmlFree(<void*>c_dtd.SystemID)
  *             c_dtd.SystemID = c_value
  */
+  __Pyx_TraceLine(605,0,__PYX_ERR(0, 605, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_dtd->SystemID != 0);
   if (__pyx_t_2) {
 
@@ -51045,6 +54063,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  *             c_dtd.SystemID = c_value
  * 
  */
+    __Pyx_TraceLine(606,0,__PYX_ERR(0, 606, __pyx_L1_error))
     xmlFree(((void *)__pyx_v_c_dtd->SystemID));
 
     /* "lxml/etree.pyx":605
@@ -51063,6 +54082,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
  * 
  *     property xml_version:
  */
+  __Pyx_TraceLine(607,0,__PYX_ERR(0, 607, __pyx_L1_error))
   __pyx_v_c_dtd->SystemID = __pyx_v_c_value;
 
   /* "lxml/etree.pyx":588
@@ -51082,6 +54102,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_bvalue);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51111,6 +54132,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   PyObject *__pyx_v_xml_version = NULL;
   CYTHON_UNUSED PyObject *__pyx_v_encoding = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -51118,6 +54140,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   PyObject *__pyx_t_4 = NULL;
   PyObject *(*__pyx_t_5)(PyObject *);
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 611, 0, __PYX_ERR(0, 611, __pyx_L1_error));
 
   /* "lxml/etree.pyx":612
  *         u"Returns the XML version as declared by the document."
@@ -51126,6 +54149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
  *             return xml_version
  * 
  */
+  __Pyx_TraceLine(612,0,__PYX_ERR(0, 612, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getxmlinfo(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -51186,6 +54210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
  * 
  *     property encoding:
  */
+  __Pyx_TraceLine(613,0,__PYX_ERR(0, 613, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_xml_version);
   __pyx_r = __pyx_v_xml_version;
@@ -51211,6 +54236,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   __Pyx_XDECREF(__pyx_v_xml_version);
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51240,6 +54266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   CYTHON_UNUSED PyObject *__pyx_v_xml_version = NULL;
   PyObject *__pyx_v_encoding = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -51247,6 +54274,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   PyObject *__pyx_t_4 = NULL;
   PyObject *(*__pyx_t_5)(PyObject *);
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 617, 0, __PYX_ERR(0, 617, __pyx_L1_error));
 
   /* "lxml/etree.pyx":618
  *         u"Returns the encoding name as declared by the document."
@@ -51255,6 +54283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
  *             return encoding
  * 
  */
+  __Pyx_TraceLine(618,0,__PYX_ERR(0, 618, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getxmlinfo(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -51315,6 +54344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
  * 
  *     property standalone:
  */
+  __Pyx_TraceLine(619,0,__PYX_ERR(0, 619, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_encoding);
   __pyx_r = __pyx_v_encoding;
@@ -51340,6 +54370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   __Pyx_XDECREF(__pyx_v_xml_version);
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51367,9 +54398,11 @@ static PyObject *__pyx_pw_4lxml_5etree_7DocInfo_10standalone_1__get__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(struct __pyx_obj_4lxml_5etree_DocInfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 629, 0, __PYX_ERR(0, 629, __pyx_L1_error));
 
   /* "lxml/etree.pyx":630
  *         """
@@ -51378,6 +54411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(struct __py
  * 
  *     property URL:
  */
+  __Pyx_TraceLine(630,0,__PYX_ERR(0, 630, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_isstandalone(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 630, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -51400,6 +54434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51427,10 +54462,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7DocInfo_3URL_1__get__(PyObject *__pyx_v_
 
 static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(struct __pyx_obj_4lxml_5etree_DocInfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 634, 0, __PYX_ERR(0, 634, __pyx_L1_error));
 
   /* "lxml/etree.pyx":635
  *         u"The source URL of the document (or None if unknown)."
@@ -51439,6 +54476,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(struct __pyx_obj_4l
  *                 return None
  *             return _decodeFilename(self._doc._c_doc.URL)
  */
+  __Pyx_TraceLine(635,0,__PYX_ERR(0, 635, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_doc->_c_doc->URL == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -51449,6 +54487,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(struct __pyx_obj_4l
  *             return _decodeFilename(self._doc._c_doc.URL)
  *         def __set__(self, url):
  */
+    __Pyx_TraceLine(636,0,__PYX_ERR(0, 636, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -51469,6 +54508,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(struct __pyx_obj_4l
  *         def __set__(self, url):
  *             url = _encodeFilename(url)
  */
+  __Pyx_TraceLine(637,0,__PYX_ERR(0, 637, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_self->_doc->_c_doc->URL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -51491,6 +54531,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51519,12 +54560,14 @@ static int __pyx_pw_4lxml_5etree_7DocInfo_3URL_3__set__(PyObject *__pyx_v_self,
 static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5etree_DocInfo *__pyx_v_self, PyObject *__pyx_v_url) {
   const xmlChar *__pyx_v_c_oldurl;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   const xmlChar *__pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 638, 0, __PYX_ERR(0, 638, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_url);
 
   /* "lxml/etree.pyx":639
@@ -51534,6 +54577,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *             c_oldurl = self._doc._c_doc.URL
  *             if url is None:
  */
+  __Pyx_TraceLine(639,0,__PYX_ERR(0, 639, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_url, __pyx_t_1);
@@ -51546,6 +54590,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *             if url is None:
  *                 self._doc._c_doc.URL = NULL
  */
+  __Pyx_TraceLine(640,0,__PYX_ERR(0, 640, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_doc->_c_doc->URL;
   __pyx_v_c_oldurl = __pyx_t_2;
 
@@ -51556,6 +54601,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *                 self._doc._c_doc.URL = NULL
  *             else:
  */
+  __Pyx_TraceLine(641,0,__PYX_ERR(0, 641, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_url == Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -51567,6 +54613,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *             else:
  *                 self._doc._c_doc.URL = tree.xmlStrdup(_xcstr(url))
  */
+    __Pyx_TraceLine(642,0,__PYX_ERR(0, 642, __pyx_L1_error))
     __pyx_v_self->_doc->_c_doc->URL = NULL;
 
     /* "lxml/etree.pyx":641
@@ -51586,6 +54633,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *             if c_oldurl is not NULL:
  *                 tree.xmlFree(<void*>c_oldurl)
  */
+  __Pyx_TraceLine(644,0,__PYX_ERR(0, 644, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_doc->_c_doc->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_url));
   }
@@ -51598,6 +54646,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  *                 tree.xmlFree(<void*>c_oldurl)
  * 
  */
+  __Pyx_TraceLine(645,0,__PYX_ERR(0, 645, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_oldurl != NULL) != 0);
   if (__pyx_t_4) {
 
@@ -51608,6 +54657,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
  * 
  *     property doctype:
  */
+    __Pyx_TraceLine(646,0,__PYX_ERR(0, 646, __pyx_L1_error))
     xmlFree(((void *)__pyx_v_c_oldurl));
 
     /* "lxml/etree.pyx":645
@@ -51636,6 +54686,7 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_url);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -51667,6 +54718,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   PyObject *__pyx_v_system_url = NULL;
   PyObject *__pyx_v_quoted_system_url = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -51679,6 +54731,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   Py_ssize_t __pyx_t_9;
   Py_UCS4 __pyx_t_10;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 650, 0, __PYX_ERR(0, 650, __pyx_L1_error));
 
   /* "lxml/etree.pyx":651
  *         u"Returns a DOCTYPE declaration string for the document."
@@ -51687,6 +54740,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *             if system_url:
  *                 # If '"' in system_url, we must escape it with single
  */
+  __Pyx_TraceLine(651,0,__PYX_ERR(0, 651, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -51756,6 +54810,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 # If '"' in system_url, we must escape it with single
  *                 # quotes, otherwise escape with double quotes. If url
  */
+  __Pyx_TraceLine(652,0,__PYX_ERR(0, 652, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 652, __pyx_L1_error)
   if (__pyx_t_7) {
 
@@ -51766,7 +54821,8 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                     quoted_system_url = f"'{system_url}'"
  *                 else:
  */
-    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__32, __pyx_v_system_url, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 657, __pyx_L1_error)
+    __Pyx_TraceLine(657,0,__PYX_ERR(0, 657, __pyx_L1_error))
+    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__61, __pyx_v_system_url, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 657, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
 
@@ -51777,14 +54833,15 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 else:
  *                     quoted_system_url = f'"{system_url}"'
  */
+      __Pyx_TraceLine(658,0,__PYX_ERR(0, 658, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_9 = 0;
       __pyx_t_10 = 127;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_9 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__60);
       __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_system_url, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 658, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_10;
@@ -51792,10 +54849,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       __Pyx_GIVEREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
       __pyx_t_4 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_9 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
       __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 658, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -51819,15 +54876,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *             if public_id:
  *                 if system_url:
  */
+    __Pyx_TraceLine(660,0,__PYX_ERR(0, 660, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_9 = 0;
       __pyx_t_10 = 127;
-      __Pyx_INCREF(__pyx_kp_u__32);
+      __Pyx_INCREF(__pyx_kp_u__61);
       __pyx_t_9 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__32);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__32);
+      __Pyx_GIVEREF(__pyx_kp_u__61);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__61);
       __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_system_url, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_10;
@@ -51835,10 +54893,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
       __pyx_t_1 = 0;
-      __Pyx_INCREF(__pyx_kp_u__32);
+      __Pyx_INCREF(__pyx_kp_u__61);
       __pyx_t_9 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__32);
-      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__32);
+      __Pyx_GIVEREF(__pyx_kp_u__61);
+      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__61);
       __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -51863,6 +54921,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 if system_url:
  *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
  */
+  __Pyx_TraceLine(661,0,__PYX_ERR(0, 661, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 661, __pyx_L1_error)
   if (__pyx_t_8) {
 
@@ -51873,6 +54932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
  *                 else:
  */
+    __Pyx_TraceLine(662,0,__PYX_ERR(0, 662, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 662, __pyx_L1_error)
     if (__pyx_t_8) {
 
@@ -51883,6 +54943,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 else:
  *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
  */
+      __Pyx_TraceLine(663,0,__PYX_ERR(0, 663, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -51910,20 +54971,20 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       __Pyx_GIVEREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
       __pyx_t_4 = 0;
-      __Pyx_INCREF(__pyx_kp_u__34);
+      __Pyx_INCREF(__pyx_kp_u__63);
       __pyx_t_9 += 2;
-      __Pyx_GIVEREF(__pyx_kp_u__34);
-      PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__34);
+      __Pyx_GIVEREF(__pyx_kp_u__63);
+      PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__63);
       if (unlikely(!__pyx_v_quoted_system_url)) { __Pyx_RaiseUnboundLocalError("quoted_system_url"); __PYX_ERR(0, 663, __pyx_L1_error) }
       __Pyx_INCREF(__pyx_v_quoted_system_url);
       __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_quoted_system_url) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_quoted_system_url) : __pyx_t_10;
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_quoted_system_url);
       __Pyx_GIVEREF(__pyx_v_quoted_system_url);
       PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_quoted_system_url);
-      __Pyx_INCREF(__pyx_kp_u__35);
+      __Pyx_INCREF(__pyx_kp_u__64);
       __pyx_t_9 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__35);
-      PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__35);
+      __Pyx_GIVEREF(__pyx_kp_u__64);
+      PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__64);
       __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -51947,6 +55008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *             elif system_url:
  *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
  */
+    __Pyx_TraceLine(665,0,__PYX_ERR(0, 665, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error)
@@ -51975,10 +55037,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_1);
       __pyx_t_1 = 0;
-      __Pyx_INCREF(__pyx_kp_u__36);
+      __Pyx_INCREF(__pyx_kp_u__65);
       __pyx_t_9 += 2;
-      __Pyx_GIVEREF(__pyx_kp_u__36);
-      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u__36);
+      __Pyx_GIVEREF(__pyx_kp_u__65);
+      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u__65);
       __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -52003,6 +55065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
  *             elif self._doc.hasdoctype():
  */
+  __Pyx_TraceLine(666,0,__PYX_ERR(0, 666, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 666, __pyx_L1_error)
   if (__pyx_t_8) {
 
@@ -52013,6 +55076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *             elif self._doc.hasdoctype():
  *                 return f'<!DOCTYPE {root_name}>'
  */
+    __Pyx_TraceLine(667,0,__PYX_ERR(0, 667, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -52039,10 +55103,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_v_quoted_system_url);
     __Pyx_GIVEREF(__pyx_v_quoted_system_url);
     PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_quoted_system_url);
-    __Pyx_INCREF(__pyx_kp_u__35);
+    __Pyx_INCREF(__pyx_kp_u__64);
     __pyx_t_9 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__35);
-    PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__35);
+    __Pyx_GIVEREF(__pyx_kp_u__64);
+    PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__64);
     __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -52066,6 +55130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *                 return f'<!DOCTYPE {root_name}>'
  *             else:
  */
+  __Pyx_TraceLine(668,0,__PYX_ERR(0, 668, __pyx_L1_error))
   __pyx_t_8 = (__pyx_f_4lxml_5etree_9_Document_hasdoctype(__pyx_v_self->_doc) != 0);
   if (__pyx_t_8) {
 
@@ -52076,6 +55141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  *             else:
  *                 return u''
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(0, 669, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 669, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -52092,10 +55158,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__35);
+    __Pyx_INCREF(__pyx_kp_u__64);
     __pyx_t_9 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__35);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__35);
+    __Pyx_GIVEREF(__pyx_kp_u__64);
+    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__64);
     __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -52119,10 +55185,11 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
  * 
  *     property internalDTD:
  */
+  __Pyx_TraceLine(671,0,__PYX_ERR(0, 671, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_u__16);
-    __pyx_r = __pyx_kp_u__16;
+    __Pyx_INCREF(__pyx_kp_u__23);
+    __pyx_r = __pyx_kp_u__23;
     goto __pyx_L0;
   }
 
@@ -52149,6 +55216,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   __Pyx_XDECREF(__pyx_v_system_url);
   __Pyx_XDECREF(__pyx_v_quoted_system_url);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -52176,9 +55244,11 @@ static PyObject *__pyx_pw_4lxml_5etree_7DocInfo_11internalDTD_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __pyx_obj_4lxml_5etree_DocInfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 675, 0, __PYX_ERR(0, 675, __pyx_L1_error));
 
   /* "lxml/etree.pyx":676
  *         u"Returns a DTD validator based on the internal subset of the document."
@@ -52187,6 +55257,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __p
  * 
  *     property externalDTD:
  */
+  __Pyx_TraceLine(676,0,__PYX_ERR(0, 676, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__dtdFactory(__pyx_v_self->_doc->_c_doc->intSubset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -52209,6 +55280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -52236,9 +55308,11 @@ static PyObject *__pyx_pw_4lxml_5etree_7DocInfo_11externalDTD_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(struct __pyx_obj_4lxml_5etree_DocInfo *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 680, 0, __PYX_ERR(0, 680, __pyx_L1_error));
 
   /* "lxml/etree.pyx":681
  *         u"Returns a DTD validator based on the external subset of the document."
@@ -52247,6 +55321,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(struct __p
  * 
  * 
  */
+  __Pyx_TraceLine(681,0,__PYX_ERR(0, 681, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__dtdFactory(__pyx_v_self->_doc->_c_doc->extSubset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -52269,6 +55344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -52298,12 +55374,21 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_1_init(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element__init(CYTHON_UNUSED struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__66)
   __Pyx_RefNannySetupContext("_init", 0);
+  __Pyx_TraceCall("_init", __pyx_f[0], 697, 0, __PYX_ERR(0, 697, __pyx_L1_error));
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._Element._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -52328,10 +55413,12 @@ static void __pyx_pw_4lxml_5etree_8_Element_3__dealloc__(PyObject *__pyx_v_self)
 }
 
 static void __pyx_pf_4lxml_5etree_8_Element_2__dealloc__(struct LxmlElement *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[0], 704, 0, __PYX_ERR(0, 704, __pyx_L1_error));
 
   /* "lxml/etree.pyx":707
  *         #print "trying to free node:", <int>self._c_node
@@ -52340,6 +55427,7 @@ static void __pyx_pf_4lxml_5etree_8_Element_2__dealloc__(struct LxmlElement *__p
  *             _unregisterProxy(self)
  *             attemptDeallocation(self._c_node)
  */
+  __Pyx_TraceLine(707,0,__PYX_ERR(0, 707, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_node != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -52350,6 +55438,7 @@ static void __pyx_pf_4lxml_5etree_8_Element_2__dealloc__(struct LxmlElement *__p
  *             attemptDeallocation(self._c_node)
  * 
  */
+    __Pyx_TraceLine(708,0,__PYX_ERR(0, 708, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__unregisterProxy(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 708, __pyx_L1_error)
 
     /* "lxml/etree.pyx":709
@@ -52359,6 +55448,7 @@ static void __pyx_pf_4lxml_5etree_8_Element_2__dealloc__(struct LxmlElement *__p
  * 
  *     # MANIPULATORS
  */
+    __Pyx_TraceLine(709,0,__PYX_ERR(0, 709, __pyx_L1_error))
     (void)(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_self->_c_node));
 
     /* "lxml/etree.pyx":707
@@ -52383,6 +55473,7 @@ static void __pyx_pf_4lxml_5etree_8_Element_2__dealloc__(struct LxmlElement *__p
   __pyx_L1_error:;
   __Pyx_WriteUnraisable("lxml.etree._Element.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -52420,6 +55511,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
   Py_ssize_t __pyx_v_slicelength;
   Py_ssize_t __pyx_v_step;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -52429,6 +55521,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
   xmlDoc *__pyx_t_6;
   xmlNode *__pyx_t_7;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[0], 713, 0, __PYX_ERR(0, 713, __pyx_L1_error));
 
   /* "lxml/etree.pyx":718
  *         Replaces the given subelement index or slice.
@@ -52437,6 +55530,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *         cdef xmlNode* c_next
  *         cdef xmlDoc* c_source_doc
  */
+  __Pyx_TraceLine(718,0,__PYX_ERR(0, 718, __pyx_L1_error))
   __pyx_v_c_node = NULL;
 
   /* "lxml/etree.pyx":723
@@ -52446,6 +55540,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *         _assertValidNode(self)
  *         if value is None:
  */
+  __Pyx_TraceLine(723,0,__PYX_ERR(0, 723, __pyx_L1_error))
   __pyx_v_slicelength = 0;
   __pyx_v_step = 0;
 
@@ -52456,6 +55551,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *         if value is None:
  *             raise ValueError, u"cannot assign None"
  */
+  __Pyx_TraceLine(724,0,__PYX_ERR(0, 724, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 724, __pyx_L1_error)
 
   /* "lxml/etree.pyx":725
@@ -52465,6 +55561,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             raise ValueError, u"cannot assign None"
  *         if isinstance(x, slice):
  */
+  __Pyx_TraceLine(725,0,__PYX_ERR(0, 725, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -52476,6 +55573,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *         if isinstance(x, slice):
  *             # slice assignment
  */
+    __Pyx_TraceLine(726,0,__PYX_ERR(0, 726, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_cannot_assign_None, 0, 0);
     __PYX_ERR(0, 726, __pyx_L1_error)
 
@@ -52495,6 +55593,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             # slice assignment
  *             _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  */
+  __Pyx_TraceLine(727,0,__PYX_ERR(0, 727, __pyx_L1_error))
   __pyx_t_3 = PySlice_Check(__pyx_v_x); 
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -52506,6 +55605,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             if step > 0:
  *                 left_to_right = 1
  */
+    __Pyx_TraceLine(729,0,__PYX_ERR(0, 729, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__findChildSlice(((PyObject*)__pyx_v_x), __pyx_v_self->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 729, __pyx_L1_error)
 
     /* "lxml/etree.pyx":730
@@ -52515,6 +55615,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *                 left_to_right = 1
  *             else:
  */
+    __Pyx_TraceLine(730,0,__PYX_ERR(0, 730, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_step > 0) != 0);
     if (__pyx_t_2) {
 
@@ -52525,6 +55626,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             else:
  *                 left_to_right = 0
  */
+      __Pyx_TraceLine(731,0,__PYX_ERR(0, 731, __pyx_L1_error))
       __pyx_v_left_to_right = 1;
 
       /* "lxml/etree.pyx":730
@@ -52544,6 +55646,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *                 step = -step
  *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)
  */
+    __Pyx_TraceLine(733,0,__PYX_ERR(0, 733, __pyx_L1_error))
     /*else*/ {
       __pyx_v_left_to_right = 0;
 
@@ -52554,6 +55657,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)
  *             return
  */
+      __Pyx_TraceLine(734,0,__PYX_ERR(0, 734, __pyx_L1_error))
       __pyx_v_step = (-__pyx_v_step);
     }
     __pyx_L5:;
@@ -52565,6 +55669,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             return
  *         else:
  */
+    __Pyx_TraceLine(735,0,__PYX_ERR(0, 735, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__replaceSlice(__pyx_v_self, __pyx_v_c_node, __pyx_v_slicelength, __pyx_v_step, __pyx_v_left_to_right, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 735, __pyx_L1_error)
 
     /* "lxml/etree.pyx":736
@@ -52574,6 +55679,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *         else:
  *             # otherwise: normal item assignment
  */
+    __Pyx_TraceLine(736,0,__PYX_ERR(0, 736, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -52593,6 +55699,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             _assertValidNode(element)
  *             c_node = _findChild(self._c_node, x)
  */
+  __Pyx_TraceLine(739,0,__PYX_ERR(0, 739, __pyx_L1_error))
   /*else*/ {
     if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 739, __pyx_L1_error)
     __pyx_t_4 = __pyx_v_value;
@@ -52607,6 +55714,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             c_node = _findChild(self._c_node, x)
  *             if c_node is NULL:
  */
+    __Pyx_TraceLine(740,0,__PYX_ERR(0, 740, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 740, __pyx_L1_error)
 
     /* "lxml/etree.pyx":741
@@ -52616,6 +55724,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             if c_node is NULL:
  *                 raise IndexError, u"list index out of range"
  */
+    __Pyx_TraceLine(741,0,__PYX_ERR(0, 741, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 741, __pyx_L1_error)
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(__pyx_v_self->_c_node, __pyx_t_5);
 
@@ -52626,6 +55735,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *                 raise IndexError, u"list index out of range"
  *             c_source_doc = element._c_node.doc
  */
+    __Pyx_TraceLine(742,0,__PYX_ERR(0, 742, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -52636,6 +55746,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             c_source_doc = element._c_node.doc
  *             c_next = element._c_node.next
  */
+      __Pyx_TraceLine(743,0,__PYX_ERR(0, 743, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_IndexError, __pyx_kp_u_list_index_out_of_range, 0, 0);
       __PYX_ERR(0, 743, __pyx_L1_error)
 
@@ -52655,6 +55766,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             c_next = element._c_node.next
  *             _removeText(c_node.next)
  */
+    __Pyx_TraceLine(744,0,__PYX_ERR(0, 744, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_element->_c_node->doc;
     __pyx_v_c_source_doc = __pyx_t_6;
 
@@ -52665,6 +55777,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             _removeText(c_node.next)
  *             tree.xmlReplaceNode(c_node, element._c_node)
  */
+    __Pyx_TraceLine(745,0,__PYX_ERR(0, 745, __pyx_L1_error))
     __pyx_t_7 = __pyx_v_element->_c_node->next;
     __pyx_v_c_next = __pyx_t_7;
 
@@ -52675,6 +55788,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             tree.xmlReplaceNode(c_node, element._c_node)
  *             _moveTail(c_next, element._c_node)
  */
+    __Pyx_TraceLine(746,0,__PYX_ERR(0, 746, __pyx_L1_error))
     __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
     /* "lxml/etree.pyx":747
@@ -52684,6 +55798,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             _moveTail(c_next, element._c_node)
  *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
  */
+    __Pyx_TraceLine(747,0,__PYX_ERR(0, 747, __pyx_L1_error))
     (void)(xmlReplaceNode(__pyx_v_c_node, __pyx_v_element->_c_node));
 
     /* "lxml/etree.pyx":748
@@ -52693,6 +55808,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
  *             if not attemptDeallocation(c_node):
  */
+    __Pyx_TraceLine(748,0,__PYX_ERR(0, 748, __pyx_L1_error))
     __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);
 
     /* "lxml/etree.pyx":749
@@ -52702,6 +55818,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *             if not attemptDeallocation(c_node):
  *                 moveNodeToDocument(self._doc, c_node.doc, c_node)
  */
+    __Pyx_TraceLine(749,0,__PYX_ERR(0, 749, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 749, __pyx_L1_error)
@@ -52714,6 +55831,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  *                 moveNodeToDocument(self._doc, c_node.doc, c_node)
  * 
  */
+    __Pyx_TraceLine(750,0,__PYX_ERR(0, 750, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_2) {
 
@@ -52724,6 +55842,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
  * 
  *     def __delitem__(self, x):
  */
+      __Pyx_TraceLine(751,0,__PYX_ERR(0, 751, __pyx_L1_error))
       __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
       __Pyx_INCREF(__pyx_t_4);
       __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 751, __pyx_L1_error)
@@ -52756,6 +55875,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4__setitem__(struct LxmlElement *__py
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -52791,6 +55911,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
   Py_ssize_t __pyx_v_step;
   Py_ssize_t __pyx_v_slicelength;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -52800,6 +55921,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
   Py_ssize_t __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__delitem__", 0);
+  __Pyx_TraceCall("__delitem__", __pyx_f[0], 753, 0, __PYX_ERR(0, 753, __pyx_L1_error));
 
   /* "lxml/etree.pyx":758
  *         Deletes the given subelement or a slice.
@@ -52808,6 +55930,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *         cdef xmlNode* c_next
  *         cdef Py_ssize_t step = 0, slicelength = 0
  */
+  __Pyx_TraceLine(758,0,__PYX_ERR(0, 758, __pyx_L1_error))
   __pyx_v_c_node = NULL;
 
   /* "lxml/etree.pyx":760
@@ -52817,6 +55940,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *         _assertValidNode(self)
  *         if isinstance(x, slice):
  */
+  __Pyx_TraceLine(760,0,__PYX_ERR(0, 760, __pyx_L1_error))
   __pyx_v_step = 0;
   __pyx_v_slicelength = 0;
 
@@ -52827,6 +55951,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *         if isinstance(x, slice):
  *             # slice deletion
  */
+  __Pyx_TraceLine(761,0,__PYX_ERR(0, 761, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 761, __pyx_L1_error)
 
   /* "lxml/etree.pyx":762
@@ -52836,6 +55961,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *             # slice deletion
  *             if _isFullSlice(<slice>x):
  */
+  __Pyx_TraceLine(762,0,__PYX_ERR(0, 762, __pyx_L1_error))
   __pyx_t_2 = PySlice_Check(__pyx_v_x); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -52847,6 +55973,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                 c_node = self._c_node.children
  *                 if c_node is not NULL:
  */
+    __Pyx_TraceLine(764,0,__PYX_ERR(0, 764, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__isFullSlice(((PyObject*)__pyx_v_x)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 764, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -52858,6 +55985,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                 if c_node is not NULL:
  *                     if not _isElement(c_node):
  */
+      __Pyx_TraceLine(765,0,__PYX_ERR(0, 765, __pyx_L1_error))
       __pyx_t_4 = __pyx_v_self->_c_node->children;
       __pyx_v_c_node = __pyx_t_4;
 
@@ -52868,6 +55996,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                     if not _isElement(c_node):
  *                         c_node = _nextElement(c_node)
  */
+      __Pyx_TraceLine(766,0,__PYX_ERR(0, 766, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
       if (__pyx_t_2) {
 
@@ -52878,6 +56007,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                         c_node = _nextElement(c_node)
  *                     while c_node is not NULL:
  */
+        __Pyx_TraceLine(767,0,__PYX_ERR(0, 767, __pyx_L1_error))
         __pyx_t_2 = ((!(_isElement(__pyx_v_c_node) != 0)) != 0);
         if (__pyx_t_2) {
 
@@ -52888,6 +56018,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                     while c_node is not NULL:
  *                         c_next = _nextElement(c_node)
  */
+          __Pyx_TraceLine(768,0,__PYX_ERR(0, 768, __pyx_L1_error))
           __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
           /* "lxml/etree.pyx":767
@@ -52906,6 +56037,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                         c_next = _nextElement(c_node)
  *                         _removeNode(self._doc, c_node)
  */
+        __Pyx_TraceLine(769,0,__PYX_ERR(0, 769, __pyx_L1_error))
         while (1) {
           __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
           if (!__pyx_t_2) break;
@@ -52917,6 +56049,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                         _removeNode(self._doc, c_node)
  *                         c_node = c_next
  */
+          __Pyx_TraceLine(770,0,__PYX_ERR(0, 770, __pyx_L1_error))
           __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
           /* "lxml/etree.pyx":771
@@ -52926,6 +56059,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                         c_node = c_next
  *             else:
  */
+          __Pyx_TraceLine(771,0,__PYX_ERR(0, 771, __pyx_L1_error))
           __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
           __Pyx_INCREF(__pyx_t_5);
           __pyx_t_1 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 771, __pyx_L1_error)
@@ -52938,6 +56072,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *             else:
  *                 _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  */
+          __Pyx_TraceLine(772,0,__PYX_ERR(0, 772, __pyx_L1_error))
           __pyx_v_c_node = __pyx_v_c_next;
         }
 
@@ -52967,6 +56102,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                 _deleteSlice(self._doc, c_node, slicelength, step)
  *         else:
  */
+    __Pyx_TraceLine(774,0,__PYX_ERR(0, 774, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = __pyx_f_4lxml_5etree__findChildSlice(((PyObject*)__pyx_v_x), __pyx_v_self->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 774, __pyx_L1_error)
 
@@ -52977,6 +56113,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *         else:
  *             # item deletion
  */
+      __Pyx_TraceLine(775,0,__PYX_ERR(0, 775, __pyx_L1_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_t_1 = __pyx_f_4lxml_5etree__deleteSlice(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node, __pyx_v_slicelength, __pyx_v_step); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 775, __pyx_L1_error)
@@ -53001,6 +56138,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *             if c_node is NULL:
  *                 raise IndexError, f"index out of range: {x}"
  */
+  __Pyx_TraceLine(778,0,__PYX_ERR(0, 778, __pyx_L1_error))
   /*else*/ {
     __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 778, __pyx_L1_error)
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(__pyx_v_self->_c_node, __pyx_t_6);
@@ -53012,6 +56150,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *                 raise IndexError, f"index out of range: {x}"
  *             _removeText(c_node.next)
  */
+    __Pyx_TraceLine(779,0,__PYX_ERR(0, 779, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -53022,6 +56161,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *             _removeText(c_node.next)
  *             _removeNode(self._doc, c_node)
  */
+      __Pyx_TraceLine(780,0,__PYX_ERR(0, 780, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_x, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 780, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_kp_u_index_out_of_range, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 780, __pyx_L1_error)
@@ -53047,6 +56187,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  *             _removeNode(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(781,0,__PYX_ERR(0, 781, __pyx_L1_error))
     __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
     /* "lxml/etree.pyx":782
@@ -53056,6 +56197,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
  * 
  *     def __deepcopy__(self, memo):
  */
+    __Pyx_TraceLine(782,0,__PYX_ERR(0, 782, __pyx_L1_error))
     __pyx_t_7 = ((PyObject *)__pyx_v_self->_doc);
     __Pyx_INCREF(__pyx_t_7);
     __pyx_t_1 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_7), __pyx_v_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 782, __pyx_L1_error)
@@ -53080,6 +56222,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_6__delitem__(struct LxmlElement *__py
   __Pyx_AddTraceback("lxml.etree._Element.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53109,11 +56252,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_9__deepcopy__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_8__deepcopy__(struct LxmlElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_memo) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__67)
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
+  __Pyx_TraceCall("__deepcopy__", __pyx_f[0], 784, 0, __PYX_ERR(0, 784, __pyx_L1_error));
 
   /* "lxml/etree.pyx":786
  *     def __deepcopy__(self, memo):
@@ -53122,6 +56268,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_8__deepcopy__(struct LxmlElemen
  * 
  *     def __copy__(self):
  */
+  __Pyx_TraceLine(786,0,__PYX_ERR(0, 786, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -53164,6 +56311,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_8__deepcopy__(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53197,6 +56345,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
   struct LxmlDocument *__pyx_v_new_doc = 0;
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlDoc *__pyx_t_2;
@@ -53205,7 +56354,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
   int __pyx_t_5;
   int __pyx_t_6;
   xmlNode *__pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__68)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__", __pyx_f[0], 788, 0, __PYX_ERR(0, 788, __pyx_L1_error));
 
   /* "lxml/etree.pyx":793
  *         cdef xmlNode* c_node
@@ -53214,6 +56365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         c_doc = _copyDocRoot(self._doc._c_doc, self._c_node) # recursive
  *         new_doc = _documentFactory(c_doc, self._doc._parser)
  */
+  __Pyx_TraceLine(793,0,__PYX_ERR(0, 793, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 793, __pyx_L1_error)
 
   /* "lxml/etree.pyx":794
@@ -53223,6 +56375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         new_doc = _documentFactory(c_doc, self._doc._parser)
  *         root = new_doc.getroot()
  */
+  __Pyx_TraceLine(794,0,__PYX_ERR(0, 794, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_self->_doc->_c_doc, __pyx_v_self->_c_node); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(0, 794, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_2;
 
@@ -53233,6 +56386,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         root = new_doc.getroot()
  *         if root is not None:
  */
+  __Pyx_TraceLine(795,0,__PYX_ERR(0, 795, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_self->_doc->_parser);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 795, __pyx_L1_error)
@@ -53248,6 +56402,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         if root is not None:
  *             return root
  */
+  __Pyx_TraceLine(796,0,__PYX_ERR(0, 796, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_new_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_root = __pyx_t_4;
@@ -53260,6 +56415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *             return root
  *         # Comment/PI
  */
+  __Pyx_TraceLine(797,0,__PYX_ERR(0, 797, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_root != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -53271,6 +56427,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         # Comment/PI
  *         c_node = c_doc.children
  */
+    __Pyx_TraceLine(798,0,__PYX_ERR(0, 798, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_root);
     __pyx_r = __pyx_v_root;
@@ -53292,6 +56449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         while c_node is not NULL and c_node.type != self._c_node.type:
  *             c_node = c_node.next
  */
+  __Pyx_TraceLine(800,0,__PYX_ERR(0, 800, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_c_doc->children;
   __pyx_v_c_node = __pyx_t_7;
 
@@ -53302,6 +56460,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *             c_node = c_node.next
  *         if c_node is NULL:
  */
+  __Pyx_TraceLine(801,0,__PYX_ERR(0, 801, __pyx_L1_error))
   while (1) {
     __pyx_t_5 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_5) {
@@ -53321,6 +56480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         if c_node is NULL:
  *             return None
  */
+    __Pyx_TraceLine(802,0,__PYX_ERR(0, 802, __pyx_L1_error))
     __pyx_t_7 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_7;
   }
@@ -53332,6 +56492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *             return None
  *         return _elementFactory(new_doc, c_node)
  */
+  __Pyx_TraceLine(803,0,__PYX_ERR(0, 803, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_6) {
 
@@ -53342,6 +56503,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  *         return _elementFactory(new_doc, c_node)
  * 
  */
+    __Pyx_TraceLine(804,0,__PYX_ERR(0, 804, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -53362,6 +56524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
  * 
  *     def set(self, key, value):
  */
+  __Pyx_TraceLine(805,0,__PYX_ERR(0, 805, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_new_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -53387,6 +56550,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10__copy__(struct LxmlElement *
   __Pyx_XDECREF((PyObject *)__pyx_v_new_doc);
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53464,9 +56628,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_13set(PyObject *__pyx_v_self, P
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_12set(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__69)
   __Pyx_RefNannySetupContext("set", 0);
+  __Pyx_TraceCall("set", __pyx_f[0], 807, 0, __PYX_ERR(0, 807, __pyx_L1_error));
 
   /* "lxml/etree.pyx":812
  *         Sets an element attribute.
@@ -53475,6 +56642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_12set(struct LxmlElement *__pyx
  *         _setAttributeValue(self, key, value)
  * 
  */
+  __Pyx_TraceLine(812,0,__PYX_ERR(0, 812, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 812, __pyx_L1_error)
 
   /* "lxml/etree.pyx":813
@@ -53484,6 +56652,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_12set(struct LxmlElement *__pyx
  * 
  *     def append(self, _Element element not None):
  */
+  __Pyx_TraceLine(813,0,__PYX_ERR(0, 813, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setAttributeValue(__pyx_v_self, __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 813, __pyx_L1_error)
 
   /* "lxml/etree.pyx":807
@@ -53502,6 +56671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_12set(struct LxmlElement *__pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53536,9 +56706,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_15append(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_14append(struct LxmlElement *__pyx_v_self, struct LxmlElement *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__70)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append", __pyx_f[0], 815, 0, __PYX_ERR(0, 815, __pyx_L1_error));
 
   /* "lxml/etree.pyx":820
  *         Adds a subelement to the end of this element.
@@ -53547,6 +56720,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_14append(struct LxmlElement *__
  *         _assertValidNode(element)
  *         _appendChild(self, element)
  */
+  __Pyx_TraceLine(820,0,__PYX_ERR(0, 820, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 820, __pyx_L1_error)
 
   /* "lxml/etree.pyx":821
@@ -53556,6 +56730,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_14append(struct LxmlElement *__
  *         _appendChild(self, element)
  * 
  */
+  __Pyx_TraceLine(821,0,__PYX_ERR(0, 821, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 821, __pyx_L1_error)
 
   /* "lxml/etree.pyx":822
@@ -53565,6 +56740,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_14append(struct LxmlElement *__
  * 
  *     def addnext(self, _Element element not None):
  */
+  __Pyx_TraceLine(822,0,__PYX_ERR(0, 822, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_self, __pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 822, __pyx_L1_error)
 
   /* "lxml/etree.pyx":815
@@ -53583,6 +56759,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_14append(struct LxmlElement *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53617,11 +56794,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_17addnext(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *__pyx_v_self, struct LxmlElement *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__71)
   __Pyx_RefNannySetupContext("addnext", 0);
+  __Pyx_TraceCall("addnext", __pyx_f[0], 824, 0, __PYX_ERR(0, 824, __pyx_L1_error));
 
   /* "lxml/etree.pyx":834
  *         discarded when adding at the root level.
@@ -53630,6 +56810,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *         _assertValidNode(element)
  *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(0, 834, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 834, __pyx_L1_error)
 
   /* "lxml/etree.pyx":835
@@ -53639,6 +56820,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
  *             if element._c_node.type != tree.XML_PI_NODE:
  */
+  __Pyx_TraceLine(835,0,__PYX_ERR(0, 835, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 835, __pyx_L1_error)
 
   /* "lxml/etree.pyx":836
@@ -53648,6 +56830,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *             if element._c_node.type != tree.XML_PI_NODE:
  *                 if element._c_node.type != tree.XML_COMMENT_NODE:
  */
+  __Pyx_TraceLine(836,0,__PYX_ERR(0, 836, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->_c_node->parent != NULL) != 0);
   if (__pyx_t_3) {
   } else {
@@ -53666,6 +56849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *                 if element._c_node.type != tree.XML_COMMENT_NODE:
  *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
  */
+    __Pyx_TraceLine(837,0,__PYX_ERR(0, 837, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_PI_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -53676,6 +56860,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
  *             element.tail = None
  */
+      __Pyx_TraceLine(838,0,__PYX_ERR(0, 838, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_COMMENT_NODE) != 0);
       if (unlikely(__pyx_t_2)) {
 
@@ -53686,6 +56871,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *             element.tail = None
  *         _appendSibling(self, element)
  */
+        __Pyx_TraceLine(839,0,__PYX_ERR(0, 839, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Only_processing_instructions_and, 0, 0);
         __PYX_ERR(0, 839, __pyx_L1_error)
 
@@ -53714,6 +56900,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  *         _appendSibling(self, element)
  * 
  */
+    __Pyx_TraceLine(840,0,__PYX_ERR(0, 840, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tail, Py_None) < 0) __PYX_ERR(0, 840, __pyx_L1_error)
 
     /* "lxml/etree.pyx":836
@@ -53732,6 +56919,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
  * 
  *     def addprevious(self, _Element element not None):
  */
+  __Pyx_TraceLine(841,0,__PYX_ERR(0, 841, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__appendSibling(__pyx_v_self, __pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 841, __pyx_L1_error)
 
   /* "lxml/etree.pyx":824
@@ -53750,6 +56938,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_16addnext(struct LxmlElement *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53784,11 +56973,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_19addprevious(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElement *__pyx_v_self, struct LxmlElement *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__72)
   __Pyx_RefNannySetupContext("addprevious", 0);
+  __Pyx_TraceCall("addprevious", __pyx_f[0], 843, 0, __PYX_ERR(0, 843, __pyx_L1_error));
 
   /* "lxml/etree.pyx":853
  *         automatically discarded when adding at the root level.
@@ -53797,6 +56989,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *         _assertValidNode(element)
  *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
  */
+  __Pyx_TraceLine(853,0,__PYX_ERR(0, 853, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 853, __pyx_L1_error)
 
   /* "lxml/etree.pyx":854
@@ -53806,6 +56999,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
  *             if element._c_node.type != tree.XML_PI_NODE:
  */
+  __Pyx_TraceLine(854,0,__PYX_ERR(0, 854, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 854, __pyx_L1_error)
 
   /* "lxml/etree.pyx":855
@@ -53815,6 +57009,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *             if element._c_node.type != tree.XML_PI_NODE:
  *                 if element._c_node.type != tree.XML_COMMENT_NODE:
  */
+  __Pyx_TraceLine(855,0,__PYX_ERR(0, 855, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->_c_node->parent != NULL) != 0);
   if (__pyx_t_3) {
   } else {
@@ -53833,6 +57028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *                 if element._c_node.type != tree.XML_COMMENT_NODE:
  *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
  */
+    __Pyx_TraceLine(856,0,__PYX_ERR(0, 856, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_PI_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -53843,6 +57039,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
  *             element.tail = None
  */
+      __Pyx_TraceLine(857,0,__PYX_ERR(0, 857, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_COMMENT_NODE) != 0);
       if (unlikely(__pyx_t_2)) {
 
@@ -53853,6 +57050,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *             element.tail = None
  *         _prependSibling(self, element)
  */
+        __Pyx_TraceLine(858,0,__PYX_ERR(0, 858, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Only_processing_instructions_and, 0, 0);
         __PYX_ERR(0, 858, __pyx_L1_error)
 
@@ -53881,6 +57079,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  *         _prependSibling(self, element)
  * 
  */
+    __Pyx_TraceLine(859,0,__PYX_ERR(0, 859, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tail, Py_None) < 0) __PYX_ERR(0, 859, __pyx_L1_error)
 
     /* "lxml/etree.pyx":855
@@ -53899,6 +57098,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
  * 
  *     def extend(self, elements):
  */
+  __Pyx_TraceLine(860,0,__PYX_ERR(0, 860, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__prependSibling(__pyx_v_self, __pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 860, __pyx_L1_error)
 
   /* "lxml/etree.pyx":843
@@ -53917,6 +57117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_18addprevious(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -53947,6 +57148,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_21extend(PyObject *__pyx_v_self
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_elements) {
   struct LxmlElement *__pyx_v_element = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -53955,7 +57157,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__73)
   __Pyx_RefNannySetupContext("extend", 0);
+  __Pyx_TraceCall("extend", __pyx_f[0], 862, 0, __PYX_ERR(0, 862, __pyx_L1_error));
 
   /* "lxml/etree.pyx":868
  *         """
@@ -53964,6 +57168,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *         for element in elements:
  *             if element is None:
  */
+  __Pyx_TraceLine(868,0,__PYX_ERR(0, 868, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 868, __pyx_L1_error)
 
   /* "lxml/etree.pyx":869
@@ -53973,6 +57178,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *             if element is None:
  *                 raise TypeError, u"Node must not be None"
  */
+  __Pyx_TraceLine(869,0,__PYX_ERR(0, 869, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
     __pyx_t_2 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
@@ -54023,6 +57229,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *                 raise TypeError, u"Node must not be None"
  *             _assertValidNode(element)
  */
+    __Pyx_TraceLine(870,0,__PYX_ERR(0, 870, __pyx_L1_error))
     __pyx_t_6 = (((PyObject *)__pyx_v_element) == Py_None);
     __pyx_t_7 = (__pyx_t_6 != 0);
     if (unlikely(__pyx_t_7)) {
@@ -54034,6 +57241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *             _assertValidNode(element)
  *             _appendChild(self, element)
  */
+      __Pyx_TraceLine(871,0,__PYX_ERR(0, 871, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Node_must_not_be_None, 0, 0);
       __PYX_ERR(0, 871, __pyx_L1_error)
 
@@ -54053,6 +57261,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *             _appendChild(self, element)
  * 
  */
+    __Pyx_TraceLine(872,0,__PYX_ERR(0, 872, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 872, __pyx_L1_error)
 
     /* "lxml/etree.pyx":873
@@ -54062,6 +57271,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  * 
  *     def clear(self):
  */
+    __Pyx_TraceLine(873,0,__PYX_ERR(0, 873, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_self, __pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 873, __pyx_L1_error)
 
     /* "lxml/etree.pyx":869
@@ -54071,6 +57281,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
  *             if element is None:
  *                 raise TypeError, u"Node must not be None"
  */
+    __Pyx_TraceLine(869,0,__PYX_ERR(0, 869, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -54093,6 +57304,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_20extend(struct LxmlElement *__
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -54126,13 +57338,16 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_v_c_node_next;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   xmlAttr *__pyx_t_3;
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__74)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[0], 875, 0, __PYX_ERR(0, 875, __pyx_L1_error));
 
   /* "lxml/etree.pyx":885
  *         cdef xmlNode* c_node
@@ -54141,6 +57356,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         c_node = self._c_node
  *         # remove self.text and self.tail
  */
+  __Pyx_TraceLine(885,0,__PYX_ERR(0, 885, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 885, __pyx_L1_error)
 
   /* "lxml/etree.pyx":886
@@ -54150,6 +57366,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         # remove self.text and self.tail
  *         _removeText(c_node.children)
  */
+  __Pyx_TraceLine(886,0,__PYX_ERR(0, 886, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -54160,6 +57377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         _removeText(c_node.next)
  *         # remove all attributes
  */
+  __Pyx_TraceLine(888,0,__PYX_ERR(0, 888, __pyx_L1_error))
   __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->children);
 
   /* "lxml/etree.pyx":889
@@ -54169,6 +57387,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         # remove all attributes
  *         c_attr = c_node.properties
  */
+  __Pyx_TraceLine(889,0,__PYX_ERR(0, 889, __pyx_L1_error))
   __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
 
   /* "lxml/etree.pyx":891
@@ -54178,6 +57397,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         while c_attr is not NULL:
  *             c_attr_next = c_attr.next
  */
+  __Pyx_TraceLine(891,0,__PYX_ERR(0, 891, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_node->properties;
   __pyx_v_c_attr = __pyx_t_3;
 
@@ -54188,6 +57408,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *             c_attr_next = c_attr.next
  *             tree.xmlRemoveProp(c_attr)
  */
+  __Pyx_TraceLine(892,0,__PYX_ERR(0, 892, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -54199,6 +57420,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *             tree.xmlRemoveProp(c_attr)
  *             c_attr = c_attr_next
  */
+    __Pyx_TraceLine(893,0,__PYX_ERR(0, 893, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_attr->next;
     __pyx_v_c_attr_next = __pyx_t_3;
 
@@ -54209,6 +57431,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *             c_attr = c_attr_next
  *         # remove all subelements
  */
+    __Pyx_TraceLine(894,0,__PYX_ERR(0, 894, __pyx_L1_error))
     (void)(xmlRemoveProp(__pyx_v_c_attr));
 
     /* "lxml/etree.pyx":895
@@ -54218,6 +57441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         # remove all subelements
  *         c_node = c_node.children
  */
+    __Pyx_TraceLine(895,0,__PYX_ERR(0, 895, __pyx_L1_error))
     __pyx_v_c_attr = __pyx_v_c_attr_next;
   }
 
@@ -54228,6 +57452,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *         if c_node is not NULL:
  *             if not _isElement(c_node):
  */
+  __Pyx_TraceLine(897,0,__PYX_ERR(0, 897, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -54238,6 +57463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *             if not _isElement(c_node):
  *                 c_node = _nextElement(c_node)
  */
+  __Pyx_TraceLine(898,0,__PYX_ERR(0, 898, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_4) {
 
@@ -54248,6 +57474,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *                 c_node = _nextElement(c_node)
  *             while c_node is not NULL:
  */
+    __Pyx_TraceLine(899,0,__PYX_ERR(0, 899, __pyx_L1_error))
     __pyx_t_4 = ((!(_isElement(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_4) {
 
@@ -54258,6 +57485,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *             while c_node is not NULL:
  *                 c_node_next = _nextElement(c_node)
  */
+      __Pyx_TraceLine(900,0,__PYX_ERR(0, 900, __pyx_L1_error))
       __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
       /* "lxml/etree.pyx":899
@@ -54276,6 +57504,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *                 c_node_next = _nextElement(c_node)
  *                 _removeNode(self._doc, c_node)
  */
+    __Pyx_TraceLine(901,0,__PYX_ERR(0, 901, __pyx_L1_error))
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_4) break;
@@ -54287,6 +57516,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *                 _removeNode(self._doc, c_node)
  *                 c_node = c_node_next
  */
+      __Pyx_TraceLine(902,0,__PYX_ERR(0, 902, __pyx_L1_error))
       __pyx_v_c_node_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
 
       /* "lxml/etree.pyx":903
@@ -54296,6 +57526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  *                 c_node = c_node_next
  * 
  */
+      __Pyx_TraceLine(903,0,__PYX_ERR(0, 903, __pyx_L1_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_t_1 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 903, __pyx_L1_error)
@@ -54308,6 +57539,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
  * 
  *     def insert(self, index, _Element element not None):
  */
+      __Pyx_TraceLine(904,0,__PYX_ERR(0, 904, __pyx_L1_error))
       __pyx_v_c_node = __pyx_v_c_node_next;
     }
 
@@ -54337,6 +57569,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_22clear(struct LxmlElement *__p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -54422,6 +57655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
   xmlNode *__pyx_v_c_next;
   xmlDoc *__pyx_v_c_source_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   Py_ssize_t __pyx_t_2;
@@ -54429,7 +57663,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
   xmlDoc *__pyx_t_4;
   xmlNode *__pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__75)
   __Pyx_RefNannySetupContext("insert", 0);
+  __Pyx_TraceCall("insert", __pyx_f[0], 906, 0, __PYX_ERR(0, 906, __pyx_L1_error));
 
   /* "lxml/etree.pyx":914
  *         cdef xmlNode* c_next
@@ -54438,6 +57674,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         _assertValidNode(element)
  *         c_node = _findChild(self._c_node, index)
  */
+  __Pyx_TraceLine(914,0,__PYX_ERR(0, 914, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 914, __pyx_L1_error)
 
   /* "lxml/etree.pyx":915
@@ -54447,6 +57684,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         c_node = _findChild(self._c_node, index)
  *         if c_node is NULL:
  */
+  __Pyx_TraceLine(915,0,__PYX_ERR(0, 915, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 915, __pyx_L1_error)
 
   /* "lxml/etree.pyx":916
@@ -54456,6 +57694,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         if c_node is NULL:
  *             _appendChild(self, element)
  */
+  __Pyx_TraceLine(916,0,__PYX_ERR(0, 916, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 916, __pyx_L1_error)
   __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(__pyx_v_self->_c_node, __pyx_t_2);
 
@@ -54466,6 +57705,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *             _appendChild(self, element)
  *             return
  */
+  __Pyx_TraceLine(917,0,__PYX_ERR(0, 917, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -54476,6 +57716,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *             return
  *         c_source_doc = c_node.doc
  */
+    __Pyx_TraceLine(918,0,__PYX_ERR(0, 918, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_self, __pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 918, __pyx_L1_error)
 
     /* "lxml/etree.pyx":919
@@ -54485,6 +57726,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         c_source_doc = c_node.doc
  *         c_next = element._c_node.next
  */
+    __Pyx_TraceLine(919,0,__PYX_ERR(0, 919, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -54505,6 +57747,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         c_next = element._c_node.next
  *         tree.xmlAddPrevSibling(c_node, element._c_node)
  */
+  __Pyx_TraceLine(920,0,__PYX_ERR(0, 920, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_4;
 
@@ -54515,6 +57758,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         tree.xmlAddPrevSibling(c_node, element._c_node)
  *         _moveTail(c_next, element._c_node)
  */
+  __Pyx_TraceLine(921,0,__PYX_ERR(0, 921, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_element->_c_node->next;
   __pyx_v_c_next = __pyx_t_5;
 
@@ -54525,6 +57769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         _moveTail(c_next, element._c_node)
  *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(0, 922, __pyx_L1_error))
   (void)(xmlAddPrevSibling(__pyx_v_c_node, __pyx_v_element->_c_node));
 
   /* "lxml/etree.pyx":923
@@ -54534,6 +57779,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
  * 
  */
+  __Pyx_TraceLine(923,0,__PYX_ERR(0, 923, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);
 
   /* "lxml/etree.pyx":924
@@ -54543,6 +57789,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
  * 
  *     def remove(self, _Element element not None):
  */
+  __Pyx_TraceLine(924,0,__PYX_ERR(0, 924, __pyx_L1_error))
   __pyx_t_6 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_6);
   __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_6), __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 924, __pyx_L1_error)
@@ -54565,6 +57812,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_24insert(struct LxmlElement *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -54601,12 +57849,15 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_v_c_next;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__76)
   __Pyx_RefNannySetupContext("remove", 0);
+  __Pyx_TraceCall("remove", __pyx_f[0], 926, 0, __PYX_ERR(0, 926, __pyx_L1_error));
 
   /* "lxml/etree.pyx":935
  *         cdef xmlNode* c_node
@@ -54615,6 +57866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         _assertValidNode(element)
  *         c_node = element._c_node
  */
+  __Pyx_TraceLine(935,0,__PYX_ERR(0, 935, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 935, __pyx_L1_error)
 
   /* "lxml/etree.pyx":936
@@ -54624,6 +57876,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         c_node = element._c_node
  *         if c_node.parent is not self._c_node:
  */
+  __Pyx_TraceLine(936,0,__PYX_ERR(0, 936, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 936, __pyx_L1_error)
 
   /* "lxml/etree.pyx":937
@@ -54633,6 +57886,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         if c_node.parent is not self._c_node:
  *             raise ValueError, u"Element is not a child of this node."
  */
+  __Pyx_TraceLine(937,0,__PYX_ERR(0, 937, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_element->_c_node;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -54643,6 +57897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *             raise ValueError, u"Element is not a child of this node."
  *         c_next = element._c_node.next
  */
+  __Pyx_TraceLine(938,0,__PYX_ERR(0, 938, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node->parent != __pyx_v_self->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -54653,6 +57908,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         c_next = element._c_node.next
  *         tree.xmlUnlinkNode(c_node)
  */
+    __Pyx_TraceLine(939,0,__PYX_ERR(0, 939, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_a_child_of_this_n, 0, 0);
     __PYX_ERR(0, 939, __pyx_L1_error)
 
@@ -54672,6 +57928,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         tree.xmlUnlinkNode(c_node)
  *         _moveTail(c_next, c_node)
  */
+  __Pyx_TraceLine(940,0,__PYX_ERR(0, 940, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_element->_c_node->next;
   __pyx_v_c_next = __pyx_t_2;
 
@@ -54682,6 +57939,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         _moveTail(c_next, c_node)
  *         # fix namespace declarations
  */
+  __Pyx_TraceLine(941,0,__PYX_ERR(0, 941, __pyx_L1_error))
   xmlUnlinkNode(__pyx_v_c_node);
 
   /* "lxml/etree.pyx":942
@@ -54691,6 +57949,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  *         # fix namespace declarations
  *         moveNodeToDocument(self._doc, c_node.doc, c_node)
  */
+  __Pyx_TraceLine(942,0,__PYX_ERR(0, 942, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "lxml/etree.pyx":944
@@ -54700,6 +57959,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
  * 
  *     def replace(self, _Element old_element not None,
  */
+  __Pyx_TraceLine(944,0,__PYX_ERR(0, 944, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 944, __pyx_L1_error)
@@ -54722,6 +57982,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_26remove(struct LxmlElement *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -54810,13 +58071,16 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
   xmlNode *__pyx_v_c_new_next;
   xmlDoc *__pyx_v_c_source_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   xmlDoc *__pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__77)
   __Pyx_RefNannySetupContext("replace", 0);
+  __Pyx_TraceCall("replace", __pyx_f[0], 946, 0, __PYX_ERR(0, 946, __pyx_L1_error));
 
   /* "lxml/etree.pyx":957
  *         cdef xmlNode* c_new_next
@@ -54825,6 +58089,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         _assertValidNode(old_element)
  *         _assertValidNode(new_element)
  */
+  __Pyx_TraceLine(957,0,__PYX_ERR(0, 957, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 957, __pyx_L1_error)
 
   /* "lxml/etree.pyx":958
@@ -54834,6 +58099,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         _assertValidNode(new_element)
  *         c_old_node = old_element._c_node
  */
+  __Pyx_TraceLine(958,0,__PYX_ERR(0, 958, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_old_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 958, __pyx_L1_error)
 
   /* "lxml/etree.pyx":959
@@ -54843,6 +58109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         c_old_node = old_element._c_node
  *         if c_old_node.parent is not self._c_node:
  */
+  __Pyx_TraceLine(959,0,__PYX_ERR(0, 959, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_new_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 959, __pyx_L1_error)
 
   /* "lxml/etree.pyx":960
@@ -54852,6 +58119,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         if c_old_node.parent is not self._c_node:
  *             raise ValueError, u"Element is not a child of this node."
  */
+  __Pyx_TraceLine(960,0,__PYX_ERR(0, 960, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_old_element->_c_node;
   __pyx_v_c_old_node = __pyx_t_2;
 
@@ -54862,6 +58130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *             raise ValueError, u"Element is not a child of this node."
  *         c_old_next = c_old_node.next
  */
+  __Pyx_TraceLine(961,0,__PYX_ERR(0, 961, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_old_node->parent != __pyx_v_self->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -54872,6 +58141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         c_old_next = c_old_node.next
  *         c_new_node = new_element._c_node
  */
+    __Pyx_TraceLine(962,0,__PYX_ERR(0, 962, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_a_child_of_this_n, 0, 0);
     __PYX_ERR(0, 962, __pyx_L1_error)
 
@@ -54891,6 +58161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         c_new_node = new_element._c_node
  *         c_new_next = c_new_node.next
  */
+  __Pyx_TraceLine(963,0,__PYX_ERR(0, 963, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_old_node->next;
   __pyx_v_c_old_next = __pyx_t_2;
 
@@ -54901,6 +58172,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         c_new_next = c_new_node.next
  *         c_source_doc = c_new_node.doc
  */
+  __Pyx_TraceLine(964,0,__PYX_ERR(0, 964, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_new_element->_c_node;
   __pyx_v_c_new_node = __pyx_t_2;
 
@@ -54911,6 +58183,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         c_source_doc = c_new_node.doc
  *         tree.xmlReplaceNode(c_old_node, c_new_node)
  */
+  __Pyx_TraceLine(965,0,__PYX_ERR(0, 965, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_new_node->next;
   __pyx_v_c_new_next = __pyx_t_2;
 
@@ -54921,6 +58194,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         tree.xmlReplaceNode(c_old_node, c_new_node)
  *         _moveTail(c_new_next, c_new_node)
  */
+  __Pyx_TraceLine(966,0,__PYX_ERR(0, 966, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_new_node->doc;
   __pyx_v_c_source_doc = __pyx_t_4;
 
@@ -54931,6 +58205,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         _moveTail(c_new_next, c_new_node)
  *         _moveTail(c_old_next, c_old_node)
  */
+  __Pyx_TraceLine(967,0,__PYX_ERR(0, 967, __pyx_L1_error))
   (void)(xmlReplaceNode(__pyx_v_c_old_node, __pyx_v_c_new_node));
 
   /* "lxml/etree.pyx":968
@@ -54940,6 +58215,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         _moveTail(c_old_next, c_old_node)
  *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)
  */
+  __Pyx_TraceLine(968,0,__PYX_ERR(0, 968, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_new_next, __pyx_v_c_new_node);
 
   /* "lxml/etree.pyx":969
@@ -54949,6 +58225,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)
  *         # fix namespace declarations
  */
+  __Pyx_TraceLine(969,0,__PYX_ERR(0, 969, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_old_next, __pyx_v_c_old_node);
 
   /* "lxml/etree.pyx":970
@@ -54958,6 +58235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  *         # fix namespace declarations
  *         moveNodeToDocument(self._doc, c_old_node.doc, c_old_node)
  */
+  __Pyx_TraceLine(970,0,__PYX_ERR(0, 970, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_source_doc, __pyx_v_c_new_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 970, __pyx_L1_error)
@@ -54970,6 +58248,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
  * 
  *     # PROPERTIES
  */
+  __Pyx_TraceLine(972,0,__PYX_ERR(0, 972, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_old_node->doc, __pyx_v_c_old_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 972, __pyx_L1_error)
@@ -54992,6 +58271,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_28replace(struct LxmlElement *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55019,12 +58299,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_3tag_1__get__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 978, 0, __PYX_ERR(0, 978, __pyx_L1_error));
 
   /* "lxml/etree.pyx":979
  *         """
@@ -55033,6 +58315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
  *                 return self._tag
  *             _assertValidNode(self)
  */
+  __Pyx_TraceLine(979,0,__PYX_ERR(0, 979, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -55044,6 +58327,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
  *             _assertValidNode(self)
  *             self._tag = _namespacedName(self._c_node)
  */
+    __Pyx_TraceLine(980,0,__PYX_ERR(0, 980, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_tag);
     __pyx_r = __pyx_v_self->_tag;
@@ -55065,6 +58349,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
  *             self._tag = _namespacedName(self._c_node)
  *             return self._tag
  */
+  __Pyx_TraceLine(981,0,__PYX_ERR(0, 981, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 981, __pyx_L1_error)
 
   /* "lxml/etree.pyx":982
@@ -55074,6 +58359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
  *             return self._tag
  * 
  */
+  __Pyx_TraceLine(982,0,__PYX_ERR(0, 982, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(__pyx_v_self->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 982, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
@@ -55089,6 +58375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(983,0,__PYX_ERR(0, 983, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_tag);
   __pyx_r = __pyx_v_self->_tag;
@@ -55109,6 +58396,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(struct LxmlElement
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55139,6 +58427,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_v_name = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -55148,6 +58437,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
   int __pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 985, 0, __PYX_ERR(0, 985, __pyx_L1_error));
 
   /* "lxml/etree.pyx":987
  *         def __set__(self, value):
@@ -55156,6 +58446,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             ns, name = _getNsTag(value)
  *             parser = self._doc._parser
  */
+  __Pyx_TraceLine(987,0,__PYX_ERR(0, 987, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 987, __pyx_L1_error)
 
   /* "lxml/etree.pyx":988
@@ -55165,6 +58456,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             parser = self._doc._parser
  *             if parser is not None and parser._for_html:
  */
+  __Pyx_TraceLine(988,0,__PYX_ERR(0, 988, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (likely(__pyx_t_2 != Py_None)) {
@@ -55202,6 +58494,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             if parser is not None and parser._for_html:
  *                 _htmlTagValidOrRaise(name)
  */
+  __Pyx_TraceLine(989,0,__PYX_ERR(0, 989, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc->_parser);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
@@ -55214,6 +58507,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *                 _htmlTagValidOrRaise(name)
  *             else:
  */
+  __Pyx_TraceLine(990,0,__PYX_ERR(0, 990, __pyx_L1_error))
   __pyx_t_6 = (((PyObject *)__pyx_v_parser) != Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -55233,6 +58527,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             else:
  *                 _tagValidOrRaise(name)
  */
+    __Pyx_TraceLine(991,0,__PYX_ERR(0, 991, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 991, __pyx_L1_error)
 
     /* "lxml/etree.pyx":990
@@ -55252,6 +58547,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             self._tag = value
  *             tree.xmlNodeSetName(self._c_node, _xcstr(name))
  */
+  __Pyx_TraceLine(993,0,__PYX_ERR(0, 993, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 993, __pyx_L1_error)
   }
@@ -55264,6 +58560,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             tree.xmlNodeSetName(self._c_node, _xcstr(name))
  *             if ns is None:
  */
+  __Pyx_TraceLine(994,0,__PYX_ERR(0, 994, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
   __Pyx_GOTREF(__pyx_v_self->_tag);
@@ -55277,6 +58574,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             if ns is None:
  *                 self._c_node.ns = NULL
  */
+  __Pyx_TraceLine(995,0,__PYX_ERR(0, 995, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name));
 
   /* "lxml/etree.pyx":996
@@ -55286,6 +58584,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *                 self._c_node.ns = NULL
  *             else:
  */
+  __Pyx_TraceLine(996,0,__PYX_ERR(0, 996, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns == Py_None);
   __pyx_t_7 = (__pyx_t_5 != 0);
   if (__pyx_t_7) {
@@ -55297,6 +58596,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             else:
  *                 self._doc._setNodeNs(self._c_node, _xcstr(ns))
  */
+    __Pyx_TraceLine(997,0,__PYX_ERR(0, 997, __pyx_L1_error))
     __pyx_v_self->_c_node->ns = NULL;
 
     /* "lxml/etree.pyx":996
@@ -55316,6 +58616,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  * 
  *     property attrib:
  */
+  __Pyx_TraceLine(999,0,__PYX_ERR(0, 999, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document__setNodeNs(__pyx_v_self->_doc, __pyx_v_self->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 999, __pyx_L1_error)
   }
@@ -55342,6 +58643,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55369,10 +58671,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_6attrib_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1005, 0, __PYX_ERR(0, 1005, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1006
  *         """
@@ -55381,6 +58685,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(struct LxmlElem
  * 
  *     property text:
  */
+  __Pyx_TraceLine(1006,0,__PYX_ERR(0, 1006, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -55410,6 +58715,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(struct LxmlElem
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55437,10 +58743,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_4text_1__get__(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1012, 0, __PYX_ERR(0, 1012, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1013
  *         """
@@ -55449,6 +58757,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(struct LxmlElemen
  *             return _collectText(self._c_node.children)
  * 
  */
+  __Pyx_TraceLine(1013,0,__PYX_ERR(0, 1013, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1013, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1014
@@ -55458,6 +58767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(struct LxmlElemen
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(1014,0,__PYX_ERR(0, 1014, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->_c_node->children); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1014, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -55480,6 +58790,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55507,6 +58818,7 @@ static int __pyx_pw_4lxml_5etree_8_Element_4text_3__set__(PyObject *__pyx_v_self
 
 static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -55514,6 +58826,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1016, 0, __PYX_ERR(0, 1016, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "lxml/etree.pyx":1017
@@ -55523,6 +58836,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
  *             if isinstance(value, QName):
  *                 value = _resolveQNameText(self, value).decode('utf8')
  */
+  __Pyx_TraceLine(1017,0,__PYX_ERR(0, 1017, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1017, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1018
@@ -55532,6 +58846,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
  *                 value = _resolveQNameText(self, value).decode('utf8')
  *             _setNodeText(self._c_node, value)
  */
+  __Pyx_TraceLine(1018,0,__PYX_ERR(0, 1018, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -55543,6 +58858,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
  *             _setNodeText(self._c_node, value)
  * 
  */
+    __Pyx_TraceLine(1019,0,__PYX_ERR(0, 1019, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__resolveQNameText(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1019, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (unlikely(__pyx_t_4 == Py_None)) {
@@ -55571,6 +58887,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
  * 
  *         # using 'del el.text' is the wrong thing to do
  */
+  __Pyx_TraceLine(1020,0,__PYX_ERR(0, 1020, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_self->_c_node, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1020, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1016
@@ -55591,6 +58908,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4text_2__set__(struct LxmlElement *__
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55618,10 +58936,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_4tail_1__get__(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1031, 0, __PYX_ERR(0, 1031, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1032
  *         """
@@ -55630,6 +58950,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(struct LxmlElemen
  *             return _collectText(self._c_node.next)
  * 
  */
+  __Pyx_TraceLine(1032,0,__PYX_ERR(0, 1032, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1032, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1033
@@ -55639,6 +58960,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(struct LxmlElemen
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(1033,0,__PYX_ERR(0, 1033, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->_c_node->next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1033, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -55661,6 +58983,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55688,9 +59011,11 @@ static int __pyx_pw_4lxml_5etree_8_Element_4tail_3__set__(PyObject *__pyx_v_self
 
 static int __pyx_pf_4lxml_5etree_8_Element_4tail_2__set__(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1035, 0, __PYX_ERR(0, 1035, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1036
  * 
@@ -55699,6 +59024,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4tail_2__set__(struct LxmlElement *__
  *             _setTailText(self._c_node, value)
  * 
  */
+  __Pyx_TraceLine(1036,0,__PYX_ERR(0, 1036, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1036, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1037
@@ -55708,6 +59034,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4tail_2__set__(struct LxmlElement *__
  * 
  *         # using 'del el.tail' is the wrong thing to do
  */
+  __Pyx_TraceLine(1037,0,__PYX_ERR(0, 1037, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_self->_c_node, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1037, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1035
@@ -55725,6 +59052,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4tail_2__set__(struct LxmlElement *__
   __Pyx_AddTraceback("lxml.etree._Element.tail.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55752,10 +59080,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_6prefix_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1047, 0, __PYX_ERR(0, 1047, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1048
  *         """
@@ -55764,6 +59094,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
  *                 if self._c_node.ns.prefix is not NULL:
  *                     return funicode(self._c_node.ns.prefix)
  */
+  __Pyx_TraceLine(1048,0,__PYX_ERR(0, 1048, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_node->ns != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -55774,6 +59105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
  *                     return funicode(self._c_node.ns.prefix)
  *             return None
  */
+    __Pyx_TraceLine(1049,0,__PYX_ERR(0, 1049, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_c_node->ns->prefix != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -55784,6 +59116,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
  *             return None
  * 
  */
+      __Pyx_TraceLine(1050,0,__PYX_ERR(0, 1050, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->ns->prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1050, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -55816,6 +59149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
  * 
  *     # not in ElementTree, read-only
  */
+  __Pyx_TraceLine(1051,0,__PYX_ERR(0, 1051, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -55835,6 +59169,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55863,11 +59198,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_10sourceline_1__get__(PyObject
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(struct LxmlElement *__pyx_v_self) {
   long __pyx_v_line;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1057, 0, __PYX_ERR(0, 1057, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1059
  *         def __get__(self):
@@ -55876,6 +59213,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(struct Lxm
  *             line = tree.xmlGetLineNo(self._c_node)
  *             return line if line > 0 else None
  */
+  __Pyx_TraceLine(1059,0,__PYX_ERR(0, 1059, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1059, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1060
@@ -55885,6 +59223,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(struct Lxm
  *             return line if line > 0 else None
  * 
  */
+  __Pyx_TraceLine(1060,0,__PYX_ERR(0, 1060, __pyx_L1_error))
   __pyx_v_line = xmlGetLineNo(__pyx_v_self->_c_node);
 
   /* "lxml/etree.pyx":1061
@@ -55894,6 +59233,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(struct Lxm
  * 
  *         def __set__(self, line):
  */
+  __Pyx_TraceLine(1061,0,__PYX_ERR(0, 1061, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_line > 0) != 0)) {
     __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1061, __pyx_L1_error)
@@ -55924,6 +59264,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(struct Lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -55951,12 +59292,14 @@ static int __pyx_pw_4lxml_5etree_8_Element_10sourceline_3__set__(PyObject *__pyx
 
 static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_line) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   unsigned short __pyx_t_4;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1063, 0, __PYX_ERR(0, 1063, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1064
  * 
@@ -55965,6 +59308,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
  *             if line <= 0:
  *                 self._c_node.line = 0
  */
+  __Pyx_TraceLine(1064,0,__PYX_ERR(0, 1064, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1064, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1065
@@ -55974,6 +59318,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
  *                 self._c_node.line = 0
  *             else:
  */
+  __Pyx_TraceLine(1065,0,__PYX_ERR(0, 1065, __pyx_L1_error))
   __pyx_t_2 = PyObject_RichCompare(__pyx_v_line, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1065, __pyx_L1_error)
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1065, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -55986,6 +59331,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
  *             else:
  *                 self._c_node.line = line
  */
+    __Pyx_TraceLine(1066,0,__PYX_ERR(0, 1066, __pyx_L1_error))
     __pyx_v_self->_c_node->line = 0;
 
     /* "lxml/etree.pyx":1065
@@ -56005,6 +59351,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
  * 
  *     # not in ElementTree, read-only
  */
+  __Pyx_TraceLine(1068,0,__PYX_ERR(0, 1068, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyInt_As_unsigned_short(__pyx_v_line); if (unlikely((__pyx_t_4 == (unsigned short)-1) && PyErr_Occurred())) __PYX_ERR(0, 1068, __pyx_L1_error)
     __pyx_v_self->_c_node->line = __pyx_t_4;
@@ -56027,6 +59374,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
   __Pyx_AddTraceback("lxml.etree._Element.sourceline.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -56058,6 +59406,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   PyObject *__pyx_v_nsmap = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -56066,6 +59415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   int __pyx_t_5;
   xmlNs *__pyx_t_6;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1078, 0, __PYX_ERR(0, 1078, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1081
  *             cdef xmlNode* c_node
@@ -56074,6 +59424,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *             nsmap = {}
  *             c_node = self._c_node
  */
+  __Pyx_TraceLine(1081,0,__PYX_ERR(0, 1081, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1081, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1082
@@ -56083,6 +59434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *             c_node = self._c_node
  *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(1082,0,__PYX_ERR(0, 1082, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1082, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_nsmap = ((PyObject*)__pyx_t_2);
@@ -56095,6 +59447,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
  *                 c_ns = c_node.nsDef
  */
+  __Pyx_TraceLine(1083,0,__PYX_ERR(0, 1083, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_c_node;
   __pyx_v_c_node = __pyx_t_3;
 
@@ -56105,6 +59458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                 c_ns = c_node.nsDef
  *                 while c_ns is not NULL:
  */
+  __Pyx_TraceLine(1084,0,__PYX_ERR(0, 1084, __pyx_L1_error))
   while (1) {
     __pyx_t_5 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_5) {
@@ -56124,6 +59478,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                 while c_ns is not NULL:
  *                     prefix = funicodeOrNone(c_ns.prefix)
  */
+    __Pyx_TraceLine(1085,0,__PYX_ERR(0, 1085, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_c_node->nsDef;
     __pyx_v_c_ns = __pyx_t_6;
 
@@ -56134,6 +59489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                     prefix = funicodeOrNone(c_ns.prefix)
  *                     if prefix not in nsmap:
  */
+    __Pyx_TraceLine(1086,0,__PYX_ERR(0, 1086, __pyx_L1_error))
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_ns != NULL) != 0);
       if (!__pyx_t_4) break;
@@ -56145,6 +59501,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                     if prefix not in nsmap:
  *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
  */
+      __Pyx_TraceLine(1087,0,__PYX_ERR(0, 1087, __pyx_L1_error))
       __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1087, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_2);
@@ -56157,6 +59514,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
  *                     c_ns = c_ns.next
  */
+      __Pyx_TraceLine(1088,0,__PYX_ERR(0, 1088, __pyx_L1_error))
       __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_v_prefix, __pyx_v_nsmap, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error)
       __pyx_t_5 = (__pyx_t_4 != 0);
       if (__pyx_t_5) {
@@ -56168,6 +59526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                     c_ns = c_ns.next
  *                 c_node = c_node.parent
  */
+        __Pyx_TraceLine(1089,0,__PYX_ERR(0, 1089, __pyx_L1_error))
         __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1089, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         if (unlikely(PyDict_SetItem(__pyx_v_nsmap, __pyx_v_prefix, __pyx_t_2) < 0)) __PYX_ERR(0, 1089, __pyx_L1_error)
@@ -56189,6 +59548,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *                 c_node = c_node.parent
  *             return nsmap
  */
+      __Pyx_TraceLine(1090,0,__PYX_ERR(0, 1090, __pyx_L1_error))
       __pyx_t_6 = __pyx_v_c_ns->next;
       __pyx_v_c_ns = __pyx_t_6;
     }
@@ -56200,6 +59560,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  *             return nsmap
  * 
  */
+    __Pyx_TraceLine(1091,0,__PYX_ERR(0, 1091, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_node->parent;
     __pyx_v_c_node = __pyx_t_3;
   }
@@ -56211,6 +59572,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
  * 
  *     # not in ElementTree, read-only
  */
+  __Pyx_TraceLine(1092,0,__PYX_ERR(0, 1092, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_nsmap);
   __pyx_r = __pyx_v_nsmap;
@@ -56233,6 +59595,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   __Pyx_XDECREF(__pyx_v_nsmap);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -56262,6 +59625,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
   xmlChar *__pyx_v_c_base;
   PyObject *__pyx_v_base = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -56275,6 +59639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1106, 0, __PYX_ERR(0, 1106, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1107
  *         """
@@ -56283,6 +59648,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *             c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node)
  *             if c_base is NULL:
  */
+  __Pyx_TraceLine(1107,0,__PYX_ERR(0, 1107, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1107, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1108
@@ -56292,6 +59658,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *             if c_base is NULL:
  *                 if self._doc._c_doc.URL is NULL:
  */
+  __Pyx_TraceLine(1108,0,__PYX_ERR(0, 1108, __pyx_L1_error))
   __pyx_v_c_base = xmlNodeGetBase(__pyx_v_self->_doc->_c_doc, __pyx_v_self->_c_node);
 
   /* "lxml/etree.pyx":1109
@@ -56301,6 +59668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *                 if self._doc._c_doc.URL is NULL:
  *                     return None
  */
+  __Pyx_TraceLine(1109,0,__PYX_ERR(0, 1109, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_base == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -56311,6 +59679,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *                     return None
  *                 return _decodeFilename(self._doc._c_doc.URL)
  */
+    __Pyx_TraceLine(1110,0,__PYX_ERR(0, 1110, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->_doc->_c_doc->URL == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -56321,6 +59690,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *                 return _decodeFilename(self._doc._c_doc.URL)
  *             try:
  */
+      __Pyx_TraceLine(1111,0,__PYX_ERR(0, 1111, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
@@ -56341,6 +59711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *             try:
  *                 base = _decodeFilename(c_base)
  */
+    __Pyx_TraceLine(1112,0,__PYX_ERR(0, 1112, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_self->_doc->_c_doc->URL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1112, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -56364,6 +59735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *                 base = _decodeFilename(c_base)
  *             finally:
  */
+  __Pyx_TraceLine(1113,0,__PYX_ERR(0, 1113, __pyx_L6_error))
   /*try:*/ {
 
     /* "lxml/etree.pyx":1114
@@ -56373,6 +59745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *             finally:
  *                 tree.xmlFree(c_base)
  */
+    __Pyx_TraceLine(1114,0,__PYX_ERR(0, 1114, __pyx_L6_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L6_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_base = __pyx_t_3;
@@ -56386,6 +59759,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  *             return base
  * 
  */
+  __Pyx_TraceLine(1116,0,__PYX_ERR(0, 1116, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_c_base);
@@ -56433,6 +59807,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
  * 
  *         def __set__(self, url):
  */
+  __Pyx_TraceLine(1117,0,__PYX_ERR(0, 1117, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_base);
   __pyx_r = __pyx_v_base;
@@ -56454,6 +59829,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(struct LxmlElemen
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_base);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -56482,12 +59858,14 @@ static int __pyx_pw_4lxml_5etree_8_Element_4base_3__set__(PyObject *__pyx_v_self
 static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_url) {
   const xmlChar *__pyx_v_c_base;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1119, 0, __PYX_ERR(0, 1119, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_url);
 
   /* "lxml/etree.pyx":1120
@@ -56497,6 +59875,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  *             if url is None:
  *                 c_base = <const_xmlChar*>NULL
  */
+  __Pyx_TraceLine(1120,0,__PYX_ERR(0, 1120, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1120, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1121
@@ -56506,6 +59885,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  *                 c_base = <const_xmlChar*>NULL
  *             else:
  */
+  __Pyx_TraceLine(1121,0,__PYX_ERR(0, 1121, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_url == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -56517,6 +59897,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  *             else:
  *                 url = _encodeFilename(url)
  */
+    __Pyx_TraceLine(1122,0,__PYX_ERR(0, 1122, __pyx_L1_error))
     __pyx_v_c_base = ((const xmlChar *)NULL);
 
     /* "lxml/etree.pyx":1121
@@ -56536,6 +59917,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  *                 c_base = _xcstr(url)
  *             tree.xmlNodeSetBase(self._c_node, c_base)
  */
+  __Pyx_TraceLine(1124,0,__PYX_ERR(0, 1124, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1124, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -56549,6 +59931,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  *             tree.xmlNodeSetBase(self._c_node, c_base)
  * 
  */
+    __Pyx_TraceLine(1125,0,__PYX_ERR(0, 1125, __pyx_L1_error))
     __pyx_v_c_base = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_url);
   }
   __pyx_L3:;
@@ -56560,6 +59943,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
  * 
  *     # ACCESSORS
  */
+  __Pyx_TraceLine(1126,0,__PYX_ERR(0, 1126, __pyx_L1_error))
   xmlNodeSetBase(__pyx_v_self->_c_node, __pyx_v_c_base);
 
   /* "lxml/etree.pyx":1119
@@ -56579,6 +59963,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_4base_2__set__(struct LxmlElement *__
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_url);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -56610,11 +59995,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_31__repr__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_30__repr__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 1129, 0, __PYX_ERR(0, 1129, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1131
  *     def __repr__(self):
@@ -56623,6 +60010,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_30__repr__(struct LxmlElement *
  * 
  *     def __getitem__(self, x):
  */
+  __Pyx_TraceLine(1131,0,__PYX_ERR(0, 1131, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -56663,6 +60051,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_30__repr__(struct LxmlElement *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -56701,6 +60090,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
   _node_to_node_function __pyx_v_next_element;
   PyObject *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -56712,6 +60102,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
   Py_ssize_t __pyx_t_8;
   Py_ssize_t __pyx_t_9;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[0], 1133, 0, __PYX_ERR(0, 1133, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1137
  *         slice.
@@ -56720,6 +60111,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *         cdef Py_ssize_t step = 0, slicelength = 0
  *         cdef Py_ssize_t c, i
  */
+  __Pyx_TraceLine(1137,0,__PYX_ERR(0, 1137, __pyx_L1_error))
   __pyx_v_c_node = NULL;
 
   /* "lxml/etree.pyx":1138
@@ -56729,6 +60121,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *         cdef Py_ssize_t c, i
  *         cdef _node_to_node_function next_element
  */
+  __Pyx_TraceLine(1138,0,__PYX_ERR(0, 1138, __pyx_L1_error))
   __pyx_v_step = 0;
   __pyx_v_slicelength = 0;
 
@@ -56739,6 +60132,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *         if isinstance(x, slice):
  *             # slicing
  */
+  __Pyx_TraceLine(1142,0,__PYX_ERR(0, 1142, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1142, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1143
@@ -56748,6 +60142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             # slicing
  *             if _isFullSlice(<slice>x):
  */
+  __Pyx_TraceLine(1143,0,__PYX_ERR(0, 1143, __pyx_L1_error))
   __pyx_t_2 = PySlice_Check(__pyx_v_x); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -56759,6 +60154,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 return _collectChildren(self)
  *             _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  */
+    __Pyx_TraceLine(1145,0,__PYX_ERR(0, 1145, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__isFullSlice(((PyObject*)__pyx_v_x)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1145, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -56770,6 +60166,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  *             if c_node is NULL:
  */
+      __Pyx_TraceLine(1146,0,__PYX_ERR(0, 1146, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = __pyx_f_4lxml_5etree__collectChildren(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1146, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -56793,6 +60190,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             if c_node is NULL:
  *                 return []
  */
+    __Pyx_TraceLine(1147,0,__PYX_ERR(0, 1147, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__findChildSlice(((PyObject*)__pyx_v_x), __pyx_v_self->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1147, __pyx_L1_error)
 
     /* "lxml/etree.pyx":1148
@@ -56802,6 +60200,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 return []
  *             if step > 0:
  */
+    __Pyx_TraceLine(1148,0,__PYX_ERR(0, 1148, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -56812,6 +60211,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             if step > 0:
  *                 next_element = _nextElement
  */
+      __Pyx_TraceLine(1149,0,__PYX_ERR(0, 1149, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1149, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -56835,6 +60235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 next_element = _nextElement
  *             else:
  */
+    __Pyx_TraceLine(1150,0,__PYX_ERR(0, 1150, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_step > 0) != 0);
     if (__pyx_t_2) {
 
@@ -56845,6 +60246,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             else:
  *                 step = -step
  */
+      __Pyx_TraceLine(1151,0,__PYX_ERR(0, 1151, __pyx_L1_error))
       __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
 
       /* "lxml/etree.pyx":1150
@@ -56864,6 +60266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 next_element = _previousElement
  *             result = []
  */
+    __Pyx_TraceLine(1153,0,__PYX_ERR(0, 1153, __pyx_L1_error))
     /*else*/ {
       __pyx_v_step = (-__pyx_v_step);
 
@@ -56874,6 +60277,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             result = []
  *             c = 0
  */
+      __Pyx_TraceLine(1154,0,__PYX_ERR(0, 1154, __pyx_L1_error))
       __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
     }
     __pyx_L6:;
@@ -56885,6 +60289,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             c = 0
  *             while c_node is not NULL and c < slicelength:
  */
+    __Pyx_TraceLine(1155,0,__PYX_ERR(0, 1155, __pyx_L1_error))
     __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_result = ((PyObject*)__pyx_t_4);
@@ -56897,6 +60302,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             while c_node is not NULL and c < slicelength:
  *                 result.append(_elementFactory(self._doc, c_node))
  */
+    __Pyx_TraceLine(1156,0,__PYX_ERR(0, 1156, __pyx_L1_error))
     __pyx_v_c = 0;
 
     /* "lxml/etree.pyx":1157
@@ -56906,6 +60312,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 result.append(_elementFactory(self._doc, c_node))
  *                 c += 1
  */
+    __Pyx_TraceLine(1157,0,__PYX_ERR(0, 1157, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (__pyx_t_3) {
@@ -56925,6 +60332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 c += 1
  *                 for i in range(step):
  */
+      __Pyx_TraceLine(1158,0,__PYX_ERR(0, 1158, __pyx_L1_error))
       __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
       __Pyx_INCREF(__pyx_t_4);
       __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L1_error)
@@ -56940,6 +60348,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 for i in range(step):
  *                     c_node = next_element(c_node)
  */
+      __Pyx_TraceLine(1159,0,__PYX_ERR(0, 1159, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "lxml/etree.pyx":1160
@@ -56949,6 +60358,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                     c_node = next_element(c_node)
  *             return result
  */
+      __Pyx_TraceLine(1160,0,__PYX_ERR(0, 1160, __pyx_L1_error))
       __pyx_t_7 = __pyx_v_step;
       __pyx_t_8 = __pyx_t_7;
       for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
@@ -56961,6 +60371,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             return result
  *         else:
  */
+        __Pyx_TraceLine(1161,0,__PYX_ERR(0, 1161, __pyx_L1_error))
         __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
       }
     }
@@ -56972,6 +60383,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *         else:
  *             # indexing
  */
+    __Pyx_TraceLine(1162,0,__PYX_ERR(0, 1162, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
     __pyx_r = __pyx_v_result;
@@ -56993,6 +60405,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             if c_node is NULL:
  *                 raise IndexError, u"list index out of range"
  */
+  __Pyx_TraceLine(1165,0,__PYX_ERR(0, 1165, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1165, __pyx_L1_error)
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(__pyx_v_self->_c_node, __pyx_t_7);
@@ -57004,6 +60417,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *                 raise IndexError, u"list index out of range"
  *             return _elementFactory(self._doc, c_node)
  */
+    __Pyx_TraceLine(1166,0,__PYX_ERR(0, 1166, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -57014,6 +60428,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  *             return _elementFactory(self._doc, c_node)
  * 
  */
+      __Pyx_TraceLine(1167,0,__PYX_ERR(0, 1167, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_IndexError, __pyx_kp_u_list_index_out_of_range, 0, 0);
       __PYX_ERR(0, 1167, __pyx_L1_error)
 
@@ -57033,6 +60448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
  * 
  *     def __len__(self):
  */
+    __Pyx_TraceLine(1168,0,__PYX_ERR(0, 1168, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_doc);
     __Pyx_INCREF(__pyx_t_5);
@@ -57061,6 +60477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_32__getitem__(struct LxmlElemen
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57092,9 +60509,11 @@ static Py_ssize_t __pyx_pw_4lxml_5etree_8_Element_35__len__(PyObject *__pyx_v_se
 
 static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element_34__len__(struct LxmlElement *__pyx_v_self) {
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[0], 1170, 0, __PYX_ERR(0, 1170, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1175
  *         Returns the number of subelements.
@@ -57103,6 +60522,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element_34__len__(struct LxmlElement *
  *         return _countElements(self._c_node.children)
  * 
  */
+  __Pyx_TraceLine(1175,0,__PYX_ERR(0, 1175, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1175, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1176
@@ -57112,6 +60532,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element_34__len__(struct LxmlElement *
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(1176,0,__PYX_ERR(0, 1176, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__countElements(__pyx_v_self->_c_node->children);
   goto __pyx_L0;
 
@@ -57128,6 +60549,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element_34__len__(struct LxmlElement *
   __Pyx_AddTraceback("lxml.etree._Element.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57156,11 +60578,13 @@ static int __pyx_pw_4lxml_5etree_8_Element_37__nonzero__(PyObject *__pyx_v_self)
 static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_v_warnings = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[0], 1178, 0, __PYX_ERR(0, 1178, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1180
  *     def __nonzero__(self):
@@ -57169,6 +60593,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
  *         warnings.warn(
  *             u"The behavior of this method will change in future versions. "
  */
+  __Pyx_TraceLine(1180,0,__PYX_ERR(0, 1180, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_warnings = __pyx_t_1;
@@ -57181,6 +60606,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
  *             u"The behavior of this method will change in future versions. "
  *             u"Use specific 'len(elem)' or 'elem is not None' test instead.",
  */
+  __Pyx_TraceLine(1181,0,__PYX_ERR(0, 1181, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_warnings, __pyx_n_s_warn); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -57191,7 +60617,8 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
  *             )
  *         # emulate old behaviour
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
+  __Pyx_TraceLine(1184,0,__PYX_ERR(0, 1184, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57203,6 +60630,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
  *         return _hasChild(self._c_node)
  * 
  */
+  __Pyx_TraceLine(1187,0,__PYX_ERR(0, 1187, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1187, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1188
@@ -57212,6 +60640,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
  * 
  *     def __contains__(self, element):
  */
+  __Pyx_TraceLine(1188,0,__PYX_ERR(0, 1188, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__hasChild(__pyx_v_self->_c_node);
   goto __pyx_L0;
 
@@ -57231,6 +60660,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_36__nonzero__(struct LxmlElement *__p
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_warnings);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57263,12 +60693,14 @@ static int __pyx_pw_4lxml_5etree_8_Element_39__contains__(PyObject *__pyx_v_self
 static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_element) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   xmlNode *__pyx_t_4;
   __Pyx_RefNannySetupContext("__contains__", 0);
+  __Pyx_TraceCall("__contains__", __pyx_f[0], 1190, 0, __PYX_ERR(0, 1190, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1193
  *         u"__contains__(self, element)"
@@ -57277,6 +60709,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
  *         if not isinstance(element, _Element):
  *             return 0
  */
+  __Pyx_TraceLine(1193,0,__PYX_ERR(0, 1193, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1193, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1194
@@ -57286,6 +60719,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
  *             return 0
  *         c_node = (<_Element>element)._c_node
  */
+  __Pyx_TraceLine(1194,0,__PYX_ERR(0, 1194, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
@@ -57297,6 +60731,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
  *         c_node = (<_Element>element)._c_node
  *         return c_node is not NULL and c_node.parent is self._c_node
  */
+    __Pyx_TraceLine(1195,0,__PYX_ERR(0, 1195, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -57316,6 +60751,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
  *         return c_node is not NULL and c_node.parent is self._c_node
  * 
  */
+  __Pyx_TraceLine(1196,0,__PYX_ERR(0, 1196, __pyx_L1_error))
   __pyx_t_4 = ((struct LxmlElement *)__pyx_v_element)->_c_node;
   __pyx_v_c_node = __pyx_t_4;
 
@@ -57326,6 +60762,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(1197,0,__PYX_ERR(0, 1197, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c_node != NULL);
   if (__pyx_t_3) {
   } else {
@@ -57351,6 +60788,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_38__contains__(struct LxmlElement *__
   __Pyx_AddTraceback("lxml.etree._Element.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57382,9 +60820,11 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_41__iter__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_40__iter__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 1199, 0, __PYX_ERR(0, 1199, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1201
  *     def __iter__(self):
@@ -57393,6 +60833,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_40__iter__(struct LxmlElement *
  * 
  *     def __reversed__(self):
  */
+  __Pyx_TraceLine(1201,0,__PYX_ERR(0, 1201, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_ElementChildIterator), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1201, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -57415,6 +60856,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_40__iter__(struct LxmlElement *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57444,11 +60886,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_43__reversed__(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_42__reversed__(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__79)
   __Pyx_RefNannySetupContext("__reversed__", 0);
+  __Pyx_TraceCall("__reversed__", __pyx_f[0], 1203, 0, __PYX_ERR(0, 1203, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1205
  *     def __reversed__(self):
@@ -57457,6 +60902,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_42__reversed__(struct LxmlEleme
  * 
  *     def index(self, _Element child not None, start=None, stop=None):
  */
+  __Pyx_TraceLine(1205,0,__PYX_ERR(0, 1205, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -57491,6 +60937,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_42__reversed__(struct LxmlEleme
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -57596,6 +61043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
   xmlNode *__pyx_v_c_child;
   xmlNode *__pyx_v_c_start_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -57604,7 +61052,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   Py_ssize_t __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__80)
   __Pyx_RefNannySetupContext("index", 0);
+  __Pyx_TraceCall("index", __pyx_f[0], 1207, 0, __PYX_ERR(0, 1207, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1218
  *         cdef xmlNode* c_child
@@ -57613,6 +61063,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         _assertValidNode(child)
  *         c_child = child._c_node
  */
+  __Pyx_TraceLine(1218,0,__PYX_ERR(0, 1218, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1218, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1219
@@ -57622,6 +61073,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         c_child = child._c_node
  *         if c_child.parent is not self._c_node:
  */
+  __Pyx_TraceLine(1219,0,__PYX_ERR(0, 1219, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_child); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1219, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1220
@@ -57631,6 +61083,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         if c_child.parent is not self._c_node:
  *             raise ValueError, u"Element is not a child of this node."
  */
+  __Pyx_TraceLine(1220,0,__PYX_ERR(0, 1220, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_child->_c_node;
   __pyx_v_c_child = __pyx_t_2;
 
@@ -57641,6 +61094,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             raise ValueError, u"Element is not a child of this node."
  * 
  */
+  __Pyx_TraceLine(1221,0,__PYX_ERR(0, 1221, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_child->parent != __pyx_v_self->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -57651,6 +61105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  * 
  *         # handle the unbounded search straight away (normal case)
  */
+    __Pyx_TraceLine(1222,0,__PYX_ERR(0, 1222, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_a_child_of_this_n, 0, 0);
     __PYX_ERR(0, 1222, __pyx_L1_error)
 
@@ -57670,6 +61125,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             k = 0
  *             c_child = c_child.prev
  */
+  __Pyx_TraceLine(1225,0,__PYX_ERR(0, 1225, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_stop == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -57699,6 +61155,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             c_child = c_child.prev
  *             while c_child is not NULL:
  */
+    __Pyx_TraceLine(1226,0,__PYX_ERR(0, 1226, __pyx_L1_error))
     __pyx_v_k = 0;
 
     /* "lxml/etree.pyx":1227
@@ -57708,6 +61165,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             while c_child is not NULL:
  *                 if _isElement(c_child):
  */
+    __Pyx_TraceLine(1227,0,__PYX_ERR(0, 1227, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_child->prev;
     __pyx_v_c_child = __pyx_t_2;
 
@@ -57718,6 +61176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 if _isElement(c_child):
  *                     k += 1
  */
+    __Pyx_TraceLine(1228,0,__PYX_ERR(0, 1228, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_3) break;
@@ -57729,6 +61188,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     k += 1
  *                 c_child = c_child.prev
  */
+      __Pyx_TraceLine(1229,0,__PYX_ERR(0, 1229, __pyx_L1_error))
       __pyx_t_3 = (_isElement(__pyx_v_c_child) != 0);
       if (__pyx_t_3) {
 
@@ -57739,6 +61199,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 c_child = c_child.prev
  *             return k
  */
+        __Pyx_TraceLine(1230,0,__PYX_ERR(0, 1230, __pyx_L1_error))
         __pyx_v_k = (__pyx_v_k + 1);
 
         /* "lxml/etree.pyx":1229
@@ -57757,6 +61218,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             return k
  * 
  */
+      __Pyx_TraceLine(1231,0,__PYX_ERR(0, 1231, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_child->prev;
       __pyx_v_c_child = __pyx_t_2;
     }
@@ -57768,6 +61230,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  * 
  *         # check indices
  */
+    __Pyx_TraceLine(1232,0,__PYX_ERR(0, 1232, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1232, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
@@ -57791,6 +61254,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             c_start = 0
  *         else:
  */
+  __Pyx_TraceLine(1235,0,__PYX_ERR(0, 1235, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_start == Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -57802,6 +61266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         else:
  *             c_start = start
  */
+    __Pyx_TraceLine(1236,0,__PYX_ERR(0, 1236, __pyx_L1_error))
     __pyx_v_c_start = 0;
 
     /* "lxml/etree.pyx":1235
@@ -57821,6 +61286,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         if stop is None:
  *             c_stop = 0
  */
+  __Pyx_TraceLine(1238,0,__PYX_ERR(0, 1238, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_start); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1238, __pyx_L1_error)
     __pyx_v_c_start = __pyx_t_7;
@@ -57834,6 +61300,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             c_stop = 0
  *         else:
  */
+  __Pyx_TraceLine(1239,0,__PYX_ERR(0, 1239, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_stop == Py_None);
   __pyx_t_3 = (__pyx_t_4 != 0);
   if (__pyx_t_3) {
@@ -57845,6 +61312,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         else:
  *             c_stop = stop
  */
+    __Pyx_TraceLine(1240,0,__PYX_ERR(0, 1240, __pyx_L1_error))
     __pyx_v_c_stop = 0;
 
     /* "lxml/etree.pyx":1239
@@ -57864,6 +61332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             if c_stop == 0 or \
  *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
  */
+  __Pyx_TraceLine(1242,0,__PYX_ERR(0, 1242, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_stop); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1242, __pyx_L1_error)
     __pyx_v_c_stop = __pyx_t_7;
@@ -57875,6 +61344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
  *                 raise ValueError, u"list.index(x): x not in slice"
  */
+    __Pyx_TraceLine(1243,0,__PYX_ERR(0, 1243, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_stop == 0) != 0);
     if (!__pyx_t_4) {
     } else {
@@ -57889,6 +61359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 raise ValueError, u"list.index(x): x not in slice"
  * 
  */
+    __Pyx_TraceLine(1244,0,__PYX_ERR(0, 1244, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_start >= __pyx_v_c_stop) != 0);
     if (__pyx_t_4) {
     } else {
@@ -57912,6 +61383,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
  *                 raise ValueError, u"list.index(x): x not in slice"
  */
+    __Pyx_TraceLine(1243,0,__PYX_ERR(0, 1243, __pyx_L1_error))
     if (unlikely(__pyx_t_3)) {
 
       /* "lxml/etree.pyx":1245
@@ -57921,6 +61393,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  * 
  *         # for negative slice indices, check slice before searching index
  */
+      __Pyx_TraceLine(1245,0,__PYX_ERR(0, 1245, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_list_index_x_x_not_in_slice, 0, 0);
       __PYX_ERR(0, 1245, __pyx_L1_error)
 
@@ -57942,6 +61415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             # start from right, at most up to leftmost(c_start, c_stop)
  *             if c_start < c_stop:
  */
+  __Pyx_TraceLine(1248,0,__PYX_ERR(0, 1248, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_start < 0) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -57960,6 +61434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 k = -c_start
  *             else:
  */
+    __Pyx_TraceLine(1250,0,__PYX_ERR(0, 1250, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_start < __pyx_v_c_stop) != 0);
     if (__pyx_t_3) {
 
@@ -57970,6 +61445,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             else:
  *                 k = -c_stop
  */
+      __Pyx_TraceLine(1251,0,__PYX_ERR(0, 1251, __pyx_L1_error))
       __pyx_v_k = (-__pyx_v_c_start);
 
       /* "lxml/etree.pyx":1250
@@ -57989,6 +61465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             c_start_node = self._c_node.last
  *             l = 1
  */
+    __Pyx_TraceLine(1253,0,__PYX_ERR(0, 1253, __pyx_L1_error))
     /*else*/ {
       __pyx_v_k = (-__pyx_v_c_stop);
     }
@@ -58001,6 +61478,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             l = 1
  *             while c_start_node != c_child and l < k:
  */
+    __Pyx_TraceLine(1254,0,__PYX_ERR(0, 1254, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_self->_c_node->last;
     __pyx_v_c_start_node = __pyx_t_2;
 
@@ -58011,6 +61489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             while c_start_node != c_child and l < k:
  *                 if _isElement(c_start_node):
  */
+    __Pyx_TraceLine(1255,0,__PYX_ERR(0, 1255, __pyx_L1_error))
     __pyx_v_l = 1;
 
     /* "lxml/etree.pyx":1256
@@ -58020,6 +61499,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 if _isElement(c_start_node):
  *                     l += 1
  */
+    __Pyx_TraceLine(1256,0,__PYX_ERR(0, 1256, __pyx_L1_error))
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_start_node != __pyx_v_c_child) != 0);
       if (__pyx_t_4) {
@@ -58039,6 +61519,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     l += 1
  *                 c_start_node = c_start_node.prev
  */
+      __Pyx_TraceLine(1257,0,__PYX_ERR(0, 1257, __pyx_L1_error))
       __pyx_t_3 = (_isElement(__pyx_v_c_start_node) != 0);
       if (__pyx_t_3) {
 
@@ -58049,6 +61530,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 c_start_node = c_start_node.prev
  *             if c_start_node == c_child:
  */
+        __Pyx_TraceLine(1258,0,__PYX_ERR(0, 1258, __pyx_L1_error))
         __pyx_v_l = (__pyx_v_l + 1);
 
         /* "lxml/etree.pyx":1257
@@ -58067,6 +61549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             if c_start_node == c_child:
  *                 # found! before slice end?
  */
+      __Pyx_TraceLine(1259,0,__PYX_ERR(0, 1259, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_start_node->prev;
       __pyx_v_c_start_node = __pyx_t_2;
     }
@@ -58078,6 +61561,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 # found! before slice end?
  *                 if c_stop < 0 and l <= -c_stop:
  */
+    __Pyx_TraceLine(1260,0,__PYX_ERR(0, 1260, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_start_node == __pyx_v_c_child) != 0);
     if (__pyx_t_3) {
 
@@ -58088,6 +61572,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     raise ValueError, u"list.index(x): x not in slice"
  *             elif c_start < 0:
  */
+      __Pyx_TraceLine(1262,0,__PYX_ERR(0, 1262, __pyx_L1_error))
       __pyx_t_4 = ((__pyx_v_c_stop < 0) != 0);
       if (__pyx_t_4) {
       } else {
@@ -58106,6 +61591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             elif c_start < 0:
  *                 raise ValueError, u"list.index(x): x not in slice"
  */
+        __Pyx_TraceLine(1263,0,__PYX_ERR(0, 1263, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_list_index_x_x_not_in_slice, 0, 0);
         __PYX_ERR(0, 1263, __pyx_L1_error)
 
@@ -58135,6 +61621,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 raise ValueError, u"list.index(x): x not in slice"
  * 
  */
+    __Pyx_TraceLine(1264,0,__PYX_ERR(0, 1264, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_start < 0) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -58145,6 +61632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  * 
  *         # now determine the index backwards from child
  */
+      __Pyx_TraceLine(1265,0,__PYX_ERR(0, 1265, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_list_index_x_x_not_in_slice, 0, 0);
       __PYX_ERR(0, 1265, __pyx_L1_error)
 
@@ -58174,6 +61662,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         k = 0
  *         if c_stop > 0:
  */
+  __Pyx_TraceLine(1268,0,__PYX_ERR(0, 1268, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_child->prev;
   __pyx_v_c_child = __pyx_t_2;
 
@@ -58184,6 +61673,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         if c_stop > 0:
  *             # we can optimize: stop after c_stop elements if not found
  */
+  __Pyx_TraceLine(1269,0,__PYX_ERR(0, 1269, __pyx_L1_error))
   __pyx_v_k = 0;
 
   /* "lxml/etree.pyx":1270
@@ -58193,6 +61683,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             # we can optimize: stop after c_stop elements if not found
  *             while c_child != NULL and k < c_stop:
  */
+  __Pyx_TraceLine(1270,0,__PYX_ERR(0, 1270, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_stop > 0) != 0);
   if (__pyx_t_3) {
 
@@ -58203,6 +61694,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 if _isElement(c_child):
  *                     k += 1
  */
+    __Pyx_TraceLine(1272,0,__PYX_ERR(0, 1272, __pyx_L1_error))
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_child != NULL) != 0);
       if (__pyx_t_4) {
@@ -58222,6 +61714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     k += 1
  *                 c_child = c_child.prev
  */
+      __Pyx_TraceLine(1273,0,__PYX_ERR(0, 1273, __pyx_L1_error))
       __pyx_t_3 = (_isElement(__pyx_v_c_child) != 0);
       if (__pyx_t_3) {
 
@@ -58232,6 +61725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 c_child = c_child.prev
  *             if k < c_stop:
  */
+        __Pyx_TraceLine(1274,0,__PYX_ERR(0, 1274, __pyx_L1_error))
         __pyx_v_k = (__pyx_v_k + 1);
 
         /* "lxml/etree.pyx":1273
@@ -58250,6 +61744,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             if k < c_stop:
  *                 return k
  */
+      __Pyx_TraceLine(1275,0,__PYX_ERR(0, 1275, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_child->prev;
       __pyx_v_c_child = __pyx_t_2;
     }
@@ -58261,6 +61756,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 return k
  *         else:
  */
+    __Pyx_TraceLine(1276,0,__PYX_ERR(0, 1276, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_k < __pyx_v_c_stop) != 0);
     if (__pyx_t_3) {
 
@@ -58271,6 +61767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         else:
  *             # traverse all
  */
+      __Pyx_TraceLine(1277,0,__PYX_ERR(0, 1277, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1277, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -58304,6 +61801,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 if _isElement(c_child):
  *                     k = k + 1
  */
+  __Pyx_TraceLine(1280,0,__PYX_ERR(0, 1280, __pyx_L1_error))
   /*else*/ {
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_child != NULL) != 0);
@@ -58316,6 +61814,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     k = k + 1
  *                 c_child = c_child.prev
  */
+      __Pyx_TraceLine(1281,0,__PYX_ERR(0, 1281, __pyx_L1_error))
       __pyx_t_3 = (_isElement(__pyx_v_c_child) != 0);
       if (__pyx_t_3) {
 
@@ -58326,6 +61825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 c_child = c_child.prev
  *             if c_start > 0:
  */
+        __Pyx_TraceLine(1282,0,__PYX_ERR(0, 1282, __pyx_L1_error))
         __pyx_v_k = (__pyx_v_k + 1);
 
         /* "lxml/etree.pyx":1281
@@ -58344,6 +61844,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             if c_start > 0:
  *                 if k >= c_start:
  */
+      __Pyx_TraceLine(1283,0,__PYX_ERR(0, 1283, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_child->prev;
       __pyx_v_c_child = __pyx_t_2;
     }
@@ -58355,6 +61856,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                 if k >= c_start:
  *                     return k
  */
+    __Pyx_TraceLine(1284,0,__PYX_ERR(0, 1284, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_start > 0) != 0);
     if (__pyx_t_3) {
 
@@ -58365,6 +61867,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *                     return k
  *             else:
  */
+      __Pyx_TraceLine(1285,0,__PYX_ERR(0, 1285, __pyx_L1_error))
       __pyx_t_3 = ((__pyx_v_k >= __pyx_v_c_start) != 0);
       if (__pyx_t_3) {
 
@@ -58375,6 +61878,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             else:
  *                 return k
  */
+        __Pyx_TraceLine(1286,0,__PYX_ERR(0, 1286, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1286, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
@@ -58408,6 +61912,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         if c_start != 0 or c_stop != 0:
  *             raise ValueError, u"list.index(x): x not in slice"
  */
+    __Pyx_TraceLine(1288,0,__PYX_ERR(0, 1288, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1288, __pyx_L1_error)
@@ -58427,6 +61932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *             raise ValueError, u"list.index(x): x not in slice"
  *         else:
  */
+  __Pyx_TraceLine(1289,0,__PYX_ERR(0, 1289, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_start != 0) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -58445,6 +61951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  *         else:
  *             raise ValueError, u"list.index(x): x not in list"
  */
+    __Pyx_TraceLine(1290,0,__PYX_ERR(0, 1290, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_list_index_x_x_not_in_slice, 0, 0);
     __PYX_ERR(0, 1290, __pyx_L1_error)
 
@@ -58464,6 +61971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
  * 
  *     def get(self, key, default=None):
  */
+  __Pyx_TraceLine(1292,0,__PYX_ERR(0, 1292, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_list_index_x_x_not_in_list, 0, 0);
     __PYX_ERR(0, 1292, __pyx_L1_error)
@@ -58484,6 +61992,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_44index(struct LxmlElement *__p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58565,10 +62074,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_47get(PyObject *__pyx_v_self, P
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_46get(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__81)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[0], 1294, 0, __PYX_ERR(0, 1294, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1299
  *         Gets an element attribute.
@@ -58577,6 +62089,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_46get(struct LxmlElement *__pyx
  *         return _getAttributeValue(self, key, default)
  * 
  */
+  __Pyx_TraceLine(1299,0,__PYX_ERR(0, 1299, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1299, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1300
@@ -58586,6 +62099,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_46get(struct LxmlElement *__pyx
  * 
  *     def keys(self):
  */
+  __Pyx_TraceLine(1300,0,__PYX_ERR(0, 1300, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__getAttributeValue(__pyx_v_self, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -58608,6 +62122,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_46get(struct LxmlElement *__pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58637,10 +62152,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_49keys(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_48keys(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__82)
   __Pyx_RefNannySetupContext("keys", 0);
+  __Pyx_TraceCall("keys", __pyx_f[0], 1302, 0, __PYX_ERR(0, 1302, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1308
  *         arbitrary order (just like for an ordinary Python dictionary).
@@ -58649,6 +62167,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_48keys(struct LxmlElement *__py
  *         return _collectAttributes(self._c_node, 1)
  * 
  */
+  __Pyx_TraceLine(1308,0,__PYX_ERR(0, 1308, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1308, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1309
@@ -58658,6 +62177,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_48keys(struct LxmlElement *__py
  * 
  *     def values(self):
  */
+  __Pyx_TraceLine(1309,0,__PYX_ERR(0, 1309, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_c_node, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -58680,6 +62200,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_48keys(struct LxmlElement *__py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58709,10 +62230,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_51values(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_50values(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__83)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[0], 1311, 0, __PYX_ERR(0, 1311, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1317
  *         attributes are returned in an arbitrary order.
@@ -58721,6 +62245,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_50values(struct LxmlElement *__
  *         return _collectAttributes(self._c_node, 2)
  * 
  */
+  __Pyx_TraceLine(1317,0,__PYX_ERR(0, 1317, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1317, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1318
@@ -58730,6 +62255,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_50values(struct LxmlElement *__
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(1318,0,__PYX_ERR(0, 1318, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_c_node, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -58752,6 +62278,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_50values(struct LxmlElement *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58781,10 +62308,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_53items(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_52items(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__84)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[0], 1320, 0, __PYX_ERR(0, 1320, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1326
  *         an arbitrary order.
@@ -58793,6 +62323,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_52items(struct LxmlElement *__p
  *         return _collectAttributes(self._c_node, 3)
  * 
  */
+  __Pyx_TraceLine(1326,0,__PYX_ERR(0, 1326, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1326, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1327
@@ -58802,6 +62333,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_52items(struct LxmlElement *__p
  * 
  *     def getchildren(self):
  */
+  __Pyx_TraceLine(1327,0,__PYX_ERR(0, 1327, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_c_node, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -58824,6 +62356,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_52items(struct LxmlElement *__p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58853,10 +62386,13 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_55getchildren(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_54getchildren(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__85)
   __Pyx_RefNannySetupContext("getchildren", 0);
+  __Pyx_TraceCall("getchildren", __pyx_f[0], 1329, 0, __PYX_ERR(0, 1329, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1339
  *           ``list(element)`` or simply iterate over elements.
@@ -58865,6 +62401,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_54getchildren(struct LxmlElemen
  *         return _collectChildren(self)
  * 
  */
+  __Pyx_TraceLine(1339,0,__PYX_ERR(0, 1339, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1339, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1340
@@ -58874,6 +62411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_54getchildren(struct LxmlElemen
  * 
  *     def getparent(self):
  */
+  __Pyx_TraceLine(1340,0,__PYX_ERR(0, 1340, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectChildren(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -58896,6 +62434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_54getchildren(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -58926,11 +62465,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_57getparent(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__86)
   __Pyx_RefNannySetupContext("getparent", 0);
+  __Pyx_TraceCall("getparent", __pyx_f[0], 1342, 0, __PYX_ERR(0, 1342, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1349
  *         cdef xmlNode* c_node
@@ -58939,6 +62481,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement
  *         if c_node is NULL:
  *             return None
  */
+  __Pyx_TraceLine(1349,0,__PYX_ERR(0, 1349, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__parentElement(__pyx_v_self->_c_node);
 
   /* "lxml/etree.pyx":1350
@@ -58948,6 +62491,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement
  *             return None
  *         return _elementFactory(self._doc, c_node)
  */
+  __Pyx_TraceLine(1350,0,__PYX_ERR(0, 1350, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -58958,6 +62502,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement
  *         return _elementFactory(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(1351,0,__PYX_ERR(0, 1351, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -58978,6 +62523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement
  * 
  *     def getnext(self):
  */
+  __Pyx_TraceLine(1352,0,__PYX_ERR(0, 1352, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_2);
@@ -59004,6 +62550,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_56getparent(struct LxmlElement
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59034,11 +62581,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_59getnext(PyObject *__pyx_v_sel
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__87)
   __Pyx_RefNannySetupContext("getnext", 0);
+  __Pyx_TraceCall("getnext", __pyx_f[0], 1354, 0, __PYX_ERR(0, 1354, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1361
  *         cdef xmlNode* c_node
@@ -59047,6 +62597,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *_
  *         if c_node is NULL:
  *             return None
  */
+  __Pyx_TraceLine(1361,0,__PYX_ERR(0, 1361, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_self->_c_node);
 
   /* "lxml/etree.pyx":1362
@@ -59056,6 +62607,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *_
  *             return None
  *         return _elementFactory(self._doc, c_node)
  */
+  __Pyx_TraceLine(1362,0,__PYX_ERR(0, 1362, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -59066,6 +62618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *_
  *         return _elementFactory(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(1363,0,__PYX_ERR(0, 1363, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -59086,6 +62639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *_
  * 
  *     def getprevious(self):
  */
+  __Pyx_TraceLine(1364,0,__PYX_ERR(0, 1364, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_2);
@@ -59112,6 +62666,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_58getnext(struct LxmlElement *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59142,11 +62697,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_61getprevious(PyObject *__pyx_v
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElement *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__88)
   __Pyx_RefNannySetupContext("getprevious", 0);
+  __Pyx_TraceCall("getprevious", __pyx_f[0], 1366, 0, __PYX_ERR(0, 1366, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1373
  *         cdef xmlNode* c_node
@@ -59155,6 +62713,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElemen
  *         if c_node is NULL:
  *             return None
  */
+  __Pyx_TraceLine(1373,0,__PYX_ERR(0, 1373, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__previousElement(__pyx_v_self->_c_node);
 
   /* "lxml/etree.pyx":1374
@@ -59164,6 +62723,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElemen
  *             return None
  *         return _elementFactory(self._doc, c_node)
  */
+  __Pyx_TraceLine(1374,0,__PYX_ERR(0, 1374, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -59174,6 +62734,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElemen
  *         return _elementFactory(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(1375,0,__PYX_ERR(0, 1375, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -59194,6 +62755,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElemen
  * 
  *     def itersiblings(self, tag=None, *tags, preceding=False):
  */
+  __Pyx_TraceLine(1376,0,__PYX_ERR(0, 1376, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_2);
@@ -59220,6 +62782,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_60getprevious(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59312,13 +62875,16 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_63itersiblings(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_preceding, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__89)
   __Pyx_RefNannySetupContext("itersiblings", 0);
+  __Pyx_TraceCall("itersiblings", __pyx_f[0], 1378, 0, __PYX_ERR(0, 1378, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1392
@@ -59328,6 +62894,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
  *             tags += (tag,)
  *         return SiblingsIterator(self, tags, preceding=preceding)
  */
+  __Pyx_TraceLine(1392,0,__PYX_ERR(0, 1392, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -59339,6 +62906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  */
+    __Pyx_TraceLine(1393,0,__PYX_ERR(0, 1393, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1393, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -59366,6 +62934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
  * 
  *     def iterancestors(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(1394,0,__PYX_ERR(0, 1394, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1394, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -59404,6 +62973,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59488,12 +63058,15 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_65iterancestors(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__90)
   __Pyx_RefNannySetupContext("iterancestors", 0);
+  __Pyx_TraceCall("iterancestors", __pyx_f[0], 1396, 0, __PYX_ERR(0, 1396, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1404
@@ -59503,6 +63076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
  *             tags += (tag,)
  *         return AncestorsIterator(self, tags)
  */
+  __Pyx_TraceLine(1404,0,__PYX_ERR(0, 1404, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -59514,6 +63088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
  *         return AncestorsIterator(self, tags)
  * 
  */
+    __Pyx_TraceLine(1405,0,__PYX_ERR(0, 1405, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1405, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -59541,6 +63116,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
  * 
  *     def iterdescendants(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(1406,0,__PYX_ERR(0, 1406, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1406, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -59574,6 +63150,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59658,13 +63235,16 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_67iterdescendants(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__91)
   __Pyx_RefNannySetupContext("iterdescendants", 0);
+  __Pyx_TraceCall("iterdescendants", __pyx_f[0], 1408, 0, __PYX_ERR(0, 1408, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1417
@@ -59674,6 +63254,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  */
+  __Pyx_TraceLine(1417,0,__PYX_ERR(0, 1417, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -59685,6 +63266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  */
+    __Pyx_TraceLine(1418,0,__PYX_ERR(0, 1418, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1418, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -59712,6 +63294,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
  * 
  *     def iterchildren(self, tag=None, *tags, reversed=False):
  */
+  __Pyx_TraceLine(1419,0,__PYX_ERR(0, 1419, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1419, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -59750,6 +63333,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59842,13 +63426,16 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_69iterchildren(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_reversed, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__92)
   __Pyx_RefNannySetupContext("iterchildren", 0);
+  __Pyx_TraceCall("iterchildren", __pyx_f[0], 1421, 0, __PYX_ERR(0, 1421, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1430
@@ -59858,6 +63445,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
  *             tags += (tag,)
  *         return ElementChildIterator(self, tags, reversed=reversed)
  */
+  __Pyx_TraceLine(1430,0,__PYX_ERR(0, 1430, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -59869,6 +63457,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  */
+    __Pyx_TraceLine(1431,0,__PYX_ERR(0, 1431, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1431, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -59896,6 +63485,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
  * 
  *     def getroottree(self):
  */
+  __Pyx_TraceLine(1432,0,__PYX_ERR(0, 1432, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -59934,6 +63524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -59963,11 +63554,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_71getroottree(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__93)
   __Pyx_RefNannySetupContext("getroottree", 0);
+  __Pyx_TraceCall("getroottree", __pyx_f[0], 1434, 0, __PYX_ERR(0, 1434, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1443
  *         returns None (for the root element) and then build an ElementTree for
@@ -59976,6 +63570,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
  *         return _elementTreeFactory(self._doc, None)
  * 
  */
+  __Pyx_TraceLine(1443,0,__PYX_ERR(0, 1443, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1443, __pyx_L1_error)
@@ -59988,6 +63583,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
  * 
  *     def getiterator(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(1444,0,__PYX_ERR(0, 1444, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
@@ -60014,6 +63610,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60098,12 +63695,15 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_73getiterator(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__94)
   __Pyx_RefNannySetupContext("getiterator", 0);
+  __Pyx_TraceCall("getiterator", __pyx_f[0], 1446, 0, __PYX_ERR(0, 1446, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1464
@@ -60113,6 +63713,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags)
  */
+  __Pyx_TraceLine(1464,0,__PYX_ERR(0, 1464, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -60124,6 +63725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
  *         return ElementDepthFirstIterator(self, tags)
  * 
  */
+    __Pyx_TraceLine(1465,0,__PYX_ERR(0, 1465, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1465, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -60151,6 +63753,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
  * 
  *     def iter(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(1466,0,__PYX_ERR(0, 1466, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1466, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -60184,6 +63787,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60268,12 +63872,15 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_75iter(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__95)
   __Pyx_RefNannySetupContext("iter", 0);
+  __Pyx_TraceCall("iter", __pyx_f[0], 1468, 0, __PYX_ERR(0, 1468, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1488
@@ -60283,6 +63890,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags)
  */
+  __Pyx_TraceLine(1488,0,__PYX_ERR(0, 1488, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -60294,6 +63902,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
  *         return ElementDepthFirstIterator(self, tags)
  * 
  */
+    __Pyx_TraceLine(1489,0,__PYX_ERR(0, 1489, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1489, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -60321,6 +63930,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
  * 
  *     def itertext(self, tag=None, *tags, with_tail=True):
  */
+  __Pyx_TraceLine(1490,0,__PYX_ERR(0, 1490, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1490, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -60354,6 +63964,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60446,13 +64057,16 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_77itertext(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_with_tail, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__96)
   __Pyx_RefNannySetupContext("itertext", 0);
+  __Pyx_TraceCall("itertext", __pyx_f[0], 1492, 0, __PYX_ERR(0, 1492, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":1503
@@ -60462,6 +64076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
  *             tags += (tag,)
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  */
+  __Pyx_TraceLine(1503,0,__PYX_ERR(0, 1503, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -60473,6 +64088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  */
+    __Pyx_TraceLine(1504,0,__PYX_ERR(0, 1504, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1504, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
@@ -60500,6 +64116,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
  */
+  __Pyx_TraceLine(1505,0,__PYX_ERR(0, 1505, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -60538,6 +64155,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60637,11 +64255,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_79makeelement(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v__tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v__extra) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__97)
   __Pyx_RefNannySetupContext("makeelement", 0);
+  __Pyx_TraceCall("makeelement", __pyx_f[0], 1507, 0, __PYX_ERR(0, 1507, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1512
  *         Creates a new element associated with the same document.
@@ -60650,6 +64271,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
  *         return _makeElement(_tag, NULL, self._doc, None, None, None,
  *                             attrib, nsmap, _extra)
  */
+  __Pyx_TraceLine(1512,0,__PYX_ERR(0, 1512, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1512, __pyx_L1_error)
@@ -60662,6 +64284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
  *                             attrib, nsmap, _extra)
  * 
  */
+  __Pyx_TraceLine(1513,0,__PYX_ERR(0, 1513, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
@@ -60673,6 +64296,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
  * 
  *     def find(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(1514,0,__PYX_ERR(0, 1514, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)__pyx_t_1), ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1513, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -60696,6 +64320,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60777,6 +64402,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_81find(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -60785,7 +64411,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__98)
   __Pyx_RefNannySetupContext("find", 0);
+  __Pyx_TraceCall("find", __pyx_f[0], 1516, 0, __PYX_ERR(0, 1516, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":1525
@@ -60795,6 +64423,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
  *             path = (<QName>path).text
  *         return _elementpath.find(self, path, namespaces)
  */
+  __Pyx_TraceLine(1525,0,__PYX_ERR(0, 1525, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_path, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -60806,6 +64435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
  *         return _elementpath.find(self, path, namespaces)
  * 
  */
+    __Pyx_TraceLine(1526,0,__PYX_ERR(0, 1526, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
@@ -60827,6 +64457,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
  * 
  *     def findtext(self, path, default=None, namespaces=None):
  */
+  __Pyx_TraceLine(1527,0,__PYX_ERR(0, 1527, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1527, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -60901,6 +64532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -60995,6 +64627,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_83findtext(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_default, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -61003,7 +64636,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__99)
   __Pyx_RefNannySetupContext("findtext", 0);
+  __Pyx_TraceCall("findtext", __pyx_f[0], 1529, 0, __PYX_ERR(0, 1529, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":1538
@@ -61013,6 +64648,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
  *             path = (<QName>path).text
  *         return _elementpath.findtext(self, path, default, namespaces)
  */
+  __Pyx_TraceLine(1538,0,__PYX_ERR(0, 1538, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_path, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -61024,6 +64660,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
  *         return _elementpath.findtext(self, path, default, namespaces)
  * 
  */
+    __Pyx_TraceLine(1539,0,__PYX_ERR(0, 1539, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
@@ -61045,6 +64682,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
  * 
  *     def findall(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(1540,0,__PYX_ERR(0, 1540, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_findtext); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -61122,6 +64760,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -61203,6 +64842,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_85findall(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -61211,7 +64851,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__100)
   __Pyx_RefNannySetupContext("findall", 0);
+  __Pyx_TraceCall("findall", __pyx_f[0], 1542, 0, __PYX_ERR(0, 1542, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":1551
@@ -61221,6 +64863,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
  *             path = (<QName>path).text
  *         return _elementpath.findall(self, path, namespaces)
  */
+  __Pyx_TraceLine(1551,0,__PYX_ERR(0, 1551, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_path, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -61232,6 +64875,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
  *         return _elementpath.findall(self, path, namespaces)
  * 
  */
+    __Pyx_TraceLine(1552,0,__PYX_ERR(0, 1552, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
@@ -61253,6 +64897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
  * 
  *     def iterfind(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(1553,0,__PYX_ERR(0, 1553, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_findall); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -61327,6 +64972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -61408,6 +65054,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_87iterfind(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -61416,7 +65063,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__101)
   __Pyx_RefNannySetupContext("iterfind", 0);
+  __Pyx_TraceCall("iterfind", __pyx_f[0], 1555, 0, __PYX_ERR(0, 1555, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":1564
@@ -61426,6 +65075,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
  *             path = (<QName>path).text
  *         return _elementpath.iterfind(self, path, namespaces)
  */
+  __Pyx_TraceLine(1564,0,__PYX_ERR(0, 1564, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_path, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -61437,6 +65087,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  */
+    __Pyx_TraceLine(1565,0,__PYX_ERR(0, 1565, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
@@ -61458,6 +65109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  */
+  __Pyx_TraceLine(1566,0,__PYX_ERR(0, 1566, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_iterfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -61532,6 +65184,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -61636,11 +65289,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_89xpath(PyObject *__pyx_v_self,
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v__path, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_smart_strings, PyObject *__pyx_v__variables) {
   struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *__pyx_v_evaluator = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__102)
   __Pyx_RefNannySetupContext("xpath", 0);
+  __Pyx_TraceCall("xpath", __pyx_f[0], 1568, 0, __PYX_ERR(0, 1568, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1574
  *         Evaluate an xpath expression using the element as context node.
@@ -61649,6 +65305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(1574,0,__PYX_ERR(0, 1574, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
@@ -61665,6 +65322,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  *                                           smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)
  */
+  __Pyx_TraceLine(1575,0,__PYX_ERR(0, 1575, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 1574, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1576
@@ -61674,6 +65332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  *         return evaluator(_path, **_variables)
  * 
  */
+  __Pyx_TraceLine(1576,0,__PYX_ERR(0, 1576, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 1574, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1574
@@ -61683,6 +65342,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(1574,0,__PYX_ERR(0, 1574, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPathElementEvaluator), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1574, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -61697,6 +65357,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  * 
  *     def cssselect(self, expr, *, translator='xml'):
  */
+  __Pyx_TraceLine(1577,0,__PYX_ERR(0, 1577, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -61728,6 +65389,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_evaluator);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -61803,12 +65465,15 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_91cssselect(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement *__pyx_v_self, PyObject *__pyx_v_expr, PyObject *__pyx_v_translator) {
   PyObject *__pyx_v_CSSSelector = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__103)
   __Pyx_RefNannySetupContext("cssselect", 0);
+  __Pyx_TraceCall("cssselect", __pyx_f[0], 1579, 0, __PYX_ERR(0, 1579, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1589
  *         """
@@ -61817,6 +65482,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
  *         return CSSSelector(expr, translator=translator)(self)
  * 
  */
+  __Pyx_TraceLine(1589,0,__PYX_ERR(0, 1589, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1589, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_CSSSelector);
@@ -61839,6 +65505,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
  * 
  * 
  */
+  __Pyx_TraceLine(1590,0,__PYX_ERR(0, 1590, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1590, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -61918,6 +65585,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_CSSSelector);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62231,8 +65899,10 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
 
 static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_raiseImmutable", 0);
+  __Pyx_TraceCall("_raiseImmutable", __pyx_f[0], 1626, 0, __PYX_ERR(0, 1626, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1627
  * cdef class __ContentOnlyElement(_Element):
@@ -62241,6 +65911,7 @@ static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UN
  * 
  *     def set(self, key, value):
  */
+  __Pyx_TraceLine(1627,0,__PYX_ERR(0, 1627, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_this_element_does_not_have_child, 0, 0);
   __PYX_ERR(0, 1627, __pyx_L1_error)
 
@@ -62256,6 +65927,7 @@ static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UN
   __pyx_L1_error:;
   __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement._raiseImmutable", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62333,9 +66005,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_1set(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_key, CYTHON_UNUSED PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__104)
   __Pyx_RefNannySetupContext("set", 0);
+  __Pyx_TraceCall("set", __pyx_f[0], 1629, 0, __PYX_ERR(0, 1629, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1631
  *     def set(self, key, value):
@@ -62344,6 +66019,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(struct __pyx_o
  * 
  *     def append(self, value):
  */
+  __Pyx_TraceLine(1631,0,__PYX_ERR(0, 1631, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)__pyx_v_self->__pyx_vtab)->_raiseImmutable(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1631, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1629
@@ -62362,6 +66038,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62391,9 +66068,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_3append(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_2append(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__105)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append", __pyx_f[0], 1633, 0, __PYX_ERR(0, 1633, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1635
  *     def append(self, value):
@@ -62402,6 +66082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_2append(struct __p
  * 
  *     def insert(self, index, value):
  */
+  __Pyx_TraceLine(1635,0,__PYX_ERR(0, 1635, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)__pyx_v_self->__pyx_vtab)->_raiseImmutable(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1635, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1633
@@ -62420,6 +66101,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_2append(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62497,9 +66179,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_5insert(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4insert(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_index, CYTHON_UNUSED PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__106)
   __Pyx_RefNannySetupContext("insert", 0);
+  __Pyx_TraceCall("insert", __pyx_f[0], 1637, 0, __PYX_ERR(0, 1637, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1639
  *     def insert(self, index, value):
@@ -62508,6 +66193,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4insert(struct __p
  * 
  *     def __setitem__(self, index, value):
  */
+  __Pyx_TraceLine(1639,0,__PYX_ERR(0, 1639, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)__pyx_v_self->__pyx_vtab)->_raiseImmutable(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1639, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1637
@@ -62526,6 +66212,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4insert(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62557,9 +66244,11 @@ static int __pyx_pw_4lxml_5etree_20__ContentOnlyElement_7__setitem__(PyObject *_
 
 static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6__setitem__(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_index, CYTHON_UNUSED PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[0], 1641, 0, __PYX_ERR(0, 1641, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1643
  *     def __setitem__(self, index, value):
@@ -62568,6 +66257,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6__setitem__(struct __py
  * 
  *     property attrib:
  */
+  __Pyx_TraceLine(1643,0,__PYX_ERR(0, 1643, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)__pyx_v_self->__pyx_vtab)->_raiseImmutable(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1643, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1641
@@ -62585,6 +66275,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6__setitem__(struct __py
   __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62612,8 +66303,10 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_6attrib_1__get__(P
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1646, 0, __PYX_ERR(0, 1646, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1647
  *     property attrib:
@@ -62622,6 +66315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CY
  * 
  *     property text:
  */
+  __Pyx_TraceLine(1647,0,__PYX_ERR(0, 1647, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
   __pyx_r = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
@@ -62636,8 +66330,12 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CY
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.attrib.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62665,10 +66363,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_4text_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1650, 0, __PYX_ERR(0, 1650, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1651
  *     property text:
@@ -62677,6 +66377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
  *             return funicodeOrEmpty(self._c_node.content)
  * 
  */
+  __Pyx_TraceLine(1651,0,__PYX_ERR(0, 1651, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1651, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1652
@@ -62686,6 +66387,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(1652,0,__PYX_ERR(0, 1652, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_self->__pyx_base._c_node->content); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1652, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -62708,6 +66410,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62736,12 +66439,14 @@ static int __pyx_pw_4lxml_5etree_20__ContentOnlyElement_4text_3__set__(PyObject
 static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, PyObject *__pyx_v_value) {
   const xmlChar *__pyx_v_c_text;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1654, 0, __PYX_ERR(0, 1654, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "lxml/etree.pyx":1656
@@ -62751,6 +66456,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *             if value is None:
  *                 c_text = <const_xmlChar*>NULL
  */
+  __Pyx_TraceLine(1656,0,__PYX_ERR(0, 1656, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1656, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1657
@@ -62760,6 +66466,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *                 c_text = <const_xmlChar*>NULL
  *             else:
  */
+  __Pyx_TraceLine(1657,0,__PYX_ERR(0, 1657, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -62771,6 +66478,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *             else:
  *                 value = _utf8(value)
  */
+    __Pyx_TraceLine(1658,0,__PYX_ERR(0, 1658, __pyx_L1_error))
     __pyx_v_c_text = ((const xmlChar *)NULL);
 
     /* "lxml/etree.pyx":1657
@@ -62790,6 +66498,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *                 c_text = _xcstr(value)
  *             tree.xmlNodeSetContent(self._c_node, c_text)
  */
+  __Pyx_TraceLine(1660,0,__PYX_ERR(0, 1660, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1660, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -62803,6 +66512,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *             tree.xmlNodeSetContent(self._c_node, c_text)
  * 
  */
+    __Pyx_TraceLine(1661,0,__PYX_ERR(0, 1661, __pyx_L1_error))
     __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
   }
   __pyx_L3:;
@@ -62814,6 +66524,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  * 
  *     # ACCESSORS
  */
+  __Pyx_TraceLine(1662,0,__PYX_ERR(0, 1662, __pyx_L1_error))
   xmlNodeSetContent(__pyx_v_self->__pyx_base._c_node, __pyx_v_c_text);
 
   /* "lxml/etree.pyx":1654
@@ -62833,6 +66544,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62864,11 +66576,13 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_9__getitem__(PyObj
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, PyObject *__pyx_v_x) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[0], 1665, 0, __PYX_ERR(0, 1665, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1667
  *     def __getitem__(self, x):
@@ -62877,6 +66591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  *             return []
  *         else:
  */
+  __Pyx_TraceLine(1667,0,__PYX_ERR(0, 1667, __pyx_L1_error))
   __pyx_t_1 = PySlice_Check(__pyx_v_x); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -62888,6 +66603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  *         else:
  *             raise IndexError, u"list index out of range"
  */
+    __Pyx_TraceLine(1668,0,__PYX_ERR(0, 1668, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1668, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -62911,6 +66627,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(1670,0,__PYX_ERR(0, 1670, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_IndexError, __pyx_kp_u_list_index_out_of_range, 0, 0);
     __PYX_ERR(0, 1670, __pyx_L1_error)
@@ -62931,6 +66648,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -62962,8 +66680,10 @@ static Py_ssize_t __pyx_pw_4lxml_5etree_20__ContentOnlyElement_11__len__(PyObjec
 
 static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[0], 1672, 0, __PYX_ERR(0, 1672, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1674
  *     def __len__(self):
@@ -62972,6 +66692,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_
  * 
  *     def get(self, key, default=None):
  */
+  __Pyx_TraceLine(1674,0,__PYX_ERR(0, 1674, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -62984,7 +66705,11 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63066,8 +66791,11 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_13get(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_key, CYTHON_UNUSED PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__107)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[0], 1676, 0, __PYX_ERR(0, 1676, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1678
  *     def get(self, key, default=None):
@@ -63076,6 +66804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSE
  * 
  *     def keys(self):
  */
+  __Pyx_TraceLine(1678,0,__PYX_ERR(0, 1678, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -63089,8 +66818,12 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSE
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63120,9 +66853,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_15keys(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__108)
   __Pyx_RefNannySetupContext("keys", 0);
+  __Pyx_TraceCall("keys", __pyx_f[0], 1680, 0, __PYX_ERR(0, 1680, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1682
  *     def keys(self):
@@ -63131,6 +66867,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUS
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(1682,0,__PYX_ERR(0, 1682, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63153,6 +66890,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUS
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63182,9 +66920,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_17items(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__109)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[0], 1684, 0, __PYX_ERR(0, 1684, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1686
  *     def items(self):
@@ -63193,6 +66934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNU
  * 
  *     def values(self):
  */
+  __Pyx_TraceLine(1686,0,__PYX_ERR(0, 1686, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1686, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63215,6 +66957,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNU
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63244,9 +66987,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_19values(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__110)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[0], 1688, 0, __PYX_ERR(0, 1688, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1690
  *     def values(self):
@@ -63255,6 +67001,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UN
  * 
  * cdef class _Comment(__ContentOnlyElement):
  */
+  __Pyx_TraceLine(1690,0,__PYX_ERR(0, 1690, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1690, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63277,6 +67024,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UN
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63304,9 +67052,11 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Comment_3tag_1__get__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__Comment *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1694, 0, __PYX_ERR(0, 1694, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1695
  *     property tag:
@@ -63315,6 +67065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(CYTHON_UNUSED stru
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(1695,0,__PYX_ERR(0, 1695, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63337,6 +67088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(CYTHON_UNUSED stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63364,10 +67116,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Comment_1__repr__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml_5etree__Comment *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 1697, 0, __PYX_ERR(0, 1697, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1698
  * 
@@ -63376,6 +67130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml
  * 
  * cdef class _ProcessingInstruction(__ContentOnlyElement):
  */
+  __Pyx_TraceLine(1698,0,__PYX_ERR(0, 1698, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63405,6 +67160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63432,9 +67188,11 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_3tag_1__get__(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__ProcessingInstruction *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1702, 0, __PYX_ERR(0, 1702, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1703
  *     property tag:
@@ -63443,6 +67201,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(CYT
  * 
  *     property target:
  */
+  __Pyx_TraceLine(1703,0,__PYX_ERR(0, 1703, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -63465,6 +67224,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(CYT
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63492,10 +67252,12 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_6target_1__get__
 
 static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(struct __pyx_obj_4lxml_5etree__ProcessingInstruction *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1707, 0, __PYX_ERR(0, 1707, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1708
  *         # not in ElementTree
@@ -63504,6 +67266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
  *             return funicode(self._c_node.name)
  * 
  */
+  __Pyx_TraceLine(1708,0,__PYX_ERR(0, 1708, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1708, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1709
@@ -63513,6 +67276,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(1709,0,__PYX_ERR(0, 1709, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1709, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -63535,6 +67299,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63563,10 +67328,12 @@ static int __pyx_pw_4lxml_5etree_22_ProcessingInstruction_6target_3__set__(PyObj
 static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struct __pyx_obj_4lxml_5etree__ProcessingInstruction *__pyx_v_self, PyObject *__pyx_v_value) {
   const xmlChar *__pyx_v_c_text;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1711, 0, __PYX_ERR(0, 1711, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "lxml/etree.pyx":1712
@@ -63576,6 +67343,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  *             value = _utf8(value)
  *             c_text = _xcstr(value)
  */
+  __Pyx_TraceLine(1712,0,__PYX_ERR(0, 1712, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1712, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1713
@@ -63585,6 +67353,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  *             c_text = _xcstr(value)
  *             tree.xmlNodeSetName(self._c_node, c_text)
  */
+  __Pyx_TraceLine(1713,0,__PYX_ERR(0, 1713, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1713, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
@@ -63597,6 +67366,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  *             tree.xmlNodeSetName(self._c_node, c_text)
  * 
  */
+  __Pyx_TraceLine(1714,0,__PYX_ERR(0, 1714, __pyx_L1_error))
   __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
 
   /* "lxml/etree.pyx":1715
@@ -63606,6 +67376,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(1715,0,__PYX_ERR(0, 1715, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_c_text);
 
   /* "lxml/etree.pyx":1711
@@ -63625,6 +67396,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63653,12 +67425,14 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_1__repr__(PyObje
 static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct __pyx_obj_4lxml_5etree__ProcessingInstruction *__pyx_v_self) {
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 1717, 0, __PYX_ERR(0, 1717, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1718
  * 
@@ -63667,6 +67441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *         if text:
  *             return "<?%s %s?>" % (strrepr(self.target),
  */
+  __Pyx_TraceLine(1718,0,__PYX_ERR(0, 1718, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_text = __pyx_t_1;
@@ -63679,6 +67454,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *             return "<?%s %s?>" % (strrepr(self.target),
  *                                   strrepr(text))
  */
+  __Pyx_TraceLine(1719,0,__PYX_ERR(0, 1719, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1719, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -63689,6 +67465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *                                   strrepr(text))
  *         else:
  */
+    __Pyx_TraceLine(1720,0,__PYX_ERR(0, 1720, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1720, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -63703,6 +67480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *         else:
  *             return "<?%s?>" % strrepr(self.target)
  */
+    __Pyx_TraceLine(1721,0,__PYX_ERR(0, 1721, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_strrepr(__pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
 
@@ -63713,6 +67491,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *                                   strrepr(text))
  *         else:
  */
+    __Pyx_TraceLine(1720,0,__PYX_ERR(0, 1720, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1720, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -63744,6 +67523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  * 
  *     def get(self, key, default=None):
  */
+  __Pyx_TraceLine(1723,0,__PYX_ERR(0, 1723, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error)
@@ -63777,6 +67557,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63858,13 +67639,16 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_3get(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __pyx_obj_4lxml_5etree__ProcessingInstruction *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__111)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[0], 1725, 0, __PYX_ERR(0, 1725, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1737
  *         It is not guaranteed to work for all possible text content.
@@ -63873,6 +67657,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
  * 
  *     property attrib:
  */
+  __Pyx_TraceLine(1737,0,__PYX_ERR(0, 1737, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_attrib); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1737, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -63946,6 +67731,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -63976,6 +67762,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   PyObject *__pyx_7genexpr__pyx_v_value1 = NULL;
   PyObject *__pyx_7genexpr__pyx_v_value2 = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -63989,6 +67776,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   PyObject *(*__pyx_t_10)(PyObject *);
   int __pyx_t_11;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1745, 0, __PYX_ERR(0, 1745, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1746
  *         """
@@ -63997,6 +67785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
  *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
  * 
  */
+  __Pyx_TraceLine(1746,0,__PYX_ERR(0, 1746, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   { /* enter inner scope */
     __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1746, __pyx_L5_error)
@@ -64009,9 +67798,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
  * 
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  */
+    __Pyx_TraceLine(1747,0,__PYX_ERR(0, 1747, __pyx_L5_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1747, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyNumber_Add(__pyx_kp_u__15, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1747, __pyx_L5_error)
+    __pyx_t_4 = PyNumber_Add(__pyx_kp_u__22, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1747, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_INCREF(__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES);
@@ -64168,6 +67958,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
  *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
  * 
  */
+      __Pyx_TraceLine(1746,0,__PYX_ERR(0, 1746, __pyx_L5_error))
       __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_7genexpr__pyx_v_value1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1746, __pyx_L5_error)
       if (!__pyx_t_11) {
       } else {
@@ -64188,6 +67979,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
  * 
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  */
+      __Pyx_TraceLine(1747,0,__PYX_ERR(0, 1747, __pyx_L5_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF(__pyx_7genexpr__pyx_v_attr); __pyx_7genexpr__pyx_v_attr = 0;
@@ -64229,6 +68021,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   __Pyx_XDECREF(__pyx_7genexpr__pyx_v_value1);
   __Pyx_XDECREF(__pyx_7genexpr__pyx_v_value2);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64256,9 +68049,11 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Entity_3tag_1__get__(PyObject *__pyx_v_
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__Entity *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1753, 0, __PYX_ERR(0, 1753, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1754
  *     property tag:
@@ -64267,6 +68062,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(CYTHON_UNUSED struc
  * 
  *     property name:
  */
+  __Pyx_TraceLine(1754,0,__PYX_ERR(0, 1754, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1754, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -64289,6 +68085,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(CYTHON_UNUSED struc
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64316,10 +68113,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Entity_4name_1__get__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4lxml_5etree__Entity *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1758, 0, __PYX_ERR(0, 1758, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1759
  *         # not in ElementTree
@@ -64328,6 +68127,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
  *             return funicode(self._c_node.name)
  * 
  */
+  __Pyx_TraceLine(1759,0,__PYX_ERR(0, 1759, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1759, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1760
@@ -64337,6 +68137,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(1760,0,__PYX_ERR(0, 1760, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1760, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -64359,6 +68160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64387,6 +68189,7 @@ static int __pyx_pw_4lxml_5etree_7_Entity_4name_3__set__(PyObject *__pyx_v_self,
 static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_5etree__Entity *__pyx_v_self, PyObject *__pyx_v_value) {
   PyObject *__pyx_v_value_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -64397,6 +68200,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
   Py_UCS4 __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1762, 0, __PYX_ERR(0, 1762, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1763
  * 
@@ -64405,6 +68209,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  *             value_utf = _utf8(value)
  *             if b'&' in value_utf or b';' in value_utf:
  */
+  __Pyx_TraceLine(1763,0,__PYX_ERR(0, 1763, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1763, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1764
@@ -64414,6 +68219,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  *             if b'&' in value_utf or b';' in value_utf:
  *                 raise ValueError, f"Invalid entity name '{value}'"
  */
+  __Pyx_TraceLine(1764,0,__PYX_ERR(0, 1764, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_value_utf = ((PyObject*)__pyx_t_2);
@@ -64426,14 +68232,15 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  *                 raise ValueError, f"Invalid entity name '{value}'"
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  */
-  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__38, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1765, __pyx_L1_error)
+  __Pyx_TraceLine(1765,0,__PYX_ERR(0, 1765, __pyx_L1_error))
+  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__112, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1765, __pyx_L1_error)
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (!__pyx_t_5) {
   } else {
     __pyx_t_3 = __pyx_t_5;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__39, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1765, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__113, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1765, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_5 != 0);
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
@@ -64446,6 +68253,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  * 
  */
+    __Pyx_TraceLine(1766,0,__PYX_ERR(0, 1766, __pyx_L1_error))
     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = 0;
@@ -64461,10 +68269,10 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
     __Pyx_GIVEREF(__pyx_t_8);
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8);
     __pyx_t_8 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_6 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__60);
     __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -64488,6 +68296,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  * 
  *     property text:
  */
+  __Pyx_TraceLine(1767,0,__PYX_ERR(0, 1767, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf));
 
   /* "lxml/etree.pyx":1762
@@ -64508,6 +68317,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64535,6 +68345,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Entity_4text_1__get__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4lxml_5etree__Entity *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -64543,6 +68354,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1772, 0, __PYX_ERR(0, 1772, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1773
  *         # entity value ?
@@ -64551,6 +68363,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
  *             return f'&{funicode(self._c_node.name)};'
  * 
  */
+  __Pyx_TraceLine(1773,0,__PYX_ERR(0, 1773, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1773, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1774
@@ -64560,15 +68373,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(1774,0,__PYX_ERR(0, 1774, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = 0;
   __pyx_t_4 = 127;
-  __Pyx_INCREF(__pyx_kp_u__38);
+  __Pyx_INCREF(__pyx_kp_u__112);
   __pyx_t_3 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__38);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__38);
+  __Pyx_GIVEREF(__pyx_kp_u__112);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__112);
   __pyx_t_5 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1774, __pyx_L1_error)
@@ -64579,10 +68393,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   __Pyx_GIVEREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
   __pyx_t_6 = 0;
-  __Pyx_INCREF(__pyx_kp_u__39);
+  __Pyx_INCREF(__pyx_kp_u__113);
   __pyx_t_3 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__39);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__39);
+  __Pyx_GIVEREF(__pyx_kp_u__113);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__113);
   __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -64607,6 +68421,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64634,10 +68449,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Entity_1__repr__(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_5etree__Entity *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 1776, 0, __PYX_ERR(0, 1776, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1777
  * 
@@ -64646,6 +68463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_
  * 
  * 
  */
+  __Pyx_TraceLine(1777,0,__PYX_ERR(0, 1777, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1777, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -64675,6 +68493,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -64756,6 +68575,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   PyObject *__pyx_v_ns_utf = NULL;
   PyObject *__pyx_v_tag_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -64766,6 +68586,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   Py_ssize_t __pyx_t_7;
   Py_UCS4 __pyx_t_8;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 1804, 0, __PYX_ERR(0, 1804, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text_or_uri_or_element);
   __Pyx_INCREF(__pyx_v_tag);
 
@@ -64776,6 +68597,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             # Allow None as no namespace.
  *             text_or_uri_or_element, tag = tag, None
  */
+  __Pyx_TraceLine(1805,0,__PYX_ERR(0, 1805, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_text_or_uri_or_element == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -64787,6 +68609,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         if not _isString(text_or_uri_or_element):
  *             if isinstance(text_or_uri_or_element, _Element):
  */
+    __Pyx_TraceLine(1807,0,__PYX_ERR(0, 1807, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_tag;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = Py_None;
@@ -64812,6 +68635,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             if isinstance(text_or_uri_or_element, _Element):
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
  */
+  __Pyx_TraceLine(1808,0,__PYX_ERR(0, 1808, __pyx_L1_error))
   __pyx_t_2 = ((!(_isString(__pyx_v_text_or_uri_or_element) != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -64822,6 +68646,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
  *                 if not _isString(text_or_uri_or_element):
  */
+    __Pyx_TraceLine(1809,0,__PYX_ERR(0, 1809, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_text_or_uri_or_element, __pyx_ptype_4lxml_5etree__Element); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -64833,6 +68658,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                 if not _isString(text_or_uri_or_element):
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  */
+      __Pyx_TraceLine(1810,0,__PYX_ERR(0, 1810, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_text_or_uri_or_element, __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1810, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_4);
@@ -64845,6 +68671,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  *             elif isinstance(text_or_uri_or_element, QName):
  */
+      __Pyx_TraceLine(1811,0,__PYX_ERR(0, 1811, __pyx_L1_error))
       __pyx_t_1 = ((!(_isString(__pyx_v_text_or_uri_or_element) != 0)) != 0);
       if (unlikely(__pyx_t_1)) {
 
@@ -64855,6 +68682,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             elif isinstance(text_or_uri_or_element, QName):
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  */
+        __Pyx_TraceLine(1812,0,__PYX_ERR(0, 1812, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_text_or_uri_or_element))), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1812, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_input_tag_of_type, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1812, __pyx_L1_error)
@@ -64890,6 +68718,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  *             elif text_or_uri_or_element is not None:
  */
+    __Pyx_TraceLine(1813,0,__PYX_ERR(0, 1813, __pyx_L1_error))
     __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_text_or_uri_or_element, __pyx_ptype_4lxml_5etree_QName); 
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -64901,6 +68730,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             elif text_or_uri_or_element is not None:
  *                 text_or_uri_or_element = unicode(text_or_uri_or_element)
  */
+      __Pyx_TraceLine(1814,0,__PYX_ERR(0, 1814, __pyx_L1_error))
       __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_text_or_uri_or_element)->text;
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_3);
@@ -64923,6 +68753,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                 text_or_uri_or_element = unicode(text_or_uri_or_element)
  *             else:
  */
+    __Pyx_TraceLine(1815,0,__PYX_ERR(0, 1815, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_text_or_uri_or_element != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (likely(__pyx_t_1)) {
@@ -64934,6 +68765,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             else:
  *                 raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  */
+      __Pyx_TraceLine(1816,0,__PYX_ERR(0, 1816, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1816, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_3);
@@ -64956,6 +68788,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  * 
  *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
  */
+    __Pyx_TraceLine(1818,0,__PYX_ERR(0, 1818, __pyx_L1_error))
     /*else*/ {
       __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_text_or_uri_or_element))), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -64984,6 +68817,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         if tag is not None:
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  */
+  __Pyx_TraceLine(1820,0,__PYX_ERR(0, 1820, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1820, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(__pyx_t_4 != Py_None)) {
@@ -65021,6 +68855,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  *             if ns_utf is None:
  */
+  __Pyx_TraceLine(1821,0,__PYX_ERR(0, 1821, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -65032,6 +68867,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
  *             tag_utf = _utf8(tag)
  */
+    __Pyx_TraceLine(1823,0,__PYX_ERR(0, 1823, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_ns_utf == Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -65043,6 +68879,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             tag_utf = _utf8(tag)
  *         _tagValidOrRaise(tag_utf)
  */
+      __Pyx_TraceLine(1824,0,__PYX_ERR(0, 1824, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_tag_utf);
       __Pyx_DECREF_SET(__pyx_v_ns_utf, __pyx_v_tag_utf);
 
@@ -65062,6 +68899,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         _tagValidOrRaise(tag_utf)
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  */
+    __Pyx_TraceLine(1825,0,__PYX_ERR(0, 1825, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1825, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_tag_utf, __pyx_t_4);
@@ -65083,6 +68921,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  *         if ns_utf is None:
  */
+  __Pyx_TraceLine(1826,0,__PYX_ERR(0, 1826, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_tag_utf); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1826, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1827
@@ -65092,6 +68931,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         if ns_utf is None:
  *             self.namespace = None
  */
+  __Pyx_TraceLine(1827,0,__PYX_ERR(0, 1827, __pyx_L1_error))
   if (unlikely(__pyx_v_tag_utf == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
     __PYX_ERR(0, 1827, __pyx_L1_error)
@@ -65111,6 +68951,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             self.namespace = None
  *             self.text = self.localname
  */
+  __Pyx_TraceLine(1828,0,__PYX_ERR(0, 1828, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -65122,6 +68963,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             self.text = self.localname
  *         else:
  */
+    __Pyx_TraceLine(1829,0,__PYX_ERR(0, 1829, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->namespace);
@@ -65135,6 +68977,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         else:
  *             self.namespace = (<bytes>ns_utf).decode('utf8')
  */
+    __Pyx_TraceLine(1830,0,__PYX_ERR(0, 1830, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_self->localname;
     __Pyx_INCREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
@@ -65160,6 +69003,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)
  *     def __str__(self):
  */
+  __Pyx_TraceLine(1832,0,__PYX_ERR(0, 1832, __pyx_L1_error))
   /*else*/ {
     if (unlikely(__pyx_v_ns_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
@@ -65180,14 +69024,15 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *     def __str__(self):
  *         return self.text
  */
+    __Pyx_TraceLine(1833,0,__PYX_ERR(0, 1833, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_7 = 0;
     __pyx_t_8 = 127;
-    __Pyx_INCREF(__pyx_kp_u__40);
+    __Pyx_INCREF(__pyx_kp_u__114);
     __pyx_t_7 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__40);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__40);
+    __Pyx_GIVEREF(__pyx_kp_u__114);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__114);
     __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->namespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_8;
@@ -65195,10 +69040,10 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __Pyx_INCREF(__pyx_kp_u__41);
+    __Pyx_INCREF(__pyx_kp_u__115);
     __pyx_t_7 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__41);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__41);
+    __Pyx_GIVEREF(__pyx_kp_u__115);
+    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__115);
     __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->localname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_8;
@@ -65239,6 +69084,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __Pyx_XDECREF(__pyx_v_tag_utf);
   __Pyx_XDECREF(__pyx_v_text_or_uri_or_element);
   __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65266,8 +69112,10 @@ static PyObject *__pyx_pw_4lxml_5etree_5QName_3__str__(PyObject *__pyx_v_self) {
 
 static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 1834, 0, __PYX_ERR(0, 1834, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1835
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)
@@ -65276,6 +69124,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5e
  *     def __hash__(self):
  *         return hash(self.text)
  */
+  __Pyx_TraceLine(1835,0,__PYX_ERR(0, 1835, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->text);
   __pyx_r = __pyx_v_self->text;
@@ -65290,8 +69139,12 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5e
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.QName.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65319,10 +69172,12 @@ static Py_hash_t __pyx_pw_4lxml_5etree_5QName_5__hash__(PyObject *__pyx_v_self)
 
 static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self) {
   Py_hash_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_hash_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__hash__", 0);
+  __Pyx_TraceCall("__hash__", __pyx_f[0], 1836, 0, __PYX_ERR(0, 1836, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1837
  *         return self.text
@@ -65331,6 +69186,7 @@ static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5
  *     def __richcmp__(self, other, int op):
  *         try:
  */
+  __Pyx_TraceLine(1837,0,__PYX_ERR(0, 1837, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->text;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 1837, __pyx_L1_error)
@@ -65353,6 +69209,7 @@ static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5
   __pyx_r = -1;
   __pyx_L0:;
   if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65380,6 +69237,7 @@ static PyObject *__pyx_pw_4lxml_5etree_5QName_7__richcmp__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -65391,6 +69249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 1838, 0, __PYX_ERR(0, 1838, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_other);
 
   /* "lxml/etree.pyx":1839
@@ -65400,6 +69259,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *             if type(other) is QName:
  *                 other = (<QName>other).text
  */
+  __Pyx_TraceLine(1839,0,__PYX_ERR(0, 1839, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -65416,6 +69276,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *                 other = (<QName>other).text
  *             elif not isinstance(other, unicode):
  */
+      __Pyx_TraceLine(1840,0,__PYX_ERR(0, 1840, __pyx_L3_error))
       __pyx_t_4 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_ptype_4lxml_5etree_QName));
       __pyx_t_5 = (__pyx_t_4 != 0);
       if (__pyx_t_5) {
@@ -65427,6 +69288,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *             elif not isinstance(other, unicode):
  *                 other = unicode(other)
  */
+        __Pyx_TraceLine(1841,0,__PYX_ERR(0, 1841, __pyx_L3_error))
         __pyx_t_6 = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_other)->text;
         __Pyx_INCREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_6);
@@ -65449,6 +69311,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *                 other = unicode(other)
  *         except (ValueError, UnicodeDecodeError):
  */
+      __Pyx_TraceLine(1842,0,__PYX_ERR(0, 1842, __pyx_L3_error))
       __pyx_t_5 = PyUnicode_Check(__pyx_v_other); 
       __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
       if (__pyx_t_4) {
@@ -65460,6 +69323,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *         except (ValueError, UnicodeDecodeError):
  *             return NotImplemented
  */
+        __Pyx_TraceLine(1843,0,__PYX_ERR(0, 1843, __pyx_L3_error))
         __pyx_t_6 = __Pyx_PyObject_Unicode(__pyx_v_other); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1843, __pyx_L3_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_6);
@@ -65497,6 +69361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *             return NotImplemented
  *         return python.PyObject_RichCompare(self.text, other, op)
  */
+    __Pyx_TraceLine(1844,0,__PYX_ERR(0, 1844, __pyx_L5_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree.QName.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -65512,6 +69377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  *         return python.PyObject_RichCompare(self.text, other, op)
  * 
  */
+      __Pyx_TraceLine(1845,0,__PYX_ERR(0, 1845, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_builtin_NotImplemented);
       __pyx_r = __pyx_builtin_NotImplemented;
@@ -65551,6 +69417,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
  * 
  * 
  */
+  __Pyx_TraceLine(1846,0,__PYX_ERR(0, 1846, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_9 = __pyx_v_self->text;
   __Pyx_INCREF(__pyx_t_9);
@@ -65579,6 +69446,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_other);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65606,16 +69474,22 @@ static PyObject *__pyx_pw_4lxml_5etree_5QName_4text_1__get__(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_5QName_4text___get__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1801, 0, __PYX_ERR(0, 1801, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->text);
   __pyx_r = __pyx_v_self->text;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.QName.text.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65643,16 +69517,22 @@ static PyObject *__pyx_pw_4lxml_5etree_5QName_9localname_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_5QName_9localname___get__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1802, 0, __PYX_ERR(0, 1802, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->localname);
   __pyx_r = __pyx_v_self->localname;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.QName.localname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65680,16 +69560,22 @@ static PyObject *__pyx_pw_4lxml_5etree_5QName_9namespace_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_5QName_9namespace___get__(struct __pyx_obj_4lxml_5etree_QName *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1803, 0, __PYX_ERR(0, 1803, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->namespace);
   __pyx_r = __pyx_v_self->namespace;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.QName.namespace.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65704,9 +69590,11 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_9namespace___get__(struct __pyx_ob
 
 static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElementTree *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_assertHasRoot", 0);
+  __Pyx_TraceCall("_assertHasRoot", __pyx_f[0], 1859, 0, __PYX_ERR(0, 1859, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1865
  *         the caller program.
@@ -65715,6 +69603,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
  *                u"ElementTree not initialized, missing root"
  *         return 0
  */
+  __Pyx_TraceLine(1865,0,__PYX_ERR(0, 1865, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
@@ -65732,6 +69621,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
  * 
  *     def parse(self, source, _BaseParser parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(1867,0,__PYX_ERR(0, 1867, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -65748,6 +69638,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
   __Pyx_AddTraceback("lxml.etree._ElementTree._assertHasRoot", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -65844,6 +69735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -65855,7 +69747,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__116)
   __Pyx_RefNannySetupContext("parse", 0);
+  __Pyx_TraceCall("parse", __pyx_f[0], 1869, 0, __PYX_ERR(0, 1869, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1874
  *         Updates self with the content of source and returns its root
@@ -65864,6 +69758,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *         try:
  *             doc = _parseDocument(source, parser, base_url)
  */
+  __Pyx_TraceLine(1874,0,__PYX_ERR(0, 1874, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_doc = ((struct LxmlDocument *)Py_None);
 
@@ -65874,6 +69769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *             doc = _parseDocument(source, parser, base_url)
  *             self._context_node = doc.getroot()
  */
+  __Pyx_TraceLine(1875,0,__PYX_ERR(0, 1875, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -65890,6 +69786,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *             self._context_node = doc.getroot()
  *             if self._context_node is None:
  */
+      __Pyx_TraceLine(1876,0,__PYX_ERR(0, 1876, __pyx_L3_error))
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_doc, ((struct LxmlDocument *)__pyx_t_4));
@@ -65902,6 +69799,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *             if self._context_node is None:
  *                 self._doc = doc
  */
+      __Pyx_TraceLine(1877,0,__PYX_ERR(0, 1877, __pyx_L3_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1877, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1877, __pyx_L3_error)
@@ -65918,6 +69816,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *                 self._doc = doc
  *         except _TargetParserResult as result_container:
  */
+      __Pyx_TraceLine(1878,0,__PYX_ERR(0, 1878, __pyx_L3_error))
       __pyx_t_5 = (((PyObject *)__pyx_v_self->_context_node) == Py_None);
       __pyx_t_6 = (__pyx_t_5 != 0);
       if (__pyx_t_6) {
@@ -65929,6 +69828,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *         except _TargetParserResult as result_container:
  *             # raises a TypeError if we don't get an _Element
  */
+        __Pyx_TraceLine(1879,0,__PYX_ERR(0, 1879, __pyx_L3_error))
         __Pyx_INCREF(((PyObject *)__pyx_v_doc));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
         __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -65966,6 +69866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *             # raises a TypeError if we don't get an _Element
  *             self._context_node = result_container.result
  */
+    __Pyx_TraceLine(1880,0,__PYX_ERR(0, 1880, __pyx_L5_except_error))
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8);
     __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1880, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_9);
@@ -65989,6 +69890,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *         return self._context_node
  * 
  */
+      __Pyx_TraceLine(1882,0,__PYX_ERR(0, 1882, __pyx_L5_except_error))
       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1882, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1882, __pyx_L5_except_error)
@@ -66032,6 +69934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  * 
  *     def _setroot(self, _Element root not None):
  */
+  __Pyx_TraceLine(1883,0,__PYX_ERR(0, 1883, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_context_node));
   __pyx_r = ((PyObject *)__pyx_v_self->_context_node);
@@ -66057,6 +69960,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66091,10 +69995,13 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_3_setroot(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlElementTree *__pyx_v_self, struct LxmlElement *__pyx_v_root) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__117)
   __Pyx_RefNannySetupContext("_setroot", 0);
+  __Pyx_TraceCall("_setroot", __pyx_f[0], 1885, 0, __PYX_ERR(0, 1885, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1890
  *         Relocate the ElementTree to a new root node.
@@ -66103,6 +70010,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise TypeError, u"Only elements can be the root of an ElementTree"
  */
+  __Pyx_TraceLine(1890,0,__PYX_ERR(0, 1890, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1890, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1891
@@ -66112,6 +70020,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  *             raise TypeError, u"Only elements can be the root of an ElementTree"
  *         self._context_node = root
  */
+  __Pyx_TraceLine(1891,0,__PYX_ERR(0, 1891, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_root->_c_node->type != XML_ELEMENT_NODE) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -66122,6 +70031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  *         self._context_node = root
  *         self._doc = None
  */
+    __Pyx_TraceLine(1892,0,__PYX_ERR(0, 1892, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Only_elements_can_be_the_root_of, 0, 0);
     __PYX_ERR(0, 1892, __pyx_L1_error)
 
@@ -66141,6 +70051,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  *         self._doc = None
  * 
  */
+  __Pyx_TraceLine(1893,0,__PYX_ERR(0, 1893, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_root));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
   __Pyx_GOTREF(__pyx_v_self->_context_node);
@@ -66154,6 +70065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  * 
  *     def getroot(self):
  */
+  __Pyx_TraceLine(1894,0,__PYX_ERR(0, 1894, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -66176,6 +70088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66205,8 +70118,11 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_5getroot(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElementTree *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__118)
   __Pyx_RefNannySetupContext("getroot", 0);
+  __Pyx_TraceCall("getroot", __pyx_f[0], 1896, 0, __PYX_ERR(0, 1896, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1901
  *         Gets the root element for this tree.
@@ -66215,6 +70131,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElemen
  * 
  *     def __copy__(self):
  */
+  __Pyx_TraceLine(1901,0,__PYX_ERR(0, 1901, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_context_node));
   __pyx_r = ((PyObject *)__pyx_v_self->_context_node);
@@ -66229,8 +70146,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElemen
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementTree.getroot", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66259,11 +70180,14 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_7__copy__(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlElementTree *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__119)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__", __pyx_f[0], 1903, 0, __PYX_ERR(0, 1903, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1904
  * 
@@ -66272,6 +70196,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
  * 
  *     def __deepcopy__(self, memo):
  */
+  __Pyx_TraceLine(1904,0,__PYX_ERR(0, 1904, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
@@ -66302,6 +70227,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66333,6 +70259,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   struct LxmlDocument *__pyx_v_doc = 0;
   xmlDoc *__pyx_v_c_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -66340,7 +70267,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__120)
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
+  __Pyx_TraceCall("__deepcopy__", __pyx_f[0], 1906, 0, __PYX_ERR(0, 1906, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1910
  *         cdef _Document doc
@@ -66349,6 +70278,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             root = self._context_node.__copy__()
  *             assert root is not None
  */
+  __Pyx_TraceLine(1910,0,__PYX_ERR(0, 1910, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -66360,6 +70290,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             assert root is not None
  *             _assertValidNode(root)
  */
+    __Pyx_TraceLine(1911,0,__PYX_ERR(0, 1911, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context_node), __pyx_n_s_copy_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1911, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -66391,6 +70322,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             _assertValidNode(root)
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  */
+    __Pyx_TraceLine(1912,0,__PYX_ERR(0, 1912, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       __pyx_t_2 = (((PyObject *)__pyx_v_root) != Py_None);
@@ -66408,6 +70340,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  *             return _elementTreeFactory(None, root)
  */
+    __Pyx_TraceLine(1913,0,__PYX_ERR(0, 1913, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1913, __pyx_L1_error)
 
     /* "lxml/etree.pyx":1914
@@ -66417,6 +70350,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             return _elementTreeFactory(None, root)
  *         elif self._doc is not None:
  */
+    __Pyx_TraceLine(1914,0,__PYX_ERR(0, 1914, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__copyNonElementSiblings(__pyx_v_self->_context_node->_c_node, __pyx_v_root->_c_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1914, __pyx_L1_error)
 
     /* "lxml/etree.pyx":1915
@@ -66426,6 +70360,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *         elif self._doc is not None:
  *             _assertValidDoc(self._doc)
  */
+    __Pyx_TraceLine(1915,0,__PYX_ERR(0, 1915, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)Py_None), __pyx_v_root)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1915, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -66449,6 +70384,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             _assertValidDoc(self._doc)
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
  */
+  __Pyx_TraceLine(1916,0,__PYX_ERR(0, 1916, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -66460,6 +70396,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
  *             if c_doc is NULL:
  */
+    __Pyx_TraceLine(1917,0,__PYX_ERR(0, 1917, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_doc);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_3)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1917, __pyx_L1_error)
@@ -66472,6 +70409,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             if c_doc is NULL:
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(1918,0,__PYX_ERR(0, 1918, __pyx_L1_error))
     __pyx_v_c_doc = xmlCopyDoc(__pyx_v_self->_doc->_c_doc, 1);
 
     /* "lxml/etree.pyx":1919
@@ -66481,6 +70419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *                 raise MemoryError()
  *             doc = _documentFactory(c_doc, self._doc._parser)
  */
+    __Pyx_TraceLine(1919,0,__PYX_ERR(0, 1919, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -66491,6 +70430,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             doc = _documentFactory(c_doc, self._doc._parser)
  *             return _elementTreeFactory(doc, None)
  */
+      __Pyx_TraceLine(1920,0,__PYX_ERR(0, 1920, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(0, 1920, __pyx_L1_error)
 
       /* "lxml/etree.pyx":1919
@@ -66509,6 +70449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             return _elementTreeFactory(doc, None)
  *         else:
  */
+    __Pyx_TraceLine(1921,0,__PYX_ERR(0, 1921, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_doc->_parser);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1921, __pyx_L1_error)
@@ -66524,6 +70465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *         else:
  *             # so what ...
  */
+    __Pyx_TraceLine(1922,0,__PYX_ERR(0, 1922, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1922, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -66547,6 +70489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  * 
  *     # not in ElementTree
  */
+  __Pyx_TraceLine(1925,0,__PYX_ERR(0, 1925, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
@@ -66573,6 +70516,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   __Pyx_XDECREF((PyObject *)__pyx_v_root);
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66600,10 +70544,12 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_7docinfo_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct LxmlElementTree *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1930, 0, __PYX_ERR(0, 1930, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1931
  *         u"""Information about the document provided by parser and DTD."""
@@ -66612,6 +70558,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct Lx
  *             return DocInfo(self._context_node._doc)
  * 
  */
+  __Pyx_TraceLine(1931,0,__PYX_ERR(0, 1931, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1931, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1932
@@ -66621,6 +70568,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct Lx
  * 
  *     # not in ElementTree, read-only
  */
+  __Pyx_TraceLine(1932,0,__PYX_ERR(0, 1932, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_DocInfo), ((PyObject *)__pyx_v_self->_context_node->_doc)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1932, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -66643,6 +70591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct Lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66670,11 +70619,13 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_6parser_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct LxmlElementTree *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1938, 0, __PYX_ERR(0, 1938, __pyx_L1_error));
 
   /* "lxml/etree.pyx":1939
  *         """
@@ -66683,6 +70634,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *                    self._context_node._doc is not None:
  *                 return self._context_node._doc._parser
  */
+  __Pyx_TraceLine(1939,0,__PYX_ERR(0, 1939, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -66698,6 +70650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *                 return self._context_node._doc._parser
  *             if self._doc is not None:
  */
+  __Pyx_TraceLine(1940,0,__PYX_ERR(0, 1940, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_self->_context_node->_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   __pyx_t_1 = __pyx_t_2;
@@ -66710,6 +70663,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *                    self._context_node._doc is not None:
  *                 return self._context_node._doc._parser
  */
+  __Pyx_TraceLine(1939,0,__PYX_ERR(0, 1939, __pyx_L1_error))
   if (__pyx_t_1) {
 
     /* "lxml/etree.pyx":1941
@@ -66719,6 +70673,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *             if self._doc is not None:
  *                 return self._doc._parser
  */
+    __Pyx_TraceLine(1941,0,__PYX_ERR(0, 1941, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->_context_node->_doc->_parser));
     __pyx_r = ((PyObject *)__pyx_v_self->_context_node->_doc->_parser);
@@ -66740,6 +70695,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *                 return self._doc._parser
  *             return None
  */
+  __Pyx_TraceLine(1942,0,__PYX_ERR(0, 1942, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -66751,6 +70707,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  *             return None
  * 
  */
+    __Pyx_TraceLine(1943,0,__PYX_ERR(0, 1943, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->_doc->_parser));
     __pyx_r = ((PyObject *)__pyx_v_self->_doc->_parser);
@@ -66772,6 +70729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",
  */
+  __Pyx_TraceLine(1944,0,__PYX_ERR(0, 1944, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -66785,8 +70743,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementTree.parser.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -66939,6 +70901,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   int __pyx_v_is_standalone;
   PyObject *__pyx_v_warnings = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -66947,7 +70910,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__121)
   __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_TraceCall("write", __pyx_f[0], 1946, 0, __PYX_ERR(0, 1946, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
   __Pyx_INCREF(__pyx_v_doctype);
   __Pyx_INCREF(__pyx_v_compression);
@@ -66959,6 +70924,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  */
+  __Pyx_TraceLine(1992,0,__PYX_ERR(0, 1992, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1992, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1993
@@ -66968,6 +70934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         if compression is None or compression < 0:
  *             compression = 0
  */
+  __Pyx_TraceLine(1993,0,__PYX_ERR(0, 1993, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_2)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1993, __pyx_L1_error)
@@ -66980,6 +70947,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             compression = 0
  * 
  */
+  __Pyx_TraceLine(1994,0,__PYX_ERR(0, 1994, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_compression == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (!__pyx_t_5) {
@@ -67001,6 +70969,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  * 
  *         # C14N serialisation
  */
+    __Pyx_TraceLine(1995,0,__PYX_ERR(0, 1995, __pyx_L1_error))
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_compression, __pyx_int_0);
 
@@ -67020,6 +70989,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")
  */
+  __Pyx_TraceLine(1998,0,__PYX_ERR(0, 1998, __pyx_L1_error))
   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_c14n, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1998, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -67030,6 +71000,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                 raise ValueError("Cannot specify encoding with C14N")
  *             if xml_declaration:
  */
+    __Pyx_TraceLine(1999,0,__PYX_ERR(0, 1999, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_encoding != Py_None);
     __pyx_t_5 = (__pyx_t_3 != 0);
     if (unlikely(__pyx_t_5)) {
@@ -67041,7 +71012,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  */
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2000, __pyx_L1_error)
+      __Pyx_TraceLine(2000,0,__PYX_ERR(0, 2000, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2000, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -67063,6 +71035,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  * 
  */
+    __Pyx_TraceLine(2001,0,__PYX_ERR(0, 2001, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2001, __pyx_L1_error)
     if (unlikely(__pyx_t_5)) {
 
@@ -67073,7 +71046,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  */
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2002, __pyx_L1_error)
+      __Pyx_TraceLine(2002,0,__PYX_ERR(0, 2002, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__123, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2002, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -67095,6 +71069,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                             compression, inclusive_ns_prefixes)
  *             return
  */
+    __Pyx_TraceLine(2004,0,__PYX_ERR(0, 2004, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_exclusive); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2004, __pyx_L1_error)
@@ -67107,6 +71082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             return
  *         if not with_comments:
  */
+    __Pyx_TraceLine(2005,0,__PYX_ERR(0, 2005, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2005, __pyx_L1_error)
 
     /* "lxml/etree.pyx":2004
@@ -67116,6 +71092,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                             compression, inclusive_ns_prefixes)
  *             return
  */
+    __Pyx_TraceLine(2004,0,__PYX_ERR(0, 2004, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__tofilelikeC14N(__pyx_v_file, ((struct LxmlElement *)__pyx_t_2), __pyx_t_5, __pyx_t_3, __pyx_t_1, __pyx_v_inclusive_ns_prefixes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2004, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -67128,6 +71105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         if not with_comments:
  *             raise ValueError("Can only discard comments in C14N serialisation")
  */
+    __Pyx_TraceLine(2006,0,__PYX_ERR(0, 2006, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -67148,6 +71126,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             raise ValueError("Can only discard comments in C14N serialisation")
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  */
+  __Pyx_TraceLine(2007,0,__PYX_ERR(0, 2007, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2007, __pyx_L1_error)
   __pyx_t_5 = ((!__pyx_t_3) != 0);
   if (unlikely(__pyx_t_5)) {
@@ -67159,7 +71138,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:
  */
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error)
+    __Pyx_TraceLine(2008,0,__PYX_ERR(0, 2008, __pyx_L1_error))
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__124, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -67181,6 +71161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             write_declaration = xml_declaration
  *             if encoding is None:
  */
+  __Pyx_TraceLine(2010,0,__PYX_ERR(0, 2010, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_xml_declaration != Py_None);
   __pyx_t_3 = (__pyx_t_5 != 0);
   if (__pyx_t_3) {
@@ -67192,6 +71173,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             if encoding is None:
  *                 encoding = u'ASCII'
  */
+    __Pyx_TraceLine(2011,0,__PYX_ERR(0, 2011, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2011, __pyx_L1_error)
     __pyx_v_write_declaration = __pyx_t_3;
 
@@ -67202,6 +71184,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                 encoding = u'ASCII'
  *             else:
  */
+    __Pyx_TraceLine(2012,0,__PYX_ERR(0, 2012, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_encoding == Py_None);
     __pyx_t_5 = (__pyx_t_3 != 0);
     if (__pyx_t_5) {
@@ -67213,6 +71196,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             else:
  *                 encoding = encoding.upper()
  */
+      __Pyx_TraceLine(2013,0,__PYX_ERR(0, 2013, __pyx_L1_error))
       __Pyx_INCREF(__pyx_n_u_ASCII);
       __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
@@ -67233,6 +71217,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         elif encoding is None:
  *             encoding = u'ASCII'
  */
+    __Pyx_TraceLine(2015,0,__PYX_ERR(0, 2015, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2015, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -67276,6 +71261,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             encoding = u'ASCII'
  *             write_declaration = 0
  */
+  __Pyx_TraceLine(2016,0,__PYX_ERR(0, 2016, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_encoding == Py_None);
   __pyx_t_3 = (__pyx_t_5 != 0);
   if (__pyx_t_3) {
@@ -67287,6 +71273,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             write_declaration = 0
  *         else:
  */
+    __Pyx_TraceLine(2017,0,__PYX_ERR(0, 2017, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_ASCII);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
@@ -67297,6 +71284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         else:
  *             encoding = encoding.upper()
  */
+    __Pyx_TraceLine(2018,0,__PYX_ERR(0, 2018, __pyx_L1_error))
     __pyx_v_write_declaration = 0;
 
     /* "lxml/etree.pyx":2016
@@ -67316,6 +71304,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             write_declaration = encoding not in \
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  */
+  __Pyx_TraceLine(2020,0,__PYX_ERR(0, 2020, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2020, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -67347,6 +71336,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  *         if standalone is None:
  */
+    __Pyx_TraceLine(2021,0,__PYX_ERR(0, 2021, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_encoding);
     __pyx_t_6 = __pyx_v_encoding;
     __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_kp_u_US_ASCII, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2021, __pyx_L1_error)
@@ -67382,6 +71372,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             is_standalone = -1
  *         elif standalone:
  */
+  __Pyx_TraceLine(2023,0,__PYX_ERR(0, 2023, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_standalone == Py_None);
   __pyx_t_5 = (__pyx_t_3 != 0);
   if (__pyx_t_5) {
@@ -67393,6 +71384,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         elif standalone:
  *             write_declaration = 1
  */
+    __Pyx_TraceLine(2024,0,__PYX_ERR(0, 2024, __pyx_L1_error))
     __pyx_v_is_standalone = -1;
 
     /* "lxml/etree.pyx":2023
@@ -67412,6 +71404,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             write_declaration = 1
  *             is_standalone = 1
  */
+  __Pyx_TraceLine(2025,0,__PYX_ERR(0, 2025, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2025, __pyx_L1_error)
   if (__pyx_t_5) {
 
@@ -67422,6 +71415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             is_standalone = 1
  *         else:
  */
+    __Pyx_TraceLine(2026,0,__PYX_ERR(0, 2026, __pyx_L1_error))
     __pyx_v_write_declaration = 1;
 
     /* "lxml/etree.pyx":2027
@@ -67431,6 +71425,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *         else:
  *             write_declaration = 1
  */
+    __Pyx_TraceLine(2027,0,__PYX_ERR(0, 2027, __pyx_L1_error))
     __pyx_v_is_standalone = 1;
 
     /* "lxml/etree.pyx":2025
@@ -67450,6 +71445,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             is_standalone = 0
  * 
  */
+  __Pyx_TraceLine(2029,0,__PYX_ERR(0, 2029, __pyx_L1_error))
   /*else*/ {
     __pyx_v_write_declaration = 1;
 
@@ -67460,6 +71456,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  * 
  *         if docstring is not None and doctype is None:
  */
+    __Pyx_TraceLine(2030,0,__PYX_ERR(0, 2030, __pyx_L1_error))
     __pyx_v_is_standalone = 0;
   }
   __pyx_L16:;
@@ -67471,6 +71468,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             import warnings
  *             warnings.warn(
  */
+  __Pyx_TraceLine(2032,0,__PYX_ERR(0, 2032, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_docstring != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -67491,6 +71489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             warnings.warn(
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  */
+    __Pyx_TraceLine(2033,0,__PYX_ERR(0, 2033, __pyx_L1_error))
     __pyx_t_6 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2033, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_warnings = __pyx_t_6;
@@ -67503,6 +71502,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)
  */
+    __Pyx_TraceLine(2034,0,__PYX_ERR(0, 2034, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_warnings, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2034, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
 
@@ -67513,7 +71513,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             doctype = docstring
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2034, __pyx_L1_error)
+    __Pyx_TraceLine(2036,0,__PYX_ERR(0, 2036, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__125, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2034, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -67525,6 +71526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  * 
  *         _tofilelike(file, self._context_node, encoding, doctype, method,
  */
+    __Pyx_TraceLine(2037,0,__PYX_ERR(0, 2037, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_docstring);
     __Pyx_DECREF_SET(__pyx_v_doctype, __pyx_v_docstring);
 
@@ -67544,6 +71546,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                     write_declaration, 1, pretty_print, with_tail,
  *                     is_standalone, compression)
  */
+  __Pyx_TraceLine(2039,0,__PYX_ERR(0, 2039, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
 
@@ -67554,6 +71557,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                     is_standalone, compression)
  * 
  */
+  __Pyx_TraceLine(2040,0,__PYX_ERR(0, 2040, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2040, __pyx_L1_error)
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2040, __pyx_L1_error)
 
@@ -67564,6 +71568,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  * 
  *     def getpath(self, _Element element not None):
  */
+  __Pyx_TraceLine(2041,0,__PYX_ERR(0, 2041, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2041, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2039
@@ -67573,6 +71578,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                     write_declaration, 1, pretty_print, with_tail,
  *                     is_standalone, compression)
  */
+  __Pyx_TraceLine(2039,0,__PYX_ERR(0, 2039, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__tofilelike(__pyx_v_file, ((struct LxmlElement *)__pyx_t_2), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_t_5, __pyx_t_3, __pyx_v_is_standalone, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2039, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -67601,6 +71607,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __Pyx_XDECREF(__pyx_v_doctype);
   __Pyx_XDECREF(__pyx_v_compression);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -67640,13 +71647,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   xmlChar *__pyx_v_c_path;
   PyObject *__pyx_v_path = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   xmlDoc *__pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__126)
   __Pyx_RefNannySetupContext("getpath", 0);
+  __Pyx_TraceCall("getpath", __pyx_f[0], 2043, 0, __PYX_ERR(0, 2043, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2058
  *         cdef _Element root
@@ -67655,6 +71665,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         if self._context_node is not None:
  *             root = self._context_node
  */
+  __Pyx_TraceLine(2058,0,__PYX_ERR(0, 2058, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2058, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2059
@@ -67664,6 +71675,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             root = self._context_node
  *             doc = root._doc
  */
+  __Pyx_TraceLine(2059,0,__PYX_ERR(0, 2059, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -67675,6 +71687,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             doc = root._doc
  *         elif self._doc is not None:
  */
+    __Pyx_TraceLine(2060,0,__PYX_ERR(0, 2060, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_context_node);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
@@ -67687,6 +71700,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         elif self._doc is not None:
  *             doc = self._doc
  */
+    __Pyx_TraceLine(2061,0,__PYX_ERR(0, 2061, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_root->_doc);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
@@ -67709,6 +71723,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             doc = self._doc
  *             root = doc.getroot()
  */
+  __Pyx_TraceLine(2062,0,__PYX_ERR(0, 2062, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (likely(__pyx_t_2)) {
@@ -67720,6 +71735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             root = doc.getroot()
  *         else:
  */
+    __Pyx_TraceLine(2063,0,__PYX_ERR(0, 2063, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
@@ -67732,6 +71748,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         else:
  *             raise ValueError, u"Element is not in this tree."
  */
+    __Pyx_TraceLine(2064,0,__PYX_ERR(0, 2064, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2064, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2064, __pyx_L1_error)
@@ -67755,6 +71772,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         _assertValidDoc(doc)
  *         _assertValidNode(root)
  */
+  __Pyx_TraceLine(2066,0,__PYX_ERR(0, 2066, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
     __PYX_ERR(0, 2066, __pyx_L1_error)
@@ -67768,6 +71786,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         _assertValidNode(root)
  *         if element._doc is not doc:
  */
+  __Pyx_TraceLine(2067,0,__PYX_ERR(0, 2067, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2067, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2068
@@ -67777,6 +71796,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         if element._doc is not doc:
  *             raise ValueError, u"Element is not in this tree."
  */
+  __Pyx_TraceLine(2068,0,__PYX_ERR(0, 2068, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2068, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2069
@@ -67786,6 +71806,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             raise ValueError, u"Element is not in this tree."
  * 
  */
+  __Pyx_TraceLine(2069,0,__PYX_ERR(0, 2069, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_element->_doc != __pyx_v_doc);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -67797,6 +71818,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  * 
  *         c_doc = _fakeRootDoc(doc._c_doc, root._c_node)
  */
+    __Pyx_TraceLine(2070,0,__PYX_ERR(0, 2070, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
     __PYX_ERR(0, 2070, __pyx_L1_error)
 
@@ -67816,6 +71838,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         c_path = tree.xmlGetNodePath(element._c_node)
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  */
+  __Pyx_TraceLine(2072,0,__PYX_ERR(0, 2072, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root->_c_node); if (unlikely(__pyx_t_5 == ((xmlDoc *)NULL))) __PYX_ERR(0, 2072, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_5;
 
@@ -67826,6 +71849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  *         if c_path is NULL:
  */
+  __Pyx_TraceLine(2073,0,__PYX_ERR(0, 2073, __pyx_L1_error))
   __pyx_v_c_path = xmlGetNodePath(__pyx_v_element->_c_node);
 
   /* "lxml/etree.pyx":2074
@@ -67835,6 +71859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         if c_path is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(2074,0,__PYX_ERR(0, 2074, __pyx_L1_error))
   __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
 
   /* "lxml/etree.pyx":2075
@@ -67844,6 +71869,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *             raise MemoryError()
  *         path = funicode(c_path)
  */
+  __Pyx_TraceLine(2075,0,__PYX_ERR(0, 2075, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_path == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -67854,6 +71880,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         path = funicode(c_path)
  *         tree.xmlFree(c_path)
  */
+    __Pyx_TraceLine(2076,0,__PYX_ERR(0, 2076, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(0, 2076, __pyx_L1_error)
 
     /* "lxml/etree.pyx":2075
@@ -67872,6 +71899,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         tree.xmlFree(c_path)
  *         return path
  */
+  __Pyx_TraceLine(2077,0,__PYX_ERR(0, 2077, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2077, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_path = __pyx_t_4;
@@ -67884,6 +71912,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         return path
  * 
  */
+  __Pyx_TraceLine(2078,0,__PYX_ERR(0, 2078, __pyx_L1_error))
   xmlFree(__pyx_v_c_path);
 
   /* "lxml/etree.pyx":2079
@@ -67893,6 +71922,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  * 
  *     def getelementpath(self, _Element element not None):
  */
+  __Pyx_TraceLine(2079,0,__PYX_ERR(0, 2079, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_path);
   __pyx_r = __pyx_v_path;
@@ -67916,6 +71946,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __Pyx_XDECREF((PyObject *)__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -67958,6 +71989,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   PyObject *__pyx_v_tag = NULL;
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -67969,7 +72001,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   Py_UCS4 __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__127)
   __Pyx_RefNannySetupContext("getelementpath", 0);
+  __Pyx_TraceCall("getelementpath", __pyx_f[0], 2081, 0, __PYX_ERR(0, 2081, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2095
  *         cdef _Element root
@@ -67978,6 +72012,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise ValueError, u"input is not an Element"
  */
+  __Pyx_TraceLine(2095,0,__PYX_ERR(0, 2095, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2095, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2096
@@ -67987,6 +72022,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             raise ValueError, u"input is not an Element"
  *         if self._context_node is not None:
  */
+  __Pyx_TraceLine(2096,0,__PYX_ERR(0, 2096, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_ELEMENT_NODE) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -67997,6 +72033,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         if self._context_node is not None:
  *             root = self._context_node
  */
+    __Pyx_TraceLine(2097,0,__PYX_ERR(0, 2097, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_input_is_not_an_Element, 0, 0);
     __PYX_ERR(0, 2097, __pyx_L1_error)
 
@@ -68016,6 +72053,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             root = self._context_node
  *         elif self._doc is not None:
  */
+  __Pyx_TraceLine(2098,0,__PYX_ERR(0, 2098, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -68027,6 +72065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         elif self._doc is not None:
  *             root = self._doc.getroot()
  */
+    __Pyx_TraceLine(2099,0,__PYX_ERR(0, 2099, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_context_node);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
@@ -68049,6 +72088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             root = self._doc.getroot()
  *         else:
  */
+  __Pyx_TraceLine(2100,0,__PYX_ERR(0, 2100, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (likely(__pyx_t_2)) {
@@ -68060,6 +72100,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         else:
  *             raise ValueError, u"Element is not in this tree"
  */
+    __Pyx_TraceLine(2101,0,__PYX_ERR(0, 2101, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_self->_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2101, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2101, __pyx_L1_error)
@@ -68083,6 +72124,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         _assertValidNode(root)
  *         if element._doc is not root._doc:
  */
+  __Pyx_TraceLine(2103,0,__PYX_ERR(0, 2103, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree_2, 0, 0);
     __PYX_ERR(0, 2103, __pyx_L1_error)
@@ -68096,6 +72138,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         if element._doc is not root._doc:
  *             raise ValueError, u"Element is not in this tree"
  */
+  __Pyx_TraceLine(2104,0,__PYX_ERR(0, 2104, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2104, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2105
@@ -68105,6 +72148,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             raise ValueError, u"Element is not in this tree"
  * 
  */
+  __Pyx_TraceLine(2105,0,__PYX_ERR(0, 2105, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_element->_doc != __pyx_v_root->_doc);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -68116,6 +72160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  * 
  *         path = []
  */
+    __Pyx_TraceLine(2106,0,__PYX_ERR(0, 2106, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree_2, 0, 0);
     __PYX_ERR(0, 2106, __pyx_L1_error)
 
@@ -68135,6 +72180,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         c_element = element._c_node
  *         while c_element is not root._c_node:
  */
+  __Pyx_TraceLine(2108,0,__PYX_ERR(0, 2108, __pyx_L1_error))
   __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2108, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_path = ((PyObject*)__pyx_t_4);
@@ -68147,6 +72193,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         while c_element is not root._c_node:
  *             c_name = c_element.name
  */
+  __Pyx_TraceLine(2109,0,__PYX_ERR(0, 2109, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_element->_c_node;
   __pyx_v_c_element = __pyx_t_5;
 
@@ -68157,6 +72204,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             c_name = c_element.name
  *             c_href = _getNs(c_element)
  */
+  __Pyx_TraceLine(2110,0,__PYX_ERR(0, 2110, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_element != __pyx_v_root->_c_node) != 0);
     if (!__pyx_t_3) break;
@@ -68168,6 +72216,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             c_href = _getNs(c_element)
  *             tag = _namespacedNameFromNsName(c_href, c_name)
  */
+    __Pyx_TraceLine(2111,0,__PYX_ERR(0, 2111, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_c_element->name;
     __pyx_v_c_name = __pyx_t_6;
 
@@ -68178,6 +72227,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             tag = _namespacedNameFromNsName(c_href, c_name)
  *             if c_href is NULL:
  */
+    __Pyx_TraceLine(2112,0,__PYX_ERR(0, 2112, __pyx_L1_error))
     __pyx_v_c_href = _getNs(__pyx_v_c_element);
 
     /* "lxml/etree.pyx":2113
@@ -68187,6 +72237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             if c_href is NULL:
  *                 c_href = <const_xmlChar*>b''  # no namespace (NULL is wildcard)
  */
+    __Pyx_TraceLine(2113,0,__PYX_ERR(0, 2113, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_4);
@@ -68199,6 +72250,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 c_href = <const_xmlChar*>b''  # no namespace (NULL is wildcard)
  *             # use tag[N] if there are preceding siblings with the same tag
  */
+    __Pyx_TraceLine(2114,0,__PYX_ERR(0, 2114, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_href == NULL) != 0);
     if (__pyx_t_3) {
 
@@ -68209,6 +72261,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             # use tag[N] if there are preceding siblings with the same tag
  *             count = 0
  */
+      __Pyx_TraceLine(2115,0,__PYX_ERR(0, 2115, __pyx_L1_error))
       __pyx_v_c_href = ((const xmlChar *)((const xmlChar *)((char const *)"")));
 
       /* "lxml/etree.pyx":2114
@@ -68227,6 +72280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             c_node = c_element.prev
  *             while c_node is not NULL:
  */
+    __Pyx_TraceLine(2117,0,__PYX_ERR(0, 2117, __pyx_L1_error))
     __pyx_v_count = 0;
 
     /* "lxml/etree.pyx":2118
@@ -68236,6 +72290,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             while c_node is not NULL:
  *                 if c_node.type == tree.XML_ELEMENT_NODE:
  */
+    __Pyx_TraceLine(2118,0,__PYX_ERR(0, 2118, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_c_element->prev;
     __pyx_v_c_node = __pyx_t_5;
 
@@ -68246,6 +72301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 if c_node.type == tree.XML_ELEMENT_NODE:
  *                     if _tagMatches(c_node, c_href, c_name):
  */
+    __Pyx_TraceLine(2119,0,__PYX_ERR(0, 2119, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_3) break;
@@ -68257,6 +72313,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                     if _tagMatches(c_node, c_href, c_name):
  *                         count += 1
  */
+      __Pyx_TraceLine(2120,0,__PYX_ERR(0, 2120, __pyx_L1_error))
       __pyx_t_3 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
       if (__pyx_t_3) {
 
@@ -68267,6 +72324,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                         count += 1
  *                 c_node = c_node.prev
  */
+        __Pyx_TraceLine(2121,0,__PYX_ERR(0, 2121, __pyx_L1_error))
         __pyx_t_3 = (__pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name) != 0);
         if (__pyx_t_3) {
 
@@ -68277,6 +72335,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 c_node = c_node.prev
  *             if count:
  */
+          __Pyx_TraceLine(2122,0,__PYX_ERR(0, 2122, __pyx_L1_error))
           __pyx_v_count = (__pyx_v_count + 1);
 
           /* "lxml/etree.pyx":2121
@@ -68304,6 +72363,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             if count:
  *                 tag = f'{tag}[{count+1}]'
  */
+      __Pyx_TraceLine(2123,0,__PYX_ERR(0, 2123, __pyx_L1_error))
       __pyx_t_5 = __pyx_v_c_node->prev;
       __pyx_v_c_node = __pyx_t_5;
     }
@@ -68315,6 +72375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 tag = f'{tag}[{count+1}]'
  *             else:
  */
+    __Pyx_TraceLine(2124,0,__PYX_ERR(0, 2124, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_count != 0);
     if (__pyx_t_3) {
 
@@ -68325,6 +72386,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             else:
  *                 # use tag[1] if there are following siblings with the same tag
  */
+      __Pyx_TraceLine(2125,0,__PYX_ERR(0, 2125, __pyx_L1_error))
       __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_7 = 0;
@@ -68336,20 +72398,20 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __Pyx_GIVEREF(__pyx_t_9);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
       __pyx_t_9 = 0;
-      __Pyx_INCREF(__pyx_kp_u__46);
+      __Pyx_INCREF(__pyx_kp_u__128);
       __pyx_t_7 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__46);
-      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_kp_u__46);
+      __Pyx_GIVEREF(__pyx_kp_u__128);
+      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_kp_u__128);
       __pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t((__pyx_v_count + 1), 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
       __Pyx_GIVEREF(__pyx_t_9);
       PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);
       __pyx_t_9 = 0;
-      __Pyx_INCREF(__pyx_kp_u__47);
+      __Pyx_INCREF(__pyx_kp_u__129);
       __pyx_t_7 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__47);
-      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_kp_u__47);
+      __Pyx_GIVEREF(__pyx_kp_u__129);
+      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_kp_u__129);
       __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -68373,6 +72435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 while c_node is not NULL:
  *                     if c_node.type == tree.XML_ELEMENT_NODE:
  */
+    __Pyx_TraceLine(2128,0,__PYX_ERR(0, 2128, __pyx_L1_error))
     /*else*/ {
       __pyx_t_5 = __pyx_v_c_element->next;
       __pyx_v_c_node = __pyx_t_5;
@@ -68384,6 +72447,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                     if c_node.type == tree.XML_ELEMENT_NODE:
  *                         if _tagMatches(c_node, c_href, c_name):
  */
+      __Pyx_TraceLine(2129,0,__PYX_ERR(0, 2129, __pyx_L1_error))
       while (1) {
         __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
         if (!__pyx_t_3) break;
@@ -68395,6 +72459,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                         if _tagMatches(c_node, c_href, c_name):
  *                             tag += '[1]'
  */
+        __Pyx_TraceLine(2130,0,__PYX_ERR(0, 2130, __pyx_L1_error))
         __pyx_t_3 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
         if (__pyx_t_3) {
 
@@ -68405,6 +72470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                             tag += '[1]'
  *                             break
  */
+          __Pyx_TraceLine(2131,0,__PYX_ERR(0, 2131, __pyx_L1_error))
           __pyx_t_3 = (__pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name) != 0);
           if (__pyx_t_3) {
 
@@ -68415,6 +72481,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                             break
  *                     c_node = c_node.next
  */
+            __Pyx_TraceLine(2132,0,__PYX_ERR(0, 2132, __pyx_L1_error))
             __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_tag, __pyx_kp_s_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2132, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_9);
@@ -68427,6 +72494,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                     c_node = c_node.next
  * 
  */
+            __Pyx_TraceLine(2133,0,__PYX_ERR(0, 2133, __pyx_L1_error))
             goto __pyx_L15_break;
 
             /* "lxml/etree.pyx":2131
@@ -68454,6 +72522,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  * 
  *             path.append(tag)
  */
+        __Pyx_TraceLine(2134,0,__PYX_ERR(0, 2134, __pyx_L1_error))
         __pyx_t_5 = __pyx_v_c_node->next;
         __pyx_v_c_node = __pyx_t_5;
       }
@@ -68468,6 +72537,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             c_element = c_element.parent
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  */
+    __Pyx_TraceLine(2136,0,__PYX_ERR(0, 2136, __pyx_L1_error))
     __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_path, __pyx_v_tag); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2136, __pyx_L1_error)
 
     /* "lxml/etree.pyx":2137
@@ -68477,6 +72547,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  *                 raise ValueError, u"Element is not in this tree."
  */
+    __Pyx_TraceLine(2137,0,__PYX_ERR(0, 2137, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_c_element->parent;
     __pyx_v_c_element = __pyx_t_5;
 
@@ -68487,6 +72558,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *                 raise ValueError, u"Element is not in this tree."
  *         if not path:
  */
+    __Pyx_TraceLine(2138,0,__PYX_ERR(0, 2138, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_element == NULL) != 0);
     if (!__pyx_t_2) {
     } else {
@@ -68505,6 +72577,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         if not path:
  *             return '.'
  */
+      __Pyx_TraceLine(2139,0,__PYX_ERR(0, 2139, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
       __PYX_ERR(0, 2139, __pyx_L1_error)
 
@@ -68525,6 +72598,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             return '.'
  *         path.reverse()
  */
+  __Pyx_TraceLine(2140,0,__PYX_ERR(0, 2140, __pyx_L1_error))
   __pyx_t_3 = (PyList_GET_SIZE(__pyx_v_path) != 0);
   __pyx_t_2 = ((!__pyx_t_3) != 0);
   if (__pyx_t_2) {
@@ -68536,9 +72610,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         path.reverse()
  *         return '/'.join(path)
  */
+    __Pyx_TraceLine(2141,0,__PYX_ERR(0, 2141, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_s__4);
-    __pyx_r = __pyx_kp_s__4;
+    __Pyx_INCREF(__pyx_kp_s__11);
+    __pyx_r = __pyx_kp_s__11;
     goto __pyx_L0;
 
     /* "lxml/etree.pyx":2140
@@ -68557,6 +72632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         return '/'.join(path)
  * 
  */
+  __Pyx_TraceLine(2142,0,__PYX_ERR(0, 2142, __pyx_L1_error))
   __pyx_t_10 = PyList_Reverse(__pyx_v_path); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2142, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2143
@@ -68566,8 +72642,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  * 
  *     def getiterator(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(2143,0,__PYX_ERR(0, 2143, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_9 = __Pyx_PyString_Join(__pyx_kp_s__48, __pyx_v_path); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2143, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyString_Join(__pyx_kp_s__130, __pyx_v_path); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_r = __pyx_t_9;
   __pyx_t_9 = 0;
@@ -68592,6 +72669,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -68677,13 +72755,16 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_17getiterator(PyObject *__
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__131)
   __Pyx_RefNannySetupContext("getiterator", 0);
+  __Pyx_TraceCall("getiterator", __pyx_f[0], 2145, 0, __PYX_ERR(0, 2145, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":2162
@@ -68693,6 +72774,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *         if root is None:
  *             return ITER_EMPTY
  */
+  __Pyx_TraceLine(2162,0,__PYX_ERR(0, 2162, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -68723,6 +72805,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *             return ITER_EMPTY
  *         if tag is not None:
  */
+  __Pyx_TraceLine(2163,0,__PYX_ERR(0, 2163, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_root == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -68734,6 +72817,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *         if tag is not None:
  *             tags += (tag,)
  */
+    __Pyx_TraceLine(2164,0,__PYX_ERR(0, 2164, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
@@ -68755,6 +72839,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *             tags += (tag,)
  *         return root.getiterator(*tags)
  */
+  __Pyx_TraceLine(2165,0,__PYX_ERR(0, 2165, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_tag != Py_None);
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
@@ -68766,6 +72851,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *         return root.getiterator(*tags)
  * 
  */
+    __Pyx_TraceLine(2166,0,__PYX_ERR(0, 2166, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2166, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_tag);
@@ -68793,6 +72879,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  * 
  *     def iter(self, tag=None, *tags):
  */
+  __Pyx_TraceLine(2167,0,__PYX_ERR(0, 2167, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_getiterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -68822,6 +72909,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -68907,13 +72995,16 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_19iter(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_tags) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__132)
   __Pyx_RefNannySetupContext("iter", 0);
+  __Pyx_TraceCall("iter", __pyx_f[0], 2169, 0, __PYX_ERR(0, 2169, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tags);
 
   /* "lxml/etree.pyx":2180
@@ -68923,6 +73014,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *         if root is None:
  *             return ITER_EMPTY
  */
+  __Pyx_TraceLine(2180,0,__PYX_ERR(0, 2180, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -68953,6 +73045,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *             return ITER_EMPTY
  *         if tag is not None:
  */
+  __Pyx_TraceLine(2181,0,__PYX_ERR(0, 2181, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_root == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -68964,6 +73057,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *         if tag is not None:
  *             tags += (tag,)
  */
+    __Pyx_TraceLine(2182,0,__PYX_ERR(0, 2182, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
@@ -68985,6 +73079,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *             tags += (tag,)
  *         return root.iter(*tags)
  */
+  __Pyx_TraceLine(2183,0,__PYX_ERR(0, 2183, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_tag != Py_None);
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
@@ -68996,6 +73091,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *         return root.iter(*tags)
  * 
  */
+    __Pyx_TraceLine(2184,0,__PYX_ERR(0, 2184, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2184, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_tag);
@@ -69023,6 +73119,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  * 
  *     def find(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(2185,0,__PYX_ERR(0, 2185, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_iter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2185, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -69052,6 +73149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -69134,6 +73232,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_21find(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -69141,7 +73240,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__133)
   __Pyx_RefNannySetupContext("find", 0);
+  __Pyx_TraceCall("find", __pyx_f[0], 2187, 0, __PYX_ERR(0, 2187, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":2197
@@ -69151,6 +73252,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *         root = self.getroot()
  *         if _isString(path):
  */
+  __Pyx_TraceLine(2197,0,__PYX_ERR(0, 2197, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2197, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2198
@@ -69160,6 +73262,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *         if _isString(path):
  *             if path[:1] == "/":
  */
+  __Pyx_TraceLine(2198,0,__PYX_ERR(0, 2198, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -69190,6 +73293,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *             if path[:1] == "/":
  *                 path = "." + path
  */
+  __Pyx_TraceLine(2199,0,__PYX_ERR(0, 2199, __pyx_L1_error))
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
@@ -69200,9 +73304,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *                 path = "." + path
  *         return root.find(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__49, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2200, __pyx_L1_error)
+    __Pyx_TraceLine(2200,0,__PYX_ERR(0, 2200, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__134, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2200, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__48, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2200, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__130, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2200, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
@@ -69213,7 +73318,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *         return root.find(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__4, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2201, __pyx_L1_error)
+      __Pyx_TraceLine(2201,0,__PYX_ERR(0, 2201, __pyx_L1_error))
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__11, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2201, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
@@ -69243,6 +73349,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  * 
  *     def findtext(self, path, default=None, namespaces=None):
  */
+  __Pyx_TraceLine(2202,0,__PYX_ERR(0, 2202, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_find); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2202, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -69315,6 +73422,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -69410,6 +73518,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_23findtext(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_default, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -69417,7 +73526,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__135)
   __Pyx_RefNannySetupContext("findtext", 0);
+  __Pyx_TraceCall("findtext", __pyx_f[0], 2204, 0, __PYX_ERR(0, 2204, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":2214
@@ -69427,6 +73538,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *         root = self.getroot()
  *         if _isString(path):
  */
+  __Pyx_TraceLine(2214,0,__PYX_ERR(0, 2214, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2214, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2215
@@ -69436,6 +73548,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *         if _isString(path):
  *             if path[:1] == "/":
  */
+  __Pyx_TraceLine(2215,0,__PYX_ERR(0, 2215, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -69466,6 +73579,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *             if path[:1] == "/":
  *                 path = "." + path
  */
+  __Pyx_TraceLine(2216,0,__PYX_ERR(0, 2216, __pyx_L1_error))
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
@@ -69476,9 +73590,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *                 path = "." + path
  *         return root.findtext(path, default, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__50, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __Pyx_TraceLine(2217,0,__PYX_ERR(0, 2217, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__136, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2217, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__48, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__130, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2217, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
@@ -69489,7 +73604,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *         return root.findtext(path, default, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__4, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2218, __pyx_L1_error)
+      __Pyx_TraceLine(2218,0,__PYX_ERR(0, 2218, __pyx_L1_error))
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__11, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2218, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
@@ -69519,6 +73635,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  * 
  *     def findall(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(2219,0,__PYX_ERR(0, 2219, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_findtext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -69594,6 +73711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -69676,6 +73794,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_25findall(PyObject *__pyx_
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -69683,7 +73802,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__137)
   __Pyx_RefNannySetupContext("findall", 0);
+  __Pyx_TraceCall("findall", __pyx_f[0], 2221, 0, __PYX_ERR(0, 2221, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":2231
@@ -69693,6 +73814,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *         root = self.getroot()
  *         if _isString(path):
  */
+  __Pyx_TraceLine(2231,0,__PYX_ERR(0, 2231, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2231, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2232
@@ -69702,6 +73824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *         if _isString(path):
  *             if path[:1] == "/":
  */
+  __Pyx_TraceLine(2232,0,__PYX_ERR(0, 2232, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2232, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -69732,6 +73855,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *             if path[:1] == "/":
  *                 path = "." + path
  */
+  __Pyx_TraceLine(2233,0,__PYX_ERR(0, 2233, __pyx_L1_error))
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
@@ -69742,9 +73866,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *                 path = "." + path
  *         return root.findall(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__51, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
+    __Pyx_TraceLine(2234,0,__PYX_ERR(0, 2234, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__138, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__48, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2234, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__130, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2234, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
@@ -69755,7 +73880,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *         return root.findall(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__4, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2235, __pyx_L1_error)
+      __Pyx_TraceLine(2235,0,__PYX_ERR(0, 2235, __pyx_L1_error))
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__11, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2235, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
@@ -69785,6 +73911,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  * 
  *     def iterfind(self, path, namespaces=None):
  */
+  __Pyx_TraceLine(2236,0,__PYX_ERR(0, 2236, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_findall); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2236, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -69857,6 +73984,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -69939,6 +74067,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_27iterfind(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces) {
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -69946,7 +74075,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__139)
   __Pyx_RefNannySetupContext("iterfind", 0);
+  __Pyx_TraceCall("iterfind", __pyx_f[0], 2238, 0, __PYX_ERR(0, 2238, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "lxml/etree.pyx":2248
@@ -69956,6 +74087,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *         root = self.getroot()
  *         if _isString(path):
  */
+  __Pyx_TraceLine(2248,0,__PYX_ERR(0, 2248, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2248, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2249
@@ -69965,6 +74097,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *         if _isString(path):
  *             if path[:1] == "/":
  */
+  __Pyx_TraceLine(2249,0,__PYX_ERR(0, 2249, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2249, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -69995,6 +74128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *             if path[:1] == "/":
  *                 path = "." + path
  */
+  __Pyx_TraceLine(2250,0,__PYX_ERR(0, 2250, __pyx_L1_error))
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
@@ -70005,9 +74139,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *                 path = "." + path
  *         return root.iterfind(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__52, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2251, __pyx_L1_error)
+    __Pyx_TraceLine(2251,0,__PYX_ERR(0, 2251, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__140, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2251, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__48, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2251, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__130, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2251, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
@@ -70018,7 +74153,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *         return root.iterfind(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__4, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2252, __pyx_L1_error)
+      __Pyx_TraceLine(2252,0,__PYX_ERR(0, 2252, __pyx_L1_error))
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__11, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
@@ -70048,6 +74184,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  */
+  __Pyx_TraceLine(2253,0,__PYX_ERR(0, 2253, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_iterfind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -70120,6 +74257,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -70224,12 +74362,15 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_29xpath(PyObject *__pyx_v_
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v__path, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_smart_strings, PyObject *__pyx_v__variables) {
   struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *__pyx_v_evaluator = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__141)
   __Pyx_RefNannySetupContext("xpath", 0);
+  __Pyx_TraceCall("xpath", __pyx_f[0], 2255, 0, __PYX_ERR(0, 2255, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2274
  *         XPathEvaluator directly.
@@ -70238,6 +74379,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
  *                                            extensions=extensions,
  */
+  __Pyx_TraceLine(2274,0,__PYX_ERR(0, 2274, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2274, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2275
@@ -70247,6 +74389,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(2275,0,__PYX_ERR(0, 2275, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2275, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
@@ -70263,6 +74406,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *                                            smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)
  */
+  __Pyx_TraceLine(2276,0,__PYX_ERR(0, 2276, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 2275, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2277
@@ -70272,6 +74416,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *         return evaluator(_path, **_variables)
  * 
  */
+  __Pyx_TraceLine(2277,0,__PYX_ERR(0, 2277, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 2275, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2275
@@ -70281,6 +74426,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(2275,0,__PYX_ERR(0, 2275, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPathDocumentEvaluator), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2275, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -70295,6 +74441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  * 
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):
  */
+  __Pyx_TraceLine(2278,0,__PYX_ERR(0, 2278, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2278, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -70326,6 +74473,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_evaluator);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -70426,12 +74574,15 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_31xslt(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v__xslt, PyObject *__pyx_v_extensions, PyObject *__pyx_v_access_control, PyObject *__pyx_v__kw) {
   struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_style = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__142)
   __Pyx_RefNannySetupContext("xslt", 0);
+  __Pyx_TraceCall("xslt", __pyx_f[0], 2280, 0, __PYX_ERR(0, 2280, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2294
  *         class directly.
@@ -70440,6 +74591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  *         style = XSLT(_xslt, extensions=extensions,
  *                      access_control=access_control)
  */
+  __Pyx_TraceLine(2294,0,__PYX_ERR(0, 2294, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2294, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2295
@@ -70449,6 +74601,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  *                      access_control=access_control)
  *         return style(self, **_kw)
  */
+  __Pyx_TraceLine(2295,0,__PYX_ERR(0, 2295, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2295, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v__xslt);
@@ -70465,6 +74618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  *         return style(self, **_kw)
  * 
  */
+  __Pyx_TraceLine(2296,0,__PYX_ERR(0, 2296, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_access_control, __pyx_v_access_control) < 0) __PYX_ERR(0, 2295, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2295
@@ -70474,6 +74628,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  *                      access_control=access_control)
  *         return style(self, **_kw)
  */
+  __Pyx_TraceLine(2295,0,__PYX_ERR(0, 2295, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLT), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2295, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -70488,6 +74643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  * 
  *     def relaxng(self, relaxng):
  */
+  __Pyx_TraceLine(2297,0,__PYX_ERR(0, 2297, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2297, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -70519,6 +74675,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_style);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -70549,13 +74706,16 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_33relaxng(PyObject *__pyx_
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_relaxng) {
   struct __pyx_obj_4lxml_5etree_RelaxNG *__pyx_v_schema = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__143)
   __Pyx_RefNannySetupContext("relaxng", 0);
+  __Pyx_TraceCall("relaxng", __pyx_f[0], 2299, 0, __PYX_ERR(0, 2299, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2313
  *         class directly.
@@ -70564,6 +74724,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
  *         schema = RelaxNG(relaxng)
  *         return schema.validate(self)
  */
+  __Pyx_TraceLine(2313,0,__PYX_ERR(0, 2313, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2313, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2314
@@ -70573,6 +74734,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
  *         return schema.validate(self)
  * 
  */
+  __Pyx_TraceLine(2314,0,__PYX_ERR(0, 2314, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNG), __pyx_v_relaxng); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_t_2);
@@ -70585,6 +74747,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
  * 
  *     def xmlschema(self, xmlschema):
  */
+  __Pyx_TraceLine(2315,0,__PYX_ERR(0, 2315, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_schema), __pyx_n_s_validate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -70654,6 +74817,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_schema);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -70684,13 +74848,16 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_35xmlschema(PyObject *__py
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_xmlschema) {
   struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__144)
   __Pyx_RefNannySetupContext("xmlschema", 0);
+  __Pyx_TraceCall("xmlschema", __pyx_f[0], 2317, 0, __PYX_ERR(0, 2317, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2331
  *         class directly.
@@ -70699,6 +74866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
  *         schema = XMLSchema(xmlschema)
  *         return schema.validate(self)
  */
+  __Pyx_TraceLine(2331,0,__PYX_ERR(0, 2331, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2331, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2332
@@ -70708,6 +74876,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
  *         return schema.validate(self)
  * 
  */
+  __Pyx_TraceLine(2332,0,__PYX_ERR(0, 2332, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_XMLSchema), __pyx_v_xmlschema); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2332, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_t_2);
@@ -70720,6 +74889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
  * 
  *     def xinclude(self):
  */
+  __Pyx_TraceLine(2333,0,__PYX_ERR(0, 2333, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_schema), __pyx_n_s_validate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -70789,6 +74959,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_schema);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -70818,13 +74989,16 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_37xinclude(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElementTree *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__145)
   __Pyx_RefNannySetupContext("xinclude", 0);
+  __Pyx_TraceCall("xinclude", __pyx_f[0], 2335, 0, __PYX_ERR(0, 2335, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2347
  *         due to restrictions of libxml2 <= 2.6.29.
@@ -70833,6 +75007,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
  *         XInclude()(self._context_node)
  * 
  */
+  __Pyx_TraceLine(2347,0,__PYX_ERR(0, 2347, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2347, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2348
@@ -70842,6 +75017,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,
  */
+  __Pyx_TraceLine(2348,0,__PYX_ERR(0, 2348, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_XInclude)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2348, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -70909,6 +75085,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71010,6 +75187,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_39write_c14n(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlElementTree *__pyx_v_self, PyObject *__pyx_v_file, PyObject *__pyx_v_exclusive, PyObject *__pyx_v_with_comments, PyObject *__pyx_v_compression, PyObject *__pyx_v_inclusive_ns_prefixes) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -71017,7 +75195,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
   int __pyx_t_4;
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__146)
   __Pyx_RefNannySetupContext("write_c14n", 0);
+  __Pyx_TraceCall("write_c14n", __pyx_f[0], 2350, 0, __PYX_ERR(0, 2350, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_compression);
 
   /* "lxml/etree.pyx":2369
@@ -71027,6 +75207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  */
+  __Pyx_TraceLine(2369,0,__PYX_ERR(0, 2369, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2369, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2370
@@ -71036,6 +75217,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  *         if compression is None or compression < 0:
  *             compression = 0
  */
+  __Pyx_TraceLine(2370,0,__PYX_ERR(0, 2370, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_2)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2370, __pyx_L1_error)
@@ -71048,6 +75230,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  *             compression = 0
  * 
  */
+  __Pyx_TraceLine(2371,0,__PYX_ERR(0, 2371, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_compression == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (!__pyx_t_5) {
@@ -71069,6 +75252,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  * 
  *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  */
+    __Pyx_TraceLine(2372,0,__PYX_ERR(0, 2372, __pyx_L1_error))
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_compression, __pyx_int_0);
 
@@ -71088,6 +75272,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  *                         compression, inclusive_ns_prefixes)
  * 
  */
+  __Pyx_TraceLine(2374,0,__PYX_ERR(0, 2374, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_exclusive); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2374, __pyx_L1_error)
@@ -71100,6 +75285,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  * 
  * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):
  */
+  __Pyx_TraceLine(2375,0,__PYX_ERR(0, 2375, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2375, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2374
@@ -71109,6 +75295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  *                         compression, inclusive_ns_prefixes)
  * 
  */
+  __Pyx_TraceLine(2374,0,__PYX_ERR(0, 2374, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__tofilelikeC14N(__pyx_v_file, ((struct LxmlElement *)__pyx_t_2), __pyx_t_3, __pyx_t_5, __pyx_t_1, __pyx_v_inclusive_ns_prefixes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2374, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -71133,6 +75320,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_compression);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71147,9 +75335,11 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
 
 static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct LxmlDocument *__pyx_v_doc, struct LxmlElement *__pyx_v_context_node) {
   struct LxmlElementTree *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_elementTreeFactory", 0);
+  __Pyx_TraceCall("_elementTreeFactory", __pyx_f[0], 2377, 0, __PYX_ERR(0, 2377, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2378
  * 
@@ -71158,6 +75348,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
  * 
  * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,
  */
+  __Pyx_TraceLine(2378,0,__PYX_ERR(0, 2378, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newElementTree(__pyx_v_doc, __pyx_v_context_node, ((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2378, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -71180,6 +75371,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71195,6 +75387,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
 static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlDocument *__pyx_v_doc, struct LxmlElement *__pyx_v_context_node, PyObject *__pyx_v_baseclass) {
   struct LxmlElementTree *__pyx_v_result = 0;
   struct LxmlElementTree *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -71204,6 +75397,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   int __pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_newElementTree", 0);
+  __Pyx_TraceCall("_newElementTree", __pyx_f[0], 2380, 0, __PYX_ERR(0, 2380, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_context_node);
 
   /* "lxml/etree.pyx":2383
@@ -71213,6 +75407,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     if context_node is None and doc is not None:
  *         context_node = doc.getroot()
  */
+  __Pyx_TraceLine(2383,0,__PYX_ERR(0, 2383, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_baseclass);
   __pyx_t_2 = __pyx_v_baseclass; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -71243,6 +75438,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *         context_node = doc.getroot()
  *     if context_node is None:
  */
+  __Pyx_TraceLine(2384,0,__PYX_ERR(0, 2384, __pyx_L1_error))
   __pyx_t_5 = (((PyObject *)__pyx_v_context_node) == Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -71263,6 +75459,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     if context_node is None:
  *         _assertValidDoc(doc)
  */
+    __Pyx_TraceLine(2385,0,__PYX_ERR(0, 2385, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2385, __pyx_L1_error)
@@ -71285,6 +75482,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *         _assertValidDoc(doc)
  *         result._doc = doc
  */
+  __Pyx_TraceLine(2386,0,__PYX_ERR(0, 2386, __pyx_L1_error))
   __pyx_t_4 = (((PyObject *)__pyx_v_context_node) == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -71296,6 +75494,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *         result._doc = doc
  *     else:
  */
+    __Pyx_TraceLine(2387,0,__PYX_ERR(0, 2387, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2387, __pyx_L1_error)
 
     /* "lxml/etree.pyx":2388
@@ -71305,6 +75504,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     else:
  *         _assertValidNode(context_node)
  */
+    __Pyx_TraceLine(2388,0,__PYX_ERR(0, 2388, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_doc));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
     __Pyx_GOTREF(__pyx_v_result->_doc);
@@ -71328,6 +75528,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     result._context_node = context_node
  *     return result
  */
+  __Pyx_TraceLine(2390,0,__PYX_ERR(0, 2390, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_context_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2390, __pyx_L1_error)
   }
@@ -71340,6 +75541,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     return result
  * 
  */
+  __Pyx_TraceLine(2391,0,__PYX_ERR(0, 2391, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_context_node));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_context_node));
   __Pyx_GOTREF(__pyx_v_result->_context_node);
@@ -71353,6 +75555,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  * 
  * 
  */
+  __Pyx_TraceLine(2392,0,__PYX_ERR(0, 2392, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_result));
   __pyx_r = __pyx_v_result;
@@ -71377,6 +75580,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   __Pyx_XDECREF((PyObject *)__pyx_v_context_node);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71446,9 +75650,11 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_1__cinit__(PyObject *__pyx_v_self, PyO
 
 static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, struct LxmlElement *__pyx_v_element) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2401, 0, __PYX_ERR(0, 2401, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2402
  *     cdef _Element _element
@@ -71457,6 +75663,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
  *         self._element = element
  * 
  */
+  __Pyx_TraceLine(2402,0,__PYX_ERR(0, 2402, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2402, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2403
@@ -71466,6 +75673,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
  * 
  *     # MANIPULATORS
  */
+  __Pyx_TraceLine(2403,0,__PYX_ERR(0, 2403, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
   __Pyx_GOTREF(__pyx_v_self->_element);
@@ -71487,6 +75695,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
   __Pyx_AddTraceback("lxml.etree._Attrib.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71514,10 +75723,12 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_3__setitem__(PyObject *__pyx_v_self, P
 
 static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[0], 2406, 0, __PYX_ERR(0, 2406, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2407
  *     # MANIPULATORS
@@ -71526,6 +75737,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
  *         _setAttributeValue(self._element, key, value)
  * 
  */
+  __Pyx_TraceLine(2407,0,__PYX_ERR(0, 2407, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2407, __pyx_L1_error)
@@ -71538,6 +75750,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
  * 
  *     def __delitem__(self, key):
  */
+  __Pyx_TraceLine(2408,0,__PYX_ERR(0, 2408, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__setAttributeValue(((struct LxmlElement *)__pyx_t_1), __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2408, __pyx_L1_error)
@@ -71559,6 +75772,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
   __Pyx_AddTraceback("lxml.etree._Attrib.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71586,10 +75800,12 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_5__delitem__(PyObject *__pyx_v_self, P
 
 static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__delitem__", 0);
+  __Pyx_TraceCall("__delitem__", __pyx_f[0], 2410, 0, __PYX_ERR(0, 2410, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2411
  * 
@@ -71598,6 +75814,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
  *         _delAttribute(self._element, key)
  * 
  */
+  __Pyx_TraceLine(2411,0,__PYX_ERR(0, 2411, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2411, __pyx_L1_error)
@@ -71610,6 +75827,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
  * 
  *     def update(self, sequence_or_dict):
  */
+  __Pyx_TraceLine(2412,0,__PYX_ERR(0, 2412, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__delAttribute(((struct LxmlElement *)__pyx_t_1), __pyx_v_key); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2412, __pyx_L1_error)
@@ -71631,6 +75849,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
   __Pyx_AddTraceback("lxml.etree._Attrib.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71661,6 +75880,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   PyObject *__pyx_v_key = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -71674,7 +75894,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   PyObject *(*__pyx_t_12)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__147)
   __Pyx_RefNannySetupContext("update", 0);
+  __Pyx_TraceCall("update", __pyx_f[0], 2414, 0, __PYX_ERR(0, 2414, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_sequence_or_dict);
 
   /* "lxml/etree.pyx":2415
@@ -71684,6 +75906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  *             sequence_or_dict = sequence_or_dict.items()
  */
+  __Pyx_TraceLine(2415,0,__PYX_ERR(0, 2415, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2415, __pyx_L1_error)
@@ -71696,6 +75919,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  *             sequence_or_dict = sequence_or_dict.items()
  *         for key, value in sequence_or_dict:
  */
+  __Pyx_TraceLine(2416,0,__PYX_ERR(0, 2416, __pyx_L1_error))
   __pyx_t_4 = PyDict_Check(__pyx_v_sequence_or_dict); 
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (!__pyx_t_5) {
@@ -71717,6 +75941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  *         for key, value in sequence_or_dict:
  *             _setAttributeValue(self._element, key, value)
  */
+    __Pyx_TraceLine(2417,0,__PYX_ERR(0, 2417, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sequence_or_dict, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2417, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = NULL;
@@ -71756,6 +75981,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  *             _setAttributeValue(self._element, key, value)
  * 
  */
+  __Pyx_TraceLine(2418,0,__PYX_ERR(0, 2418, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_sequence_or_dict)) || PyTuple_CheckExact(__pyx_v_sequence_or_dict)) {
     __pyx_t_1 = __pyx_v_sequence_or_dict; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
     __pyx_t_9 = NULL;
@@ -71853,6 +76079,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  * 
  *     def pop(self, key, *default):
  */
+    __Pyx_TraceLine(2419,0,__PYX_ERR(0, 2419, __pyx_L1_error))
     __pyx_t_6 = ((PyObject *)__pyx_v_self->_element);
     __Pyx_INCREF(__pyx_t_6);
     __pyx_t_2 = __pyx_f_4lxml_5etree__setAttributeValue(((struct LxmlElement *)__pyx_t_6), __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2419, __pyx_L1_error)
@@ -71865,6 +76092,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  *             _setAttributeValue(self._element, key, value)
  * 
  */
+    __Pyx_TraceLine(2418,0,__PYX_ERR(0, 2418, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -71892,6 +76120,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_sequence_or_dict);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -71972,6 +76201,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_9pop(PyObject *__pyx_v_self, PyO
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   int __pyx_t_2;
@@ -71979,7 +76209,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__148)
   __Pyx_RefNannySetupContext("pop", 0);
+  __Pyx_TraceCall("pop", __pyx_f[0], 2421, 0, __PYX_ERR(0, 2421, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2422
  * 
@@ -71988,6 +76220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  *         _assertValidNode(self._element)
  */
+  __Pyx_TraceLine(2422,0,__PYX_ERR(0, 2422, __pyx_L1_error))
   __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2422, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_1 > 1) != 0);
   if (unlikely(__pyx_t_2)) {
@@ -71999,6 +76232,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  */
+    __Pyx_TraceLine(2423,0,__PYX_ERR(0, 2423, __pyx_L1_error))
     __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2423, __pyx_L1_error)
     __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t((__pyx_t_1 + 1), 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -72025,6 +76259,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:
  */
+  __Pyx_TraceLine(2424,0,__PYX_ERR(0, 2424, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_5 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_4)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2424, __pyx_L1_error)
@@ -72037,6 +76272,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         if result is None:
  *             if not default:
  */
+  __Pyx_TraceLine(2425,0,__PYX_ERR(0, 2425, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_3 = __pyx_f_4lxml_5etree__getAttributeValue(((struct LxmlElement *)__pyx_t_4), __pyx_v_key, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2425, __pyx_L1_error)
@@ -72052,6 +76288,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *             if not default:
  *                 raise KeyError, key
  */
+  __Pyx_TraceLine(2426,0,__PYX_ERR(0, 2426, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_result == Py_None);
   __pyx_t_6 = (__pyx_t_2 != 0);
   if (__pyx_t_6) {
@@ -72063,6 +76300,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *                 raise KeyError, key
  *             result = default[0]
  */
+    __Pyx_TraceLine(2427,0,__PYX_ERR(0, 2427, __pyx_L1_error))
     __pyx_t_6 = (PyTuple_GET_SIZE(__pyx_v_default) != 0);
     __pyx_t_2 = ((!__pyx_t_6) != 0);
     if (unlikely(__pyx_t_2)) {
@@ -72074,6 +76312,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *             result = default[0]
  *         else:
  */
+      __Pyx_TraceLine(2428,0,__PYX_ERR(0, 2428, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
       __PYX_ERR(0, 2428, __pyx_L1_error)
 
@@ -72093,6 +76332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         else:
  *             _delAttribute(self._element, key)
  */
+    __Pyx_TraceLine(2429,0,__PYX_ERR(0, 2429, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_default, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2429, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
@@ -72115,6 +76355,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         return result
  * 
  */
+  __Pyx_TraceLine(2431,0,__PYX_ERR(0, 2431, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_element);
     __Pyx_INCREF(__pyx_t_3);
@@ -72130,6 +76371,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  * 
  *     def clear(self):
  */
+  __Pyx_TraceLine(2432,0,__PYX_ERR(0, 2432, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -72152,6 +76394,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72181,12 +76424,15 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_11clear(PyObject *__pyx_v_self,
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
   int __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__149)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[0], 2434, 0, __PYX_ERR(0, 2434, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2435
  * 
@@ -72195,6 +76441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
  *         cdef xmlNode* c_node = self._element._c_node
  *         while c_node.properties is not NULL:
  */
+  __Pyx_TraceLine(2435,0,__PYX_ERR(0, 2435, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2435, __pyx_L1_error)
@@ -72207,6 +76454,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
  *         while c_node.properties is not NULL:
  *             tree.xmlRemoveProp(c_node.properties)
  */
+  __Pyx_TraceLine(2436,0,__PYX_ERR(0, 2436, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_element->_c_node;
   __pyx_v_c_node = __pyx_t_3;
 
@@ -72217,6 +76465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
  *             tree.xmlRemoveProp(c_node.properties)
  * 
  */
+  __Pyx_TraceLine(2437,0,__PYX_ERR(0, 2437, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_node->properties != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -72228,6 +76477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
  * 
  *     # ACCESSORS
  */
+    __Pyx_TraceLine(2438,0,__PYX_ERR(0, 2438, __pyx_L1_error))
     (void)(xmlRemoveProp(__pyx_v_c_node->properties));
   }
 
@@ -72248,6 +76498,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72275,11 +76526,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_13__repr__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 2441, 0, __PYX_ERR(0, 2441, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2442
  *     # ACCESSORS
@@ -72288,6 +76541,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
  * 
  */
+  __Pyx_TraceLine(2442,0,__PYX_ERR(0, 2442, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2442, __pyx_L1_error)
@@ -72300,6 +76554,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
  * 
  *     def __copy__(self):
  */
+  __Pyx_TraceLine(2443,0,__PYX_ERR(0, 2443, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -72329,6 +76584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72357,11 +76613,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_15__copy__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__150)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__", __pyx_f[0], 2445, 0, __PYX_ERR(0, 2445, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2446
  * 
@@ -72370,6 +76629,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  */
+  __Pyx_TraceLine(2446,0,__PYX_ERR(0, 2446, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2446, __pyx_L1_error)
@@ -72382,6 +76642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
  * 
  *     def __deepcopy__(self, memo):
  */
+  __Pyx_TraceLine(2447,0,__PYX_ERR(0, 2447, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -72408,6 +76669,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72436,11 +76698,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_17__deepcopy__(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_memo) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__151)
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
+  __Pyx_TraceCall("__deepcopy__", __pyx_f[0], 2449, 0, __PYX_ERR(0, 2449, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2450
  * 
@@ -72449,6 +76714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  */
+  __Pyx_TraceLine(2450,0,__PYX_ERR(0, 2450, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2450, __pyx_L1_error)
@@ -72461,6 +76727,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
  * 
  *     def __getitem__(self, key):
  */
+  __Pyx_TraceLine(2451,0,__PYX_ERR(0, 2451, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2451, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -72487,6 +76754,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72515,6 +76783,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_19__getitem__(PyObject *__pyx_v_
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key) {
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -72522,6 +76791,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[0], 2453, 0, __PYX_ERR(0, 2453, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2454
  * 
@@ -72530,6 +76800,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:
  */
+  __Pyx_TraceLine(2454,0,__PYX_ERR(0, 2454, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2454, __pyx_L1_error)
@@ -72542,6 +76813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  *         if result is None:
  *             raise KeyError, key
  */
+  __Pyx_TraceLine(2455,0,__PYX_ERR(0, 2455, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_3 = __pyx_f_4lxml_5etree__getAttributeValue(((struct LxmlElement *)__pyx_t_1), __pyx_v_key, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2455, __pyx_L1_error)
@@ -72557,6 +76829,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  *             raise KeyError, key
  *         return result
  */
+  __Pyx_TraceLine(2456,0,__PYX_ERR(0, 2456, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_result == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (unlikely(__pyx_t_5)) {
@@ -72568,6 +76841,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  *         return result
  * 
  */
+    __Pyx_TraceLine(2457,0,__PYX_ERR(0, 2457, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
     __PYX_ERR(0, 2457, __pyx_L1_error)
 
@@ -72587,6 +76861,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  * 
  *     def __bool__(self):
  */
+  __Pyx_TraceLine(2458,0,__PYX_ERR(0, 2458, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -72609,6 +76884,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72637,12 +76913,14 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_21__bool__(PyObject *__pyx_v_self) {
 static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   xmlAttr *__pyx_v_c_attr;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   xmlAttr *__pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__bool__", 0);
+  __Pyx_TraceCall("__bool__", __pyx_f[0], 2460, 0, __PYX_ERR(0, 2460, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2461
  * 
@@ -72651,6 +76929,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         while c_attr is not NULL:
  */
+  __Pyx_TraceLine(2461,0,__PYX_ERR(0, 2461, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2461, __pyx_L1_error)
@@ -72663,6 +76942,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  */
+  __Pyx_TraceLine(2462,0,__PYX_ERR(0, 2462, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_element->_c_node->properties;
   __pyx_v_c_attr = __pyx_t_3;
 
@@ -72673,6 +76953,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 return 1
  */
+  __Pyx_TraceLine(2463,0,__PYX_ERR(0, 2463, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -72684,6 +76965,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *                 return 1
  *             c_attr = c_attr.next
  */
+    __Pyx_TraceLine(2464,0,__PYX_ERR(0, 2464, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_4) {
 
@@ -72694,6 +76976,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *             c_attr = c_attr.next
  *         return 0
  */
+      __Pyx_TraceLine(2465,0,__PYX_ERR(0, 2465, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -72713,6 +76996,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  *         return 0
  * 
  */
+    __Pyx_TraceLine(2466,0,__PYX_ERR(0, 2466, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_3;
   }
@@ -72724,6 +77008,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(2467,0,__PYX_ERR(0, 2467, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -72741,6 +77026,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
   __Pyx_AddTraceback("lxml.etree._Attrib.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72770,12 +77056,14 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   xmlAttr *__pyx_v_c_attr;
   Py_ssize_t __pyx_v_c;
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   xmlAttr *__pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[0], 2469, 0, __PYX_ERR(0, 2469, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2470
  * 
@@ -72784,6 +77072,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         cdef Py_ssize_t c = 0
  */
+  __Pyx_TraceLine(2470,0,__PYX_ERR(0, 2470, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2470, __pyx_L1_error)
@@ -72796,6 +77085,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *         cdef Py_ssize_t c = 0
  *         while c_attr is not NULL:
  */
+  __Pyx_TraceLine(2471,0,__PYX_ERR(0, 2471, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_element->_c_node->properties;
   __pyx_v_c_attr = __pyx_t_3;
 
@@ -72806,6 +77096,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  */
+  __Pyx_TraceLine(2472,0,__PYX_ERR(0, 2472, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "lxml/etree.pyx":2473
@@ -72815,6 +77106,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 c += 1
  */
+  __Pyx_TraceLine(2473,0,__PYX_ERR(0, 2473, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -72826,6 +77118,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *                 c += 1
  *             c_attr = c_attr.next
  */
+    __Pyx_TraceLine(2474,0,__PYX_ERR(0, 2474, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_4) {
 
@@ -72836,6 +77129,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *             c_attr = c_attr.next
  *         return c
  */
+      __Pyx_TraceLine(2475,0,__PYX_ERR(0, 2475, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "lxml/etree.pyx":2474
@@ -72854,6 +77148,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  *         return c
  * 
  */
+    __Pyx_TraceLine(2476,0,__PYX_ERR(0, 2476, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_3;
   }
@@ -72865,6 +77160,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  * 
  *     def get(self, key, default=None):
  */
+  __Pyx_TraceLine(2477,0,__PYX_ERR(0, 2477, __pyx_L1_error))
   __pyx_r = __pyx_v_c;
   goto __pyx_L0;
 
@@ -72882,6 +77178,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   __Pyx_AddTraceback("lxml.etree._Attrib.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -72962,11 +77259,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_25get(PyObject *__pyx_v_self, Py
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__152)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[0], 2479, 0, __PYX_ERR(0, 2479, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2480
  * 
@@ -72975,6 +77275,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
  *         return _getAttributeValue(self._element, key, default)
  * 
  */
+  __Pyx_TraceLine(2480,0,__PYX_ERR(0, 2480, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2480, __pyx_L1_error)
@@ -72987,6 +77288,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
  * 
  *     def keys(self):
  */
+  __Pyx_TraceLine(2481,0,__PYX_ERR(0, 2481, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
@@ -73013,6 +77315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73041,10 +77344,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_27keys(PyObject *__pyx_v_self, C
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__153)
   __Pyx_RefNannySetupContext("keys", 0);
+  __Pyx_TraceCall("keys", __pyx_f[0], 2483, 0, __PYX_ERR(0, 2483, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2484
  * 
@@ -73053,6 +77359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
  *         return _collectAttributes(self._element._c_node, 1)
  * 
  */
+  __Pyx_TraceLine(2484,0,__PYX_ERR(0, 2484, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2484, __pyx_L1_error)
@@ -73065,6 +77372,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(2485,0,__PYX_ERR(0, 2485, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73087,6 +77395,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73114,11 +77423,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_29__iter__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2487, 0, __PYX_ERR(0, 2487, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2488
  * 
@@ -73127,6 +77438,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  */
+  __Pyx_TraceLine(2488,0,__PYX_ERR(0, 2488, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2488, __pyx_L1_error)
@@ -73139,6 +77451,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
  * 
  *     def iterkeys(self):
  */
+  __Pyx_TraceLine(2489,0,__PYX_ERR(0, 2489, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2489, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73165,6 +77478,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73193,11 +77507,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_31iterkeys(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__154)
   __Pyx_RefNannySetupContext("iterkeys", 0);
+  __Pyx_TraceCall("iterkeys", __pyx_f[0], 2491, 0, __PYX_ERR(0, 2491, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2492
  * 
@@ -73206,6 +77523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  */
+  __Pyx_TraceLine(2492,0,__PYX_ERR(0, 2492, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2492, __pyx_L1_error)
@@ -73218,6 +77536,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
  * 
  *     def values(self):
  */
+  __Pyx_TraceLine(2493,0,__PYX_ERR(0, 2493, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2493, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73244,6 +77563,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73272,10 +77592,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_33values(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__155)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[0], 2495, 0, __PYX_ERR(0, 2495, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2496
  * 
@@ -73284,6 +77607,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
  *         return _collectAttributes(self._element._c_node, 2)
  * 
  */
+  __Pyx_TraceLine(2496,0,__PYX_ERR(0, 2496, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2496, __pyx_L1_error)
@@ -73296,6 +77620,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
  * 
  *     def itervalues(self):
  */
+  __Pyx_TraceLine(2497,0,__PYX_ERR(0, 2497, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73318,6 +77643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73346,11 +77672,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_35itervalues(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__156)
   __Pyx_RefNannySetupContext("itervalues", 0);
+  __Pyx_TraceCall("itervalues", __pyx_f[0], 2499, 0, __PYX_ERR(0, 2499, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2500
  * 
@@ -73359,6 +77688,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
  *         return iter(_collectAttributes(self._element._c_node, 2))
  * 
  */
+  __Pyx_TraceLine(2500,0,__PYX_ERR(0, 2500, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2500, __pyx_L1_error)
@@ -73371,6 +77701,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(2501,0,__PYX_ERR(0, 2501, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73397,6 +77728,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73425,10 +77757,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_37items(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__157)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[0], 2503, 0, __PYX_ERR(0, 2503, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2504
  * 
@@ -73437,6 +77772,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
  *         return _collectAttributes(self._element._c_node, 3)
  * 
  */
+  __Pyx_TraceLine(2504,0,__PYX_ERR(0, 2504, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2504, __pyx_L1_error)
@@ -73449,6 +77785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
  * 
  *     def iteritems(self):
  */
+  __Pyx_TraceLine(2505,0,__PYX_ERR(0, 2505, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73471,6 +77808,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73499,11 +77837,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_39iteritems(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__158)
   __Pyx_RefNannySetupContext("iteritems", 0);
+  __Pyx_TraceCall("iteritems", __pyx_f[0], 2507, 0, __PYX_ERR(0, 2507, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2508
  * 
@@ -73512,6 +77853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
  *         return iter(_collectAttributes(self._element._c_node, 3))
  * 
  */
+  __Pyx_TraceLine(2508,0,__PYX_ERR(0, 2508, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2508, __pyx_L1_error)
@@ -73524,6 +77866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
  * 
  *     def has_key(self, key):
  */
+  __Pyx_TraceLine(2509,0,__PYX_ERR(0, 2509, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -73550,6 +77893,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73578,11 +77922,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_41has_key(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_key) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__159)
   __Pyx_RefNannySetupContext("has_key", 0);
+  __Pyx_TraceCall("has_key", __pyx_f[0], 2511, 0, __PYX_ERR(0, 2511, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2512
  * 
@@ -73591,6 +77938,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
  *         return key in self
  * 
  */
+  __Pyx_TraceLine(2512,0,__PYX_ERR(0, 2512, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2512, __pyx_L1_error)
@@ -73603,6 +77951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
  * 
  *     def __contains__(self, key):
  */
+  __Pyx_TraceLine(2513,0,__PYX_ERR(0, 2513, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, ((PyObject *)__pyx_v_self), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2513, __pyx_L1_error)
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2513, __pyx_L1_error)
@@ -73626,6 +77975,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73657,6 +78007,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   PyObject *__pyx_v_tag = NULL;
   const xmlChar *__pyx_v_c_href;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -73666,6 +78017,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   const xmlChar *__pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__contains__", 0);
+  __Pyx_TraceCall("__contains__", __pyx_f[0], 2515, 0, __PYX_ERR(0, 2515, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2516
  * 
@@ -73674,6 +78026,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  *         cdef xmlNode* c_node
  *         ns, tag = _getNsTag(key)
  */
+  __Pyx_TraceLine(2516,0,__PYX_ERR(0, 2516, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2516, __pyx_L1_error)
@@ -73686,6 +78039,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  *         c_node = self._element._c_node
  *         c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)
  */
+  __Pyx_TraceLine(2518,0,__PYX_ERR(0, 2518, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -73723,6 +78077,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  *         c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)
  *         return 1 if tree.xmlHasNsProp(c_node, _xcstr(tag), c_href) else 0
  */
+  __Pyx_TraceLine(2519,0,__PYX_ERR(0, 2519, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_element->_c_node;
   __pyx_v_c_node = __pyx_t_5;
 
@@ -73733,6 +78088,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  *         return 1 if tree.xmlHasNsProp(c_node, _xcstr(tag), c_href) else 0
  * 
  */
+  __Pyx_TraceLine(2520,0,__PYX_ERR(0, 2520, __pyx_L1_error))
   __pyx_t_7 = (__pyx_v_ns == Py_None);
   if ((__pyx_t_7 != 0)) {
     __pyx_t_6 = ((const xmlChar *)NULL);
@@ -73748,6 +78104,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  * 
  *     def __richcmp__(self, other, int op):
  */
+  __Pyx_TraceLine(2521,0,__PYX_ERR(0, 2521, __pyx_L1_error))
   if ((xmlHasNsProp(__pyx_v_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag), __pyx_v_c_href) != 0)) {
     __pyx_t_2 = 1;
   } else {
@@ -73774,6 +78131,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -73802,6 +78160,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_45__richcmp__(PyObject *__pyx_v_
 static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4lxml_5etree__Attrib *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_v_one = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -73813,6 +78172,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
   int __pyx_t_8;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 2523, 0, __PYX_ERR(0, 2523, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_other);
 
   /* "lxml/etree.pyx":2524
@@ -73822,6 +78182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *             one = dict(self.items())
  *             if not isinstance(other, dict):
  */
+  __Pyx_TraceLine(2524,0,__PYX_ERR(0, 2524, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -73838,6 +78199,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *             if not isinstance(other, dict):
  *                 other = dict(other)
  */
+      __Pyx_TraceLine(2525,0,__PYX_ERR(0, 2525, __pyx_L3_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2525, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
@@ -73871,6 +78233,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *                 other = dict(other)
  *         except (TypeError, ValueError):
  */
+      __Pyx_TraceLine(2526,0,__PYX_ERR(0, 2526, __pyx_L3_error))
       __pyx_t_7 = PyDict_Check(__pyx_v_other); 
       __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
       if (__pyx_t_8) {
@@ -73882,6 +78245,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *         except (TypeError, ValueError):
  *             return NotImplemented
  */
+        __Pyx_TraceLine(2527,0,__PYX_ERR(0, 2527, __pyx_L3_error))
         __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_other); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2527, __pyx_L3_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_5);
@@ -73920,6 +78284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *             return NotImplemented
  *         return python.PyObject_RichCompare(one, other, op)
  */
+    __Pyx_TraceLine(2528,0,__PYX_ERR(0, 2528, __pyx_L5_except_error))
     __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
     if (__pyx_t_9) {
       __Pyx_AddTraceback("lxml.etree._Attrib.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -73935,6 +78300,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  *         return python.PyObject_RichCompare(one, other, op)
  * 
  */
+      __Pyx_TraceLine(2529,0,__PYX_ERR(0, 2529, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_builtin_NotImplemented);
       __pyx_r = __pyx_builtin_NotImplemented;
@@ -73974,6 +78340,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  * 
  * 
  */
+  __Pyx_TraceLine(2530,0,__PYX_ERR(0, 2530, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_6 = PyObject_RichCompare(__pyx_v_one, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2530, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
@@ -74000,6 +78367,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
   __Pyx_XDECREF(__pyx_v_one);
   __Pyx_XDECREF(__pyx_v_other);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74027,8 +78395,10 @@ static PyObject *__pyx_pw_4lxml_5etree_15_AttribIterator_1__iter__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_obj_4lxml_5etree__AttribIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2542, 0, __PYX_ERR(0, 2542, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2543
  *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
@@ -74037,6 +78407,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_o
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(2543,0,__PYX_ERR(0, 2543, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -74051,8 +78422,12 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_o
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._AttribIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74081,6 +78456,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15_AttribIterator_3__next__(PyObject *__p
 static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_obj_4lxml_5etree__AttribIterator *__pyx_v_self) {
   xmlAttr *__pyx_v_c_attr;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -74089,6 +78465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[0], 2545, 0, __PYX_ERR(0, 2545, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2547
  *     def __next__(self):
@@ -74097,6 +78474,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             raise StopIteration
  *         c_attr = self._c_attr
  */
+  __Pyx_TraceLine(2547,0,__PYX_ERR(0, 2547, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_node) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -74108,6 +78486,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         c_attr = self._c_attr
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
  */
+    __Pyx_TraceLine(2548,0,__PYX_ERR(0, 2548, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
     __PYX_ERR(0, 2548, __pyx_L1_error)
 
@@ -74127,6 +78506,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
  *             c_attr = c_attr.next
  */
+  __Pyx_TraceLine(2549,0,__PYX_ERR(0, 2549, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_c_attr;
   __pyx_v_c_attr = __pyx_t_3;
 
@@ -74137,6 +78517,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             c_attr = c_attr.next
  *         if c_attr is NULL:
  */
+  __Pyx_TraceLine(2550,0,__PYX_ERR(0, 2550, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_attr != NULL) != 0);
     if (__pyx_t_1) {
@@ -74156,6 +78537,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         if c_attr is NULL:
  *             self._node = None
  */
+    __Pyx_TraceLine(2551,0,__PYX_ERR(0, 2551, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_3;
   }
@@ -74167,6 +78549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             self._node = None
  *             raise StopIteration
  */
+  __Pyx_TraceLine(2552,0,__PYX_ERR(0, 2552, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_attr == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -74177,6 +78560,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             raise StopIteration
  * 
  */
+    __Pyx_TraceLine(2553,0,__PYX_ERR(0, 2553, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_node);
@@ -74190,6 +78574,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  * 
  *         self._c_attr = c_attr.next
  */
+    __Pyx_TraceLine(2554,0,__PYX_ERR(0, 2554, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
     __PYX_ERR(0, 2554, __pyx_L1_error)
 
@@ -74209,6 +78594,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         if self._keysvalues == 1:
  *             return _namespacedName(<xmlNode*>c_attr)
  */
+  __Pyx_TraceLine(2556,0,__PYX_ERR(0, 2556, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_attr->next;
   __pyx_v_self->_c_attr = __pyx_t_3;
 
@@ -74219,6 +78605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             return _namespacedName(<xmlNode*>c_attr)
  *         elif self._keysvalues == 2:
  */
+  __Pyx_TraceLine(2557,0,__PYX_ERR(0, 2557, __pyx_L1_error))
   switch (__pyx_v_self->_keysvalues) {
     case 1:
 
@@ -74229,6 +78616,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         elif self._keysvalues == 2:
  *             return _attributeValue(self._node._c_node, c_attr)
  */
+    __Pyx_TraceLine(2558,0,__PYX_ERR(0, 2558, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2558, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -74252,6 +78640,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             return _attributeValue(self._node._c_node, c_attr)
  *         else:
  */
+    __Pyx_TraceLine(2559,0,__PYX_ERR(0, 2559, __pyx_L1_error))
     case 2:
 
     /* "lxml/etree.pyx":2560
@@ -74261,6 +78650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         else:
  *             return (_namespacedName(<xmlNode*>c_attr),
  */
+    __Pyx_TraceLine(2560,0,__PYX_ERR(0, 2560, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_self->_node->_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2560, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -74285,6 +78675,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *                     _attributeValue(self._node._c_node, c_attr))
  * 
  */
+    __Pyx_TraceLine(2562,0,__PYX_ERR(0, 2562, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2562, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -74296,6 +78687,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  * 
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
  */
+    __Pyx_TraceLine(2563,0,__PYX_ERR(0, 2563, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_self->_node->_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2563, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
 
@@ -74306,6 +78698,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *                     _attributeValue(self._node._c_node, c_attr))
  * 
  */
+    __Pyx_TraceLine(2562,0,__PYX_ERR(0, 2562, __pyx_L1_error))
     __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2562, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_4);
@@ -74337,6 +78730,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74352,11 +78746,13 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
 static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlElement *__pyx_v_element, int __pyx_v_keysvalues) {
   struct __pyx_obj_4lxml_5etree__AttribIterator *__pyx_v_attribs = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   xmlAttr *__pyx_t_3;
   __Pyx_RefNannySetupContext("_attributeIteratorFactory", 0);
+  __Pyx_TraceCall("_attributeIteratorFactory", __pyx_f[0], 2565, 0, __PYX_ERR(0, 2565, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2567
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
@@ -74365,6 +78761,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *         return ITER_EMPTY
  *     attribs = _AttribIterator()
  */
+  __Pyx_TraceLine(2567,0,__PYX_ERR(0, 2567, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_element->_c_node->properties == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -74375,6 +78772,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *     attribs = _AttribIterator()
  *     attribs._node = element
  */
+    __Pyx_TraceLine(2568,0,__PYX_ERR(0, 2568, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
@@ -74396,6 +78794,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *     attribs._node = element
  *     attribs._c_attr = element._c_node.properties
  */
+  __Pyx_TraceLine(2569,0,__PYX_ERR(0, 2569, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AttribIterator)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2569, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_attribs = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_t_2);
@@ -74408,6 +78807,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *     attribs._c_attr = element._c_node.properties
  *     attribs._keysvalues = keysvalues
  */
+  __Pyx_TraceLine(2570,0,__PYX_ERR(0, 2570, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
   __Pyx_GOTREF(__pyx_v_attribs->_node);
@@ -74421,6 +78821,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *     attribs._keysvalues = keysvalues
  *     return attribs
  */
+  __Pyx_TraceLine(2571,0,__PYX_ERR(0, 2571, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_element->_c_node->properties;
   __pyx_v_attribs->_c_attr = __pyx_t_3;
 
@@ -74431,6 +78832,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  *     return attribs
  * 
  */
+  __Pyx_TraceLine(2572,0,__PYX_ERR(0, 2572, __pyx_L1_error))
   __pyx_v_attribs->_keysvalues = __pyx_v_keysvalues;
 
   /* "lxml/etree.pyx":2573
@@ -74440,6 +78842,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  * 
  * 
  */
+  __Pyx_TraceLine(2573,0,__PYX_ERR(0, 2573, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_attribs));
   __pyx_r = ((PyObject *)__pyx_v_attribs);
@@ -74461,6 +78864,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_attribs);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74475,11 +78879,13 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
 
 static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct LxmlElementTagMatcher *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_initTagMatch", 0);
+  __Pyx_TraceCall("_initTagMatch", __pyx_f[0], 2585, 0, __PYX_ERR(0, 2585, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2586
  *     cdef char* _name
@@ -74488,6 +78894,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         self._name = NULL
  *         if tag is None:
  */
+  __Pyx_TraceLine(2586,0,__PYX_ERR(0, 2586, __pyx_L1_error))
   __pyx_v_self->_href = NULL;
 
   /* "lxml/etree.pyx":2587
@@ -74497,6 +78904,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         if tag is None:
  *             self._node_type = 0
  */
+  __Pyx_TraceLine(2587,0,__PYX_ERR(0, 2587, __pyx_L1_error))
   __pyx_v_self->_name = NULL;
 
   /* "lxml/etree.pyx":2588
@@ -74506,6 +78914,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._node_type = 0
  *         elif tag is Comment:
  */
+  __Pyx_TraceLine(2588,0,__PYX_ERR(0, 2588, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tag == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -74517,6 +78926,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         elif tag is Comment:
  *             self._node_type = tree.XML_COMMENT_NODE
  */
+    __Pyx_TraceLine(2589,0,__PYX_ERR(0, 2589, __pyx_L1_error))
     __pyx_v_self->_node_type = 0;
 
     /* "lxml/etree.pyx":2588
@@ -74536,6 +78946,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._node_type = tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  */
+  __Pyx_TraceLine(2590,0,__PYX_ERR(0, 2590, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2590, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_3);
@@ -74550,6 +78961,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         elif tag is ProcessingInstruction:
  *             self._node_type = tree.XML_PI_NODE
  */
+    __Pyx_TraceLine(2591,0,__PYX_ERR(0, 2591, __pyx_L1_error))
     __pyx_v_self->_node_type = XML_COMMENT_NODE;
 
     /* "lxml/etree.pyx":2590
@@ -74569,6 +78981,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._node_type = tree.XML_PI_NODE
  *         elif tag is Entity:
  */
+  __Pyx_TraceLine(2592,0,__PYX_ERR(0, 2592, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2592, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = (__pyx_v_tag == __pyx_t_3);
@@ -74583,6 +78996,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         elif tag is Entity:
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  */
+    __Pyx_TraceLine(2593,0,__PYX_ERR(0, 2593, __pyx_L1_error))
     __pyx_v_self->_node_type = XML_PI_NODE;
 
     /* "lxml/etree.pyx":2592
@@ -74602,6 +79016,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  */
+  __Pyx_TraceLine(2594,0,__PYX_ERR(0, 2594, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Entity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2594, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_3);
@@ -74616,6 +79031,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         elif tag is Element:
  *             self._node_type = tree.XML_ELEMENT_NODE
  */
+    __Pyx_TraceLine(2595,0,__PYX_ERR(0, 2595, __pyx_L1_error))
     __pyx_v_self->_node_type = XML_ENTITY_REF_NODE;
 
     /* "lxml/etree.pyx":2594
@@ -74635,6 +79051,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._node_type = tree.XML_ELEMENT_NODE
  *         else:
  */
+  __Pyx_TraceLine(2596,0,__PYX_ERR(0, 2596, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = (__pyx_v_tag == __pyx_t_3);
@@ -74649,6 +79066,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *         else:
  *             self._node_type = tree.XML_ELEMENT_NODE
  */
+    __Pyx_TraceLine(2597,0,__PYX_ERR(0, 2597, __pyx_L1_error))
     __pyx_v_self->_node_type = XML_ELEMENT_NODE;
 
     /* "lxml/etree.pyx":2596
@@ -74668,6 +79086,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._pystrings = _getNsTag(tag)
  *             if self._pystrings[0] is not None:
  */
+  __Pyx_TraceLine(2599,0,__PYX_ERR(0, 2599, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_node_type = XML_ELEMENT_NODE;
 
@@ -74678,6 +79097,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             if self._pystrings[0] is not None:
  *                 self._href = _cstr(self._pystrings[0])
  */
+    __Pyx_TraceLine(2600,0,__PYX_ERR(0, 2600, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2600, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -74693,6 +79113,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *                 self._href = _cstr(self._pystrings[0])
  *             self._name = _cstr(self._pystrings[1])
  */
+    __Pyx_TraceLine(2601,0,__PYX_ERR(0, 2601, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2601, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_2 = (__pyx_t_3 != Py_None);
@@ -74707,6 +79128,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             self._name = _cstr(self._pystrings[1])
  *             if self._name[0] == c'*' and self._name[1] == c'\0':
  */
+      __Pyx_TraceLine(2602,0,__PYX_ERR(0, 2602, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_self->_href = PyBytes_AS_STRING(__pyx_t_3);
@@ -74728,6 +79150,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *             if self._name[0] == c'*' and self._name[1] == c'\0':
  *                 self._name = NULL
  */
+    __Pyx_TraceLine(2603,0,__PYX_ERR(0, 2603, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2603, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_self->_name = PyBytes_AS_STRING(__pyx_t_3);
@@ -74740,6 +79163,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  *                 self._name = NULL
  * 
  */
+    __Pyx_TraceLine(2604,0,__PYX_ERR(0, 2604, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_self->_name[0]) == '*') != 0);
     if (__pyx_t_2) {
     } else {
@@ -74758,6 +79182,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  * 
  * cdef public class _ElementIterator(_ElementTagMatcher) [
  */
+      __Pyx_TraceLine(2605,0,__PYX_ERR(0, 2605, __pyx_L1_error))
       __pyx_v_self->_name = NULL;
 
       /* "lxml/etree.pyx":2604
@@ -74788,6 +79213,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74815,8 +79241,10 @@ static PyObject *__pyx_pw_4lxml_5etree_16_ElementIterator_1__iter__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlElementIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2615, 0, __PYX_ERR(0, 2615, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2616
  *     cdef _node_to_node_function _next_element
@@ -74825,6 +79253,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
  * 
  *     cdef void _storeNext(self, _Element node):
  */
+  __Pyx_TraceLine(2616,0,__PYX_ERR(0, 2616, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -74839,8 +79268,12 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -74855,12 +79288,14 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
 
 static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElementIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node) {
   xmlNode *__pyx_v_c_node;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_storeNext", 0);
+  __Pyx_TraceCall("_storeNext", __pyx_f[0], 2618, 0, __PYX_ERR(0, 2618, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2620
  *     cdef void _storeNext(self, _Element node):
@@ -74869,6 +79304,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *         while c_node is not NULL and \
  *                   self._node_type != 0 and \
  */
+  __Pyx_TraceLine(2620,0,__PYX_ERR(0, 2620, __pyx_L1_error))
   __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_node->_c_node);
 
   /* "lxml/etree.pyx":2621
@@ -74878,6 +79314,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *                   self._node_type != 0 and \
  *                   (<tree.xmlElementType>self._node_type != c_node.type or
  */
+  __Pyx_TraceLine(2621,0,__PYX_ERR(0, 2621, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_2) {
@@ -74893,6 +79330,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *                   (<tree.xmlElementType>self._node_type != c_node.type or
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):
  */
+    __Pyx_TraceLine(2622,0,__PYX_ERR(0, 2622, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->__pyx_base._node_type != 0) != 0);
     if (__pyx_t_2) {
     } else {
@@ -74907,6 +79345,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):
  *             c_node = self._next_element(c_node)
  */
+    __Pyx_TraceLine(2623,0,__PYX_ERR(0, 2623, __pyx_L1_error))
     __pyx_t_2 = ((((xmlElementType)__pyx_v_self->__pyx_base._node_type) != __pyx_v_c_node->type) != 0);
     if (!__pyx_t_2) {
     } else {
@@ -74921,6 +79360,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *             c_node = self._next_element(c_node)
  *         if c_node is NULL:
  */
+    __Pyx_TraceLine(2624,0,__PYX_ERR(0, 2624, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, ((const xmlChar *)__pyx_v_self->__pyx_base._href), ((const xmlChar *)__pyx_v_self->__pyx_base._name)) != 0)) != 0);
     __pyx_t_1 = __pyx_t_2;
     __pyx_L5_bool_binop_done:;
@@ -74933,6 +79373,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *         if c_node is NULL:
  *             self._node = None
  */
+    __Pyx_TraceLine(2625,0,__PYX_ERR(0, 2625, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_c_node);
   }
 
@@ -74943,6 +79384,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *             self._node = None
  *         else:
  */
+  __Pyx_TraceLine(2626,0,__PYX_ERR(0, 2626, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -74953,6 +79395,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  *         else:
  *             # Python ref:
  */
+    __Pyx_TraceLine(2627,0,__PYX_ERR(0, 2627, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_node);
@@ -74976,6 +79419,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(2630,0,__PYX_ERR(0, 2630, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_3);
@@ -75005,6 +79449,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_WriteUnraisable("lxml.etree._ElementIterator._storeNext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -75032,11 +79477,13 @@ static PyObject *__pyx_pw_4lxml_5etree_16_ElementIterator_3__next__(PyObject *__
 static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlElementIterator *__pyx_v_self) {
   struct LxmlElement *__pyx_v_current_node = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[0], 2632, 0, __PYX_ERR(0, 2632, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2635
  *         cdef xmlNode* c_node
@@ -75045,6 +79492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  *             raise StopIteration
  *         # Python ref:
  */
+  __Pyx_TraceLine(2635,0,__PYX_ERR(0, 2635, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_node) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -75056,6 +79504,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  *         # Python ref:
  *         current_node = self._node
  */
+    __Pyx_TraceLine(2636,0,__PYX_ERR(0, 2636, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
     __PYX_ERR(0, 2636, __pyx_L1_error)
 
@@ -75075,6 +79524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  *         self._storeNext(current_node)
  *         return current_node
  */
+  __Pyx_TraceLine(2638,0,__PYX_ERR(0, 2638, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_self->_node);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_3);
@@ -75087,6 +79537,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  *         return current_node
  * 
  */
+  __Pyx_TraceLine(2639,0,__PYX_ERR(0, 2639, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *)__pyx_v_self->__pyx_base.__pyx_vtab)->_storeNext(__pyx_v_self, __pyx_v_current_node);
 
   /* "lxml/etree.pyx":2640
@@ -75096,6 +79547,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(2640,0,__PYX_ERR(0, 2640, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_current_node));
   __pyx_r = ((PyObject *)__pyx_v_current_node);
@@ -75117,6 +79569,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_current_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75181,9 +79634,11 @@ static int __pyx_pw_4lxml_5etree_16_MultiTagMatcher_1__cinit__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, PyObject *__pyx_v_tags) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2655, 0, __PYX_ERR(0, 2655, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2656
  * 
@@ -75192,6 +79647,7 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
  *         self.initTagMatch(tags)
  * 
  */
+  __Pyx_TraceLine(2656,0,__PYX_ERR(0, 2656, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2656, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -75207,6 +79663,7 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(2657,0,__PYX_ERR(0, 2657, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(__pyx_v_self, __pyx_v_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2657, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -75227,6 +79684,7 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
   __Pyx_AddTraceback("lxml.etree._MultiTagMatcher.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75251,8 +79709,10 @@ static void __pyx_pw_4lxml_5etree_16_MultiTagMatcher_3__dealloc__(PyObject *__py
 }
 
 static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[0], 2659, 0, __PYX_ERR(0, 2659, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2660
  * 
@@ -75261,6 +79721,7 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
  * 
  *     cdef bint rejectsAll(self):
  */
+  __Pyx_TraceLine(2660,0,__PYX_ERR(0, 2660, __pyx_L1_error))
   __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(__pyx_v_self);
 
   /* "lxml/etree.pyx":2659
@@ -75272,6 +79733,11 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -75285,10 +79751,12 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
 
 static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("rejectsAll", 0);
+  __Pyx_TraceCall("rejectsAll", __pyx_f[0], 2662, 0, __PYX_ERR(0, 2662, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2663
  * 
@@ -75297,6 +79765,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
  * 
  *     cdef bint rejectsAllAttributes(self):
  */
+  __Pyx_TraceLine(2663,0,__PYX_ERR(0, 2663, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_self->_tag_count != 0)) != 0);
   if (__pyx_t_2) {
   } else {
@@ -75318,7 +79787,11 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.rejectsAll", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75333,8 +79806,10 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
 
 static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("rejectsAllAttributes", 0);
+  __Pyx_TraceCall("rejectsAllAttributes", __pyx_f[0], 2665, 0, __PYX_ERR(0, 2665, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2666
  * 
@@ -75343,6 +79818,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
  * 
  *     cdef bint matchesType(self, int node_type):
  */
+  __Pyx_TraceLine(2666,0,__PYX_ERR(0, 2666, __pyx_L1_error))
   __pyx_r = (!(__pyx_v_self->_tag_count != 0));
   goto __pyx_L0;
 
@@ -75355,7 +79831,11 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.rejectsAllAttributes", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75370,10 +79850,12 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
 
 static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, int __pyx_v_node_type) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("matchesType", 0);
+  __Pyx_TraceCall("matchesType", __pyx_f[0], 2668, 0, __PYX_ERR(0, 2668, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2669
  * 
@@ -75382,6 +79864,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
  *             return True
  *         return self._node_types & (1 << node_type)
  */
+  __Pyx_TraceLine(2669,0,__PYX_ERR(0, 2669, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_node_type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_2) {
   } else {
@@ -75400,6 +79883,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
  *         return self._node_types & (1 << node_type)
  * 
  */
+    __Pyx_TraceLine(2670,0,__PYX_ERR(0, 2670, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -75419,6 +79903,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
  * 
  *     cdef void _clear(self):
  */
+  __Pyx_TraceLine(2671,0,__PYX_ERR(0, 2671, __pyx_L1_error))
   __pyx_r = (__pyx_v_self->_node_types & (1 << __pyx_v_node_type));
   goto __pyx_L0;
 
@@ -75431,7 +79916,11 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.matchesType", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75447,12 +79936,14 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
 static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self) {
   size_t __pyx_v_i;
   size_t __pyx_v_count;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   size_t __pyx_t_1;
   int __pyx_t_2;
   size_t __pyx_t_3;
   size_t __pyx_t_4;
   __Pyx_RefNannySetupContext("_clear", 0);
+  __Pyx_TraceCall("_clear", __pyx_f[0], 2673, 0, __PYX_ERR(0, 2673, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2675
  *     cdef void _clear(self):
@@ -75461,6 +79952,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *         self._tag_count = 0
  *         if self._cached_tags:
  */
+  __Pyx_TraceLine(2675,0,__PYX_ERR(0, 2675, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_tag_count;
   __pyx_v_count = __pyx_t_1;
 
@@ -75471,6 +79963,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *         if self._cached_tags:
  *             for i in xrange(count):
  */
+  __Pyx_TraceLine(2676,0,__PYX_ERR(0, 2676, __pyx_L1_error))
   __pyx_v_self->_tag_count = 0;
 
   /* "lxml/etree.pyx":2677
@@ -75480,6 +79973,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *             for i in xrange(count):
  *                 cpython.ref.Py_XDECREF(self._cached_tags[i].href)
  */
+  __Pyx_TraceLine(2677,0,__PYX_ERR(0, 2677, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_cached_tags != 0);
   if (__pyx_t_2) {
 
@@ -75490,6 +79984,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *                 cpython.ref.Py_XDECREF(self._cached_tags[i].href)
  *             python.lxml_free(self._cached_tags)
  */
+    __Pyx_TraceLine(2678,0,__PYX_ERR(0, 2678, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_count;
     __pyx_t_3 = __pyx_t_1;
     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
@@ -75502,6 +79997,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *             python.lxml_free(self._cached_tags)
  *             self._cached_tags = NULL
  */
+      __Pyx_TraceLine(2679,0,__PYX_ERR(0, 2679, __pyx_L1_error))
       Py_XDECREF((__pyx_v_self->_cached_tags[__pyx_v_i]).href);
     }
 
@@ -75512,6 +80008,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  *             self._cached_tags = NULL
  * 
  */
+    __Pyx_TraceLine(2680,0,__PYX_ERR(0, 2680, __pyx_L1_error))
     lxml_free(__pyx_v_self->_cached_tags);
 
     /* "lxml/etree.pyx":2681
@@ -75521,6 +80018,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  * 
  *     cdef initTagMatch(self, tags):
  */
+    __Pyx_TraceLine(2681,0,__PYX_ERR(0, 2681, __pyx_L1_error))
     __pyx_v_self->_cached_tags = NULL;
 
     /* "lxml/etree.pyx":2677
@@ -75541,6 +80039,11 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher._clear", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -75554,6 +80057,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
 
 static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -75561,6 +80065,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("initTagMatch", 0);
+  __Pyx_TraceCall("initTagMatch", __pyx_f[0], 2683, 0, __PYX_ERR(0, 2683, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2684
  * 
@@ -75569,6 +80074,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *         del self._py_tags[:]
  *         self._clear()
  */
+  __Pyx_TraceLine(2684,0,__PYX_ERR(0, 2684, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_cached_doc);
@@ -75582,6 +80088,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *         self._clear()
  *         if tags is None or tags == ():
  */
+  __Pyx_TraceLine(2685,0,__PYX_ERR(0, 2685, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_py_tags == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(0, 2685, __pyx_L1_error)
@@ -75595,6 +80102,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *         if tags is None or tags == ():
  *             # no selection in tags argument => match anything
  */
+  __Pyx_TraceLine(2686,0,__PYX_ERR(0, 2686, __pyx_L1_error))
   __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(__pyx_v_self);
 
   /* "lxml/etree.pyx":2687
@@ -75604,6 +80112,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *             # no selection in tags argument => match anything
  *             self._node_types = (
  */
+  __Pyx_TraceLine(2687,0,__PYX_ERR(0, 2687, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_tags == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -75625,6 +80134,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *                 1 << tree.XML_COMMENT_NODE |
  *                 1 << tree.XML_PI_NODE |
  */
+    __Pyx_TraceLine(2689,0,__PYX_ERR(0, 2689, __pyx_L1_error))
     __pyx_v_self->_node_types = ((((1 << XML_COMMENT_NODE) | (1 << XML_PI_NODE)) | (1 << XML_ENTITY_REF_NODE)) | (1 << XML_ELEMENT_NODE));
 
     /* "lxml/etree.pyx":2687
@@ -75644,6 +80154,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  *             self._storeTags(tags, set())
  * 
  */
+  __Pyx_TraceLine(2695,0,__PYX_ERR(0, 2695, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_node_types = 0;
 
@@ -75654,6 +80165,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  * 
  *     cdef _storeTags(self, tag, set seen):
  */
+    __Pyx_TraceLine(2696,0,__PYX_ERR(0, 2696, __pyx_L1_error))
     __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2696, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(__pyx_v_self, __pyx_v_tags, ((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2696, __pyx_L1_error)
@@ -75681,6 +80193,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -75698,6 +80211,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -75708,6 +80222,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   Py_ssize_t __pyx_t_7;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_storeTags", 0);
+  __Pyx_TraceCall("_storeTags", __pyx_f[0], 2698, 0, __PYX_ERR(0, 2698, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2699
  * 
@@ -75716,6 +80231,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  */
+  __Pyx_TraceLine(2699,0,__PYX_ERR(0, 2699, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2699, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_1);
@@ -75730,6 +80246,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *         elif tag is ProcessingInstruction:
  *             self._node_types |= 1 << tree.XML_PI_NODE
  */
+    __Pyx_TraceLine(2700,0,__PYX_ERR(0, 2700, __pyx_L1_error))
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_COMMENT_NODE));
 
     /* "lxml/etree.pyx":2699
@@ -75749,6 +80266,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             self._node_types |= 1 << tree.XML_PI_NODE
  *         elif tag is Entity:
  */
+  __Pyx_TraceLine(2701,0,__PYX_ERR(0, 2701, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2701, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = (__pyx_v_tag == __pyx_t_1);
@@ -75763,6 +80281,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *         elif tag is Entity:
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  */
+    __Pyx_TraceLine(2702,0,__PYX_ERR(0, 2702, __pyx_L1_error))
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_PI_NODE));
 
     /* "lxml/etree.pyx":2701
@@ -75782,6 +80301,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  */
+  __Pyx_TraceLine(2703,0,__PYX_ERR(0, 2703, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2703, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_1);
@@ -75796,6 +80316,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *         elif tag is Element:
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  */
+    __Pyx_TraceLine(2704,0,__PYX_ERR(0, 2704, __pyx_L1_error))
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ENTITY_REF_NODE));
 
     /* "lxml/etree.pyx":2703
@@ -75815,6 +80336,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):
  */
+  __Pyx_TraceLine(2705,0,__PYX_ERR(0, 2705, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Element); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2705, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = (__pyx_v_tag == __pyx_t_1);
@@ -75829,6 +80351,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *         elif python._isString(tag):
  *             if tag in seen:
  */
+    __Pyx_TraceLine(2706,0,__PYX_ERR(0, 2706, __pyx_L1_error))
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ELEMENT_NODE));
 
     /* "lxml/etree.pyx":2705
@@ -75848,6 +80371,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             if tag in seen:
  *                 return
  */
+  __Pyx_TraceLine(2707,0,__PYX_ERR(0, 2707, __pyx_L1_error))
   __pyx_t_2 = (_isString(__pyx_v_tag) != 0);
   if (__pyx_t_2) {
 
@@ -75858,6 +80382,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 return
  *             seen.add(tag)
  */
+    __Pyx_TraceLine(2708,0,__PYX_ERR(0, 2708, __pyx_L1_error))
     if (unlikely(__pyx_v_seen == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(0, 2708, __pyx_L1_error)
@@ -75873,6 +80398,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             seen.add(tag)
  *             if tag in ('*', '{*}*'):
  */
+      __Pyx_TraceLine(2709,0,__PYX_ERR(0, 2709, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
@@ -75893,6 +80419,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             if tag in ('*', '{*}*'):
  *                 self._node_types |= 1 << tree.XML_ELEMENT_NODE
  */
+    __Pyx_TraceLine(2710,0,__PYX_ERR(0, 2710, __pyx_L1_error))
     if (unlikely(__pyx_v_seen == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
       __PYX_ERR(0, 2710, __pyx_L1_error)
@@ -75906,15 +80433,16 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *             else:
  */
+    __Pyx_TraceLine(2711,0,__PYX_ERR(0, 2711, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_tag);
     __pyx_t_1 = __pyx_v_tag;
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__53, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2711, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__160, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2711, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
       __pyx_t_3 = __pyx_t_2;
       goto __pyx_L6_bool_binop_done;
     }
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__54, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2711, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__161, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2711, __pyx_L1_error)
     __pyx_t_3 = __pyx_t_2;
     __pyx_L6_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -75928,6 +80456,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *             else:
  *                 href, name = _getNsTag(tag)
  */
+      __Pyx_TraceLine(2712,0,__PYX_ERR(0, 2712, __pyx_L1_error))
       __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ELEMENT_NODE));
 
       /* "lxml/etree.pyx":2711
@@ -75947,6 +80476,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 if name == b'*':
  *                     name = None
  */
+    __Pyx_TraceLine(2714,0,__PYX_ERR(0, 2714, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2714, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -75985,7 +80515,8 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                     name = None
  *                 if href is None:
  */
-      __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_kp_b__53, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2715, __pyx_L1_error)
+      __Pyx_TraceLine(2715,0,__PYX_ERR(0, 2715, __pyx_L1_error))
+      __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_kp_b__160, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2715, __pyx_L1_error)
       if (__pyx_t_2) {
 
         /* "lxml/etree.pyx":2716
@@ -75995,6 +80526,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 if href is None:
  *                     href = b''  # no namespace
  */
+        __Pyx_TraceLine(2716,0,__PYX_ERR(0, 2716, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_name, Py_None);
 
@@ -76014,6 +80546,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                     href = b''  # no namespace
  *                 elif href == b'*':
  */
+      __Pyx_TraceLine(2717,0,__PYX_ERR(0, 2717, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_href == Py_None);
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
@@ -76025,8 +80558,9 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 elif href == b'*':
  *                     href = None  # wildcard: any namespace, including none
  */
-        __Pyx_INCREF(__pyx_kp_b__16);
-        __Pyx_DECREF_SET(__pyx_v_href, __pyx_kp_b__16);
+        __Pyx_TraceLine(2718,0,__PYX_ERR(0, 2718, __pyx_L1_error))
+        __Pyx_INCREF(__pyx_kp_b__23);
+        __Pyx_DECREF_SET(__pyx_v_href, __pyx_kp_b__23);
 
         /* "lxml/etree.pyx":2717
  *                 if name == b'*':
@@ -76045,7 +80579,8 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                     href = None  # wildcard: any namespace, including none
  *                 self._py_tags.append((href, name))
  */
-      __pyx_t_3 = (__Pyx_PyBytes_Equals(__pyx_v_href, __pyx_kp_b__53, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2719, __pyx_L1_error)
+      __Pyx_TraceLine(2719,0,__PYX_ERR(0, 2719, __pyx_L1_error))
+      __pyx_t_3 = (__Pyx_PyBytes_Equals(__pyx_v_href, __pyx_kp_b__160, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2719, __pyx_L1_error)
       if (__pyx_t_3) {
 
         /* "lxml/etree.pyx":2720
@@ -76055,6 +80590,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 self._py_tags.append((href, name))
  *         else:
  */
+        __Pyx_TraceLine(2720,0,__PYX_ERR(0, 2720, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_href, Py_None);
 
@@ -76075,6 +80611,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *         else:
  *             # support a sequence of tags
  */
+      __Pyx_TraceLine(2721,0,__PYX_ERR(0, 2721, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_py_tags == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(0, 2721, __pyx_L1_error)
@@ -76109,6 +80646,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 self._storeTags(item, seen)
  * 
  */
+  __Pyx_TraceLine(2724,0,__PYX_ERR(0, 2724, __pyx_L1_error))
   /*else*/ {
     if (likely(PyList_CheckExact(__pyx_v_tag)) || PyTuple_CheckExact(__pyx_v_tag)) {
       __pyx_t_1 = __pyx_v_tag; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
@@ -76159,6 +80697,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  * 
  *     cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
  */
+      __Pyx_TraceLine(2725,0,__PYX_ERR(0, 2725, __pyx_L1_error))
       __pyx_t_6 = __pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(__pyx_v_self, __pyx_v_item, __pyx_v_seen); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2725, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -76170,6 +80709,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                 self._storeTags(item, seen)
  * 
  */
+      __Pyx_TraceLine(2724,0,__PYX_ERR(0, 2724, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
@@ -76197,6 +80737,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76213,6 +80754,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   int __pyx_v_force_into_dict = ((int)0);
   size_t __pyx_v_dict_size;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -76220,6 +80762,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   PyObject *__pyx_t_4 = NULL;
   Py_ssize_t __pyx_t_5;
   __Pyx_RefNannySetupContext("cacheTags", 0);
+  __Pyx_TraceCall("cacheTags", __pyx_f[0], 2727, 0, __PYX_ERR(0, 2727, __pyx_L1_error));
   if (__pyx_optional_args) {
     if (__pyx_optional_args->__pyx_n > 0) {
       __pyx_v_force_into_dict = __pyx_optional_args->force_into_dict;
@@ -76233,6 +80776,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         if doc is self._cached_doc and dict_size == self._cached_size:
  *             # doc and dict didn't change => names already cached
  */
+  __Pyx_TraceLine(2731,0,__PYX_ERR(0, 2731, __pyx_L1_error))
   __pyx_v_dict_size = xmlDictSize(__pyx_v_doc->_c_doc->dict);
 
   /* "lxml/etree.pyx":2732
@@ -76242,6 +80786,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             # doc and dict didn't change => names already cached
  *             return 0
  */
+  __Pyx_TraceLine(2732,0,__PYX_ERR(0, 2732, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_doc == __pyx_v_self->_cached_doc);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -76261,6 +80806,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         self._tag_count = 0
  *         if not self._py_tags:
  */
+    __Pyx_TraceLine(2734,0,__PYX_ERR(0, 2734, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -76280,6 +80826,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         if not self._py_tags:
  *             self._cached_doc = doc
  */
+  __Pyx_TraceLine(2735,0,__PYX_ERR(0, 2735, __pyx_L1_error))
   __pyx_v_self->_tag_count = 0;
 
   /* "lxml/etree.pyx":2736
@@ -76289,6 +80836,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             self._cached_doc = doc
  *             self._cached_size = dict_size
  */
+  __Pyx_TraceLine(2736,0,__PYX_ERR(0, 2736, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_py_tags != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_py_tags) != 0);
   __pyx_t_3 = ((!__pyx_t_1) != 0);
   if (__pyx_t_3) {
@@ -76300,6 +80848,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             self._cached_size = dict_size
  *             return 0
  */
+    __Pyx_TraceLine(2737,0,__PYX_ERR(0, 2737, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_doc));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
     __Pyx_GOTREF(__pyx_v_self->_cached_doc);
@@ -76313,6 +80862,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             return 0
  *         if not self._cached_tags:
  */
+    __Pyx_TraceLine(2738,0,__PYX_ERR(0, 2738, __pyx_L1_error))
     __pyx_v_self->_cached_size = __pyx_v_dict_size;
 
     /* "lxml/etree.pyx":2739
@@ -76322,6 +80872,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         if not self._cached_tags:
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))
  */
+    __Pyx_TraceLine(2739,0,__PYX_ERR(0, 2739, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -76341,6 +80892,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))
  *             if not self._cached_tags:
  */
+  __Pyx_TraceLine(2740,0,__PYX_ERR(0, 2740, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_self->_cached_tags != 0)) != 0);
   if (__pyx_t_3) {
 
@@ -76351,6 +80903,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             if not self._cached_tags:
  *                 self._cached_doc = None
  */
+    __Pyx_TraceLine(2741,0,__PYX_ERR(0, 2741, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_self->_py_tags;
     __Pyx_INCREF(__pyx_t_4);
     if (unlikely(__pyx_t_4 == Py_None)) {
@@ -76368,6 +80921,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *                 self._cached_doc = None
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(2742,0,__PYX_ERR(0, 2742, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_v_self->_cached_tags != 0)) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -76378,6 +80932,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *                 raise MemoryError()
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(
  */
+      __Pyx_TraceLine(2743,0,__PYX_ERR(0, 2743, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __Pyx_GIVEREF(Py_None);
       __Pyx_GOTREF(__pyx_v_self->_cached_doc);
@@ -76391,6 +80946,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  */
+      __Pyx_TraceLine(2744,0,__PYX_ERR(0, 2744, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(0, 2744, __pyx_L1_error)
 
       /* "lxml/etree.pyx":2742
@@ -76418,6 +80974,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         self._cached_doc = doc
  *         self._cached_size = dict_size
  */
+  __Pyx_TraceLine(2746,0,__PYX_ERR(0, 2746, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_py_tags;
   __Pyx_INCREF(__pyx_t_4);
 
@@ -76428,6 +80985,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  *         self._cached_doc = doc
  */
+  __Pyx_TraceLine(2745,0,__PYX_ERR(0, 2745, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__mapTagsToQnameMatchArray(__pyx_v_doc->_c_doc, ((PyObject*)__pyx_t_4), __pyx_v_self->_cached_tags, __pyx_v_force_into_dict); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2745, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_self->_tag_count = ((size_t)__pyx_t_5);
@@ -76439,6 +80997,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         self._cached_size = dict_size
  *         return 0
  */
+  __Pyx_TraceLine(2747,0,__PYX_ERR(0, 2747, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_doc));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
   __Pyx_GOTREF(__pyx_v_self->_cached_doc);
@@ -76452,6 +81011,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  *         return 0
  * 
  */
+  __Pyx_TraceLine(2748,0,__PYX_ERR(0, 2748, __pyx_L1_error))
   __pyx_v_self->_cached_size = __pyx_v_dict_size;
 
   /* "lxml/etree.pyx":2749
@@ -76461,6 +81021,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  * 
  *     cdef inline bint matches(self, xmlNode* c_node):
  */
+  __Pyx_TraceLine(2749,0,__PYX_ERR(0, 2749, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -76478,6 +81039,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __Pyx_AddTraceback("lxml.etree._MultiTagMatcher.cacheTags", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76493,12 +81055,14 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
 static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, xmlNode *__pyx_v_c_node) {
   struct __pyx_t_4lxml_5etree_qname *__pyx_v_c_qname;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_2;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_3;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_4;
   __Pyx_RefNannySetupContext("matches", 0);
+  __Pyx_TraceCall("matches", __pyx_f[0], 2751, 0, __PYX_ERR(0, 2751, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2753
  *     cdef inline bint matches(self, xmlNode* c_node):
@@ -76507,6 +81071,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *             return True
  *         elif c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(2753,0,__PYX_ERR(0, 2753, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_node_types & (1 << __pyx_v_c_node->type)) != 0);
   if (__pyx_t_1) {
 
@@ -76517,6 +81082,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *         elif c_node.type == tree.XML_ELEMENT_NODE:
  *             for c_qname in self._cached_tags[:self._tag_count]:
  */
+    __Pyx_TraceLine(2754,0,__PYX_ERR(0, 2754, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -76536,6 +81102,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *             for c_qname in self._cached_tags[:self._tag_count]:
  *                 if _tagMatchesExactly(c_node, c_qname):
  */
+  __Pyx_TraceLine(2755,0,__PYX_ERR(0, 2755, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -76546,6 +81113,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *                 if _tagMatchesExactly(c_node, c_qname):
  *                     return True
  */
+    __Pyx_TraceLine(2756,0,__PYX_ERR(0, 2756, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_self->_cached_tags + __pyx_v_self->_tag_count);
     for (__pyx_t_4 = __pyx_v_self->_cached_tags; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
       __pyx_t_2 = __pyx_t_4;
@@ -76558,6 +81126,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *                     return True
  *         return False
  */
+      __Pyx_TraceLine(2757,0,__PYX_ERR(0, 2757, __pyx_L1_error))
       __pyx_t_1 = (__pyx_f_4lxml_5etree__tagMatchesExactly(__pyx_v_c_node, __pyx_v_c_qname) != 0);
       if (__pyx_t_1) {
 
@@ -76568,6 +81137,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  *         return False
  * 
  */
+        __Pyx_TraceLine(2758,0,__PYX_ERR(0, 2758, __pyx_L1_error))
         __pyx_r = 1;
         goto __pyx_L0;
 
@@ -76597,6 +81167,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  * 
  *     cdef inline bint matchesNsTag(self, const_xmlChar* c_href,
  */
+  __Pyx_TraceLine(2759,0,__PYX_ERR(0, 2759, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -76609,7 +81180,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.matches", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76625,12 +81200,14 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
 static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   struct __pyx_t_4lxml_5etree_qname *__pyx_v_c_qname;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_2;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_3;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_4;
   __Pyx_RefNannySetupContext("matchesNsTag", 0);
+  __Pyx_TraceCall("matchesNsTag", __pyx_f[0], 2761, 0, __PYX_ERR(0, 2761, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2764
  *                                   const_xmlChar* c_name):
@@ -76639,6 +81216,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  *             return True
  *         for c_qname in self._cached_tags[:self._tag_count]:
  */
+  __Pyx_TraceLine(2764,0,__PYX_ERR(0, 2764, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_node_types & (1 << XML_ELEMENT_NODE)) != 0);
   if (__pyx_t_1) {
 
@@ -76649,6 +81227,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):
  */
+    __Pyx_TraceLine(2765,0,__PYX_ERR(0, 2765, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -76668,6 +81247,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):
  *                 return True
  */
+  __Pyx_TraceLine(2766,0,__PYX_ERR(0, 2766, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_cached_tags + __pyx_v_self->_tag_count);
   for (__pyx_t_4 = __pyx_v_self->_cached_tags; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
     __pyx_t_2 = __pyx_t_4;
@@ -76680,6 +81260,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  *                 return True
  *         return False
  */
+    __Pyx_TraceLine(2767,0,__PYX_ERR(0, 2767, __pyx_L1_error))
     __pyx_t_1 = (__pyx_f_4lxml_5etree__nsTagMatchesExactly(__pyx_v_c_href, __pyx_v_c_name, __pyx_v_c_qname) != 0);
     if (__pyx_t_1) {
 
@@ -76690,6 +81271,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  *         return False
  * 
  */
+      __Pyx_TraceLine(2768,0,__PYX_ERR(0, 2768, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -76710,6 +81292,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  * 
  *     cdef inline bint matchesAttribute(self, xmlAttr* c_attr):
  */
+  __Pyx_TraceLine(2769,0,__PYX_ERR(0, 2769, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -76722,7 +81305,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.matchesNsTag", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76738,12 +81325,14 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
 static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribute(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, xmlAttr *__pyx_v_c_attr) {
   struct __pyx_t_4lxml_5etree_qname *__pyx_v_c_qname;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_1;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_2;
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("matchesAttribute", 0);
+  __Pyx_TraceCall("matchesAttribute", __pyx_f[0], 2771, 0, __PYX_ERR(0, 2771, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2776
  *         """
@@ -76752,6 +81341,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
  *             if _tagMatchesExactly(<xmlNode*>c_attr, c_qname):
  *                 return True
  */
+  __Pyx_TraceLine(2776,0,__PYX_ERR(0, 2776, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_cached_tags + __pyx_v_self->_tag_count);
   for (__pyx_t_3 = __pyx_v_self->_cached_tags; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) {
     __pyx_t_1 = __pyx_t_3;
@@ -76764,6 +81354,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
  *                 return True
  *         return False
  */
+    __Pyx_TraceLine(2777,0,__PYX_ERR(0, 2777, __pyx_L1_error))
     __pyx_t_4 = (__pyx_f_4lxml_5etree__tagMatchesExactly(((xmlNode *)__pyx_v_c_attr), __pyx_v_c_qname) != 0);
     if (__pyx_t_4) {
 
@@ -76774,6 +81365,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
  *         return False
  * 
  */
+      __Pyx_TraceLine(2778,0,__PYX_ERR(0, 2778, __pyx_L1_error))
       __pyx_r = 1;
       goto __pyx_L0;
 
@@ -76794,6 +81386,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
  * 
  * cdef class _ElementMatchIterator:
  */
+  __Pyx_TraceLine(2779,0,__PYX_ERR(0, 2779, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -76806,7 +81399,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._MultiTagMatcher.matchesAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76821,10 +81418,12 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
 
 static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *__pyx_v_self, PyObject *__pyx_v_tags) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_initTagMatcher", 0);
+  __Pyx_TraceCall("_initTagMatcher", __pyx_f[0], 2787, 0, __PYX_ERR(0, 2787, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2788
  *     @cython.final
@@ -76833,6 +81432,7 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(2788,0,__PYX_ERR(0, 2788, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_tags);
@@ -76865,6 +81465,7 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76892,8 +81493,10 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementMatchIterator_1__iter__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2790, 0, __PYX_ERR(0, 2790, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2791
  * 
@@ -76902,6 +81505,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(2791,0,__PYX_ERR(0, 2791, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -76916,8 +81520,12 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementMatchIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -76933,6 +81541,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
 static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -76941,6 +81550,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_storeNext", 0);
+  __Pyx_TraceCall("_storeNext", __pyx_f[0], 2794, 0, __PYX_ERR(0, 2794, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2795
  *     @cython.final
@@ -76949,6 +81559,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  *         c_node = self._next_element(node._c_node)
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  */
+  __Pyx_TraceLine(2795,0,__PYX_ERR(0, 2795, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_node->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_1), NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2795, __pyx_L1_error)
@@ -76961,6 +81572,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  *             c_node = self._next_element(c_node)
  */
+  __Pyx_TraceLine(2796,0,__PYX_ERR(0, 2796, __pyx_L1_error))
   __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_node->_c_node);
 
   /* "lxml/etree.pyx":2797
@@ -76970,6 +81582,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  *             c_node = self._next_element(c_node)
  *         # store Python ref to next node to make sure it's kept alive
  */
+  __Pyx_TraceLine(2797,0,__PYX_ERR(0, 2797, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_4) {
@@ -76989,6 +81602,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  *         # store Python ref to next node to make sure it's kept alive
  *         self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None
  */
+    __Pyx_TraceLine(2798,0,__PYX_ERR(0, 2798, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_c_node);
   }
 
@@ -76999,6 +81613,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  *         return 0
  * 
  */
+  __Pyx_TraceLine(2800,0,__PYX_ERR(0, 2800, __pyx_L1_error))
   if (((__pyx_v_c_node != NULL) != 0)) {
     __pyx_t_5 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_5);
@@ -77024,6 +81639,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(2801,0,__PYX_ERR(0, 2801, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -77043,6 +81659,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   __Pyx_AddTraceback("lxml.etree._ElementMatchIterator._storeNext", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -77071,12 +81688,14 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementMatchIterator_3__next__(PyObjec
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *__pyx_v_self) {
   struct LxmlElement *__pyx_v_current_node = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[0], 2803, 0, __PYX_ERR(0, 2803, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2804
  * 
@@ -77085,6 +81704,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  *         if current_node is None:
  *             raise StopIteration
  */
+  __Pyx_TraceLine(2804,0,__PYX_ERR(0, 2804, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_node);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_1);
@@ -77097,6 +81717,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  *             raise StopIteration
  *         self._storeNext(current_node)
  */
+  __Pyx_TraceLine(2805,0,__PYX_ERR(0, 2805, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_current_node) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -77108,6 +81729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  *         self._storeNext(current_node)
  *         return current_node
  */
+    __Pyx_TraceLine(2806,0,__PYX_ERR(0, 2806, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
     __PYX_ERR(0, 2806, __pyx_L1_error)
 
@@ -77127,6 +81749,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  *         return current_node
  * 
  */
+  __Pyx_TraceLine(2807,0,__PYX_ERR(0, 2807, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(__pyx_v_self, __pyx_v_current_node); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2807, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2808
@@ -77136,6 +81759,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  * 
  * cdef class ElementChildIterator(_ElementMatchIterator):
  */
+  __Pyx_TraceLine(2808,0,__PYX_ERR(0, 2808, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_current_node));
   __pyx_r = ((PyObject *)__pyx_v_current_node);
@@ -77157,6 +81781,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_current_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -77253,6 +81878,7 @@ static int __pyx_pw_4lxml_5etree_20ElementChildIterator_1__cinit__(PyObject *__p
 static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_obj_4lxml_5etree_ElementChildIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node, PyObject *__pyx_v_tag, int __pyx_v_reversed) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -77261,6 +81887,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2814, 0, __PYX_ERR(0, 2814, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2816
  *     def __cinit__(self, _Element node not None, tag=None, *, bint reversed=False):
@@ -77269,6 +81896,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         self._initTagMatcher(tag)
  *         if reversed:
  */
+  __Pyx_TraceLine(2816,0,__PYX_ERR(0, 2816, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2816, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2817
@@ -77278,6 +81906,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         if reversed:
  *             c_node = _findChildBackwards(node._c_node, 0)
  */
+  __Pyx_TraceLine(2817,0,__PYX_ERR(0, 2817, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(((struct __pyx_obj_4lxml_5etree__ElementMatchIterator *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -77289,6 +81918,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *             c_node = _findChildBackwards(node._c_node, 0)
  *             self._next_element = _previousElement
  */
+  __Pyx_TraceLine(2818,0,__PYX_ERR(0, 2818, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_reversed != 0);
   if (__pyx_t_3) {
 
@@ -77299,6 +81929,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *             self._next_element = _previousElement
  *         else:
  */
+    __Pyx_TraceLine(2819,0,__PYX_ERR(0, 2819, __pyx_L1_error))
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_node->_c_node, 0);
 
     /* "lxml/etree.pyx":2820
@@ -77308,6 +81939,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         else:
  *             c_node = _findChildForwards(node._c_node, 0)
  */
+    __Pyx_TraceLine(2820,0,__PYX_ERR(0, 2820, __pyx_L1_error))
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
 
     /* "lxml/etree.pyx":2818
@@ -77327,6 +81959,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *             self._next_element = _nextElement
  *         self._matcher.cacheTags(node._doc)
  */
+  __Pyx_TraceLine(2822,0,__PYX_ERR(0, 2822, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0);
 
@@ -77337,6 +81970,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         self._matcher.cacheTags(node._doc)
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  */
+    __Pyx_TraceLine(2823,0,__PYX_ERR(0, 2823, __pyx_L1_error))
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__nextElement;
   }
   __pyx_L3:;
@@ -77348,6 +81982,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  *             c_node = self._next_element(c_node)
  */
+  __Pyx_TraceLine(2824,0,__PYX_ERR(0, 2824, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_node->_doc);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_1 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->__pyx_base._matcher, ((struct LxmlDocument *)__pyx_t_2), NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2824, __pyx_L1_error)
@@ -77360,6 +81995,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *             c_node = self._next_element(c_node)
  *         # store Python ref to next node to make sure it's kept alive
  */
+  __Pyx_TraceLine(2825,0,__PYX_ERR(0, 2825, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_4) {
@@ -77379,6 +82015,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  *         # store Python ref to next node to make sure it's kept alive
  *         self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None
  */
+    __Pyx_TraceLine(2826,0,__PYX_ERR(0, 2826, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_self->__pyx_base._next_element(__pyx_v_c_node);
   }
 
@@ -77389,6 +82026,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  * 
  * cdef class SiblingsIterator(_ElementMatchIterator):
  */
+  __Pyx_TraceLine(2828,0,__PYX_ERR(0, 2828, __pyx_L1_error))
   if (((__pyx_v_c_node != NULL) != 0)) {
     __pyx_t_5 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_5);
@@ -77425,6 +82063,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree.ElementChildIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -77520,11 +82159,13 @@ static int __pyx_pw_4lxml_5etree_16SiblingsIterator_1__cinit__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4lxml_5etree_SiblingsIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node, PyObject *__pyx_v_tag, int __pyx_v_preceding) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2836, 0, __PYX_ERR(0, 2836, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2837
  *     """
@@ -77533,6 +82174,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  *         self._initTagMatcher(tag)
  *         if preceding:
  */
+  __Pyx_TraceLine(2837,0,__PYX_ERR(0, 2837, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2837, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2838
@@ -77542,6 +82184,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  *         if preceding:
  *             self._next_element = _previousElement
  */
+  __Pyx_TraceLine(2838,0,__PYX_ERR(0, 2838, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(((struct __pyx_obj_4lxml_5etree__ElementMatchIterator *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -77553,6 +82196,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  *             self._next_element = _previousElement
  *         else:
  */
+  __Pyx_TraceLine(2839,0,__PYX_ERR(0, 2839, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_preceding != 0);
   if (__pyx_t_3) {
 
@@ -77563,6 +82207,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  *         else:
  *             self._next_element = _nextElement
  */
+    __Pyx_TraceLine(2840,0,__PYX_ERR(0, 2840, __pyx_L1_error))
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
 
     /* "lxml/etree.pyx":2839
@@ -77582,6 +82227,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  *         self._storeNext(node)
  * 
  */
+  __Pyx_TraceLine(2842,0,__PYX_ERR(0, 2842, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__nextElement;
   }
@@ -77594,6 +82240,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  * 
  * cdef class AncestorsIterator(_ElementMatchIterator):
  */
+  __Pyx_TraceLine(2843,0,__PYX_ERR(0, 2843, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(((struct __pyx_obj_4lxml_5etree__ElementMatchIterator *)__pyx_v_self), __pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2843, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2836
@@ -77612,6 +82259,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
   __Pyx_AddTraceback("lxml.etree.SiblingsIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -77696,10 +82344,12 @@ static int __pyx_pw_4lxml_5etree_17AncestorsIterator_1__cinit__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_4lxml_5etree_AncestorsIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node, PyObject *__pyx_v_tag) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2849, 0, __PYX_ERR(0, 2849, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2850
  *     """
@@ -77708,6 +82358,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
  *         self._initTagMatcher(tag)
  *         self._next_element = _parentElement
  */
+  __Pyx_TraceLine(2850,0,__PYX_ERR(0, 2850, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2850, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2851
@@ -77717,6 +82368,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
  *         self._next_element = _parentElement
  *         self._storeNext(node)
  */
+  __Pyx_TraceLine(2851,0,__PYX_ERR(0, 2851, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(((struct __pyx_obj_4lxml_5etree__ElementMatchIterator *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2851, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -77728,6 +82380,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
  *         self._storeNext(node)
  * 
  */
+  __Pyx_TraceLine(2852,0,__PYX_ERR(0, 2852, __pyx_L1_error))
   __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__parentElement;
 
   /* "lxml/etree.pyx":2853
@@ -77737,6 +82390,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
  * 
  * cdef class ElementDepthFirstIterator:
  */
+  __Pyx_TraceLine(2853,0,__PYX_ERR(0, 2853, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(((struct __pyx_obj_4lxml_5etree__ElementMatchIterator *)__pyx_v_self), __pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2853, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2849
@@ -77755,6 +82409,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree.AncestorsIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -77850,6 +82505,7 @@ static int __pyx_pw_4lxml_5etree_25ElementDepthFirstIterator_1__cinit__(PyObject
 
 static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node, PyObject *__pyx_v_tag, int __pyx_v_inclusive) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -77857,6 +82513,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2880, 0, __PYX_ERR(0, 2880, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2881
  *     cdef _MultiTagMatcher _matcher
@@ -77865,6 +82522,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *         self._top_node  = node
  *         self._next_node = node
  */
+  __Pyx_TraceLine(2881,0,__PYX_ERR(0, 2881, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2881, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2882
@@ -77874,6 +82532,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *         self._next_node = node
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  */
+  __Pyx_TraceLine(2882,0,__PYX_ERR(0, 2882, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
   __Pyx_GOTREF(__pyx_v_self->_top_node);
@@ -77887,6 +82546,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  *         self._matcher.cacheTags(node._doc)
  */
+  __Pyx_TraceLine(2883,0,__PYX_ERR(0, 2883, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
   __Pyx_GOTREF(__pyx_v_self->_next_node);
@@ -77900,6 +82560,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *         self._matcher.cacheTags(node._doc)
  *         if not inclusive or not self._matcher.matches(node._c_node):
  */
+  __Pyx_TraceLine(2884,0,__PYX_ERR(0, 2884, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2884, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_tag);
@@ -77921,6 +82582,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *         if not inclusive or not self._matcher.matches(node._c_node):
  *             # find start node (this cannot raise StopIteration, self._next_node != None)
  */
+  __Pyx_TraceLine(2885,0,__PYX_ERR(0, 2885, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_node->_doc);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_t_1 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_3), NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2885, __pyx_L1_error)
@@ -77933,6 +82595,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  *             # find start node (this cannot raise StopIteration, self._next_node != None)
  *             next(self)
  */
+  __Pyx_TraceLine(2886,0,__PYX_ERR(0, 2886, __pyx_L1_error))
   __pyx_t_5 = ((!(__pyx_v_inclusive != 0)) != 0);
   if (!__pyx_t_5) {
   } else {
@@ -77951,6 +82614,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  * 
  *     def __iter__(self):
  */
+    __Pyx_TraceLine(2888,0,__PYX_ERR(0, 2888, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyIter_Next(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2888, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -77981,6 +82645,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78008,8 +82673,10 @@ static PyObject *__pyx_pw_4lxml_5etree_25ElementDepthFirstIterator_3__iter__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2890, 0, __PYX_ERR(0, 2890, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2891
  * 
@@ -78018,6 +82685,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(str
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(2891,0,__PYX_ERR(0, 2891, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -78032,8 +82700,12 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(str
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78063,6 +82735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   xmlNode *__pyx_v_c_node;
   struct LxmlElement *__pyx_v_current_node = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -78071,6 +82744,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[0], 2893, 0, __PYX_ERR(0, 2893, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2895
  *     def __next__(self):
@@ -78079,6 +82753,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         if current_node is None:
  *             raise StopIteration
  */
+  __Pyx_TraceLine(2895,0,__PYX_ERR(0, 2895, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_next_node);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_1);
@@ -78091,6 +82766,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *             raise StopIteration
  *         c_node = current_node._c_node
  */
+  __Pyx_TraceLine(2896,0,__PYX_ERR(0, 2896, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_current_node) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -78102,6 +82778,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         c_node = current_node._c_node
  *         self._matcher.cacheTags(current_node._doc)
  */
+    __Pyx_TraceLine(2897,0,__PYX_ERR(0, 2897, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
     __PYX_ERR(0, 2897, __pyx_L1_error)
 
@@ -78121,6 +82798,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         self._matcher.cacheTags(current_node._doc)
  *         if not self._matcher._tag_count:
  */
+  __Pyx_TraceLine(2898,0,__PYX_ERR(0, 2898, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_current_node->_c_node;
   __pyx_v_c_node = __pyx_t_4;
 
@@ -78131,6 +82809,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         if not self._matcher._tag_count:
  *             # no tag name was found in the dict => not in document either
  */
+  __Pyx_TraceLine(2899,0,__PYX_ERR(0, 2899, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_current_node->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_1), NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2899, __pyx_L1_error)
@@ -78143,6 +82822,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *             # no tag name was found in the dict => not in document either
  *             # try to match by node type
  */
+  __Pyx_TraceLine(2900,0,__PYX_ERR(0, 2900, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_self->_matcher->_tag_count != 0)) != 0);
   if (__pyx_t_3) {
 
@@ -78153,6 +82833,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         else:
  *             c_node = self._nextNodeMatchTag(c_node)
  */
+    __Pyx_TraceLine(2903,0,__PYX_ERR(0, 2903, __pyx_L1_error))
     __pyx_v_c_node = __pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(__pyx_v_self, __pyx_v_c_node);
 
     /* "lxml/etree.pyx":2900
@@ -78172,6 +82853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         if c_node is NULL:
  *             self._next_node = None
  */
+  __Pyx_TraceLine(2905,0,__PYX_ERR(0, 2905, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_node = __pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag(__pyx_v_self, __pyx_v_c_node);
   }
@@ -78184,6 +82866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *             self._next_node = None
  *         else:
  */
+  __Pyx_TraceLine(2906,0,__PYX_ERR(0, 2906, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -78194,6 +82877,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         else:
  *             self._next_node = _elementFactory(current_node._doc, c_node)
  */
+    __Pyx_TraceLine(2907,0,__PYX_ERR(0, 2907, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_next_node);
@@ -78217,6 +82901,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         return current_node
  * 
  */
+  __Pyx_TraceLine(2909,0,__PYX_ERR(0, 2909, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = ((PyObject *)__pyx_v_current_node->_doc);
     __Pyx_INCREF(__pyx_t_1);
@@ -78238,6 +82923,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(2910,0,__PYX_ERR(0, 2910, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_current_node));
   __pyx_r = ((PyObject *)__pyx_v_current_node);
@@ -78260,6 +82946,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_current_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78275,10 +82962,12 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
 static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self, xmlNode *__pyx_v_c_node) {
   int __pyx_v_node_types;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_nextNodeAnyTag", 0);
+  __Pyx_TraceCall("_nextNodeAnyTag", __pyx_f[0], 2913, 0, __PYX_ERR(0, 2913, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2914
  *     @cython.final
@@ -78287,6 +82976,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *         if not node_types:
  *             return NULL
  */
+  __Pyx_TraceLine(2914,0,__PYX_ERR(0, 2914, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_matcher->_node_types;
   __pyx_v_node_types = __pyx_t_1;
 
@@ -78297,6 +82987,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *             return NULL
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  */
+  __Pyx_TraceLine(2915,0,__PYX_ERR(0, 2915, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_node_types != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -78307,6 +82998,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if node_types & (1 << c_node.type):
  */
+    __Pyx_TraceLine(2916,0,__PYX_ERR(0, 2916, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -78326,6 +83018,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *         if node_types & (1 << c_node.type):
  *             return c_node
  */
+  __Pyx_TraceLine(2917,0,__PYX_ERR(0, 2917, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
 
   /* "lxml/etree.pyx":2918
@@ -78335,6 +83028,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+  __Pyx_TraceLine(2918,0,__PYX_ERR(0, 2918, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_node_types & (1 << __pyx_v_c_node->type)) != 0);
   if (__pyx_t_2) {
 
@@ -78345,6 +83039,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *         return NULL
  */
+    __Pyx_TraceLine(2919,0,__PYX_ERR(0, 2919, __pyx_L1_error))
     __pyx_r = __pyx_v_c_node;
     goto __pyx_L0;
 
@@ -78364,6 +83059,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  *         return NULL
  * 
  */
+  __Pyx_TraceLine(2920,0,__PYX_ERR(0, 2920, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "lxml/etree.pyx":2921
@@ -78373,6 +83069,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(2921,0,__PYX_ERR(0, 2921, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -78385,7 +83082,11 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.ElementDepthFirstIterator._nextNodeAnyTag", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78400,9 +83101,11 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
 
 static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self, xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_nextNodeMatchTag", 0);
+  __Pyx_TraceCall("_nextNodeMatchTag", __pyx_f[0], 2924, 0, __PYX_ERR(0, 2924, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2925
  *     @cython.final
@@ -78411,6 +83114,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  *         if self._matcher.matches(c_node):
  *             return c_node
  */
+  __Pyx_TraceLine(2925,0,__PYX_ERR(0, 2925, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
 
   /* "lxml/etree.pyx":2926
@@ -78420,6 +83124,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+  __Pyx_TraceLine(2926,0,__PYX_ERR(0, 2926, __pyx_L1_error))
   __pyx_t_1 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(__pyx_v_self->_matcher, __pyx_v_c_node) != 0);
   if (__pyx_t_1) {
 
@@ -78430,6 +83135,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *         return NULL
  */
+    __Pyx_TraceLine(2927,0,__PYX_ERR(0, 2927, __pyx_L1_error))
     __pyx_r = __pyx_v_c_node;
     goto __pyx_L0;
 
@@ -78449,6 +83155,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  *         return NULL
  * 
  */
+  __Pyx_TraceLine(2928,0,__PYX_ERR(0, 2928, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "lxml/etree.pyx":2929
@@ -78458,6 +83165,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  * 
  * cdef class ElementTextIterator:
  */
+  __Pyx_TraceLine(2929,0,__PYX_ERR(0, 2929, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -78470,7 +83178,11 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.ElementDepthFirstIterator._nextNodeMatchTag", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78567,6 +83279,7 @@ static int __pyx_pw_4lxml_5etree_19ElementTextIterator_1__cinit__(PyObject *__py
 static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_obj_4lxml_5etree_ElementTextIterator *__pyx_v_self, struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_tag, int __pyx_v_with_tail) {
   PyObject *__pyx_v_events = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -78574,6 +83287,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 2943, 0, __PYX_ERR(0, 2943, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2944
  *     cdef _Element _start_element
@@ -78582,6 +83296,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  *         if with_tail:
  *             events = (u"start", u"end")
  */
+  __Pyx_TraceLine(2944,0,__PYX_ERR(0, 2944, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2944, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2945
@@ -78591,6 +83306,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  *             events = (u"start", u"end")
  *         else:
  */
+  __Pyx_TraceLine(2945,0,__PYX_ERR(0, 2945, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_with_tail != 0);
   if (__pyx_t_2) {
 
@@ -78601,8 +83317,9 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  *         else:
  *             events = (u"start",)
  */
-    __Pyx_INCREF(__pyx_tuple__55);
-    __pyx_v_events = __pyx_tuple__55;
+    __Pyx_TraceLine(2946,0,__PYX_ERR(0, 2946, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_tuple__162);
+    __pyx_v_events = __pyx_tuple__162;
 
     /* "lxml/etree.pyx":2945
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):
@@ -78621,9 +83338,10 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  *         self._start_element = element
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  */
+  __Pyx_TraceLine(2948,0,__PYX_ERR(0, 2948, __pyx_L1_error))
   /*else*/ {
-    __Pyx_INCREF(__pyx_tuple__56);
-    __pyx_v_events = __pyx_tuple__56;
+    __Pyx_INCREF(__pyx_tuple__163);
+    __pyx_v_events = __pyx_tuple__163;
   }
   __pyx_L3:;
 
@@ -78634,6 +83352,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  * 
  */
+  __Pyx_TraceLine(2949,0,__PYX_ERR(0, 2949, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
   __Pyx_GOTREF(__pyx_v_self->_start_element);
@@ -78647,6 +83366,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(2950,0,__PYX_ERR(0, 2950, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2950, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
@@ -78688,6 +83408,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_events);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78715,8 +83436,10 @@ static PyObject *__pyx_pw_4lxml_5etree_19ElementTextIterator_3__iter__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __pyx_obj_4lxml_5etree_ElementTextIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 2952, 0, __PYX_ERR(0, 2952, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2953
  * 
@@ -78725,6 +83448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(2953,0,__PYX_ERR(0, 2953, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -78739,8 +83463,12 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementTextIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78771,6 +83499,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_v_event = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -78780,6 +83509,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   PyObject *__pyx_t_6 = NULL;
   PyObject *(*__pyx_t_7)(PyObject *);
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[0], 2955, 0, __PYX_ERR(0, 2955, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2957
  *     def __next__(self):
@@ -78788,6 +83518,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *         while result is None:
  *             event, element = self._nextEvent() # raises StopIteration
  */
+  __Pyx_TraceLine(2957,0,__PYX_ERR(0, 2957, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_result = Py_None;
 
@@ -78798,6 +83529,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *             event, element = self._nextEvent() # raises StopIteration
  *             if event == u"start":
  */
+  __Pyx_TraceLine(2958,0,__PYX_ERR(0, 2958, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (__pyx_v_result == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
@@ -78810,6 +83542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *             if event == u"start":
  *                 result = element.text
  */
+    __Pyx_TraceLine(2959,0,__PYX_ERR(0, 2959, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_self->_nextEvent);
     __pyx_t_4 = __pyx_v_self->_nextEvent; __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -78888,6 +83621,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *                 result = element.text
  *             elif element is not self._start_element:
  */
+    __Pyx_TraceLine(2960,0,__PYX_ERR(0, 2960, __pyx_L1_error))
     __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_event, __pyx_n_u_start, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2960, __pyx_L1_error)
     if (__pyx_t_2) {
 
@@ -78898,6 +83632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *             elif element is not self._start_element:
  *                 result = element.tail
  */
+      __Pyx_TraceLine(2961,0,__PYX_ERR(0, 2961, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2961, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
@@ -78920,6 +83655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *                 result = element.tail
  *         return result
  */
+    __Pyx_TraceLine(2962,0,__PYX_ERR(0, 2962, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_element != __pyx_v_self->_start_element);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -78931,6 +83667,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  *         return result
  * 
  */
+      __Pyx_TraceLine(2963,0,__PYX_ERR(0, 2963, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
@@ -78954,6 +83691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
  * 
  * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
  */
+  __Pyx_TraceLine(2964,0,__PYX_ERR(0, 2964, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -78980,6 +83718,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XDECREF(__pyx_v_event);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -78995,8 +83734,10 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
 static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObject *__pyx_v_name_utf) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createElement", 0);
+  __Pyx_TraceCall("_createElement", __pyx_f[0], 2966, 0, __PYX_ERR(0, 2966, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2968
  * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
@@ -79005,6 +83746,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
  *     return c_node
  * 
  */
+  __Pyx_TraceLine(2968,0,__PYX_ERR(0, 2968, __pyx_L1_error))
   __pyx_v_c_node = xmlNewDocNode(__pyx_v_c_doc, NULL, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), NULL);
 
   /* "lxml/etree.pyx":2969
@@ -79014,6 +83756,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
  * 
  * cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):
  */
+  __Pyx_TraceLine(2969,0,__PYX_ERR(0, 2969, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -79026,7 +83769,11 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._createElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79042,8 +83789,10 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
 static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const xmlChar *__pyx_v_text) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createComment", 0);
+  __Pyx_TraceCall("_createComment", __pyx_f[0], 2971, 0, __PYX_ERR(0, 2971, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2973
  * cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):
@@ -79052,6 +83801,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
  *     return c_node
  * 
  */
+  __Pyx_TraceLine(2973,0,__PYX_ERR(0, 2973, __pyx_L1_error))
   __pyx_v_c_node = xmlNewDocComment(__pyx_v_c_doc, __pyx_v_text);
 
   /* "lxml/etree.pyx":2974
@@ -79061,6 +83811,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
  * 
  * cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):
  */
+  __Pyx_TraceLine(2974,0,__PYX_ERR(0, 2974, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -79073,7 +83824,11 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._createComment", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79089,8 +83844,10 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
 static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlChar *__pyx_v_target, const xmlChar *__pyx_v_text) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createPI", 0);
+  __Pyx_TraceCall("_createPI", __pyx_f[0], 2976, 0, __PYX_ERR(0, 2976, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2978
  * cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):
@@ -79099,6 +83856,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
  *     return c_node
  * 
  */
+  __Pyx_TraceLine(2978,0,__PYX_ERR(0, 2978, __pyx_L1_error))
   __pyx_v_c_node = xmlNewDocPI(__pyx_v_c_doc, __pyx_v_target, __pyx_v_text);
 
   /* "lxml/etree.pyx":2979
@@ -79108,6 +83866,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
  * 
  * cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):
  */
+  __Pyx_TraceLine(2979,0,__PYX_ERR(0, 2979, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -79120,7 +83879,11 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._createPI", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79136,8 +83899,10 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
 static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const xmlChar *__pyx_v_name) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createEntity", 0);
+  __Pyx_TraceCall("_createEntity", __pyx_f[0], 2981, 0, __PYX_ERR(0, 2981, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2983
  * cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):
@@ -79146,6 +83911,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
  *     return c_node
  * 
  */
+  __Pyx_TraceLine(2983,0,__PYX_ERR(0, 2983, __pyx_L1_error))
   __pyx_v_c_node = xmlNewReference(__pyx_v_c_doc, __pyx_v_name);
 
   /* "lxml/etree.pyx":2984
@@ -79155,6 +83921,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
  * 
  * # module-level API for ElementTree
  */
+  __Pyx_TraceLine(2984,0,__PYX_ERR(0, 2984, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -79167,7 +83934,11 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._createEntity", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79267,9 +84038,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7Element(PyObject *__pyx_self, PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v__tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v__extra) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__164)
   __Pyx_RefNannySetupContext("Element", 0);
+  __Pyx_TraceCall("Element", __pyx_f[0], 2988, 0, __PYX_ERR(0, 2988, __pyx_L1_error));
 
   /* "lxml/etree.pyx":2998
  *     create an Element within a specific document or parser context.
@@ -79278,6 +84052,7 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
  *                         attrib, nsmap, _extra)
  * 
  */
+  __Pyx_TraceLine(2998,0,__PYX_ERR(0, 2998, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "lxml/etree.pyx":2999
@@ -79287,6 +84062,7 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
  * 
  * 
  */
+  __Pyx_TraceLine(2999,0,__PYX_ERR(0, 2999, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2998, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
@@ -79308,6 +84084,7 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79383,6 +84160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   xmlNode *__pyx_v_c_node;
   xmlDoc *__pyx_v_c_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -79390,7 +84168,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   xmlDoc *__pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__165)
   __Pyx_RefNannySetupContext("Comment", 0);
+  __Pyx_TraceCall("Comment", __pyx_f[0], 3002, 0, __PYX_ERR(0, 3002, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
 
   /* "lxml/etree.pyx":3012
@@ -79400,6 +84180,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *         text = b''
  *     else:
  */
+  __Pyx_TraceLine(3012,0,__PYX_ERR(0, 3012, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_text == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -79411,8 +84192,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *     else:
  *         text = _utf8(text)
  */
-    __Pyx_INCREF(__pyx_kp_b__16);
-    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__16);
+    __Pyx_TraceLine(3013,0,__PYX_ERR(0, 3013, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_b__23);
+    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__23);
 
     /* "lxml/etree.pyx":3012
  *     cdef xmlDoc*   c_doc
@@ -79431,6 +84213,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *         if b'--' in text or text.endswith(b'-'):
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  */
+  __Pyx_TraceLine(3015,0,__PYX_ERR(0, 3015, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3015, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -79444,7 +84227,8 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  * 
  */
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__57, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3016, __pyx_L1_error)
+    __Pyx_TraceLine(3016,0,__PYX_ERR(0, 3016, __pyx_L1_error))
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__166, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3016, __pyx_L1_error)
     __pyx_t_4 = (__pyx_t_1 != 0);
     if (!__pyx_t_4) {
     } else {
@@ -79453,7 +84237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
     }
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3016, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3016, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__167, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3016, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3016, __pyx_L1_error)
@@ -79469,7 +84253,8 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  * 
  *     c_doc = _newXMLDoc()
  */
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3017, __pyx_L1_error)
+      __Pyx_TraceLine(3017,0,__PYX_ERR(0, 3017, __pyx_L1_error))
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__168, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3017, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -79493,6 +84278,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createComment(c_doc, _xcstr(text))
  */
+  __Pyx_TraceLine(3019,0,__PYX_ERR(0, 3019, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3019, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_6;
 
@@ -79503,6 +84289,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *     c_node = _createComment(c_doc, _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
+  __Pyx_TraceLine(3020,0,__PYX_ERR(0, 3020, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3020, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_5);
@@ -79515,6 +84302,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)
  */
+  __Pyx_TraceLine(3021,0,__PYX_ERR(0, 3021, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__createComment(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
 
   /* "lxml/etree.pyx":3022
@@ -79524,6 +84312,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *     return _elementFactory(doc, c_node)
  * 
  */
+  __Pyx_TraceLine(3022,0,__PYX_ERR(0, 3022, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
   /* "lxml/etree.pyx":3023
@@ -79533,6 +84322,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  * 
  * 
  */
+  __Pyx_TraceLine(3023,0,__PYX_ERR(0, 3023, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3023, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -79558,6 +84348,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79642,6 +84433,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   xmlNode *__pyx_v_c_node;
   xmlDoc *__pyx_v_c_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -79652,7 +84444,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   Py_UCS4 __pyx_t_7;
   int __pyx_t_8;
   xmlDoc *__pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__169)
   __Pyx_RefNannySetupContext("ProcessingInstruction", 0);
+  __Pyx_TraceCall("ProcessingInstruction", __pyx_f[0], 3026, 0, __PYX_ERR(0, 3026, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_target);
   __Pyx_INCREF(__pyx_v_text);
 
@@ -79663,6 +84457,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     _tagValidOrRaise(target)
  *     if target.lower() == b'xml':
  */
+  __Pyx_TraceLine(3036,0,__PYX_ERR(0, 3036, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3036, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_target, __pyx_t_1);
@@ -79675,6 +84470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     if target.lower() == b'xml':
  *         raise ValueError, f"Invalid PI name '{target}'"
  */
+  __Pyx_TraceLine(3037,0,__PYX_ERR(0, 3037, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3037, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3038
@@ -79684,6 +84480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *         raise ValueError, f"Invalid PI name '{target}'"
  * 
  */
+  __Pyx_TraceLine(3038,0,__PYX_ERR(0, 3038, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -79715,6 +84512,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  * 
  *     if text is None:
  */
+    __Pyx_TraceLine(3039,0,__PYX_ERR(0, 3039, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3039, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_6 = 0;
@@ -79730,10 +84528,10 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_6 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
     __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3039, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -79757,6 +84555,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *         text = b''
  *     else:
  */
+  __Pyx_TraceLine(3041,0,__PYX_ERR(0, 3041, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_text == Py_None);
   __pyx_t_8 = (__pyx_t_5 != 0);
   if (__pyx_t_8) {
@@ -79768,8 +84567,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     else:
  *         text = _utf8(text)
  */
-    __Pyx_INCREF(__pyx_kp_b__16);
-    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__16);
+    __Pyx_TraceLine(3042,0,__PYX_ERR(0, 3042, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_b__23);
+    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__23);
 
     /* "lxml/etree.pyx":3041
  *         raise ValueError, f"Invalid PI name '{target}'"
@@ -79788,6 +84588,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *         if b'?>' in text:
  *             raise ValueError, "PI text must not contain '?>'"
  */
+  __Pyx_TraceLine(3044,0,__PYX_ERR(0, 3044, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3044, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -79801,7 +84602,8 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *             raise ValueError, "PI text must not contain '?>'"
  * 
  */
-    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__60, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3045, __pyx_L1_error)
+    __Pyx_TraceLine(3045,0,__PYX_ERR(0, 3045, __pyx_L1_error))
+    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__170, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3045, __pyx_L1_error)
     __pyx_t_5 = (__pyx_t_8 != 0);
     if (unlikely(__pyx_t_5)) {
 
@@ -79812,6 +84614,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  * 
  *     c_doc = _newXMLDoc()
  */
+      __Pyx_TraceLine(3046,0,__PYX_ERR(0, 3046, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_PI_text_must_not_contain, 0, 0);
       __PYX_ERR(0, 3046, __pyx_L1_error)
 
@@ -79833,6 +84636,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  */
+  __Pyx_TraceLine(3048,0,__PYX_ERR(0, 3048, __pyx_L1_error))
   __pyx_t_9 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_9 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3048, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_9;
 
@@ -79843,6 +84647,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
+  __Pyx_TraceLine(3049,0,__PYX_ERR(0, 3049, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3049, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -79855,6 +84660,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)
  */
+  __Pyx_TraceLine(3050,0,__PYX_ERR(0, 3050, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__createPI(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_target), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
 
   /* "lxml/etree.pyx":3051
@@ -79864,6 +84670,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     return _elementFactory(doc, c_node)
  * 
  */
+  __Pyx_TraceLine(3051,0,__PYX_ERR(0, 3051, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
   /* "lxml/etree.pyx":3052
@@ -79873,6 +84680,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  * 
  * PI = ProcessingInstruction
  */
+  __Pyx_TraceLine(3052,0,__PYX_ERR(0, 3052, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -79900,6 +84708,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   __Pyx_XDECREF(__pyx_v_target);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -79965,11 +84774,13 @@ static int __pyx_pw_4lxml_5etree_5CDATA_1__cinit__(PyObject *__pyx_v_self, PyObj
 static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_CDATA *__pyx_v_self, PyObject *__pyx_v_data) {
   PyObject *__pyx_v__utf8_data = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 3072, 0, __PYX_ERR(0, 3072, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3073
  *     cdef bytes _utf8_data
@@ -79978,6 +84789,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  *         if b']]>' in _utf8_data:
  *             raise ValueError, "']]>' not allowed inside CDATA"
  */
+  __Pyx_TraceLine(3073,0,__PYX_ERR(0, 3073, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3073, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v__utf8_data = ((PyObject*)__pyx_t_1);
@@ -79990,7 +84802,8 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  *             raise ValueError, "']]>' not allowed inside CDATA"
  *         self._utf8_data = _utf8_data
  */
-  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__61, __pyx_v__utf8_data, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3074, __pyx_L1_error)
+  __Pyx_TraceLine(3074,0,__PYX_ERR(0, 3074, __pyx_L1_error))
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__171, __pyx_v__utf8_data, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3074, __pyx_L1_error)
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -80001,6 +84814,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  *         self._utf8_data = _utf8_data
  * 
  */
+    __Pyx_TraceLine(3075,0,__PYX_ERR(0, 3075, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_not_allowed_inside_CDATA, 0, 0);
     __PYX_ERR(0, 3075, __pyx_L1_error)
 
@@ -80020,6 +84834,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  * 
  * 
  */
+  __Pyx_TraceLine(3076,0,__PYX_ERR(0, 3076, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v__utf8_data);
   __Pyx_GIVEREF(__pyx_v__utf8_data);
   __Pyx_GOTREF(__pyx_v_self->_utf8_data);
@@ -80043,6 +84858,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v__utf8_data);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -80077,6 +84893,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   PyObject *__pyx_v_name_utf = NULL;
   const xmlChar *__pyx_v_c_name;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -80084,7 +84901,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   Py_UCS4 __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   xmlDoc *__pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__172)
   __Pyx_RefNannySetupContext("Entity", 0);
+  __Pyx_TraceCall("Entity", __pyx_f[0], 3079, 0, __PYX_ERR(0, 3079, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3091
  *     cdef xmlNode*  c_node
@@ -80093,6 +84912,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':
  */
+  __Pyx_TraceLine(3091,0,__PYX_ERR(0, 3091, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3091, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_name_utf = ((PyObject*)__pyx_t_1);
@@ -80105,6 +84925,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     if c_name[0] == c'#':
  *         if not _characterReferenceIsValid(c_name + 1):
  */
+  __Pyx_TraceLine(3092,0,__PYX_ERR(0, 3092, __pyx_L1_error))
   __pyx_v_c_name = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf);
 
   /* "lxml/etree.pyx":3093
@@ -80114,6 +84935,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *         if not _characterReferenceIsValid(c_name + 1):
  *             raise ValueError, f"Invalid character reference: '{name}'"
  */
+  __Pyx_TraceLine(3093,0,__PYX_ERR(0, 3093, __pyx_L1_error))
   __pyx_t_2 = (((__pyx_v_c_name[0]) == '#') != 0);
   if (__pyx_t_2) {
 
@@ -80124,6 +84946,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *             raise ValueError, f"Invalid character reference: '{name}'"
  *     elif not _xmlNameIsValid(c_name):
  */
+    __Pyx_TraceLine(3094,0,__PYX_ERR(0, 3094, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__characterReferenceIsValid((__pyx_v_c_name + 1)) != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -80134,6 +84957,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     elif not _xmlNameIsValid(c_name):
  *         raise ValueError, f"Invalid entity reference: '{name}'"
  */
+      __Pyx_TraceLine(3095,0,__PYX_ERR(0, 3095, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3095, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_3 = 0;
@@ -80149,10 +84973,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
       __Pyx_GIVEREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
       __pyx_t_5 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_3 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
       __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3095, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -80186,6 +85010,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *         raise ValueError, f"Invalid entity reference: '{name}'"
  *     c_doc = _newXMLDoc()
  */
+  __Pyx_TraceLine(3096,0,__PYX_ERR(0, 3096, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__xmlNameIsValid(__pyx_v_c_name) != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -80196,6 +85021,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)
  */
+    __Pyx_TraceLine(3097,0,__PYX_ERR(0, 3097, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3097, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_3 = 0;
@@ -80211,10 +85037,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_3 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__60);
     __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3097, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -80239,6 +85065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createEntity(c_doc, c_name)
  */
+  __Pyx_TraceLine(3098,0,__PYX_ERR(0, 3098, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3098, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_6;
 
@@ -80249,6 +85076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     c_node = _createEntity(c_doc, c_name)
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
+  __Pyx_TraceLine(3099,0,__PYX_ERR(0, 3099, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3099, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -80261,6 +85089,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)
  */
+  __Pyx_TraceLine(3100,0,__PYX_ERR(0, 3100, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__createEntity(__pyx_v_c_doc, __pyx_v_c_name);
 
   /* "lxml/etree.pyx":3101
@@ -80270,6 +85099,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  *     return _elementFactory(doc, c_node)
  * 
  */
+  __Pyx_TraceLine(3101,0,__PYX_ERR(0, 3101, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
   /* "lxml/etree.pyx":3102
@@ -80279,6 +85109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  * 
  * 
  */
+  __Pyx_TraceLine(3102,0,__PYX_ERR(0, 3102, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3102, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -80304,6 +85135,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -80435,9 +85267,12 @@ static PyObject *__pyx_pw_4lxml_5etree_15SubElement(PyObject *__pyx_self, PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__pyx_self, struct LxmlElement *__pyx_v__parent, PyObject *__pyx_v__tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v__extra) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__173)
   __Pyx_RefNannySetupContext("SubElement", 0);
+  __Pyx_TraceCall("SubElement", __pyx_f[0], 3105, 0, __PYX_ERR(0, 3105, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3112
  *     appends it to an existing element.
@@ -80446,6 +85281,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__py
  * 
  * 
  */
+  __Pyx_TraceLine(3112,0,__PYX_ERR(0, 3112, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v__parent, __pyx_v__tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -80468,6 +85304,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -80562,6 +85399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -80574,7 +85412,9 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
   xmlDoc *__pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__174)
   __Pyx_RefNannySetupContext("ElementTree", 0);
+  __Pyx_TraceCall("ElementTree", __pyx_f[0], 3115, 0, __PYX_ERR(0, 3115, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3127
  *     cdef _Document doc
@@ -80583,6 +85423,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *         doc  = element._doc
  *     elif file is not None:
  */
+  __Pyx_TraceLine(3127,0,__PYX_ERR(0, 3127, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -80594,6 +85435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *     elif file is not None:
  *         try:
  */
+    __Pyx_TraceLine(3128,0,__PYX_ERR(0, 3128, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_element->_doc);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -80616,6 +85458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *         try:
  *             doc = _parseDocument(file, parser, None)
  */
+  __Pyx_TraceLine(3129,0,__PYX_ERR(0, 3129, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_file != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -80627,6 +85470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *             doc = _parseDocument(file, parser, None)
  *         except _TargetParserResult as result_container:
  */
+    __Pyx_TraceLine(3130,0,__PYX_ERR(0, 3130, __pyx_L4_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -80643,6 +85487,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *         except _TargetParserResult as result_container:
  *             return result_container.result
  */
+        __Pyx_TraceLine(3131,0,__PYX_ERR(0, 3131, __pyx_L4_error))
         __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, __pyx_v_parser, Py_None)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3131, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -80670,6 +85515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *             return result_container.result
  *     else:
  */
+      __Pyx_TraceLine(3132,0,__PYX_ERR(0, 3132, __pyx_L6_except_error))
       __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3132, __pyx_L6_except_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -80693,6 +85539,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *     else:
  *         c_doc = _newXMLDoc()
  */
+        __Pyx_TraceLine(3133,0,__PYX_ERR(0, 3133, __pyx_L6_except_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3133, __pyx_L6_except_error)
         __Pyx_GOTREF(__pyx_t_9);
@@ -80744,6 +85591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *         doc = _documentFactory(c_doc, parser)
  * 
  */
+  __Pyx_TraceLine(3135,0,__PYX_ERR(0, 3135, __pyx_L1_error))
   /*else*/ {
     __pyx_t_11 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_11 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3135, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_11;
@@ -80755,6 +85603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  * 
  *     return _elementTreeFactory(doc, element)
  */
+    __Pyx_TraceLine(3136,0,__PYX_ERR(0, 3136, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -80769,6 +85618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  * 
  * 
  */
+  __Pyx_TraceLine(3138,0,__PYX_ERR(0, 3138, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, __pyx_v_element)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -80796,6 +85646,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -80892,6 +85743,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -80903,7 +85755,9 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__175)
   __Pyx_RefNannySetupContext("HTML", 0);
+  __Pyx_TraceCall("HTML", __pyx_f[0], 3141, 0, __PYX_ERR(0, 3141, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
   /* "lxml/etree.pyx":3156
@@ -80913,6 +85767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, HTMLParser):
  */
+  __Pyx_TraceLine(3156,0,__PYX_ERR(0, 3156, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -80924,6 +85779,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER
  */
+    __Pyx_TraceLine(3157,0,__PYX_ERR(0, 3157, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3157, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
@@ -80936,6 +85792,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *             parser = __DEFAULT_HTML_PARSER
  *     try:
  */
+    __Pyx_TraceLine(3158,0,__PYX_ERR(0, 3158, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree_HTMLParser); 
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
@@ -80947,6 +85804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)
  */
+      __Pyx_TraceLine(3159,0,__PYX_ERR(0, 3159, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
       __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
 
@@ -80975,6 +85833,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  */
+  __Pyx_TraceLine(3160,0,__PYX_ERR(0, 3160, __pyx_L5_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -80991,6 +85850,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
+      __Pyx_TraceLine(3161,0,__PYX_ERR(0, 3161, __pyx_L5_error))
       __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3161, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -81003,6 +85863,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *     except _TargetParserResult as result_container:
  *         return result_container.result
  */
+      __Pyx_TraceLine(3162,0,__PYX_ERR(0, 3162, __pyx_L5_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3162, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -81028,6 +85889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         return result_container.result
  * 
  */
+    __Pyx_TraceLine(3163,0,__PYX_ERR(0, 3163, __pyx_L7_except_error))
     __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
     __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3163, __pyx_L7_except_error)
     __Pyx_GOTREF(__pyx_t_9);
@@ -81051,6 +85913,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  * 
  * 
  */
+      __Pyx_TraceLine(3164,0,__PYX_ERR(0, 3164, __pyx_L7_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3164, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -81111,6 +85974,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -81207,6 +86071,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -81218,7 +86083,9 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__176)
   __Pyx_RefNannySetupContext("XML", 0);
+  __Pyx_TraceCall("XML", __pyx_f[0], 3167, 0, __PYX_ERR(0, 3167, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
   /* "lxml/etree.pyx":3187
@@ -81228,6 +86095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, XMLParser):
  */
+  __Pyx_TraceLine(3187,0,__PYX_ERR(0, 3187, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -81239,6 +86107,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER
  */
+    __Pyx_TraceLine(3188,0,__PYX_ERR(0, 3188, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3188, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
@@ -81251,6 +86120,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *             parser = __DEFAULT_XML_PARSER
  *     try:
  */
+    __Pyx_TraceLine(3189,0,__PYX_ERR(0, 3189, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree_XMLParser); 
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
@@ -81262,6 +86132,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)
  */
+      __Pyx_TraceLine(3190,0,__PYX_ERR(0, 3190, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
       __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
 
@@ -81290,6 +86161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  */
+  __Pyx_TraceLine(3191,0,__PYX_ERR(0, 3191, __pyx_L5_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -81306,6 +86178,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
+      __Pyx_TraceLine(3192,0,__PYX_ERR(0, 3192, __pyx_L5_error))
       __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -81318,6 +86191,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *     except _TargetParserResult as result_container:
  *         return result_container.result
  */
+      __Pyx_TraceLine(3193,0,__PYX_ERR(0, 3193, __pyx_L5_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3193, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -81343,6 +86217,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         return result_container.result
  * 
  */
+    __Pyx_TraceLine(3194,0,__PYX_ERR(0, 3194, __pyx_L7_except_error))
     __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
     __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3194, __pyx_L7_except_error)
     __Pyx_GOTREF(__pyx_t_9);
@@ -81366,6 +86241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  * 
  * 
  */
+      __Pyx_TraceLine(3195,0,__PYX_ERR(0, 3195, __pyx_L7_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3195, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -81426,6 +86302,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -81522,6 +86399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -81531,7 +86409,9 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
+  __Pyx_TraceFrameInit(__pyx_codeobj__177)
   __Pyx_RefNannySetupContext("fromstring", 0);
+  __Pyx_TraceCall("fromstring", __pyx_f[0], 3198, 0, __PYX_ERR(0, 3198, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3212
  *     """
@@ -81540,6 +86420,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  */
+  __Pyx_TraceLine(3212,0,__PYX_ERR(0, 3212, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -81556,6 +86437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
+      __Pyx_TraceLine(3213,0,__PYX_ERR(0, 3213, __pyx_L3_error))
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3213, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
@@ -81568,6 +86450,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  *     except _TargetParserResult as result_container:
  *         return result_container.result
  */
+      __Pyx_TraceLine(3214,0,__PYX_ERR(0, 3214, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3214, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -81593,6 +86476,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  *         return result_container.result
  * 
  */
+    __Pyx_TraceLine(3215,0,__PYX_ERR(0, 3215, __pyx_L5_except_error))
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3215, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_7);
@@ -81616,6 +86500,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  * 
  * 
  */
+      __Pyx_TraceLine(3216,0,__PYX_ERR(0, 3216, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3216, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_7);
@@ -81675,6 +86560,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -81763,6 +86649,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   PyObject *__pyx_v_feed = NULL;
   PyObject *__pyx_v_data = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -81774,7 +86661,9 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__178)
   __Pyx_RefNannySetupContext("fromstringlist", 0);
+  __Pyx_TraceCall("fromstringlist", __pyx_f[0], 3219, 0, __PYX_ERR(0, 3219, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
   /* "lxml/etree.pyx":3229
@@ -81784,6 +86673,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *         raise ValueError("passing a single string into fromstringlist() is not"
  *                          " efficient, use fromstring() instead")
  */
+  __Pyx_TraceLine(3229,0,__PYX_ERR(0, 3229, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v_strings); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -81805,7 +86695,8 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *                          " efficient, use fromstring() instead")
  *     if parser is None:
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3230, __pyx_L1_error)
+    __Pyx_TraceLine(3230,0,__PYX_ERR(0, 3230, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__179, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3230, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -81827,6 +86718,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     feed = parser.feed
  */
+  __Pyx_TraceLine(3232,0,__PYX_ERR(0, 3232, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -81838,6 +86730,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *     feed = parser.feed
  *     for data in strings:
  */
+    __Pyx_TraceLine(3233,0,__PYX_ERR(0, 3233, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3233, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_4));
@@ -81859,6 +86752,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *     for data in strings:
  *         feed(data)
  */
+  __Pyx_TraceLine(3234,0,__PYX_ERR(0, 3234, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_feed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3234, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_feed = __pyx_t_4;
@@ -81871,6 +86765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *         feed(data)
  *     return parser.close()
  */
+  __Pyx_TraceLine(3235,0,__PYX_ERR(0, 3235, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_strings)) || PyTuple_CheckExact(__pyx_v_strings)) {
     __pyx_t_4 = __pyx_v_strings; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
@@ -81920,6 +86815,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *     return parser.close()
  * 
  */
+    __Pyx_TraceLine(3236,0,__PYX_ERR(0, 3236, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_feed);
     __pyx_t_8 = __pyx_v_feed; __pyx_t_9 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
@@ -81973,6 +86869,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  *         feed(data)
  *     return parser.close()
  */
+    __Pyx_TraceLine(3235,0,__PYX_ERR(0, 3235, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -81983,6 +86880,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  * 
  * 
  */
+  __Pyx_TraceLine(3237,0,__PYX_ERR(0, 3237, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3237, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
@@ -82030,6 +86928,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   __Pyx_XDECREF(__pyx_v_data);
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -82059,11 +86958,14 @@ static PyObject *__pyx_pw_4lxml_5etree_27iselement(PyObject *__pyx_self, PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__180)
   __Pyx_RefNannySetupContext("iselement", 0);
+  __Pyx_TraceCall("iselement", __pyx_f[0], 3240, 0, __PYX_ERR(0, 3240, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3245
  *     Checks if an object appears to be a valid element object.
@@ -82072,6 +86974,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
  * 
  * 
  */
+  __Pyx_TraceLine(3245,0,__PYX_ERR(0, 3245, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
   if (__pyx_t_2) {
@@ -82108,6 +87011,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -82196,13 +87100,16 @@ static PyObject *__pyx_pw_4lxml_5etree_29dump(PyObject *__pyx_self, PyObject *__
 static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self, struct LxmlElement *__pyx_v_elem, int __pyx_v_pretty_print, PyObject *__pyx_v_with_tail) {
   PyObject *__pyx_v_xml = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__181)
   __Pyx_RefNannySetupContext("dump", 0);
+  __Pyx_TraceCall("dump", __pyx_f[0], 3248, 0, __PYX_ERR(0, 3248, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3254
  *     should be used for debugging only.
@@ -82211,6 +87118,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:
  */
+  __Pyx_TraceLine(3254,0,__PYX_ERR(0, 3254, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3254, __pyx_L1_error)
@@ -82233,6 +87141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  *     if not pretty_print:
  *         xml += '\n'
  */
+  __Pyx_TraceLine(3255,0,__PYX_ERR(0, 3255, __pyx_L1_error))
   if ((IS_PYTHON2 != 0)) {
     __Pyx_INCREF(Py_None);
     __pyx_t_4 = Py_None;
@@ -82250,6 +87159,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:
  */
+  __Pyx_TraceLine(3254,0,__PYX_ERR(0, 3254, __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(0, 3254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -82265,6 +87175,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  *         xml += '\n'
  *     sys.stdout.write(xml)
  */
+  __Pyx_TraceLine(3256,0,__PYX_ERR(0, 3256, __pyx_L1_error))
   __pyx_t_5 = ((!(__pyx_v_pretty_print != 0)) != 0);
   if (__pyx_t_5) {
 
@@ -82275,7 +87186,8 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  *     sys.stdout.write(xml)
  * 
  */
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, __pyx_kp_s__26); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3257, __pyx_L1_error)
+    __Pyx_TraceLine(3257,0,__PYX_ERR(0, 3257, __pyx_L1_error))
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, __pyx_kp_s__37); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3257, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_xml, __pyx_t_4);
     __pyx_t_4 = 0;
@@ -82296,6 +87208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  * 
  * 
  */
+  __Pyx_TraceLine(3258,0,__PYX_ERR(0, 3258, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_stdout); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3258, __pyx_L1_error)
@@ -82367,6 +87280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_xml);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -82532,6 +87446,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   int __pyx_v_write_declaration;
   int __pyx_v_is_standalone;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -82542,7 +87457,9 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   Py_ssize_t __pyx_t_7;
   Py_UCS4 __pyx_t_8;
   const char *__pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__182)
   __Pyx_RefNannySetupContext("tostring", 0);
+  __Pyx_TraceCall("tostring", __pyx_f[0], 3261, 0, __PYX_ERR(0, 3261, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
 
   /* "lxml/etree.pyx":3310
@@ -82552,6 +87469,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         if encoding is not None:
  *             raise ValueError("Cannot specify encoding with C14N")
  */
+  __Pyx_TraceLine(3310,0,__PYX_ERR(0, 3310, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_c14n, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3310, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -82562,6 +87480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *             raise ValueError("Cannot specify encoding with C14N")
  *         if xml_declaration:
  */
+    __Pyx_TraceLine(3311,0,__PYX_ERR(0, 3311, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_encoding != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (unlikely(__pyx_t_2)) {
@@ -82573,7 +87492,8 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         if xml_declaration:
  *             raise ValueError("Cannot enable XML declaration in C14N")
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3312, __pyx_L1_error)
+      __Pyx_TraceLine(3312,0,__PYX_ERR(0, 3312, __pyx_L1_error))
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__183, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3312, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -82595,6 +87515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *             raise ValueError("Cannot enable XML declaration in C14N")
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  */
+    __Pyx_TraceLine(3313,0,__PYX_ERR(0, 3313, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3313, __pyx_L1_error)
     if (unlikely(__pyx_t_2)) {
 
@@ -82605,7 +87526,8 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  *     if not with_comments:
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3314, __pyx_L1_error)
+      __Pyx_TraceLine(3314,0,__PYX_ERR(0, 3314, __pyx_L1_error))
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__184, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3314, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -82627,6 +87549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     if not with_comments:
  *         raise ValueError("Can only discard comments in C14N serialisation")
  */
+    __Pyx_TraceLine(3315,0,__PYX_ERR(0, 3315, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree__tostringC14N(__pyx_v_element_or_tree, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_inclusive_ns_prefixes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3315, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -82650,6 +87573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         raise ValueError("Can only discard comments in C14N serialisation")
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  */
+  __Pyx_TraceLine(3316,0,__PYX_ERR(0, 3316, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_with_comments != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -82660,7 +87584,8 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  *         if xml_declaration:
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3317, __pyx_L1_error)
+    __Pyx_TraceLine(3317,0,__PYX_ERR(0, 3317, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__185, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3317, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -82682,6 +87607,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         if xml_declaration:
  *             raise ValueError, \
  */
+  __Pyx_TraceLine(3318,0,__PYX_ERR(0, 3318, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_encoding == ((PyObject *)(&PyUnicode_Type)));
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (!__pyx_t_4) {
@@ -82729,6 +87655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *             raise ValueError, \
  *                 u"Serialisation to unicode must not request an XML declaration"
  */
+    __Pyx_TraceLine(3319,0,__PYX_ERR(0, 3319, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3319, __pyx_L1_error)
     if (unlikely(__pyx_t_2)) {
 
@@ -82739,6 +87666,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *                 u"Serialisation to unicode must not request an XML declaration"
  *         write_declaration = 0
  */
+      __Pyx_TraceLine(3320,0,__PYX_ERR(0, 3320, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Serialisation_to_unicode_must_no, 0, 0);
       __PYX_ERR(0, 3320, __pyx_L1_error)
 
@@ -82758,6 +87686,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         encoding = unicode
  *     elif xml_declaration is None:
  */
+    __Pyx_TraceLine(3322,0,__PYX_ERR(0, 3322, __pyx_L1_error))
     __pyx_v_write_declaration = 0;
 
     /* "lxml/etree.pyx":3323
@@ -82767,6 +87696,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     elif xml_declaration is None:
  *         # by default, write an XML declaration only for non-standard encodings
  */
+    __Pyx_TraceLine(3323,0,__PYX_ERR(0, 3323, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
     __Pyx_DECREF_SET(__pyx_v_encoding, ((PyObject *)(&PyUnicode_Type)));
 
@@ -82787,6 +87717,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         # by default, write an XML declaration only for non-standard encodings
  *         write_declaration = encoding is not None and encoding.upper() not in \
  */
+  __Pyx_TraceLine(3324,0,__PYX_ERR(0, 3324, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_xml_declaration == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -82798,6 +87729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *                             (u'ASCII', u'UTF-8', u'UTF8', u'US-ASCII')
  *     else:
  */
+    __Pyx_TraceLine(3326,0,__PYX_ERR(0, 3326, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_encoding != Py_None);
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
@@ -82869,6 +87801,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     if encoding is None:
  *         encoding = u'ASCII'
  */
+  __Pyx_TraceLine(3329,0,__PYX_ERR(0, 3329, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3329, __pyx_L1_error)
     __pyx_v_write_declaration = __pyx_t_1;
@@ -82882,6 +87815,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         encoding = u'ASCII'
  *     if standalone is None:
  */
+  __Pyx_TraceLine(3330,0,__PYX_ERR(0, 3330, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_encoding == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -82893,6 +87827,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     if standalone is None:
  *         is_standalone = -1
  */
+    __Pyx_TraceLine(3331,0,__PYX_ERR(0, 3331, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_ASCII);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
@@ -82912,6 +87847,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         is_standalone = -1
  *     elif standalone:
  */
+  __Pyx_TraceLine(3332,0,__PYX_ERR(0, 3332, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_standalone == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -82923,6 +87859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     elif standalone:
  *         write_declaration = 1
  */
+    __Pyx_TraceLine(3333,0,__PYX_ERR(0, 3333, __pyx_L1_error))
     __pyx_v_is_standalone = -1;
 
     /* "lxml/etree.pyx":3332
@@ -82942,6 +87879,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         write_declaration = 1
  *         is_standalone = 1
  */
+  __Pyx_TraceLine(3334,0,__PYX_ERR(0, 3334, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3334, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -82952,6 +87890,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         is_standalone = 1
  *     else:
  */
+    __Pyx_TraceLine(3335,0,__PYX_ERR(0, 3335, __pyx_L1_error))
     __pyx_v_write_declaration = 1;
 
     /* "lxml/etree.pyx":3336
@@ -82961,6 +87900,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     else:
  *         write_declaration = 1
  */
+    __Pyx_TraceLine(3336,0,__PYX_ERR(0, 3336, __pyx_L1_error))
     __pyx_v_is_standalone = 1;
 
     /* "lxml/etree.pyx":3334
@@ -82980,6 +87920,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         is_standalone = 0
  * 
  */
+  __Pyx_TraceLine(3338,0,__PYX_ERR(0, 3338, __pyx_L1_error))
   /*else*/ {
     __pyx_v_write_declaration = 1;
 
@@ -82990,6 +87931,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  * 
  *     if isinstance(element_or_tree, _Element):
  */
+    __Pyx_TraceLine(3339,0,__PYX_ERR(0, 3339, __pyx_L1_error))
     __pyx_v_is_standalone = 0;
   }
   __pyx_L19:;
@@ -83001,6 +87943,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         return _tostring(<_Element>element_or_tree, encoding, doctype, method,
  *                          write_declaration, 0, pretty_print, with_tail,
  */
+  __Pyx_TraceLine(3341,0,__PYX_ERR(0, 3341, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -83012,6 +87955,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *                          write_declaration, 0, pretty_print, with_tail,
  *                          is_standalone)
  */
+    __Pyx_TraceLine(3342,0,__PYX_ERR(0, 3342, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "lxml/etree.pyx":3344
@@ -83021,6 +87965,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  */
+    __Pyx_TraceLine(3344,0,__PYX_ERR(0, 3344, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 0, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
@@ -83043,6 +87988,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  *                          encoding, doctype, method, write_declaration, 1,
  */
+  __Pyx_TraceLine(3345,0,__PYX_ERR(0, 3345, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -83054,6 +88000,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *                          encoding, doctype, method, write_declaration, 1,
  *                          pretty_print, with_tail, is_standalone)
  */
+    __Pyx_TraceLine(3346,0,__PYX_ERR(0, 3346, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
     __Pyx_INCREF(__pyx_t_3);
@@ -83065,6 +88012,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *     else:
  *         raise TypeError, f"Type '{python._fqtypename(element_or_tree).decode('utf8')}' cannot be serialized."
  */
+    __Pyx_TraceLine(3348,0,__PYX_ERR(0, 3348, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_3), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3346, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -83088,6 +88036,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  * 
  * 
  */
+  __Pyx_TraceLine(3350,0,__PYX_ERR(0, 3350, __pyx_L1_error))
   /*else*/ {
     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3350, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -83136,6 +88085,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -83222,11 +88172,14 @@ static PyObject *__pyx_pw_4lxml_5etree_33tostringlist(PyObject *__pyx_self, PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__186)
   __Pyx_RefNannySetupContext("tostringlist", 0);
+  __Pyx_TraceCall("tostringlist", __pyx_f[0], 3354, 0, __PYX_ERR(0, 3354, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3363
  *     single string wrapped in a list.
@@ -83235,6 +88188,7 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
  * 
  * 
  */
+  __Pyx_TraceLine(3363,0,__PYX_ERR(0, 3363, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -83276,6 +88230,7 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -83399,6 +88354,7 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, PyObject *__pyx_v_method, int __pyx_v_pretty_print, int __pyx_v_with_tail, PyObject *__pyx_v_doctype) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -83406,7 +88362,9 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_t_4 = NULL;
   Py_ssize_t __pyx_t_5;
   Py_UCS4 __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__187)
   __Pyx_RefNannySetupContext("tounicode", 0);
+  __Pyx_TraceCall("tounicode", __pyx_f[0], 3366, 0, __PYX_ERR(0, 3366, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3389
  *     on the tail text of children, which will always be serialised.
@@ -83415,6 +88373,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *         return _tostring(<_Element>element_or_tree, unicode, doctype, method,
  *                           0, 0, pretty_print, with_tail, -1)
  */
+  __Pyx_TraceLine(3389,0,__PYX_ERR(0, 3389, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -83426,6 +88385,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *                           0, 0, pretty_print, with_tail, -1)
  *     elif isinstance(element_or_tree, _ElementTree):
  */
+    __Pyx_TraceLine(3390,0,__PYX_ERR(0, 3390, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "lxml/etree.pyx":3391
@@ -83435,6 +88395,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  */
+    __Pyx_TraceLine(3391,0,__PYX_ERR(0, 3391, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), ((PyObject *)(&PyUnicode_Type)), __pyx_v_doctype, __pyx_v_method, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3390, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
@@ -83457,6 +88418,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  *                          unicode, doctype, method, 0, 1, pretty_print,
  */
+  __Pyx_TraceLine(3392,0,__PYX_ERR(0, 3392, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -83468,6 +88430,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *                          unicode, doctype, method, 0, 1, pretty_print,
  *                          with_tail, -1)
  */
+    __Pyx_TraceLine(3393,0,__PYX_ERR(0, 3393, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
     __Pyx_INCREF(__pyx_t_3);
@@ -83479,6 +88442,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  *     else:
  *         raise TypeError, f"Type '{type(element_or_tree)}' cannot be serialized."
  */
+    __Pyx_TraceLine(3395,0,__PYX_ERR(0, 3395, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_3), ((PyObject *)(&PyUnicode_Type)), __pyx_v_doctype, __pyx_v_method, 0, 1, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3393, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -83502,6 +88466,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  * 
  * 
  */
+  __Pyx_TraceLine(3397,0,__PYX_ERR(0, 3397, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3397, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -83546,6 +88511,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -83642,6 +88608,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_result_container = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -83651,7 +88618,9 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
+  __Pyx_TraceFrameInit(__pyx_codeobj__188)
   __Pyx_RefNannySetupContext("parse", 0);
+  __Pyx_TraceCall("parse", __pyx_f[0], 3400, 0, __PYX_ERR(0, 3400, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3425
  *     """
@@ -83660,6 +88629,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  *         doc = _parseDocument(source, parser, base_url)
  *         return _elementTreeFactory(doc, None)
  */
+  __Pyx_TraceLine(3425,0,__PYX_ERR(0, 3425, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -83676,6 +88646,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  *         return _elementTreeFactory(doc, None)
  *     except _TargetParserResult as result_container:
  */
+      __Pyx_TraceLine(3426,0,__PYX_ERR(0, 3426, __pyx_L3_error))
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3426, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
@@ -83688,6 +88659,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  *     except _TargetParserResult as result_container:
  *         return result_container.result
  */
+      __Pyx_TraceLine(3427,0,__PYX_ERR(0, 3427, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3427, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -83713,6 +88685,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  *         return result_container.result
  * 
  */
+    __Pyx_TraceLine(3428,0,__PYX_ERR(0, 3428, __pyx_L5_except_error))
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3428, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_7);
@@ -83736,6 +88709,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  * 
  */
+      __Pyx_TraceLine(3429,0,__PYX_ERR(0, 3429, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3429, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_7);
@@ -83795,6 +88769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_result_container);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -83884,12 +88859,15 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
   int __pyx_v_is_owned;
   struct LxmlDocument *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   void *__pyx_t_3;
   struct __pyx_opt_args_4lxml_5etree__adoptForeignDoc __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__189)
   __Pyx_RefNannySetupContext("adopt_external_document", 0);
+  __Pyx_TraceCall("adopt_external_document", __pyx_f[0], 3432, 0, __PYX_ERR(0, 3432, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3464
  *     should not be attempted after transferring the ownership.
@@ -83898,6 +88876,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  *         raise NotImplementedError("PyCapsule usage requires Python 2.7+")
  * 
  */
+  __Pyx_TraceLine(3464,0,__PYX_ERR(0, 3464, __pyx_L1_error))
   __pyx_t_1 = ((PY_VERSION_HEX < 0x02070000) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -83908,7 +88887,8 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  * 
  *     cdef xmlDoc* c_doc
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3465, __pyx_L1_error)
+    __Pyx_TraceLine(3465,0,__PYX_ERR(0, 3465, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__190, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3465, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -83930,6 +88910,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  *     c_doc = <xmlDoc*> python.lxml_unpack_xmldoc_capsule(capsule, &is_owned)
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  */
+  __Pyx_TraceLine(3468,0,__PYX_ERR(0, 3468, __pyx_L1_error))
   __pyx_v_is_owned = 0;
 
   /* "lxml/etree.pyx":3469
@@ -83939,6 +88920,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  *     return _elementTreeFactory(doc, None)
  */
+  __Pyx_TraceLine(3469,0,__PYX_ERR(0, 3469, __pyx_L1_error))
   __pyx_t_3 = lxml_unpack_xmldoc_capsule(__pyx_v_capsule, (&__pyx_v_is_owned)); if (unlikely(__pyx_t_3 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3469, __pyx_L1_error)
   __pyx_v_c_doc = ((xmlDoc *)__pyx_t_3);
 
@@ -83949,6 +88931,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  *     return _elementTreeFactory(doc, None)
  * 
  */
+  __Pyx_TraceLine(3470,0,__PYX_ERR(0, 3470, __pyx_L1_error))
   __pyx_t_4.__pyx_n = 2;
   __pyx_t_4.parser = __pyx_v_parser;
   __pyx_t_4.is_owned = __pyx_v_is_owned;
@@ -83964,6 +88947,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  * 
  * 
  */
+  __Pyx_TraceLine(3471,0,__PYX_ERR(0, 3471, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3471, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -83987,6 +88971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84017,8 +89002,10 @@ static int __pyx_pw_4lxml_5etree_14_ReadOnlyProxy_1__cinit__(PyObject *__pyx_v_s
 
 static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy___cinit__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[6], 10, 0, __PYX_ERR(6, 10, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":11
  *     cdef list _dependent_proxies
@@ -84027,6 +89014,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy___cinit__(struct __pyx_obj_4lx
  *         self._free_after_use = 0
  * 
  */
+  __Pyx_TraceLine(11,0,__PYX_ERR(6, 11, __pyx_L1_error))
   __pyx_v_self->_c_node = NULL;
 
   /* "src/lxml/readonlytree.pxi":12
@@ -84036,6 +89024,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy___cinit__(struct __pyx_obj_4lx
  * 
  *     cdef int _assertNode(self) except -1:
  */
+  __Pyx_TraceLine(12,0,__PYX_ERR(6, 12, __pyx_L1_error))
   __pyx_v_self->_free_after_use = 0;
 
   /* "src/lxml/readonlytree.pxi":10
@@ -84048,6 +89037,12 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy___cinit__(struct __pyx_obj_4lx
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ReadOnlyProxy.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84062,10 +89057,12 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy___cinit__(struct __pyx_obj_4lx
 
 static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_assertNode", 0);
+  __Pyx_TraceCall("_assertNode", __pyx_f[6], 14, 0, __PYX_ERR(6, 14, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":17
  *         u"""This is our way of saying: this proxy is invalid!
@@ -84074,6 +89071,7 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4l
  *             raise ReferenceError("Proxy invalidated!")
  *         return 0
  */
+  __Pyx_TraceLine(17,0,__PYX_ERR(6, 17, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_self->_c_node != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -84084,7 +89082,8 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4l
  *         return 0
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ReferenceError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 18, __pyx_L1_error)
+    __Pyx_TraceLine(18,0,__PYX_ERR(6, 18, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ReferenceError, __pyx_tuple__191, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 18, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -84106,6 +89105,7 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4l
  * 
  *     cdef int _raise_unsupported_type(self) except -1:
  */
+  __Pyx_TraceLine(19,0,__PYX_ERR(6, 19, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -84123,6 +89123,7 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4l
   __Pyx_AddTraceback("lxml.etree._ReadOnlyProxy._assertNode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84137,10 +89138,12 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode(struct __pyx_obj_4l
 
 static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__raise_unsupported_type(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_raise_unsupported_type", 0);
+  __Pyx_TraceCall("_raise_unsupported_type", __pyx_f[6], 21, 0, __PYX_ERR(6, 21, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":22
  * 
@@ -84149,6 +89152,7 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__raise_unsupported_type(struct
  * 
  *     cdef void free_after_use(self):
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(6, 22, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_self->_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unsupported_node_type, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 22, __pyx_L1_error)
@@ -84175,6 +89179,7 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__raise_unsupported_type(struct
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_AddTraceback("lxml.etree._ReadOnlyProxy._raise_unsupported_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84188,8 +89193,10 @@ static int __pyx_f_4lxml_5etree_14_ReadOnlyProxy__raise_unsupported_type(struct
  */
 
 static void __pyx_f_4lxml_5etree_14_ReadOnlyProxy_free_after_use(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("free_after_use", 0);
+  __Pyx_TraceCall("free_after_use", __pyx_f[6], 24, 0, __PYX_ERR(6, 24, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":27
  *         u"""Should the xmlNode* be freed when releasing the proxy?
@@ -84198,6 +89205,7 @@ static void __pyx_f_4lxml_5etree_14_ReadOnlyProxy_free_after_use(struct __pyx_ob
  * 
  *     property tag:
  */
+  __Pyx_TraceLine(27,0,__PYX_ERR(6, 27, __pyx_L1_error))
   __pyx_v_self->_free_after_use = 1;
 
   /* "src/lxml/readonlytree.pxi":24
@@ -84209,6 +89217,11 @@ static void __pyx_f_4lxml_5etree_14_ReadOnlyProxy_free_after_use(struct __pyx_ob
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ReadOnlyProxy.free_after_use", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -84235,10 +89248,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_3tag_1__get__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 32, 0, __PYX_ERR(6, 32, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":33
  *         """
@@ -84247,6 +89262,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  *                 return _namespacedName(self._c_node)
  */
+  __Pyx_TraceLine(33,0,__PYX_ERR(6, 33, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 33, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":34
@@ -84256,6 +89272,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *                 return _namespacedName(self._c_node)
  *             elif self._c_node.type == tree.XML_PI_NODE:
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(6, 34, __pyx_L1_error))
   switch (__pyx_v_self->_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -84266,6 +89283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *             elif self._c_node.type == tree.XML_PI_NODE:
  *                 return ProcessingInstruction
  */
+    __Pyx_TraceLine(35,0,__PYX_ERR(6, 35, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(__pyx_v_self->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 35, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84289,6 +89307,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *                 return ProcessingInstruction
  *             elif self._c_node.type == tree.XML_COMMENT_NODE:
  */
+    __Pyx_TraceLine(36,0,__PYX_ERR(6, 36, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":37
@@ -84298,6 +89317,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *             elif self._c_node.type == tree.XML_COMMENT_NODE:
  *                 return Comment
  */
+    __Pyx_TraceLine(37,0,__PYX_ERR(6, 37, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 37, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84321,6 +89341,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *                 return Comment
  *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
  */
+    __Pyx_TraceLine(38,0,__PYX_ERR(6, 38, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":39
@@ -84330,6 +89351,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
  *                 return Entity
  */
+    __Pyx_TraceLine(39,0,__PYX_ERR(6, 39, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 39, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84353,6 +89375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *                 return Entity
  *             else:
  */
+    __Pyx_TraceLine(40,0,__PYX_ERR(6, 40, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/readonlytree.pxi":41
@@ -84362,6 +89385,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  *             else:
  *                 self._raise_unsupported_type()
  */
+    __Pyx_TraceLine(41,0,__PYX_ERR(6, 41, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Entity); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 41, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84386,6 +89410,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
  * 
  *     property text:
  */
+    __Pyx_TraceLine(43,0,__PYX_ERR(6, 43, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_raise_unsupported_type(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 43, __pyx_L1_error)
     break;
   }
@@ -84407,6 +89432,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84434,6 +89460,7 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_4text_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -84443,6 +89470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 49, 0, __PYX_ERR(6, 49, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":50
  *         """
@@ -84451,6 +89479,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  *                 return _collectText(self._c_node.children)
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(6, 50, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 50, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":51
@@ -84460,6 +89489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                 return _collectText(self._c_node.children)
  *             elif self._c_node.type in (tree.XML_PI_NODE,
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(6, 51, __pyx_L1_error))
   switch (__pyx_v_self->_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -84470,6 +89500,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *             elif self._c_node.type in (tree.XML_PI_NODE,
  *                                        tree.XML_COMMENT_NODE):
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(6, 52, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->_c_node->children); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 52, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84493,6 +89524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                                        tree.XML_COMMENT_NODE):
  *                 if self._c_node.content is NULL:
  */
+    __Pyx_TraceLine(53,0,__PYX_ERR(6, 53, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":54
@@ -84502,6 +89534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                 if self._c_node.content is NULL:
  *                     return ''
  */
+    __Pyx_TraceLine(54,0,__PYX_ERR(6, 54, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":55
@@ -84511,6 +89544,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                     return ''
  *                 else:
  */
+    __Pyx_TraceLine(55,0,__PYX_ERR(6, 55, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_self->_c_node->content == NULL) != 0);
     if (__pyx_t_3) {
 
@@ -84521,9 +89555,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                 else:
  *                     return funicode(self._c_node.content)
  */
+      __Pyx_TraceLine(56,0,__PYX_ERR(6, 56, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_kp_s__16);
-      __pyx_r = __pyx_kp_s__16;
+      __Pyx_INCREF(__pyx_kp_s__23);
+      __pyx_r = __pyx_kp_s__23;
       goto __pyx_L0;
 
       /* "src/lxml/readonlytree.pxi":55
@@ -84542,6 +89577,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
  *                 return f'&{funicode(self._c_node.name)};'
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(6, 58, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->content); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 58, __pyx_L1_error)
@@ -84567,6 +89603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *                 return f'&{funicode(self._c_node.name)};'
  *             else:
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(6, 59, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/readonlytree.pxi":60
@@ -84576,15 +89613,16 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  *             else:
  *                 self._raise_unsupported_type()
  */
+    __Pyx_TraceLine(60,0,__PYX_ERR(6, 60, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 60, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = 0;
     __pyx_t_5 = 127;
-    __Pyx_INCREF(__pyx_kp_u__38);
+    __Pyx_INCREF(__pyx_kp_u__112);
     __pyx_t_4 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__38);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__38);
+    __Pyx_GIVEREF(__pyx_kp_u__112);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__112);
     __pyx_t_6 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 60, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 60, __pyx_L1_error)
@@ -84595,10 +89633,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
     __Pyx_GIVEREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_7);
     __pyx_t_7 = 0;
-    __Pyx_INCREF(__pyx_kp_u__39);
+    __Pyx_INCREF(__pyx_kp_u__113);
     __pyx_t_4 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__39);
-    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__39);
+    __Pyx_GIVEREF(__pyx_kp_u__113);
+    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__113);
     __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 60, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -84623,6 +89661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
  * 
  *     property tail:
  */
+    __Pyx_TraceLine(62,0,__PYX_ERR(6, 62, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_raise_unsupported_type(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 62, __pyx_L1_error)
     break;
   }
@@ -84646,6 +89685,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84673,10 +89713,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_4tail_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 69, 0, __PYX_ERR(6, 69, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":70
  *         """
@@ -84685,6 +89727,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
  *             return _collectText(self._c_node.next)
  * 
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(6, 70, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 70, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":71
@@ -84694,6 +89737,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
  * 
  *     property sourceline:
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(6, 71, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->_c_node->next); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 71, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -84716,6 +89760,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84744,11 +89789,13 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_10sourceline_1__get__(Py
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   long __pyx_v_line;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 76, 0, __PYX_ERR(6, 76, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":78
  *         def __get__(self):
@@ -84757,6 +89804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
  *             line = tree.xmlGetLineNo(self._c_node)
  *             if line > 0:
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(6, 78, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 78, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":79
@@ -84766,6 +89814,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
  *             if line > 0:
  *                 return line
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(6, 79, __pyx_L1_error))
   __pyx_v_line = xmlGetLineNo(__pyx_v_self->_c_node);
 
   /* "src/lxml/readonlytree.pxi":80
@@ -84775,6 +89824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
  *                 return line
  *             else:
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(6, 80, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_line > 0) != 0);
   if (__pyx_t_2) {
 
@@ -84785,6 +89835,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
  *             else:
  *                 return None
  */
+    __Pyx_TraceLine(81,0,__PYX_ERR(6, 81, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 81, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -84808,6 +89859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(6, 83, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -84829,6 +89881,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -84857,6 +89910,7 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_3__repr__(PyObject *__py
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -84864,6 +89918,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[6], 85, 0, __PYX_ERR(6, 85, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":86
  * 
@@ -84872,6 +89927,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *         if self._c_node.type == tree.XML_ELEMENT_NODE:
  *             return "<Element %s at 0x%x>" % (strrepr(self.tag), id(self))
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(6, 86, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 86, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":87
@@ -84881,6 +89937,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             return "<Element %s at 0x%x>" % (strrepr(self.tag), id(self))
  *         elif self._c_node.type == tree.XML_COMMENT_NODE:
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(6, 87, __pyx_L1_error))
   switch (__pyx_v_self->_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -84891,6 +89948,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *         elif self._c_node.type == tree.XML_COMMENT_NODE:
  *             return "<!--%s-->" % strrepr(self.text)
  */
+    __Pyx_TraceLine(88,0,__PYX_ERR(6, 88, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 88, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84930,6 +89988,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             return "<!--%s-->" % strrepr(self.text)
  *         elif self._c_node.type == tree.XML_ENTITY_NODE:
  */
+    __Pyx_TraceLine(89,0,__PYX_ERR(6, 89, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":90
@@ -84939,6 +89998,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *         elif self._c_node.type == tree.XML_ENTITY_NODE:
  *             return "&%s;" % strrepr(funicode(self._c_node.name))
  */
+    __Pyx_TraceLine(90,0,__PYX_ERR(6, 90, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 90, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -84968,6 +90028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             return "&%s;" % strrepr(funicode(self._c_node.name))
  *         elif self._c_node.type == tree.XML_PI_NODE:
  */
+    __Pyx_TraceLine(91,0,__PYX_ERR(6, 91, __pyx_L1_error))
     case XML_ENTITY_NODE:
 
     /* "src/lxml/readonlytree.pxi":92
@@ -84977,6 +90038,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *         elif self._c_node.type == tree.XML_PI_NODE:
  *             text = self.text
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(6, 92, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 92, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -85006,6 +90068,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             text = self.text
  *             if text:
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(6, 93, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":94
@@ -85015,6 +90078,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             if text:
  *                 return "<?%s %s?>" % (strrepr(self.target), text)
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(6, 94, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_text = __pyx_t_2;
@@ -85027,6 +90091,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *                 return "<?%s %s?>" % (strrepr(self.target), text)
  *             else:
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(6, 95, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(6, 95, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -85037,6 +90102,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *             else:
  *                 return "<?%s?>" % strrepr(self.target)
  */
+      __Pyx_TraceLine(96,0,__PYX_ERR(6, 96, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 96, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -85074,6 +90140,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  *         else:
  *             self._raise_unsupported_type()
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(6, 98, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 98, __pyx_L1_error)
@@ -85106,6 +90173,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
  * 
  *     def __getitem__(self, x):
  */
+    __Pyx_TraceLine(100,0,__PYX_ERR(6, 100, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_raise_unsupported_type(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 100, __pyx_L1_error)
     break;
   }
@@ -85130,6 +90198,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -85168,6 +90237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
   _node_to_node_function __pyx_v_next_element;
   PyObject *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -85177,6 +90247,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
   int __pyx_t_6;
   Py_ssize_t __pyx_t_7;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[6], 102, 0, __PYX_ERR(6, 102, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":106
  *         slice.
@@ -85185,6 +90256,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *         cdef Py_ssize_t step = 0, slicelength = 0
  *         cdef Py_ssize_t c, i
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(6, 106, __pyx_L1_error))
   __pyx_v_c_node = NULL;
 
   /* "src/lxml/readonlytree.pxi":107
@@ -85194,6 +90266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *         cdef Py_ssize_t c, i
  *         cdef _node_to_node_function next_element
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(6, 107, __pyx_L1_error))
   __pyx_v_step = 0;
   __pyx_v_slicelength = 0;
 
@@ -85204,6 +90277,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *         if isinstance(x, slice):
  *             # slicing
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(6, 111, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 111, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":112
@@ -85213,6 +90287,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             # slicing
  *             if _isFullSlice(<slice>x):
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(6, 112, __pyx_L1_error))
   __pyx_t_2 = PySlice_Check(__pyx_v_x); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -85224,6 +90299,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 return _collectChildren(self)
  *             _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  */
+    __Pyx_TraceLine(114,0,__PYX_ERR(6, 114, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__isFullSlice(((PyObject*)__pyx_v_x)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 114, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -85235,6 +90311,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             _findChildSlice(<slice>x, self._c_node, &c_node, &step, &slicelength)
  *             if c_node is NULL:
  */
+      __Pyx_TraceLine(115,0,__PYX_ERR(6, 115, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       if (!(likely(((((PyObject *)__pyx_v_self)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(6, 115, __pyx_L1_error)
       __pyx_t_4 = __pyx_f_4lxml_5etree__collectChildren(((struct LxmlElement *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 115, __pyx_L1_error)
@@ -85259,6 +90336,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             if c_node is NULL:
  *                 return []
  */
+    __Pyx_TraceLine(116,0,__PYX_ERR(6, 116, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__findChildSlice(((PyObject*)__pyx_v_x), __pyx_v_self->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 116, __pyx_L1_error)
 
     /* "src/lxml/readonlytree.pxi":117
@@ -85268,6 +90346,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 return []
  *             if step > 0:
  */
+    __Pyx_TraceLine(117,0,__PYX_ERR(6, 117, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -85278,6 +90357,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             if step > 0:
  *                 next_element = _nextElement
  */
+      __Pyx_TraceLine(118,0,__PYX_ERR(6, 118, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 118, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -85301,6 +90381,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 next_element = _nextElement
  *             else:
  */
+    __Pyx_TraceLine(119,0,__PYX_ERR(6, 119, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_step > 0) != 0);
     if (__pyx_t_2) {
 
@@ -85311,6 +90392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             else:
  *                 step = -step
  */
+      __Pyx_TraceLine(120,0,__PYX_ERR(6, 120, __pyx_L1_error))
       __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
 
       /* "src/lxml/readonlytree.pxi":119
@@ -85330,6 +90412,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 next_element = _previousElement
  *             result = []
  */
+    __Pyx_TraceLine(122,0,__PYX_ERR(6, 122, __pyx_L1_error))
     /*else*/ {
       __pyx_v_step = (-__pyx_v_step);
 
@@ -85340,6 +90423,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             result = []
  *             c = 0
  */
+      __Pyx_TraceLine(123,0,__PYX_ERR(6, 123, __pyx_L1_error))
       __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
     }
     __pyx_L6:;
@@ -85351,6 +90435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             c = 0
  *             while c_node is not NULL and c < slicelength:
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(6, 124, __pyx_L1_error))
     __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 124, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_result = ((PyObject*)__pyx_t_4);
@@ -85363,6 +90448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             while c_node is not NULL and c < slicelength:
  *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(6, 125, __pyx_L1_error))
     __pyx_v_c = 0;
 
     /* "src/lxml/readonlytree.pxi":126
@@ -85372,6 +90458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
  *                 result.append(_elementFactory(self._doc, c_node))
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(6, 126, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (__pyx_t_3) {
@@ -85391,6 +90478,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 result.append(_elementFactory(self._doc, c_node))
  *                 c = c + 1
  */
+      __Pyx_TraceLine(127,0,__PYX_ERR(6, 127, __pyx_L1_error))
       __pyx_t_4 = ((PyObject *)__pyx_v_self->_source_proxy);
       __Pyx_INCREF(__pyx_t_4);
       __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_4), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 127, __pyx_L1_error)
@@ -85406,6 +90494,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 c = c + 1
  *                 for i from 0 <= i < step:
  */
+      __Pyx_TraceLine(128,0,__PYX_ERR(6, 128, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_doc); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 128, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Document))))) __PYX_ERR(6, 128, __pyx_L1_error)
@@ -85422,6 +90511,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 for i from 0 <= i < step:
  *                     c_node = next_element(c_node)
  */
+      __Pyx_TraceLine(129,0,__PYX_ERR(6, 129, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "src/lxml/readonlytree.pxi":130
@@ -85431,6 +90521,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                     c_node = next_element(c_node)
  *             return result
  */
+      __Pyx_TraceLine(130,0,__PYX_ERR(6, 130, __pyx_L1_error))
       __pyx_t_7 = __pyx_v_step;
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {
 
@@ -85441,6 +90532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             return result
  *         else:
  */
+        __Pyx_TraceLine(131,0,__PYX_ERR(6, 131, __pyx_L1_error))
         __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
       }
     }
@@ -85452,6 +90544,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *         else:
  *             # indexing
  */
+    __Pyx_TraceLine(132,0,__PYX_ERR(6, 132, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
     __pyx_r = __pyx_v_result;
@@ -85473,6 +90566,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             if c_node is NULL:
  *                 raise IndexError, u"list index out of range"
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(6, 135, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 135, __pyx_L1_error)
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(__pyx_v_self->_c_node, __pyx_t_7);
@@ -85484,6 +90578,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *                 raise IndexError, u"list index out of range"
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(6, 136, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -85494,6 +90589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  * 
  */
+      __Pyx_TraceLine(137,0,__PYX_ERR(6, 137, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_IndexError, __pyx_kp_u_list_index_out_of_range, 0, 0);
       __PYX_ERR(6, 137, __pyx_L1_error)
 
@@ -85513,6 +90609,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
  * 
  *     def __len__(self):
  */
+    __Pyx_TraceLine(138,0,__PYX_ERR(6, 138, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_source_proxy);
     __Pyx_INCREF(__pyx_t_4);
@@ -85541,6 +90638,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4__getitem__(struct __py
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -85574,11 +90672,13 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
   Py_ssize_t __pyx_v_c;
   xmlNode *__pyx_v_c_node;
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[6], 140, 0, __PYX_ERR(6, 140, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":145
  *         cdef Py_ssize_t c
@@ -85587,6 +90687,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *         c = 0
  *         c_node = self._c_node.children
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(6, 145, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 145, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":146
@@ -85596,6 +90697,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *         c_node = self._c_node.children
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(6, 146, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "src/lxml/readonlytree.pxi":147
@@ -85605,6 +90707,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *         while c_node is not NULL:
  *             if tree._isElement(c_node):
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(6, 147, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -85615,6 +90718,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *             if tree._isElement(c_node):
  *                 c = c + 1
  */
+  __Pyx_TraceLine(148,0,__PYX_ERR(6, 148, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -85626,6 +90730,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *                 c = c + 1
  *             c_node = c_node.next
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(6, 149, __pyx_L1_error))
     __pyx_t_3 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
@@ -85636,6 +90741,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *             c_node = c_node.next
  *         return c
  */
+      __Pyx_TraceLine(150,0,__PYX_ERR(6, 150, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "src/lxml/readonlytree.pxi":149
@@ -85654,6 +90760,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  *         return c
  * 
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(6, 151, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -85665,6 +90772,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(6, 152, __pyx_L1_error))
   __pyx_r = __pyx_v_c;
   goto __pyx_L0;
 
@@ -85681,6 +90789,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_6__len__(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree._ReadOnlyProxy.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -85709,9 +90818,11 @@ static int __pyx_pw_4lxml_5etree_14_ReadOnlyProxy_9__nonzero__(PyObject *__pyx_v
 static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_8__nonzero__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[6], 154, 0, __PYX_ERR(6, 154, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":156
  *     def __nonzero__(self):
@@ -85720,6 +90831,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_8__nonzero__(struct __pyx_obj_
  *         c_node = _findChildBackwards(self._c_node, 0)
  *         return c_node != NULL
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(6, 156, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 156, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":157
@@ -85729,6 +90841,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_8__nonzero__(struct __pyx_obj_
  *         return c_node != NULL
  * 
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(6, 157, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_self->_c_node, 0);
 
   /* "src/lxml/readonlytree.pxi":158
@@ -85738,6 +90851,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_8__nonzero__(struct __pyx_obj_
  * 
  *     def __deepcopy__(self, memo):
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(6, 158, __pyx_L1_error))
   __pyx_r = (__pyx_v_c_node != NULL);
   goto __pyx_L0;
 
@@ -85754,6 +90868,7 @@ static int __pyx_pf_4lxml_5etree_14_ReadOnlyProxy_8__nonzero__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree._ReadOnlyProxy.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -85783,9 +90898,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_11__deepcopy__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10__deepcopy__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_memo) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__192)
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
+  __Pyx_TraceCall("__deepcopy__", __pyx_f[6], 160, 0, __PYX_ERR(6, 160, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":162
  *     def __deepcopy__(self, memo):
@@ -85794,6 +90912,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10__deepcopy__(struct __
  * 
  *     cpdef __copy__(self):
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(6, 162, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->__pyx___copy__(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -85816,6 +90935,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10__deepcopy__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -85835,6 +90955,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
   struct LxmlDocument *__pyx_v_new_doc = 0;
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -85844,7 +90965,9 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
   xmlDoc *__pyx_t_6;
   int __pyx_t_7;
   xmlNode *__pyx_t_8;
+  __Pyx_TraceFrameInit(__pyx_codeobj__193)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__", __pyx_f[6], 164, 0, __PYX_ERR(6, 164, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -85887,6 +91010,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *             return self
  *         c_doc = _copyDocRoot(self._c_node.doc, self._c_node) # recursive
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(6, 169, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_self->_c_node == NULL) != 0);
   if (__pyx_t_5) {
 
@@ -85897,6 +91021,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         c_doc = _copyDocRoot(self._c_node.doc, self._c_node) # recursive
  *         new_doc = _documentFactory(c_doc, None)
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(6, 170, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __pyx_r = ((PyObject *)__pyx_v_self);
@@ -85918,6 +91043,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         new_doc = _documentFactory(c_doc, None)
  *         root = new_doc.getroot()
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(6, 171, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_self->_c_node->doc, __pyx_v_self->_c_node); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(6, 171, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_6;
 
@@ -85928,6 +91054,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         root = new_doc.getroot()
  *         if root is not None:
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(6, 172, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_new_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -85940,6 +91067,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         if root is not None:
  *             return root
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(6, 173, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_new_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root = __pyx_t_1;
@@ -85952,6 +91080,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *             return root
  *         # Comment/PI
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(6, 174, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_root != Py_None);
   __pyx_t_7 = (__pyx_t_5 != 0);
   if (__pyx_t_7) {
@@ -85963,6 +91092,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         # Comment/PI
  *         c_node = c_doc.children
  */
+    __Pyx_TraceLine(175,0,__PYX_ERR(6, 175, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_root);
     __pyx_r = __pyx_v_root;
@@ -85984,6 +91114,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         while c_node is not NULL and c_node.type != self._c_node.type:
  *             c_node = c_node.next
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(6, 177, __pyx_L1_error))
   __pyx_t_8 = __pyx_v_c_doc->children;
   __pyx_v_c_node = __pyx_t_8;
 
@@ -85994,6 +91125,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *             c_node = c_node.next
  *         if c_node is NULL:
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(6, 178, __pyx_L1_error))
   while (1) {
     __pyx_t_5 = ((__pyx_v_c_node != NULL) != 0);
     if (__pyx_t_5) {
@@ -86013,6 +91145,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         if c_node is NULL:
  *             return None
  */
+    __Pyx_TraceLine(179,0,__PYX_ERR(6, 179, __pyx_L1_error))
     __pyx_t_8 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_8;
   }
@@ -86024,6 +91157,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *             return None
  *         return _elementFactory(new_doc, c_node)
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(6, 180, __pyx_L1_error))
   __pyx_t_7 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_7) {
 
@@ -86034,6 +91168,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  *         return _elementFactory(new_doc, c_node)
  * 
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(6, 181, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -86054,6 +91189,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(6, 182, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_new_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 182, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -86081,6 +91217,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
   __Pyx_XDECREF((PyObject *)__pyx_v_new_doc);
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86102,9 +91239,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_13__copy__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_12__copy__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__193)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__ (wrapper)", __pyx_f[6], 164, 0, __PYX_ERR(6, 164, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 164, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -86119,6 +91259,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_12__copy__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86146,10 +91287,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_15__iter__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_14__iter__(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[6], 184, 0, __PYX_ERR(6, 184, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":185
  * 
@@ -86158,6 +91301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_14__iter__(struct __pyx_
  * 
  *     def iterchildren(self, tag=None, *, reversed=False):
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(6, 185, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->getchildren(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 185, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -86184,6 +91328,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_14__iter__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86266,6 +91411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
   PyObject *__pyx_v_children = NULL;
   PyObject *__pyx_v_el = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -86276,7 +91422,9 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__194)
   __Pyx_RefNannySetupContext("iterchildren", 0);
+  __Pyx_TraceCall("iterchildren", __pyx_f[6], 187, 0, __PYX_ERR(6, 187, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":192
  *         Iterate over the children of this element.
@@ -86285,6 +91433,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  *         if tag is not None and tag != '*':
  *             children = [ el for el in children if el.tag == tag ]
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(6, 192, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->getchildren(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_children = __pyx_t_1;
@@ -86297,6 +91446,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  *             children = [ el for el in children if el.tag == tag ]
  *         if reversed:
  */
+  __Pyx_TraceLine(193,0,__PYX_ERR(6, 193, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_tag != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -86304,7 +91454,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__53, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 193, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__160, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 193, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
@@ -86316,6 +91466,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  *         if reversed:
  *             children = children[::-1]
  */
+    __Pyx_TraceLine(194,0,__PYX_ERR(6, 194, __pyx_L1_error))
     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 194, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (likely(PyList_CheckExact(__pyx_v_children)) || PyTuple_CheckExact(__pyx_v_children)) {
@@ -86389,6 +91540,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  *             children = children[::-1]
  *         return iter(children)
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(6, 195, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_reversed); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 195, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -86399,7 +91551,8 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  *         return iter(children)
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_children, __pyx_slice__68); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 196, __pyx_L1_error)
+    __Pyx_TraceLine(196,0,__PYX_ERR(6, 196, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_children, __pyx_slice__195); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 196, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_children, __pyx_t_1);
     __pyx_t_1 = 0;
@@ -86420,6 +91573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
  * 
  *     cpdef getchildren(self):
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(6, 197, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyObject_GetIter(__pyx_v_children); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 197, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -86447,6 +91601,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_16iterchildren(struct __
   __Pyx_XDECREF(__pyx_v_children);
   __Pyx_XDECREF(__pyx_v_el);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86464,6 +91619,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -86473,7 +91629,9 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
   xmlNode *__pyx_t_6;
   int __pyx_t_7;
   int __pyx_t_8;
+  __Pyx_TraceFrameInit(__pyx_codeobj__196)
   __Pyx_RefNannySetupContext("getchildren", 0);
+  __Pyx_TraceCall("getchildren", __pyx_f[6], 199, 0, __PYX_ERR(6, 199, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -86516,6 +91674,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *         result = []
  *         c_node = self._c_node.children
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(6, 205, __pyx_L1_error))
   __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 205, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":206
@@ -86525,6 +91684,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *         c_node = self._c_node.children
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(6, 206, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 206, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((PyObject*)__pyx_t_1);
@@ -86537,6 +91697,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *         while c_node is not NULL:
  *             if tree._isElement(c_node):
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(6, 207, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_self->_c_node->children;
   __pyx_v_c_node = __pyx_t_6;
 
@@ -86547,6 +91708,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *             if tree._isElement(c_node):
  *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
  */
+  __Pyx_TraceLine(208,0,__PYX_ERR(6, 208, __pyx_L1_error))
   while (1) {
     __pyx_t_7 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_7) break;
@@ -86558,6 +91720,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
  *             c_node = c_node.next
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(6, 209, __pyx_L1_error))
     __pyx_t_7 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_7) {
 
@@ -86568,6 +91731,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *             c_node = c_node.next
  *         return result
  */
+      __Pyx_TraceLine(210,0,__PYX_ERR(6, 210, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)__pyx_v_self->_source_proxy);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 210, __pyx_L1_error)
@@ -86592,6 +91756,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  *         return result
  * 
  */
+    __Pyx_TraceLine(211,0,__PYX_ERR(6, 211, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_6;
   }
@@ -86603,6 +91768,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
  * 
  *     def getparent(self):
  */
+  __Pyx_TraceLine(212,0,__PYX_ERR(6, 212, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -86627,6 +91793,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86648,9 +91815,12 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_19getchildren(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_18getchildren(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__196)
   __Pyx_RefNannySetupContext("getchildren", 0);
+  __Pyx_TraceCall("getchildren (wrapper)", __pyx_f[6], 199, 0, __PYX_ERR(6, 199, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 199, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -86665,6 +91835,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_18getchildren(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86695,6 +91866,7 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_21getparent(PyObject *__
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   xmlNode *__pyx_v_c_parent;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -86702,7 +91874,9 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__197)
   __Pyx_RefNannySetupContext("getparent", 0);
+  __Pyx_TraceCall("getparent", __pyx_f[6], 214, 0, __PYX_ERR(6, 214, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":218
  *         """
@@ -86711,6 +91885,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
  *         c_parent = self._c_node.parent
  *         if c_parent is NULL or not tree._isElement(c_parent):
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(6, 218, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 218, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":219
@@ -86720,6 +91895,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
  *         if c_parent is NULL or not tree._isElement(c_parent):
  *             return None
  */
+  __Pyx_TraceLine(219,0,__PYX_ERR(6, 219, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->parent;
   __pyx_v_c_parent = __pyx_t_2;
 
@@ -86730,6 +91906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
  *             return None
  *         else:
  */
+  __Pyx_TraceLine(220,0,__PYX_ERR(6, 220, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_parent == NULL) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -86748,6 +91925,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
  *         else:
  *             return _newReadOnlyProxy(self._source_proxy, c_parent)
  */
+    __Pyx_TraceLine(221,0,__PYX_ERR(6, 221, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -86768,6 +91946,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
  * 
  *     def getnext(self):
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(6, 223, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_source_proxy);
@@ -86796,6 +91975,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_20getparent(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86826,12 +92006,15 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_23getnext(PyObject *__py
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__198)
   __Pyx_RefNannySetupContext("getnext", 0);
+  __Pyx_TraceCall("getnext", __pyx_f[6], 225, 0, __PYX_ERR(6, 225, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":229
  *         """
@@ -86840,6 +92023,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
  *         c_node = _nextElement(self._c_node)
  *         if c_node is not NULL:
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(6, 229, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 229, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":230
@@ -86849,6 +92033,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
  *         if c_node is not NULL:
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  */
+  __Pyx_TraceLine(230,0,__PYX_ERR(6, 230, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_self->_c_node);
 
   /* "src/lxml/readonlytree.pxi":231
@@ -86858,6 +92043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  *         return None
  */
+  __Pyx_TraceLine(231,0,__PYX_ERR(6, 231, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -86868,6 +92054,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
  *         return None
  * 
  */
+    __Pyx_TraceLine(232,0,__PYX_ERR(6, 232, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_source_proxy);
     __Pyx_INCREF(__pyx_t_3);
@@ -86894,6 +92081,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
  * 
  *     def getprevious(self):
  */
+  __Pyx_TraceLine(233,0,__PYX_ERR(6, 233, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -86914,6 +92102,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_22getnext(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -86944,12 +92133,15 @@ static PyObject *__pyx_pw_4lxml_5etree_14_ReadOnlyProxy_25getprevious(PyObject *
 static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__199)
   __Pyx_RefNannySetupContext("getprevious", 0);
+  __Pyx_TraceCall("getprevious", __pyx_f[6], 235, 0, __PYX_ERR(6, 235, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":239
  *         """
@@ -86958,6 +92150,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
  *         c_node = _previousElement(self._c_node)
  *         if c_node is not NULL:
  */
+  __Pyx_TraceLine(239,0,__PYX_ERR(6, 239, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 239, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":240
@@ -86967,6 +92160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
  *         if c_node is not NULL:
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  */
+  __Pyx_TraceLine(240,0,__PYX_ERR(6, 240, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__previousElement(__pyx_v_self->_c_node);
 
   /* "src/lxml/readonlytree.pxi":241
@@ -86976,6 +92170,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
  *             return _newReadOnlyProxy(self._source_proxy, c_node)
  *         return None
  */
+  __Pyx_TraceLine(241,0,__PYX_ERR(6, 241, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -86986,6 +92181,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
  *         return None
  * 
  */
+    __Pyx_TraceLine(242,0,__PYX_ERR(6, 242, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_source_proxy);
     __Pyx_INCREF(__pyx_t_3);
@@ -87012,6 +92208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
  * 
  * 
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(6, 243, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -87032,6 +92229,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87059,10 +92257,12 @@ static PyObject *__pyx_pw_4lxml_5etree_16_ReadOnlyPIProxy_6target_1__get__(PyObj
 
 static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyPIProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 251, 0, __PYX_ERR(6, 251, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":252
  *     property target:
@@ -87071,6 +92271,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
  *             return funicode(self._c_node.name)
  * 
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(6, 252, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyPIProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 252, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":253
@@ -87080,6 +92281,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(6, 253, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base._c_node->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87102,6 +92304,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87129,9 +92332,11 @@ static PyObject *__pyx_pw_4lxml_5etree_20_ReadOnlyEntityProxy_4name_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyEntityProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 260, 0, __PYX_ERR(6, 260, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":261
  *     property name:
@@ -87140,6 +92345,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name___get__(stru
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(6, 261, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base._c_node->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -87162,6 +92368,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name___get__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87190,6 +92397,7 @@ static int __pyx_pw_4lxml_5etree_20_ReadOnlyEntityProxy_4name_3__set__(PyObject
 static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __pyx_obj_4lxml_5etree__ReadOnlyEntityProxy *__pyx_v_self, PyObject *__pyx_v_value) {
   PyObject *__pyx_v_value_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -87199,6 +92407,7 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
   Py_UCS4 __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[6], 263, 0, __PYX_ERR(6, 263, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":264
  * 
@@ -87207,6 +92416,7 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
  *             if u'&' in value or u';' in value:
  *                 raise ValueError(f"Invalid entity name '{value}'")
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(6, 264, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value_utf = ((PyObject*)__pyx_t_1);
@@ -87219,14 +92429,15 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
  *                 raise ValueError(f"Invalid entity name '{value}'")
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  */
-  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__38, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 265, __pyx_L1_error)
+  __Pyx_TraceLine(265,0,__PYX_ERR(6, 265, __pyx_L1_error))
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__112, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 265, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (!__pyx_t_4) {
   } else {
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__39, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 265, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__113, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 265, __pyx_L1_error)
   __pyx_t_3 = (__pyx_t_4 != 0);
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
@@ -87239,6 +92450,7 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  * 
  */
+    __Pyx_TraceLine(266,0,__PYX_ERR(6, 266, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 266, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = 0;
@@ -87254,10 +92466,10 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
     __Pyx_GIVEREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
     __pyx_t_7 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_5 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
     __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 266, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -87284,6 +92496,7 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
  * 
  *     property text:
  */
+  __Pyx_TraceLine(267,0,__PYX_ERR(6, 267, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->__pyx_base._c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf));
 
   /* "src/lxml/readonlytree.pxi":263
@@ -87304,6 +92517,7 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87331,6 +92545,7 @@ static PyObject *__pyx_pw_4lxml_5etree_20_ReadOnlyEntityProxy_4text_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyEntityProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -87338,6 +92553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 270, 0, __PYX_ERR(6, 270, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":271
  *     property text:
@@ -87346,15 +92562,16 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
  * 
  * 
  */
+  __Pyx_TraceLine(271,0,__PYX_ERR(6, 271, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 271, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = 0;
   __pyx_t_3 = 127;
-  __Pyx_INCREF(__pyx_kp_u__38);
+  __Pyx_INCREF(__pyx_kp_u__112);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__38);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__38);
+  __Pyx_GIVEREF(__pyx_kp_u__112);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__112);
   __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base._c_node->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 271, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 271, __pyx_L1_error)
@@ -87365,10 +92582,10 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__39);
+  __Pyx_INCREF(__pyx_kp_u__113);
   __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__39);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__39);
+  __Pyx_GIVEREF(__pyx_kp_u__113);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__113);
   __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 271, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -87393,6 +92610,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87420,11 +92638,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_6attrib_1__get__(
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 279, 0, __PYX_ERR(6, 279, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":280
  *     property attrib:
@@ -87433,6 +92653,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
  *             return dict(_collectAttributes(self._c_node, 3))
  * 
  */
+  __Pyx_TraceLine(280,0,__PYX_ERR(6, 280, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 280, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":281
@@ -87442,6 +92663,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
  * 
  *     property prefix:
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(6, 281, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->__pyx_base._c_node, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 281, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87468,6 +92690,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87495,11 +92718,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_6prefix_1__get__(
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 286, 0, __PYX_ERR(6, 286, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":287
  *         """
@@ -87508,6 +92733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
  *             if self._c_node.ns is not NULL:
  *                 if self._c_node.ns.prefix is not NULL:
  */
+  __Pyx_TraceLine(287,0,__PYX_ERR(6, 287, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 287, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":288
@@ -87517,6 +92743,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
  *                 if self._c_node.ns.prefix is not NULL:
  *                     return funicode(self._c_node.ns.prefix)
  */
+  __Pyx_TraceLine(288,0,__PYX_ERR(6, 288, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->__pyx_base._c_node->ns != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -87527,6 +92754,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
  *                     return funicode(self._c_node.ns.prefix)
  *             return None
  */
+    __Pyx_TraceLine(289,0,__PYX_ERR(6, 289, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->__pyx_base._c_node->ns->prefix != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -87537,6 +92765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
  *             return None
  * 
  */
+      __Pyx_TraceLine(290,0,__PYX_ERR(6, 290, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base._c_node->ns->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 290, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -87569,6 +92798,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
  * 
  *     def get(self, key, default=None):
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(6, 291, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -87588,6 +92818,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87669,10 +92900,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_1get(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__200)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[6], 293, 0, __PYX_ERR(6, 293, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":296
  *         u"""Gets an element attribute.
@@ -87681,6 +92915,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(struct __pyx_
  *         return _getNodeAttributeValue(self._c_node, key, default)
  * 
  */
+  __Pyx_TraceLine(296,0,__PYX_ERR(6, 296, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 296, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":297
@@ -87690,6 +92925,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(struct __pyx_
  * 
  *     def keys(self):
  */
+  __Pyx_TraceLine(297,0,__PYX_ERR(6, 297, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__getNodeAttributeValue(__pyx_v_self->__pyx_base._c_node, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 297, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87712,6 +92948,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87741,10 +92978,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_3keys(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_2keys(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__201)
   __Pyx_RefNannySetupContext("keys", 0);
+  __Pyx_TraceCall("keys", __pyx_f[6], 299, 0, __PYX_ERR(6, 299, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":303
  *         arbitrary order (just like for an ordinary Python dictionary).
@@ -87753,6 +92993,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_2keys(struct __py
  *         return _collectAttributes(self._c_node, 1)
  * 
  */
+  __Pyx_TraceLine(303,0,__PYX_ERR(6, 303, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 303, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":304
@@ -87762,6 +93003,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_2keys(struct __py
  * 
  *     def values(self):
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(6, 304, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->__pyx_base._c_node, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87784,6 +93026,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_2keys(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87813,10 +93056,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_5values(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4values(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__202)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[6], 306, 0, __PYX_ERR(6, 306, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":310
  *         in an arbitrary order.
@@ -87825,6 +93071,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4values(struct __
  *         return _collectAttributes(self._c_node, 2)
  * 
  */
+  __Pyx_TraceLine(310,0,__PYX_ERR(6, 310, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 310, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":311
@@ -87834,6 +93081,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4values(struct __
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(6, 311, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->__pyx_base._c_node, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 311, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87856,6 +93104,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4values(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87885,10 +93134,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ReadOnlyElementProxy_7items(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6items(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__203)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[6], 313, 0, __PYX_ERR(6, 313, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":317
  *         in an arbitrary order.
@@ -87897,6 +93149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6items(struct __p
  *         return _collectAttributes(self._c_node, 3)
  * 
  */
+  __Pyx_TraceLine(317,0,__PYX_ERR(6, 317, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 317, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":318
@@ -87906,6 +93159,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6items(struct __p
  * 
  * cdef _ReadOnlyProxy _newReadOnlyProxy(
  */
+  __Pyx_TraceLine(318,0,__PYX_ERR(6, 318, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->__pyx_base._c_node, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -87928,6 +93182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6items(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -87943,10 +93198,12 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6items(struct __p
 static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_source_proxy, xmlNode *__pyx_v_c_node) {
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_el = 0;
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_newReadOnlyProxy", 0);
+  __Pyx_TraceCall("_newReadOnlyProxy", __pyx_f[6], 320, 0, __PYX_ERR(6, 320, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":323
  *     _ReadOnlyProxy source_proxy, xmlNode* c_node):
@@ -87955,6 +93212,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *         el = _ReadOnlyElementProxy.__new__(_ReadOnlyElementProxy)
  *     elif c_node.type == tree.XML_PI_NODE:
  */
+  __Pyx_TraceLine(323,0,__PYX_ERR(6, 323, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -87965,6 +93223,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     elif c_node.type == tree.XML_PI_NODE:
  *         el = _ReadOnlyPIProxy.__new__(_ReadOnlyPIProxy)
  */
+    __Pyx_TraceLine(324,0,__PYX_ERR(6, 324, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ReadOnlyElementProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 324, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__ReadOnlyProxy)))) __PYX_ERR(6, 324, __pyx_L1_error)
@@ -87987,6 +93246,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *         el = _ReadOnlyPIProxy.__new__(_ReadOnlyPIProxy)
  *     elif c_node.type in (tree.XML_COMMENT_NODE,
  */
+    __Pyx_TraceLine(325,0,__PYX_ERR(6, 325, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":326
@@ -87996,6 +93256,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     elif c_node.type in (tree.XML_COMMENT_NODE,
  *                          tree.XML_ENTITY_REF_NODE):
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(6, 326, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ReadOnlyPIProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ReadOnlyPIProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 326, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__ReadOnlyProxy)))) __PYX_ERR(6, 326, __pyx_L1_error)
@@ -88018,6 +93279,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *                          tree.XML_ENTITY_REF_NODE):
  *         el = _ReadOnlyProxy.__new__(_ReadOnlyProxy)
  */
+    __Pyx_TraceLine(327,0,__PYX_ERR(6, 327, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":328
@@ -88027,6 +93289,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *         el = _ReadOnlyProxy.__new__(_ReadOnlyProxy)
  *     else:
  */
+    __Pyx_TraceLine(328,0,__PYX_ERR(6, 328, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/readonlytree.pxi":329
@@ -88036,6 +93299,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     else:
  *         raise TypeError(f"Unsupported element type: {c_node.type}")
  */
+    __Pyx_TraceLine(329,0,__PYX_ERR(6, 329, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ReadOnlyProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 329, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_1);
@@ -88058,6 +93322,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     el._c_node = c_node
  *     _initReadOnlyProxy(el, source_proxy)
  */
+    __Pyx_TraceLine(331,0,__PYX_ERR(6, 331, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 331, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unsupported_element_type, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 331, __pyx_L1_error)
@@ -88079,6 +93344,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     _initReadOnlyProxy(el, source_proxy)
  *     return el
  */
+  __Pyx_TraceLine(332,0,__PYX_ERR(6, 332, __pyx_L1_error))
   __pyx_v_el->_c_node = __pyx_v_c_node;
 
   /* "src/lxml/readonlytree.pxi":333
@@ -88088,6 +93354,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  *     return el
  * 
  */
+  __Pyx_TraceLine(333,0,__PYX_ERR(6, 333, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__initReadOnlyProxy(__pyx_v_el, __pyx_v_source_proxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -88099,6 +93366,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
  * 
  * cdef inline _initReadOnlyProxy(_ReadOnlyProxy el,
  */
+  __Pyx_TraceLine(334,0,__PYX_ERR(6, 334, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_el));
   __pyx_r = __pyx_v_el;
@@ -88121,6 +93389,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_el);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88135,12 +93404,14 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newRe
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_el, struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_source_proxy) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_initReadOnlyProxy", 0);
+  __Pyx_TraceCall("_initReadOnlyProxy", __pyx_f[6], 336, 0, __PYX_ERR(6, 336, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":338
  * cdef inline _initReadOnlyProxy(_ReadOnlyProxy el,
@@ -88149,6 +93420,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
  *         el._source_proxy = el
  *         el._dependent_proxies = [el]
  */
+  __Pyx_TraceLine(338,0,__PYX_ERR(6, 338, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_source_proxy) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -88160,6 +93432,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
  *         el._dependent_proxies = [el]
  *     else:
  */
+    __Pyx_TraceLine(339,0,__PYX_ERR(6, 339, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_el));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_el));
     __Pyx_GOTREF(__pyx_v_el->_source_proxy);
@@ -88173,6 +93446,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
  *     else:
  *         el._source_proxy = source_proxy
  */
+    __Pyx_TraceLine(340,0,__PYX_ERR(6, 340, __pyx_L1_error))
     __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 340, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_el));
@@ -88201,6 +93475,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
  *         source_proxy._dependent_proxies.append(el)
  * 
  */
+  __Pyx_TraceLine(342,0,__PYX_ERR(6, 342, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(((PyObject *)__pyx_v_source_proxy));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_source_proxy));
@@ -88215,6 +93490,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
  * 
  * cdef _freeReadOnlyProxies(_ReadOnlyProxy sourceProxy):
  */
+    __Pyx_TraceLine(343,0,__PYX_ERR(6, 343, __pyx_L1_error))
     if (unlikely(__pyx_v_source_proxy->_dependent_proxies == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(6, 343, __pyx_L1_error)
@@ -88240,6 +93516,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88256,6 +93533,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
   xmlNode *__pyx_v_c_node;
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_el = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -88264,6 +93542,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
   PyObject *__pyx_t_5 = NULL;
   xmlNode *__pyx_t_6;
   __Pyx_RefNannySetupContext("_freeReadOnlyProxies", 0);
+  __Pyx_TraceCall("_freeReadOnlyProxies", __pyx_f[6], 345, 0, __PYX_ERR(6, 345, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":348
  *     cdef xmlNode* c_node
@@ -88272,6 +93551,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         return
  *     if sourceProxy._dependent_proxies is None:
  */
+  __Pyx_TraceLine(348,0,__PYX_ERR(6, 348, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_sourceProxy) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -88283,6 +93563,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *     if sourceProxy._dependent_proxies is None:
  *         return
  */
+    __Pyx_TraceLine(349,0,__PYX_ERR(6, 349, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -88303,6 +93584,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         return
  *     for el in sourceProxy._dependent_proxies:
  */
+  __Pyx_TraceLine(350,0,__PYX_ERR(6, 350, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_sourceProxy->_dependent_proxies == ((PyObject*)Py_None));
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -88314,6 +93596,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *     for el in sourceProxy._dependent_proxies:
  *         c_node = el._c_node
  */
+    __Pyx_TraceLine(351,0,__PYX_ERR(6, 351, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -88334,6 +93617,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         c_node = el._c_node
  *         el._c_node = NULL
  */
+  __Pyx_TraceLine(352,0,__PYX_ERR(6, 352, __pyx_L1_error))
   if (unlikely(__pyx_v_sourceProxy->_dependent_proxies == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(6, 352, __pyx_L1_error)
@@ -88358,6 +93642,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         el._c_node = NULL
  *         if el._free_after_use:
  */
+    __Pyx_TraceLine(353,0,__PYX_ERR(6, 353, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_el->_c_node;
     __pyx_v_c_node = __pyx_t_6;
 
@@ -88368,6 +93653,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         if el._free_after_use:
  *             tree.xmlFreeNode(c_node)
  */
+    __Pyx_TraceLine(354,0,__PYX_ERR(6, 354, __pyx_L1_error))
     __pyx_v_el->_c_node = NULL;
 
     /* "src/lxml/readonlytree.pxi":355
@@ -88377,6 +93663,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *             tree.xmlFreeNode(c_node)
  *     del sourceProxy._dependent_proxies[:]
  */
+    __Pyx_TraceLine(355,0,__PYX_ERR(6, 355, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_el->_free_after_use != 0);
     if (__pyx_t_1) {
 
@@ -88387,6 +93674,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *     del sourceProxy._dependent_proxies[:]
  * 
  */
+      __Pyx_TraceLine(356,0,__PYX_ERR(6, 356, __pyx_L1_error))
       xmlFreeNode(__pyx_v_c_node);
 
       /* "src/lxml/readonlytree.pxi":355
@@ -88405,6 +93693,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  *         c_node = el._c_node
  *         el._c_node = NULL
  */
+    __Pyx_TraceLine(352,0,__PYX_ERR(6, 352, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -88415,6 +93704,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
  * 
  * # opaque wrapper around non-element nodes, e.g. the document node
  */
+  __Pyx_TraceLine(357,0,__PYX_ERR(6, 357, __pyx_L1_error))
   if (unlikely(__pyx_v_sourceProxy->_dependent_proxies == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(6, 357, __pyx_L1_error)
@@ -88440,6 +93730,7 @@ static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_el);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88470,8 +93761,10 @@ static int __pyx_pw_4lxml_5etree_18_OpaqueNodeWrapper_1__init__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_5etree_18_OpaqueNodeWrapper___init__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[6], 367, 0, __PYX_ERR(6, 367, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":368
  *     cdef tree.xmlNode* _c_node
@@ -88480,6 +93773,7 @@ static int __pyx_pf_4lxml_5etree_18_OpaqueNodeWrapper___init__(CYTHON_UNUSED str
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(368,0,__PYX_ERR(6, 368, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_This_type_cannot_be_instantiated, 0, 0);
   __PYX_ERR(6, 368, __pyx_L1_error)
 
@@ -88495,6 +93789,7 @@ static int __pyx_pf_4lxml_5etree_18_OpaqueNodeWrapper___init__(CYTHON_UNUSED str
   __pyx_L1_error:;
   __Pyx_AddTraceback("lxml.etree._OpaqueNodeWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88509,8 +93804,10 @@ static int __pyx_pf_4lxml_5etree_18_OpaqueNodeWrapper___init__(CYTHON_UNUSED str
 
 static int __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(struct __pyx_obj_4lxml_5etree__OpaqueDocumentWrapper *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_assertNode", 0);
+  __Pyx_TraceCall("_assertNode", __pyx_f[6], 373, 0, __PYX_ERR(6, 373, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":376
  *         u"""This is our way of saying: this proxy is invalid!
@@ -88519,6 +93816,7 @@ static int __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(struct __py
  *         return 0
  * 
  */
+  __Pyx_TraceLine(376,0,__PYX_ERR(6, 376, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base._c_node != NULL) != 0))) {
@@ -88535,6 +93833,7 @@ static int __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(struct __py
  * 
  *     cpdef append(self, other_element):
  */
+  __Pyx_TraceLine(377,0,__PYX_ERR(6, 377, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -88551,6 +93850,7 @@ static int __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(struct __py
   __Pyx_AddTraceback("lxml.etree._OpaqueDocumentWrapper._assertNode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88568,6 +93868,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
   xmlNode *__pyx_v_c_next;
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -88575,7 +93876,9 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__204)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append", __pyx_f[6], 379, 0, __PYX_ERR(6, 379, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":384
  *         cdef xmlNode* c_next
@@ -88584,6 +93887,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         c_node = _roNodeOf(other_element)
  *         if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(384,0,__PYX_ERR(6, 384, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 384, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":385
@@ -88593,6 +93897,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         if c_node.type == tree.XML_ELEMENT_NODE:
  *             if tree.xmlDocGetRootElement(<tree.xmlDoc*>self._c_node) is not NULL:
  */
+  __Pyx_TraceLine(385,0,__PYX_ERR(6, 385, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__roNodeOf(__pyx_v_other_element); if (unlikely(__pyx_t_2 == ((xmlNode *)NULL))) __PYX_ERR(6, 385, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_2;
 
@@ -88603,6 +93908,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *             if tree.xmlDocGetRootElement(<tree.xmlDoc*>self._c_node) is not NULL:
  *                 raise ValueError, u"cannot append, document already has a root element"
  */
+  __Pyx_TraceLine(386,0,__PYX_ERR(6, 386, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_3) {
 
@@ -88613,6 +93919,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *                 raise ValueError, u"cannot append, document already has a root element"
  *         elif c_node.type not in (tree.XML_PI_NODE, tree.XML_COMMENT_NODE):
  */
+    __Pyx_TraceLine(387,0,__PYX_ERR(6, 387, __pyx_L1_error))
     __pyx_t_3 = ((xmlDocGetRootElement(((xmlDoc *)__pyx_v_self->__pyx_base._c_node)) != NULL) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -88623,6 +93930,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         elif c_node.type not in (tree.XML_PI_NODE, tree.XML_COMMENT_NODE):
  *             raise TypeError, f"unsupported element type for top-level node: {c_node.type}"
  */
+      __Pyx_TraceLine(388,0,__PYX_ERR(6, 388, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_cannot_append_document_already_h, 0, 0);
       __PYX_ERR(6, 388, __pyx_L1_error)
 
@@ -88652,6 +93960,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *             raise TypeError, f"unsupported element type for top-level node: {c_node.type}"
  *         c_node = _copyNodeToDoc(c_node, <tree.xmlDoc*>self._c_node)
  */
+  __Pyx_TraceLine(389,0,__PYX_ERR(6, 389, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_PI_NODE:
     case XML_COMMENT_NODE:
@@ -88671,6 +93980,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         c_node = _copyNodeToDoc(c_node, <tree.xmlDoc*>self._c_node)
  *         c_next = c_node.next
  */
+    __Pyx_TraceLine(390,0,__PYX_ERR(6, 390, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 390, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unsupported_element_type_for_top, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 390, __pyx_L1_error)
@@ -88697,6 +94007,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         c_next = c_node.next
  *         tree.xmlAddChild(self._c_node, c_node)
  */
+  __Pyx_TraceLine(391,0,__PYX_ERR(6, 391, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyNodeToDoc(__pyx_v_c_node, ((xmlDoc *)__pyx_v_self->__pyx_base._c_node)); if (unlikely(__pyx_t_2 == ((xmlNode *)NULL))) __PYX_ERR(6, 391, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_2;
 
@@ -88707,6 +94018,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         tree.xmlAddChild(self._c_node, c_node)
  *         _moveTail(c_next, c_node)
  */
+  __Pyx_TraceLine(392,0,__PYX_ERR(6, 392, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_2;
 
@@ -88717,6 +94029,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  *         _moveTail(c_next, c_node)
  * 
  */
+  __Pyx_TraceLine(393,0,__PYX_ERR(6, 393, __pyx_L1_error))
   (void)(xmlAddChild(__pyx_v_self->__pyx_base._c_node, __pyx_v_c_node));
 
   /* "src/lxml/readonlytree.pxi":394
@@ -88726,6 +94039,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
  * 
  *     def extend(self, elements):
  */
+  __Pyx_TraceLine(394,0,__PYX_ERR(6, 394, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/readonlytree.pxi":379
@@ -88746,6 +94060,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88767,9 +94082,12 @@ static PyObject *__pyx_pw_4lxml_5etree_22_OpaqueDocumentWrapper_1append(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __pyx_obj_4lxml_5etree__OpaqueDocumentWrapper *__pyx_v_self, PyObject *__pyx_v_other_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__204)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append (wrapper)", __pyx_f[6], 379, 0, __PYX_ERR(6, 379, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(__pyx_v_self, __pyx_v_other_element, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 379, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -88784,6 +94102,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_append(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88814,13 +94133,16 @@ static PyObject *__pyx_pw_4lxml_5etree_22_OpaqueDocumentWrapper_3extend(PyObject
 static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct __pyx_obj_4lxml_5etree__OpaqueDocumentWrapper *__pyx_v_self, PyObject *__pyx_v_elements) {
   PyObject *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   Py_ssize_t __pyx_t_3;
   PyObject *(*__pyx_t_4)(PyObject *);
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__205)
   __Pyx_RefNannySetupContext("extend", 0);
+  __Pyx_TraceCall("extend", __pyx_f[6], 396, 0, __PYX_ERR(6, 396, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":400
  *         children.
@@ -88829,6 +94151,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
  *         for element in elements:
  *             self.append(element)
  */
+  __Pyx_TraceLine(400,0,__PYX_ERR(6, 400, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper__assertNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 400, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":401
@@ -88838,6 +94161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
  *             self.append(element)
  * 
  */
+  __Pyx_TraceLine(401,0,__PYX_ERR(6, 401, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
     __pyx_t_2 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
@@ -88887,6 +94211,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
  * 
  * cdef _OpaqueNodeWrapper _newOpaqueAppendOnlyNodeWrapper(xmlNode* c_node):
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(6, 402, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree_22_OpaqueDocumentWrapper_append(__pyx_v_self, __pyx_v_element, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 402, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -88898,6 +94223,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
  *             self.append(element)
  * 
  */
+    __Pyx_TraceLine(401,0,__PYX_ERR(6, 401, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -88920,6 +94246,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -88935,9 +94262,11 @@ static PyObject *__pyx_pf_4lxml_5etree_22_OpaqueDocumentWrapper_2extend(struct _
 static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__newOpaqueAppendOnlyNodeWrapper(xmlNode *__pyx_v_c_node) {
   struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_v_node = 0;
   struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_newOpaqueAppendOnlyNodeWrapper", 0);
+  __Pyx_TraceCall("_newOpaqueAppendOnlyNodeWrapper", __pyx_f[6], 404, 0, __PYX_ERR(6, 404, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":406
  * cdef _OpaqueNodeWrapper _newOpaqueAppendOnlyNodeWrapper(xmlNode* c_node):
@@ -88946,6 +94275,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
  *         node = _OpaqueDocumentWrapper.__new__(_OpaqueDocumentWrapper)
  *     else:
  */
+  __Pyx_TraceLine(406,0,__PYX_ERR(6, 406, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_DOCUMENT_NODE:
     case XML_HTML_DOCUMENT_NODE:
@@ -88957,6 +94287,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
  *     else:
  *         node = _OpaqueNodeWrapper.__new__(_OpaqueNodeWrapper)
  */
+    __Pyx_TraceLine(407,0,__PYX_ERR(6, 407, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__OpaqueDocumentWrapper(((PyTypeObject *)__pyx_ptype_4lxml_5etree__OpaqueDocumentWrapper), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 407, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__OpaqueNodeWrapper)))) __PYX_ERR(6, 407, __pyx_L1_error)
@@ -88980,6 +94311,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
  *     node._c_node = c_node
  *     return node
  */
+    __Pyx_TraceLine(409,0,__PYX_ERR(6, 409, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__OpaqueNodeWrapper(((PyTypeObject *)__pyx_ptype_4lxml_5etree__OpaqueNodeWrapper), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 409, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     __pyx_v_node = ((struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *)__pyx_t_1);
@@ -88994,6 +94326,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
  *     return node
  * 
  */
+  __Pyx_TraceLine(410,0,__PYX_ERR(6, 410, __pyx_L1_error))
   __pyx_v_node->_c_node = __pyx_v_c_node;
 
   /* "src/lxml/readonlytree.pxi":411
@@ -89003,6 +94336,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
  * 
  * # element proxies that allow restricted modification
  */
+  __Pyx_TraceLine(411,0,__PYX_ERR(6, 411, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __pyx_r = __pyx_v_node;
@@ -89024,6 +94358,7 @@ static struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *__pyx_f_4lxml_5etree__n
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89051,11 +94386,13 @@ static PyObject *__pyx_pw_4lxml_5etree_23_ModifyContentOnlyProxy_4text_1__get__(
 
 static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 420, 0, __PYX_ERR(6, 420, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":421
  *     property text:
@@ -89064,6 +94401,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(s
  *             if self._c_node.content is NULL:
  *                 return ''
  */
+  __Pyx_TraceLine(421,0,__PYX_ERR(6, 421, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 421, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":422
@@ -89073,6 +94411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(s
  *                 return ''
  *             else:
  */
+  __Pyx_TraceLine(422,0,__PYX_ERR(6, 422, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->__pyx_base._c_node->content == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -89083,9 +94422,10 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(s
  *             else:
  *                 return funicode(self._c_node.content)
  */
+    __Pyx_TraceLine(423,0,__PYX_ERR(6, 423, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_s__16);
-    __pyx_r = __pyx_kp_s__16;
+    __Pyx_INCREF(__pyx_kp_s__23);
+    __pyx_r = __pyx_kp_s__23;
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":422
@@ -89104,6 +94444,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(s
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(425,0,__PYX_ERR(6, 425, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base._c_node->content); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 425, __pyx_L1_error)
@@ -89128,6 +94469,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text___get__(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89156,12 +94498,14 @@ static int __pyx_pw_4lxml_5etree_23_ModifyContentOnlyProxy_4text_3__set__(PyObje
 static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyProxy *__pyx_v_self, PyObject *__pyx_v_value) {
   const xmlChar *__pyx_v_c_text;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[6], 427, 0, __PYX_ERR(6, 427, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":429
@@ -89171,6 +94515,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  *             if value is None:
  *                 c_text = <const_xmlChar*>NULL
  */
+  __Pyx_TraceLine(429,0,__PYX_ERR(6, 429, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 429, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":430
@@ -89180,6 +94525,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  *                 c_text = <const_xmlChar*>NULL
  *             else:
  */
+  __Pyx_TraceLine(430,0,__PYX_ERR(6, 430, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -89191,6 +94537,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  *             else:
  *                 value = _utf8(value)
  */
+    __Pyx_TraceLine(431,0,__PYX_ERR(6, 431, __pyx_L1_error))
     __pyx_v_c_text = ((const xmlChar *)NULL);
 
     /* "src/lxml/readonlytree.pxi":430
@@ -89210,6 +94557,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  *                 c_text = _xcstr(value)
  *             tree.xmlNodeSetContent(self._c_node, c_text)
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(6, 433, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 433, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -89223,6 +94571,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  *             tree.xmlNodeSetContent(self._c_node, c_text)
  * 
  */
+    __Pyx_TraceLine(434,0,__PYX_ERR(6, 434, __pyx_L1_error))
     __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
   }
   __pyx_L3:;
@@ -89234,6 +94583,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(6, 435, __pyx_L1_error))
   xmlNodeSetContent(__pyx_v_self->__pyx_base._c_node, __pyx_v_c_text);
 
   /* "src/lxml/readonlytree.pxi":427
@@ -89253,6 +94603,7 @@ static int __pyx_pf_4lxml_5etree_23_ModifyContentOnlyProxy_4text_2__set__(struct
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89280,10 +94631,12 @@ static PyObject *__pyx_pw_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_1__ge
 
 static PyObject *__pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target___get__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyPIProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 444, 0, __PYX_ERR(6, 444, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":445
  *     property target:
@@ -89292,6 +94645,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target___get
  *             return funicode(self._c_node.name)
  * 
  */
+  __Pyx_TraceLine(445,0,__PYX_ERR(6, 445, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyPIProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 445, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":446
@@ -89301,6 +94655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target___get
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(446,0,__PYX_ERR(6, 446, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -89323,6 +94678,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target___get
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89351,10 +94707,12 @@ static int __pyx_pw_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_3__set__(Py
 static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyPIProxy *__pyx_v_self, PyObject *__pyx_v_value) {
   const xmlChar *__pyx_v_c_text;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[6], 448, 0, __PYX_ERR(6, 448, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":449
@@ -89364,6 +94722,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
  *             value = _utf8(value)
  *             c_text = _xcstr(value)
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(6, 449, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyPIProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 449, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":450
@@ -89373,6 +94732,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
  *             c_text = _xcstr(value)
  *             tree.xmlNodeSetName(self._c_node, c_text)
  */
+  __Pyx_TraceLine(450,0,__PYX_ERR(6, 450, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 450, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
@@ -89385,6 +94745,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
  *             tree.xmlNodeSetName(self._c_node, c_text)
  * 
  */
+  __Pyx_TraceLine(451,0,__PYX_ERR(6, 451, __pyx_L1_error))
   __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":452
@@ -89394,6 +94755,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(452,0,__PYX_ERR(6, 452, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_c_text);
 
   /* "src/lxml/readonlytree.pxi":448
@@ -89413,6 +94775,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89440,9 +94803,11 @@ static PyObject *__pyx_pw_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_1__
 
 static PyObject *__pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name___get__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyEntityProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 459, 0, __PYX_ERR(6, 459, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":460
  *     property name:
@@ -89451,6 +94816,7 @@ static PyObject *__pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name___g
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(460,0,__PYX_ERR(6, 460, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 460, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -89473,6 +94839,7 @@ static PyObject *__pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name___g
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89501,6 +94868,7 @@ static int __pyx_pw_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_3__set__(
 static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(struct __pyx_obj_4lxml_5etree__ModifyContentOnlyEntityProxy *__pyx_v_self, PyObject *__pyx_v_value) {
   const xmlChar *__pyx_v_c_text;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -89510,6 +94878,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
   Py_UCS4 __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[6], 462, 0, __PYX_ERR(6, 462, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":463
@@ -89519,6 +94888,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
  *             assert u'&' not in value and u';' not in value, \
  *                 f"Invalid entity name '{value}'"
  */
+  __Pyx_TraceLine(463,0,__PYX_ERR(6, 463, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 463, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
@@ -89531,16 +94901,17 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
  *                 f"Invalid entity name '{value}'"
  *             c_text = _xcstr(value)
  */
+  __Pyx_TraceLine(464,0,__PYX_ERR(6, 464, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__38, __pyx_v_value, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 464, __pyx_L1_error)
+    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__112, __pyx_v_value, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(6, 464, __pyx_L1_error)
     __pyx_t_4 = (__pyx_t_3 != 0);
     if (__pyx_t_4) {
     } else {
       __pyx_t_2 = __pyx_t_4;
       goto __pyx_L3_bool_binop_done;
     }
-    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__39, __pyx_v_value, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 464, __pyx_L1_error)
+    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__113, __pyx_v_value, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 464, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_4 != 0);
     __pyx_t_2 = __pyx_t_3;
     __pyx_L3_bool_binop_done:;
@@ -89553,6 +94924,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
  *             c_text = _xcstr(value)
  *             tree.xmlNodeSetName(self._c_node, c_text)
  */
+      __Pyx_TraceLine(465,0,__PYX_ERR(6, 465, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 465, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = 0;
@@ -89568,10 +94940,10 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
       __Pyx_GIVEREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
       __pyx_t_7 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_5 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
       __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 465, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -89589,6 +94961,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
  *             tree.xmlNodeSetName(self._c_node, c_text)
  * 
  */
+  __Pyx_TraceLine(466,0,__PYX_ERR(6, 466, __pyx_L1_error))
   __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":467
@@ -89598,6 +94971,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
  * 
  * 
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(6, 467, __pyx_L1_error))
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_c_text);
 
   /* "src/lxml/readonlytree.pxi":462
@@ -89618,6 +94992,7 @@ static int __pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name_2__set__(
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89635,10 +95010,13 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
   xmlNode *__pyx_v_c_next;
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__206)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append", __pyx_f[6], 476, 0, __PYX_ERR(6, 476, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":481
  *         cdef xmlNode* c_next
@@ -89647,6 +95025,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  *         c_node = _roNodeOf(other_element)
  *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
  */
+  __Pyx_TraceLine(481,0,__PYX_ERR(6, 481, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 481, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":482
@@ -89656,6 +95035,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
  *         c_next = c_node.next
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(6, 482, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__roNodeOf(__pyx_v_other_element); if (unlikely(__pyx_t_2 == ((xmlNode *)NULL))) __PYX_ERR(6, 482, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_2;
 
@@ -89666,6 +95046,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  *         c_next = c_node.next
  *         tree.xmlAddChild(self._c_node, c_node)
  */
+  __Pyx_TraceLine(483,0,__PYX_ERR(6, 483, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyNodeToDoc(__pyx_v_c_node, __pyx_v_self->__pyx_base.__pyx_base._c_node->doc); if (unlikely(__pyx_t_2 == ((xmlNode *)NULL))) __PYX_ERR(6, 483, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_2;
 
@@ -89676,6 +95057,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  *         tree.xmlAddChild(self._c_node, c_node)
  *         _moveTail(c_next, c_node)
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(6, 484, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_2;
 
@@ -89686,6 +95068,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  *         _moveTail(c_next, c_node)
  * 
  */
+  __Pyx_TraceLine(485,0,__PYX_ERR(6, 485, __pyx_L1_error))
   (void)(xmlAddChild(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_c_node));
 
   /* "src/lxml/readonlytree.pxi":486
@@ -89695,6 +95078,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
  * 
  *     def extend(self, elements):
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(6, 486, __pyx_L1_error))
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
   /* "src/lxml/readonlytree.pxi":476
@@ -89713,6 +95097,7 @@ static PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89734,9 +95119,12 @@ static PyObject *__pyx_pw_4lxml_5etree_23_AppendOnlyElementProxy_1append(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_self, PyObject *__pyx_v_other_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__206)
   __Pyx_RefNannySetupContext("append", 0);
+  __Pyx_TraceCall("append (wrapper)", __pyx_f[6], 476, 0, __PYX_ERR(6, 476, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(__pyx_v_self, __pyx_v_other_element, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -89751,6 +95139,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89781,13 +95170,16 @@ static PyObject *__pyx_pw_4lxml_5etree_23_AppendOnlyElementProxy_3extend(PyObjec
 static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_self, PyObject *__pyx_v_elements) {
   PyObject *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   Py_ssize_t __pyx_t_3;
   PyObject *(*__pyx_t_4)(PyObject *);
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__207)
   __Pyx_RefNannySetupContext("extend", 0);
+  __Pyx_TraceCall("extend", __pyx_f[6], 488, 0, __PYX_ERR(6, 488, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":492
  *         children.
@@ -89796,6 +95188,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct
  *         for element in elements:
  *             self.append(element)
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(6, 492, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 492, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":493
@@ -89805,6 +95198,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct
  *             self.append(element)
  * 
  */
+  __Pyx_TraceLine(493,0,__PYX_ERR(6, 493, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_elements)) || PyTuple_CheckExact(__pyx_v_elements)) {
     __pyx_t_2 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
@@ -89854,6 +95248,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct
  * 
  *     property text:
  */
+    __Pyx_TraceLine(494,0,__PYX_ERR(6, 494, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(__pyx_v_self, __pyx_v_element, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 494, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -89865,6 +95260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct
  *             self.append(element)
  * 
  */
+    __Pyx_TraceLine(493,0,__PYX_ERR(6, 493, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -89887,6 +95283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_2extend(struct
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89914,10 +95311,12 @@ static PyObject *__pyx_pw_4lxml_5etree_23_AppendOnlyElementProxy_4text_1__get__(
 
 static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[6], 500, 0, __PYX_ERR(6, 500, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":501
  *         """
@@ -89926,6 +95325,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(s
  *             return _collectText(self._c_node.children)
  * 
  */
+  __Pyx_TraceLine(501,0,__PYX_ERR(6, 501, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 501, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":502
@@ -89935,6 +95335,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(s
  * 
  *         def __set__(self, value):
  */
+  __Pyx_TraceLine(502,0,__PYX_ERR(6, 502, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->__pyx_base.__pyx_base._c_node->children); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -89957,6 +95358,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -89984,6 +95386,7 @@ static int __pyx_pw_4lxml_5etree_23_AppendOnlyElementProxy_4text_3__set__(PyObje
 
 static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -89991,6 +95394,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[6], 504, 0, __PYX_ERR(6, 504, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "src/lxml/readonlytree.pxi":505
@@ -90000,6 +95404,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
  *             if isinstance(value, QName):
  *                 value = _resolveQNameText(self, value).decode('utf8')
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(6, 505, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 505, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":506
@@ -90009,6 +95414,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
  *                 value = _resolveQNameText(self, value).decode('utf8')
  *             _setNodeText(self._c_node, value)
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(6, 506, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree_QName); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -90020,6 +95426,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
  *             _setNodeText(self._c_node, value)
  * 
  */
+    __Pyx_TraceLine(507,0,__PYX_ERR(6, 507, __pyx_L1_error))
     if (!(likely(((((PyObject *)__pyx_v_self)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(6, 507, __pyx_L1_error)
     __pyx_t_4 = __pyx_f_4lxml_5etree__resolveQNameText(((struct LxmlElement *)__pyx_v_self), __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 507, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -90049,6 +95456,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
  * 
  * 
  */
+  __Pyx_TraceLine(508,0,__PYX_ERR(6, 508, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 508, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":504
@@ -90069,6 +95477,7 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -90084,10 +95493,12 @@ static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text_2__set__(struct
 static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAppendOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_source_proxy, xmlNode *__pyx_v_c_node) {
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_el = 0;
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_newAppendOnlyProxy", 0);
+  __Pyx_TraceCall("_newAppendOnlyProxy", __pyx_f[6], 511, 0, __PYX_ERR(6, 511, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":514
  *     _ReadOnlyProxy source_proxy, xmlNode* c_node):
@@ -90096,6 +95507,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *         el = _AppendOnlyElementProxy.__new__(_AppendOnlyElementProxy)
  *     elif c_node.type == tree.XML_PI_NODE:
  */
+  __Pyx_TraceLine(514,0,__PYX_ERR(6, 514, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -90106,6 +95518,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     elif c_node.type == tree.XML_PI_NODE:
  *         el = _ModifyContentOnlyPIProxy.__new__(_ModifyContentOnlyPIProxy)
  */
+    __Pyx_TraceLine(515,0,__PYX_ERR(6, 515, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__AppendOnlyElementProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__AppendOnlyElementProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 515, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__ReadOnlyProxy)))) __PYX_ERR(6, 515, __pyx_L1_error)
@@ -90128,6 +95541,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *         el = _ModifyContentOnlyPIProxy.__new__(_ModifyContentOnlyPIProxy)
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  */
+    __Pyx_TraceLine(516,0,__PYX_ERR(6, 516, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":517
@@ -90137,6 +95551,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  *         el = _ModifyContentOnlyProxy.__new__(_ModifyContentOnlyProxy)
  */
+    __Pyx_TraceLine(517,0,__PYX_ERR(6, 517, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ModifyContentOnlyPIProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ModifyContentOnlyPIProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 517, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__ReadOnlyProxy)))) __PYX_ERR(6, 517, __pyx_L1_error)
@@ -90159,6 +95574,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *         el = _ModifyContentOnlyProxy.__new__(_ModifyContentOnlyProxy)
  *     else:
  */
+    __Pyx_TraceLine(518,0,__PYX_ERR(6, 518, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":519
@@ -90168,6 +95584,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     else:
  *         raise TypeError(f"Unsupported element type: {c_node.type}")
  */
+    __Pyx_TraceLine(519,0,__PYX_ERR(6, 519, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ModifyContentOnlyProxy(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ModifyContentOnlyProxy), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 519, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
     if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_1), __pyx_ptype_4lxml_5etree__ReadOnlyProxy)))) __PYX_ERR(6, 519, __pyx_L1_error)
@@ -90191,6 +95608,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     el._c_node = c_node
  *     _initReadOnlyProxy(el, source_proxy)
  */
+    __Pyx_TraceLine(521,0,__PYX_ERR(6, 521, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 521, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unsupported_element_type, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 521, __pyx_L1_error)
@@ -90212,6 +95630,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     _initReadOnlyProxy(el, source_proxy)
  *     return el
  */
+  __Pyx_TraceLine(522,0,__PYX_ERR(6, 522, __pyx_L1_error))
   __pyx_v_el->_c_node = __pyx_v_c_node;
 
   /* "src/lxml/readonlytree.pxi":523
@@ -90221,6 +95640,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  *     return el
  * 
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(6, 523, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__initReadOnlyProxy(__pyx_v_el, __pyx_v_source_proxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 523, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -90232,6 +95652,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
  * 
  * cdef xmlNode* _roNodeOf(element) except NULL:
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(6, 524, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_el));
   __pyx_r = __pyx_v_el;
@@ -90254,6 +95675,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_el);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -90269,6 +95691,7 @@ static struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_f_4lxml_5etree__newAp
 static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -90276,6 +95699,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_roNodeOf", 0);
+  __Pyx_TraceCall("_roNodeOf", __pyx_f[6], 526, 0, __PYX_ERR(6, 526, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":528
  * cdef xmlNode* _roNodeOf(element) except NULL:
@@ -90284,6 +95708,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_Element>element)._c_node
  *     elif isinstance(element, _ReadOnlyProxy):
  */
+  __Pyx_TraceLine(528,0,__PYX_ERR(6, 528, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -90295,6 +95720,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *     elif isinstance(element, _ReadOnlyProxy):
  *         c_node = (<_ReadOnlyProxy>element)._c_node
  */
+    __Pyx_TraceLine(529,0,__PYX_ERR(6, 529, __pyx_L1_error))
     __pyx_t_3 = ((struct LxmlElement *)__pyx_v_element)->_c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90315,6 +95741,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_ReadOnlyProxy>element)._c_node
  *     elif isinstance(element, _OpaqueNodeWrapper):
  */
+  __Pyx_TraceLine(530,0,__PYX_ERR(6, 530, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__ReadOnlyProxy); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -90326,6 +95753,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *     elif isinstance(element, _OpaqueNodeWrapper):
  *         c_node = (<_OpaqueNodeWrapper>element)._c_node
  */
+    __Pyx_TraceLine(531,0,__PYX_ERR(6, 531, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_v_element)->_c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90346,6 +95774,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_OpaqueNodeWrapper>element)._c_node
  *     else:
  */
+  __Pyx_TraceLine(532,0,__PYX_ERR(6, 532, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__OpaqueNodeWrapper); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -90357,6 +95786,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *     else:
  *         raise TypeError, f"invalid argument type {type(element)}"
  */
+    __Pyx_TraceLine(533,0,__PYX_ERR(6, 533, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *)__pyx_v_element)->_c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90377,6 +95807,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  * 
  *     if c_node is NULL:
  */
+  __Pyx_TraceLine(535,0,__PYX_ERR(6, 535, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_element)), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 535, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -90396,6 +95827,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *         raise TypeError, u"invalid element"
  *     return c_node
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(6, 537, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -90406,6 +95838,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  *     return c_node
  * 
  */
+    __Pyx_TraceLine(538,0,__PYX_ERR(6, 538, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_invalid_element, 0, 0);
     __PYX_ERR(6, 538, __pyx_L1_error)
 
@@ -90425,6 +95858,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  * 
  * cdef xmlNode* _nonRoNodeOf(element) except NULL:
  */
+  __Pyx_TraceLine(539,0,__PYX_ERR(6, 539, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -90443,6 +95877,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
   __Pyx_AddTraceback("lxml.etree._roNodeOf", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -90458,6 +95893,7 @@ static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
 static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -90465,6 +95901,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_nonRoNodeOf", 0);
+  __Pyx_TraceCall("_nonRoNodeOf", __pyx_f[6], 541, 0, __PYX_ERR(6, 541, __pyx_L1_error));
 
   /* "src/lxml/readonlytree.pxi":543
  * cdef xmlNode* _nonRoNodeOf(element) except NULL:
@@ -90473,6 +95910,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_Element>element)._c_node
  *     elif isinstance(element, _AppendOnlyElementProxy):
  */
+  __Pyx_TraceLine(543,0,__PYX_ERR(6, 543, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -90484,6 +95922,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *     elif isinstance(element, _AppendOnlyElementProxy):
  *         c_node = (<_AppendOnlyElementProxy>element)._c_node
  */
+    __Pyx_TraceLine(544,0,__PYX_ERR(6, 544, __pyx_L1_error))
     __pyx_t_3 = ((struct LxmlElement *)__pyx_v_element)->_c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90504,6 +95943,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_AppendOnlyElementProxy>element)._c_node
  *     elif isinstance(element, _OpaqueNodeWrapper):
  */
+  __Pyx_TraceLine(545,0,__PYX_ERR(6, 545, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__AppendOnlyElementProxy); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -90515,6 +95955,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *     elif isinstance(element, _OpaqueNodeWrapper):
  *         c_node = (<_OpaqueNodeWrapper>element)._c_node
  */
+    __Pyx_TraceLine(546,0,__PYX_ERR(6, 546, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_element)->__pyx_base.__pyx_base._c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90535,6 +95976,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         c_node = (<_OpaqueNodeWrapper>element)._c_node
  *     else:
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(6, 547, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__OpaqueNodeWrapper); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
@@ -90546,6 +95988,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *     else:
  *         raise TypeError, f"invalid argument type {type(element)}"
  */
+    __Pyx_TraceLine(548,0,__PYX_ERR(6, 548, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_obj_4lxml_5etree__OpaqueNodeWrapper *)__pyx_v_element)->_c_node;
     __pyx_v_c_node = __pyx_t_3;
 
@@ -90566,6 +96009,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  * 
  *     if c_node is NULL:
  */
+  __Pyx_TraceLine(550,0,__PYX_ERR(6, 550, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_element)), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 550, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -90585,6 +96029,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         raise TypeError, u"invalid element"
  *     return c_node
  */
+  __Pyx_TraceLine(552,0,__PYX_ERR(6, 552, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -90594,6 +96039,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         raise TypeError, u"invalid element"             # <<<<<<<<<<<<<<
  *     return c_node
  */
+    __Pyx_TraceLine(553,0,__PYX_ERR(6, 553, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_invalid_element, 0, 0);
     __PYX_ERR(6, 553, __pyx_L1_error)
 
@@ -90611,6 +96057,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
  *         raise TypeError, u"invalid element"
  *     return c_node             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(6, 554, __pyx_L1_error))
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
@@ -90629,6 +96076,7 @@ static xmlNode *__pyx_f_4lxml_5etree__nonRoNodeOf(PyObject *__pyx_v_element) {
   __Pyx_AddTraceback("lxml.etree._nonRoNodeOf", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -90727,6 +96175,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_v_child = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -90745,6 +96194,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
   Py_ssize_t __pyx_t_15;
   int __pyx_t_16;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 42, 0, __PYX_ERR(7, 42, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":45
  *         u"""ElementBase(*children, attrib=None, nsmap=None, **_extra)
@@ -90753,6 +96203,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         cdef _BaseParser parser
  *         cdef _Element last_child
  */
+  __Pyx_TraceLine(45,0,__PYX_ERR(7, 45, __pyx_L1_error))
   __pyx_v_is_html = 0;
 
   /* "src/lxml/classlookup.pxi":49
@@ -90762,6 +96213,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         try:
  *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(7, 49, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 49, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v__getattr = __pyx_t_1;
@@ -90774,6 +96226,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
  *         except AttributeError:
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(7, 50, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -90790,6 +96243,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         except AttributeError:
  *             namespace = None
  */
+      __Pyx_TraceLine(51,0,__PYX_ERR(7, 51, __pyx_L3_error))
       __Pyx_INCREF(__pyx_v__getattr);
       __pyx_t_5 = __pyx_v__getattr; __pyx_t_6 = NULL;
       __pyx_t_7 = 0;
@@ -90867,6 +96321,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             namespace = None
  *         try:
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(7, 52, __pyx_L5_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree.ElementBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -90882,6 +96337,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         try:
  *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
  */
+      __Pyx_TraceLine(53,0,__PYX_ERR(7, 53, __pyx_L5_except_error))
       __Pyx_INCREF(Py_None);
       __Pyx_XDECREF_SET(__pyx_v_namespace, Py_None);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -90919,6 +96375,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
  *             if ns is not None:
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(7, 54, __pyx_L11_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -90935,6 +96392,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             if ns is not None:
  *                 namespace = ns
  */
+      __Pyx_TraceLine(55,0,__PYX_ERR(7, 55, __pyx_L11_error))
       __Pyx_INCREF(__pyx_v__getattr);
       __pyx_t_1 = __pyx_v__getattr; __pyx_t_5 = NULL;
       __pyx_t_7 = 0;
@@ -91019,6 +96477,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 namespace = ns
  *         except AttributeError:
  */
+      __Pyx_TraceLine(56,0,__PYX_ERR(7, 56, __pyx_L11_error))
       __pyx_t_9 = (__pyx_v_ns != Py_None);
       __pyx_t_10 = (__pyx_t_9 != 0);
       if (__pyx_t_10) {
@@ -91030,6 +96489,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         except AttributeError:
  *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
  */
+        __Pyx_TraceLine(57,0,__PYX_ERR(7, 57, __pyx_L11_error))
         __Pyx_INCREF(__pyx_v_ns);
         __Pyx_DECREF_SET(__pyx_v_namespace, __pyx_v_ns);
 
@@ -91067,6 +96527,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
  *             if b'.' in tag:
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(7, 58, __pyx_L13_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree.ElementBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -91082,6 +96543,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             if b'.' in tag:
  *                 tag = tag.split(b'.')[-1]
  */
+      __Pyx_TraceLine(59,0,__PYX_ERR(7, 59, __pyx_L13_except_error))
       __Pyx_INCREF(__pyx_v__getattr);
       __pyx_t_12 = __pyx_v__getattr; __pyx_t_13 = NULL;
       __pyx_t_7 = 0;
@@ -91189,7 +96651,8 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 tag = tag.split(b'.')[-1]
  *         try:
  */
-      __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__4, __pyx_v_tag, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(7, 60, __pyx_L13_except_error)
+      __Pyx_TraceLine(60,0,__PYX_ERR(7, 60, __pyx_L13_except_error))
+      __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__11, __pyx_v_tag, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(7, 60, __pyx_L13_except_error)
       __pyx_t_9 = (__pyx_t_10 != 0);
       if (__pyx_t_9) {
 
@@ -91200,7 +96663,8 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         try:
  *             parser = _getattr(self, 'PARSER')
  */
-        __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyBytes_Type_split, __pyx_v_tag, __pyx_kp_b__4); if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 61, __pyx_L13_except_error)
+        __Pyx_TraceLine(61,0,__PYX_ERR(7, 61, __pyx_L13_except_error))
+        __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyBytes_Type_split, __pyx_v_tag, __pyx_kp_b__11); if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 61, __pyx_L13_except_error)
         __Pyx_GOTREF(__pyx_t_12);
         __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_12, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 61, __pyx_L13_except_error)
         __Pyx_GOTREF(__pyx_t_5);
@@ -91251,6 +96715,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             parser = _getattr(self, 'PARSER')
  *         except AttributeError:
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(7, 62, __pyx_L21_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -91267,6 +96732,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         except AttributeError:
  *             parser = None
  */
+      __Pyx_TraceLine(63,0,__PYX_ERR(7, 63, __pyx_L21_error))
       __Pyx_INCREF(__pyx_v__getattr);
       __pyx_t_6 = __pyx_v__getattr; __pyx_t_1 = NULL;
       __pyx_t_7 = 0;
@@ -91346,6 +96812,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             parser = None
  *             for child in children:
  */
+    __Pyx_TraceLine(64,0,__PYX_ERR(7, 64, __pyx_L23_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree.ElementBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -91361,6 +96828,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             for child in children:
  *                 if isinstance(child, _Element):
  */
+      __Pyx_TraceLine(65,0,__PYX_ERR(7, 65, __pyx_L23_except_error))
       __Pyx_INCREF(Py_None);
       __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None));
 
@@ -91371,6 +96839,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 if isinstance(child, _Element):
  *                     parser = (<_Element>child)._doc._parser
  */
+      __Pyx_TraceLine(66,0,__PYX_ERR(7, 66, __pyx_L23_except_error))
       __pyx_t_1 = __pyx_v_children; __Pyx_INCREF(__pyx_t_1); __pyx_t_15 = 0;
       for (;;) {
         if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
@@ -91390,6 +96859,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                     parser = (<_Element>child)._doc._parser
  *                     break
  */
+        __Pyx_TraceLine(67,0,__PYX_ERR(7, 67, __pyx_L23_except_error))
         __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_child, __pyx_ptype_4lxml_5etree__Element); 
         __pyx_t_10 = (__pyx_t_9 != 0);
         if (__pyx_t_10) {
@@ -91401,6 +96871,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                     break
  *         if isinstance(parser, HTMLParser):
  */
+          __Pyx_TraceLine(68,0,__PYX_ERR(7, 68, __pyx_L23_except_error))
           __pyx_t_12 = ((PyObject *)((struct LxmlElement *)__pyx_v_child)->_doc->_parser);
           __Pyx_INCREF(__pyx_t_12);
           __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_12));
@@ -91413,6 +96884,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         if isinstance(parser, HTMLParser):
  *             is_html = 1
  */
+          __Pyx_TraceLine(69,0,__PYX_ERR(7, 69, __pyx_L23_except_error))
           goto __pyx_L30_break;
 
           /* "src/lxml/classlookup.pxi":67
@@ -91431,6 +96903,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 if isinstance(child, _Element):
  *                     parser = (<_Element>child)._doc._parser
  */
+        __Pyx_TraceLine(66,0,__PYX_ERR(7, 66, __pyx_L23_except_error))
       }
       __pyx_L30_break:;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -91469,6 +96942,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             is_html = 1
  *         if namespace is None:
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(7, 70, __pyx_L1_error))
   __pyx_t_10 = __Pyx_TypeCheck(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree_HTMLParser); 
   __pyx_t_9 = (__pyx_t_10 != 0);
   if (__pyx_t_9) {
@@ -91480,6 +96954,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         if namespace is None:
  *             try:
  */
+    __Pyx_TraceLine(71,0,__PYX_ERR(7, 71, __pyx_L1_error))
     __pyx_v_is_html = 1;
 
     /* "src/lxml/classlookup.pxi":70
@@ -91498,6 +96973,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             try:
  *                 is_html = _getattr(self, 'HTML')
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(7, 72, __pyx_L1_error))
   __pyx_t_9 = (__pyx_v_namespace == Py_None);
   __pyx_t_10 = (__pyx_t_9 != 0);
   if (__pyx_t_10) {
@@ -91509,6 +96985,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 is_html = _getattr(self, 'HTML')
  *             except AttributeError:
  */
+    __Pyx_TraceLine(73,0,__PYX_ERR(7, 73, __pyx_L34_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -91525,6 +97002,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             except AttributeError:
  *                 pass
  */
+        __Pyx_TraceLine(74,0,__PYX_ERR(7, 74, __pyx_L34_error))
         __Pyx_INCREF(__pyx_v__getattr);
         __pyx_t_6 = __pyx_v__getattr; __pyx_t_8 = NULL;
         __pyx_t_7 = 0;
@@ -91604,6 +97082,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 pass
  *         _initNewElement(self, is_html, tag, namespace, parser,
  */
+      __Pyx_TraceLine(75,0,__PYX_ERR(7, 75, __pyx_L36_except_error))
       __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
       if (__pyx_t_7) {
         __Pyx_ErrRestore(0,0,0);
@@ -91648,6 +97127,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                         attrib, nsmap, _extra)
  *         last_child = None
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(7, 77, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree__initNewElement(((struct LxmlElement *)__pyx_v_self), __pyx_v_is_html, __pyx_v_tag, __pyx_v_namespace, __pyx_v_parser, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 77, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":79
@@ -91657,6 +97137,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *         for child in children:
  *             if _isString(child):
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(7, 79, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_last_child = ((struct LxmlElement *)Py_None);
 
@@ -91667,6 +97148,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             if _isString(child):
  *                 if last_child is None:
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(7, 80, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_children; __Pyx_INCREF(__pyx_t_5); __pyx_t_15 = 0;
   for (;;) {
     if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
@@ -91686,6 +97168,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 if last_child is None:
  *                     _setNodeText(self._c_node,
  */
+    __Pyx_TraceLine(81,0,__PYX_ERR(7, 81, __pyx_L1_error))
     __pyx_t_10 = (_isString(__pyx_v_child) != 0);
     if (__pyx_t_10) {
 
@@ -91696,6 +97179,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                     _setNodeText(self._c_node,
  *                                  (_collectText(self._c_node.children) or '') + child)
  */
+      __Pyx_TraceLine(82,0,__PYX_ERR(7, 82, __pyx_L1_error))
       __pyx_t_10 = (((PyObject *)__pyx_v_last_child) == Py_None);
       __pyx_t_9 = (__pyx_t_10 != 0);
       if (__pyx_t_9) {
@@ -91707,6 +97191,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 else:
  *                     _setTailText(last_child._c_node,
  */
+        __Pyx_TraceLine(84,0,__PYX_ERR(7, 84, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree__collectText(__pyx_v_self->__pyx_base._c_node->children); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 84, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(7, 84, __pyx_L1_error)
@@ -91718,8 +97203,8 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           goto __pyx_L44_bool_binop_done;
         }
-        __Pyx_INCREF(__pyx_kp_s__16);
-        __pyx_t_6 = __pyx_kp_s__16;
+        __Pyx_INCREF(__pyx_kp_s__23);
+        __pyx_t_6 = __pyx_kp_s__23;
         __pyx_L44_bool_binop_done:;
         __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_v_child); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 84, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
@@ -91732,6 +97217,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                                  (_collectText(self._c_node.children) or '') + child)
  *                 else:
  */
+        __Pyx_TraceLine(83,0,__PYX_ERR(7, 83, __pyx_L1_error))
         __pyx_t_7 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_self->__pyx_base._c_node, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 83, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -91752,6 +97238,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                                  (_collectText(last_child._c_node.next) or '') + child)
  *             elif isinstance(child, _Element):
  */
+      __Pyx_TraceLine(86,0,__PYX_ERR(7, 86, __pyx_L1_error))
       /*else*/ {
 
         /* "src/lxml/classlookup.pxi":87
@@ -91761,6 +97248,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             elif isinstance(child, _Element):
  *                 last_child = child
  */
+        __Pyx_TraceLine(87,0,__PYX_ERR(7, 87, __pyx_L1_error))
         __pyx_t_6 = __pyx_f_4lxml_5etree__collectText(__pyx_v_last_child->_c_node->next); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 87, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(7, 87, __pyx_L1_error)
@@ -91772,8 +97260,8 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           goto __pyx_L46_bool_binop_done;
         }
-        __Pyx_INCREF(__pyx_kp_s__16);
-        __pyx_t_1 = __pyx_kp_s__16;
+        __Pyx_INCREF(__pyx_kp_s__23);
+        __pyx_t_1 = __pyx_kp_s__23;
         __pyx_L46_bool_binop_done:;
         __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_v_child); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 87, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
@@ -91786,6 +97274,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                                  (_collectText(last_child._c_node.next) or '') + child)
  *             elif isinstance(child, _Element):
  */
+        __Pyx_TraceLine(86,0,__PYX_ERR(7, 86, __pyx_L1_error))
         __pyx_t_7 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_last_child->_c_node, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 86, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -91808,6 +97297,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 last_child = child
  *                 _appendChild(self, last_child)
  */
+    __Pyx_TraceLine(88,0,__PYX_ERR(7, 88, __pyx_L1_error))
     __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_child, __pyx_ptype_4lxml_5etree__Element); 
     __pyx_t_10 = (__pyx_t_9 != 0);
     if (__pyx_t_10) {
@@ -91819,6 +97309,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 _appendChild(self, last_child)
  *             elif isinstance(child, type) and issubclass(child, ElementBase):
  */
+      __Pyx_TraceLine(89,0,__PYX_ERR(7, 89, __pyx_L1_error))
       if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(7, 89, __pyx_L1_error)
       __pyx_t_6 = __pyx_v_child;
       __Pyx_INCREF(__pyx_t_6);
@@ -91832,6 +97323,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             elif isinstance(child, type) and issubclass(child, ElementBase):
  *                 last_child = child()
  */
+      __Pyx_TraceLine(90,0,__PYX_ERR(7, 90, __pyx_L1_error))
       __pyx_t_7 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_last_child); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 90, __pyx_L1_error)
 
       /* "src/lxml/classlookup.pxi":88
@@ -91851,6 +97343,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 last_child = child()
  *                 _appendChild(self, last_child)
  */
+    __Pyx_TraceLine(91,0,__PYX_ERR(7, 91, __pyx_L1_error))
     __pyx_t_9 = PyType_Check(__pyx_v_child); 
     __pyx_t_16 = (__pyx_t_9 != 0);
     if (__pyx_t_16) {
@@ -91871,6 +97364,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *                 _appendChild(self, last_child)
  *             else:
  */
+      __Pyx_TraceLine(92,0,__PYX_ERR(7, 92, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_child);
       __pyx_t_1 = __pyx_v_child; __pyx_t_8 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -91901,6 +97395,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             else:
  *                 raise TypeError, f"Invalid child type: {type(child)!r}"
  */
+      __Pyx_TraceLine(93,0,__PYX_ERR(7, 93, __pyx_L1_error))
       __pyx_t_7 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_last_child); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 93, __pyx_L1_error)
 
       /* "src/lxml/classlookup.pxi":91
@@ -91920,6 +97415,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  * 
  * cdef class CommentBase(_Comment):
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(7, 95, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_child))), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 95, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -91939,6 +97435,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
  *             if _isString(child):
  *                 if last_child is None:
  */
+    __Pyx_TraceLine(80,0,__PYX_ERR(7, 80, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -91972,6 +97469,7 @@ static int __pyx_pf_4lxml_5etree_11ElementBase___init__(struct LxmlElementBase *
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_child);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -92038,6 +97536,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
   struct LxmlDocument *__pyx_v_doc = 0;
   xmlDoc *__pyx_v_c_doc;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -92047,6 +97546,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 109, 0, __PYX_ERR(7, 109, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
 
   /* "src/lxml/classlookup.pxi":113
@@ -92056,6 +97556,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *             text = b''
  *         else:
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(7, 113, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_text == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -92067,8 +97568,9 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         else:
  *             text = _utf8(text)
  */
-    __Pyx_INCREF(__pyx_kp_b__16);
-    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__16);
+    __Pyx_TraceLine(114,0,__PYX_ERR(7, 114, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_b__23);
+    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__23);
 
     /* "src/lxml/classlookup.pxi":113
  *         cdef _Document doc
@@ -92087,6 +97589,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         c_doc = _newXMLDoc()
  *         doc = _documentFactory(c_doc, None)
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(7, 116, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 116, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -92102,6 +97605,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         doc = _documentFactory(c_doc, None)
  *         self._c_node = _createComment(c_doc, _xcstr(text))
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(7, 117, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(7, 117, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_4;
 
@@ -92112,6 +97616,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         self._c_node = _createComment(c_doc, _xcstr(text))
  *         if self._c_node is NULL:
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(7, 118, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 118, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -92124,6 +97629,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         if self._c_node is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(7, 119, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node = __pyx_f_4lxml_5etree__createComment(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
 
   /* "src/lxml/classlookup.pxi":120
@@ -92133,6 +97639,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *             raise MemoryError()
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(7, 120, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -92143,6 +97650,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  *         _registerProxy(self, doc, self._c_node)
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(7, 121, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(7, 121, __pyx_L1_error)
 
     /* "src/lxml/classlookup.pxi":120
@@ -92161,6 +97669,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         _registerProxy(self, doc, self._c_node)
  *         self._init()
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(7, 122, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node));
 
   /* "src/lxml/classlookup.pxi":123
@@ -92170,6 +97679,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  *         self._init()
  * 
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(7, 123, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__registerProxy(((struct LxmlElement *)__pyx_v_self), __pyx_v_doc, __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(7, 123, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":124
@@ -92179,6 +97689,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
  * 
  * cdef class PIBase(_ProcessingInstruction):
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(7, 124, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
@@ -92221,6 +97732,7 @@ static int __pyx_pf_4lxml_5etree_11CommentBase___init__(struct __pyx_obj_4lxml_5
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_text);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -92302,6 +97814,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
   struct LxmlDocument *__pyx_v_doc = 0;
   xmlDoc *__pyx_v_c_doc;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -92311,6 +97824,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 139, 0, __PYX_ERR(7, 139, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_target);
   __Pyx_INCREF(__pyx_v_text);
 
@@ -92321,6 +97835,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         if text is None:
  *             text = b''
  */
+  __Pyx_TraceLine(143,0,__PYX_ERR(7, 143, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_target, __pyx_t_1);
@@ -92333,6 +97848,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *             text = b''
  *         else:
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(7, 144, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_text == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -92344,8 +97860,9 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         else:
  *             text = _utf8(text)
  */
-    __Pyx_INCREF(__pyx_kp_b__16);
-    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__16);
+    __Pyx_TraceLine(145,0,__PYX_ERR(7, 145, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_b__23);
+    __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__23);
 
     /* "src/lxml/classlookup.pxi":144
  *         cdef xmlDoc*   c_doc
@@ -92364,6 +97881,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         c_doc = _newXMLDoc()
  *         doc = _documentFactory(c_doc, None)
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(7, 147, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -92379,6 +97897,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         doc = _documentFactory(c_doc, None)
  *         self._c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  */
+  __Pyx_TraceLine(148,0,__PYX_ERR(7, 148, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(7, 148, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_4;
 
@@ -92389,6 +97908,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         self._c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  *         if self._c_node is NULL:
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(7, 149, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -92401,6 +97921,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         if self._c_node is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(7, 150, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node = __pyx_f_4lxml_5etree__createPI(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_target), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
 
   /* "src/lxml/classlookup.pxi":151
@@ -92410,6 +97931,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *             raise MemoryError()
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(7, 151, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -92420,6 +97942,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  *         _registerProxy(self, doc, self._c_node)
  */
+    __Pyx_TraceLine(152,0,__PYX_ERR(7, 152, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(7, 152, __pyx_L1_error)
 
     /* "src/lxml/classlookup.pxi":151
@@ -92438,6 +97961,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         _registerProxy(self, doc, self._c_node)
  *         self._init()
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(7, 153, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node));
 
   /* "src/lxml/classlookup.pxi":154
@@ -92447,6 +97971,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  *         self._init()
  * 
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(7, 154, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree__registerProxy(((struct LxmlElement *)__pyx_v_self), __pyx_v_doc, __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(7, 154, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":155
@@ -92456,6 +97981,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
  * 
  * cdef class EntityBase(_Entity):
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(7, 155, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
@@ -92499,6 +98025,7 @@ static int __pyx_pf_4lxml_5etree_6PIBase___init__(struct __pyx_obj_4lxml_5etree_
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_target);
   __Pyx_XDECREF(__pyx_v_text);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -92567,6 +98094,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
   PyObject *__pyx_v_name_utf = NULL;
   const xmlChar *__pyx_v_c_name;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -92577,6 +98105,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 169, 0, __PYX_ERR(7, 169, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":172
  *         cdef _Document doc
@@ -92585,6 +98114,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         c_name = _xcstr(name_utf)
  *         if c_name[0] == c'#':
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(7, 172, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_name_utf = ((PyObject*)__pyx_t_1);
@@ -92597,6 +98127,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         if c_name[0] == c'#':
  *             if not _characterReferenceIsValid(c_name + 1):
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(7, 173, __pyx_L1_error))
   __pyx_v_c_name = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf);
 
   /* "src/lxml/classlookup.pxi":174
@@ -92606,6 +98137,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *             if not _characterReferenceIsValid(c_name + 1):
  *                 raise ValueError, f"Invalid character reference: '{name}'"
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(7, 174, __pyx_L1_error))
   __pyx_t_2 = (((__pyx_v_c_name[0]) == '#') != 0);
   if (__pyx_t_2) {
 
@@ -92616,6 +98148,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *                 raise ValueError, f"Invalid character reference: '{name}'"
  *         elif not _xmlNameIsValid(c_name):
  */
+    __Pyx_TraceLine(175,0,__PYX_ERR(7, 175, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__characterReferenceIsValid((__pyx_v_c_name + 1)) != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -92626,6 +98159,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         elif not _xmlNameIsValid(c_name):
  *             raise ValueError, f"Invalid entity reference: '{name}'"
  */
+      __Pyx_TraceLine(176,0,__PYX_ERR(7, 176, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 176, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_3 = 0;
@@ -92641,10 +98175,10 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
       __Pyx_GIVEREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
       __pyx_t_5 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_3 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__60);
       __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 176, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -92678,6 +98212,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *             raise ValueError, f"Invalid entity reference: '{name}'"
  *         c_doc = _newXMLDoc()
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(7, 177, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__xmlNameIsValid(__pyx_v_c_name) != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -92688,6 +98223,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         c_doc = _newXMLDoc()
  *         doc = _documentFactory(c_doc, None)
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(7, 178, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 178, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_3 = 0;
@@ -92703,10 +98239,10 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_3 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__60);
     __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 178, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -92731,6 +98267,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         doc = _documentFactory(c_doc, None)
  *         self._c_node = _createEntity(c_doc, c_name)
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(7, 179, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(7, 179, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_6;
 
@@ -92741,6 +98278,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         self._c_node = _createEntity(c_doc, c_name)
  *         if self._c_node is NULL:
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(7, 180, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -92753,6 +98291,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         if self._c_node is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(181,0,__PYX_ERR(7, 181, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node = __pyx_f_4lxml_5etree__createEntity(__pyx_v_c_doc, __pyx_v_c_name);
 
   /* "src/lxml/classlookup.pxi":182
@@ -92762,6 +98301,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *             raise MemoryError()
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(7, 182, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -92772,6 +98312,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         tree.xmlAddChild(<xmlNode*>c_doc, self._c_node)
  *         _registerProxy(self, doc, self._c_node)
  */
+    __Pyx_TraceLine(183,0,__PYX_ERR(7, 183, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(7, 183, __pyx_L1_error)
 
     /* "src/lxml/classlookup.pxi":182
@@ -92790,6 +98331,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         _registerProxy(self, doc, self._c_node)
  *         self._init()
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(7, 184, __pyx_L1_error))
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node));
 
   /* "src/lxml/classlookup.pxi":185
@@ -92799,6 +98341,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  *         self._init()
  * 
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(7, 185, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree__registerProxy(((struct LxmlElement *)__pyx_v_self), __pyx_v_doc, __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(7, 185, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":186
@@ -92808,6 +98351,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
  * 
  * 
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(7, 186, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 186, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_8 = NULL;
@@ -92850,6 +98394,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_name_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -92865,6 +98410,7 @@ static int __pyx_pf_4lxml_5etree_10EntityBase___init__(struct __pyx_obj_4lxml_5e
 static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_cls) {
   PyTypeObject *__pyx_v_expected = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -92874,6 +98420,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
   Py_ssize_t __pyx_t_6;
   Py_UCS4 __pyx_t_7;
   __Pyx_RefNannySetupContext("_validateNodeClass", 0);
+  __Pyx_TraceCall("_validateNodeClass", __pyx_f[7], 189, 0, __PYX_ERR(7, 189, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":190
  * 
@@ -92882,6 +98429,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *         expected = ElementBase
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(7, 190, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -92892,6 +98440,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  *         expected = CommentBase
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(7, 191, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_ElementBase));
     __pyx_v_expected = __pyx_ptype_4lxml_5etree_ElementBase;
 
@@ -92911,6 +98460,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *         expected = CommentBase
  *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
  */
+    __Pyx_TraceLine(192,0,__PYX_ERR(7, 192, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/classlookup.pxi":193
@@ -92920,6 +98470,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
  *         expected = EntityBase
  */
+    __Pyx_TraceLine(193,0,__PYX_ERR(7, 193, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_CommentBase));
     __pyx_v_expected = __pyx_ptype_4lxml_5etree_CommentBase;
 
@@ -92939,6 +98490,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *         expected = EntityBase
  *     elif c_node.type == tree.XML_PI_NODE:
  */
+    __Pyx_TraceLine(194,0,__PYX_ERR(7, 194, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/classlookup.pxi":195
@@ -92948,6 +98500,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *     elif c_node.type == tree.XML_PI_NODE:
  *         expected = PIBase
  */
+    __Pyx_TraceLine(195,0,__PYX_ERR(7, 195, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_EntityBase));
     __pyx_v_expected = __pyx_ptype_4lxml_5etree_EntityBase;
 
@@ -92967,6 +98520,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *         expected = PIBase
  *     else:
  */
+    __Pyx_TraceLine(196,0,__PYX_ERR(7, 196, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/classlookup.pxi":197
@@ -92976,6 +98530,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *     else:
  *         assert 0, f"Unknown node type: {c_node.type}"
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(7, 197, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_PIBase));
     __pyx_v_expected = __pyx_ptype_4lxml_5etree_PIBase;
 
@@ -92996,6 +98551,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  * 
  *     if not (isinstance(cls, type) and issubclass(cls, expected)):
  */
+    __Pyx_TraceLine(199,0,__PYX_ERR(7, 199, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       if (unlikely(!0)) {
@@ -93020,6 +98576,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *         raise TypeError(
  *             f"result of class lookup must be subclass of {type(expected)}, got {type(cls)}")
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(7, 201, __pyx_L1_error))
   __pyx_t_4 = PyType_Check(__pyx_v_cls); 
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -93042,6 +98599,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *     return 0
  * 
  */
+    __Pyx_TraceLine(203,0,__PYX_ERR(7, 203, __pyx_L1_error))
     __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 203, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = 0;
@@ -93080,6 +98638,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  *             f"result of class lookup must be subclass of {type(expected)}, got {type(cls)}")
  *     return 0
  */
+    __Pyx_TraceLine(202,0,__PYX_ERR(7, 202, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 202, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -93103,6 +98662,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
  * 
  * 
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(7, 204, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -93122,6 +98682,7 @@ static int __pyx_f_4lxml_5etree__validateNodeClass(xmlNode *__pyx_v_c_node, PyOb
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_expected);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93152,8 +98713,10 @@ static int __pyx_pw_4lxml_5etree_26FallbackElementClassLookup_1__cinit__(PyObjec
 
 static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(struct LxmlFallbackElementClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 230, 0, __PYX_ERR(7, 230, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":232
  *     def __cinit__(self):
@@ -93162,6 +98725,7 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(struct L
  * 
  *     def __init__(self, ElementClassLookup fallback=None):
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(7, 232, __pyx_L1_error))
   __pyx_v_self->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
 
   /* "src/lxml/classlookup.pxi":230
@@ -93174,6 +98738,12 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(struct L
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93249,10 +98819,12 @@ static int __pyx_pw_4lxml_5etree_26FallbackElementClassLookup_3__init__(PyObject
 
 static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct LxmlFallbackElementClassLookup *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_fallback) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 234, 0, __PYX_ERR(7, 234, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":235
  * 
@@ -93261,6 +98833,7 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct L
  *             self._setFallback(fallback)
  *         else:
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(7, 235, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_fallback) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -93272,6 +98845,7 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct L
  *         else:
  *             self._fallback_function = _lookupDefaultElementClass
  */
+    __Pyx_TraceLine(236,0,__PYX_ERR(7, 236, __pyx_L1_error))
     ((struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *)__pyx_v_self->__pyx_vtab)->_setFallback(__pyx_v_self, __pyx_v_fallback);
 
     /* "src/lxml/classlookup.pxi":235
@@ -93291,6 +98865,7 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct L
  * 
  *     cdef void _setFallback(self, ElementClassLookup lookup):
  */
+  __Pyx_TraceLine(238,0,__PYX_ERR(7, 238, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
   }
@@ -93306,6 +98881,12 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct L
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93319,10 +98900,12 @@ static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup_2__init__(struct L
  */
 
 static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struct LxmlFallbackElementClassLookup *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   _element_class_lookup_function __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_setFallback", 0);
+  __Pyx_TraceCall("_setFallback", __pyx_f[7], 240, 0, __PYX_ERR(7, 240, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":243
  *         u"""Sets the fallback scheme for this lookup method.
@@ -93331,6 +98914,7 @@ static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struc
  *         self._fallback_function = lookup._lookup_function
  *         if self._fallback_function is NULL:
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(7, 243, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
   __Pyx_GOTREF(__pyx_v_self->fallback);
@@ -93344,6 +98928,7 @@ static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struc
  *         if self._fallback_function is NULL:
  *             self._fallback_function = _lookupDefaultElementClass
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(7, 244, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_lookup->_lookup_function;
   __pyx_v_self->_fallback_function = __pyx_t_1;
 
@@ -93354,6 +98939,7 @@ static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struc
  *             self._fallback_function = _lookupDefaultElementClass
  * 
  */
+  __Pyx_TraceLine(245,0,__PYX_ERR(7, 245, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_fallback_function == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -93364,6 +98950,7 @@ static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struc
  * 
  *     def set_fallback(self, ElementClassLookup lookup not None):
  */
+    __Pyx_TraceLine(246,0,__PYX_ERR(7, 246, __pyx_L1_error))
     __pyx_v_self->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
 
     /* "src/lxml/classlookup.pxi":245
@@ -93384,6 +98971,11 @@ static void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struc
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.FallbackElementClassLookup._setFallback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -93417,8 +99009,11 @@ static PyObject *__pyx_pw_4lxml_5etree_26FallbackElementClassLookup_5set_fallbac
 
 static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_4set_fallback(struct LxmlFallbackElementClassLookup *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__208)
   __Pyx_RefNannySetupContext("set_fallback", 0);
+  __Pyx_TraceCall("set_fallback", __pyx_f[7], 248, 0, __PYX_ERR(7, 248, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":253
  *         Sets the fallback scheme for this lookup method.
@@ -93427,6 +99022,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_4set_fallbac
  * 
  * cdef inline object _callLookupFallback(FallbackElementClassLookup lookup,
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(7, 253, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *)__pyx_v_self->__pyx_vtab)->_setFallback(__pyx_v_self, __pyx_v_lookup);
 
   /* "src/lxml/classlookup.pxi":248
@@ -93439,7 +99035,13 @@ static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_4set_fallbac
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.set_fallback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93467,16 +99069,22 @@ static PyObject *__pyx_pw_4lxml_5etree_26FallbackElementClassLookup_8fallback_1_
 
 static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_8fallback___get__(struct LxmlFallbackElementClassLookup *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[7], 228, 0, __PYX_ERR(7, 228, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->fallback));
   __pyx_r = ((PyObject *)__pyx_v_self->fallback);
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.fallback.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93491,10 +99099,12 @@ static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_8fallback___
 
 static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_lookup, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_callLookupFallback", 0);
+  __Pyx_TraceCall("_callLookupFallback", __pyx_f[7], 255, 0, __PYX_ERR(7, 255, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":257
  * cdef inline object _callLookupFallback(FallbackElementClassLookup lookup,
@@ -93503,6 +99113,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__callLookupFallback(struct L
  * 
  * 
  */
+  __Pyx_TraceLine(257,0,__PYX_ERR(7, 257, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_lookup->fallback);
   __Pyx_INCREF(__pyx_t_1);
@@ -93529,6 +99140,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__callLookupFallback(struct L
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93559,8 +99171,10 @@ static int __pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_1__cinit__(PyObject
 
 static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 275, 0, __PYX_ERR(7, 275, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":276
  *     cdef readonly object entity_class
@@ -93569,6 +99183,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(struct __
  * 
  *     def __init__(self, element=None, comment=None, pi=None, entity=None):
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(7, 276, __pyx_L1_error))
   __pyx_v_self->__pyx_base._lookup_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
 
   /* "src/lxml/classlookup.pxi":275
@@ -93581,6 +99196,12 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(struct __
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -93690,10 +99311,12 @@ static int __pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_3__init__(PyObject
 
 static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self, PyObject *__pyx_v_element, PyObject *__pyx_v_comment, PyObject *__pyx_v_pi, PyObject *__pyx_v_entity) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 278, 0, __PYX_ERR(7, 278, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":279
  * 
@@ -93702,6 +99325,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.element_class = _Element
  *         elif issubclass(element, ElementBase):
  */
+  __Pyx_TraceLine(279,0,__PYX_ERR(7, 279, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_element == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -93713,6 +99337,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         elif issubclass(element, ElementBase):
  *             self.element_class = element
  */
+    __Pyx_TraceLine(280,0,__PYX_ERR(7, 280, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Element));
     __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_5etree__Element));
     __Pyx_GOTREF(__pyx_v_self->element_class);
@@ -93736,6 +99361,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.element_class = element
  *         else:
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(7, 281, __pyx_L1_error))
   __pyx_t_2 = PyObject_IsSubclass(__pyx_v_element, ((PyObject *)__pyx_ptype_4lxml_5etree_ElementBase)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 281, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -93747,6 +99373,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         else:
  *             raise TypeError, u"element class must be subclass of ElementBase"
  */
+    __Pyx_TraceLine(282,0,__PYX_ERR(7, 282, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_element);
     __Pyx_GIVEREF(__pyx_v_element);
     __Pyx_GOTREF(__pyx_v_self->element_class);
@@ -93770,6 +99397,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  * 
  *         if comment is None:
  */
+  __Pyx_TraceLine(284,0,__PYX_ERR(7, 284, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_element_class_must_be_subclass_o, 0, 0);
     __PYX_ERR(7, 284, __pyx_L1_error)
@@ -93783,6 +99411,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.comment_class = _Comment
  *         elif issubclass(comment, CommentBase):
  */
+  __Pyx_TraceLine(286,0,__PYX_ERR(7, 286, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_comment == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -93794,6 +99423,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         elif issubclass(comment, CommentBase):
  *             self.comment_class = comment
  */
+    __Pyx_TraceLine(287,0,__PYX_ERR(7, 287, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Comment));
     __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_5etree__Comment));
     __Pyx_GOTREF(__pyx_v_self->comment_class);
@@ -93817,6 +99447,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.comment_class = comment
  *         else:
  */
+  __Pyx_TraceLine(288,0,__PYX_ERR(7, 288, __pyx_L1_error))
   __pyx_t_2 = PyObject_IsSubclass(__pyx_v_comment, ((PyObject *)__pyx_ptype_4lxml_5etree_CommentBase)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 288, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -93828,6 +99459,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         else:
  *             raise TypeError, u"comment class must be subclass of CommentBase"
  */
+    __Pyx_TraceLine(289,0,__PYX_ERR(7, 289, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_comment);
     __Pyx_GIVEREF(__pyx_v_comment);
     __Pyx_GOTREF(__pyx_v_self->comment_class);
@@ -93851,6 +99483,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  * 
  *         if entity is None:
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(7, 291, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_comment_class_must_be_subclass_o, 0, 0);
     __PYX_ERR(7, 291, __pyx_L1_error)
@@ -93864,6 +99497,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.entity_class = _Entity
  *         elif issubclass(entity, EntityBase):
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(7, 293, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_entity == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -93875,6 +99509,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         elif issubclass(entity, EntityBase):
  *             self.entity_class = entity
  */
+    __Pyx_TraceLine(294,0,__PYX_ERR(7, 294, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Entity));
     __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_5etree__Entity));
     __Pyx_GOTREF(__pyx_v_self->entity_class);
@@ -93898,6 +99533,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.entity_class = entity
  *         else:
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(7, 295, __pyx_L1_error))
   __pyx_t_2 = PyObject_IsSubclass(__pyx_v_entity, ((PyObject *)__pyx_ptype_4lxml_5etree_EntityBase)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 295, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -93909,6 +99545,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         else:
  *             raise TypeError, u"Entity class must be subclass of EntityBase"
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(7, 296, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_entity);
     __Pyx_GIVEREF(__pyx_v_entity);
     __Pyx_GOTREF(__pyx_v_self->entity_class);
@@ -93932,6 +99569,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  * 
  *         if pi is None:
  */
+  __Pyx_TraceLine(298,0,__PYX_ERR(7, 298, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Entity_class_must_be_subclass_of, 0, 0);
     __PYX_ERR(7, 298, __pyx_L1_error)
@@ -93945,6 +99583,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.pi_class = None # special case, see below
  *         elif issubclass(pi, PIBase):
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(7, 300, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_pi == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -93956,6 +99595,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         elif issubclass(pi, PIBase):
  *             self.pi_class = pi
  */
+    __Pyx_TraceLine(301,0,__PYX_ERR(7, 301, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->pi_class);
@@ -93979,6 +99619,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *             self.pi_class = pi
  *         else:
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(7, 302, __pyx_L1_error))
   __pyx_t_2 = PyObject_IsSubclass(__pyx_v_pi, ((PyObject *)__pyx_ptype_4lxml_5etree_PIBase)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 302, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -93990,6 +99631,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  *         else:
  *             raise TypeError, u"PI class must be subclass of PIBase"
  */
+    __Pyx_TraceLine(303,0,__PYX_ERR(7, 303, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_pi);
     __Pyx_GIVEREF(__pyx_v_pi);
     __Pyx_GOTREF(__pyx_v_self->pi_class);
@@ -94013,6 +99655,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
  * 
  * cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(305,0,__PYX_ERR(7, 305, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_PI_class_must_be_subclass_of_PIB, 0, 0);
     __PYX_ERR(7, 305, __pyx_L1_error)
@@ -94034,6 +99677,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_2__init__(struct __
   __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94061,16 +99705,22 @@ static PyObject *__pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_13element_cla
 
 static PyObject *__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_13element_class___get__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[7], 271, 0, __PYX_ERR(7, 271, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->element_class);
   __pyx_r = __pyx_v_self->element_class;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.element_class.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94098,16 +99748,22 @@ static PyObject *__pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_13comment_cla
 
 static PyObject *__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_13comment_class___get__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[7], 272, 0, __PYX_ERR(7, 272, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->comment_class);
   __pyx_r = __pyx_v_self->comment_class;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.comment_class.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94135,16 +99791,22 @@ static PyObject *__pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_8pi_class_1__
 
 static PyObject *__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_8pi_class___get__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[7], 273, 0, __PYX_ERR(7, 273, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->pi_class);
   __pyx_r = __pyx_v_self->pi_class;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.pi_class.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94172,16 +99834,22 @@ static PyObject *__pyx_pw_4lxml_5etree_25ElementDefaultClassLookup_12entity_clas
 
 static PyObject *__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_12entity_class___get__(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[7], 274, 0, __PYX_ERR(7, 274, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->entity_class);
   __pyx_r = __pyx_v_self->entity_class;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.entity_class.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94196,6 +99864,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup_12entity_clas
 
 static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx_v_state, CYTHON_UNUSED struct LxmlDocument *__pyx_v__doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -94203,6 +99872,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_lookupDefaultElementClass", 0);
+  __Pyx_TraceCall("_lookupDefaultElementClass", __pyx_f[7], 307, 0, __PYX_ERR(7, 307, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":309
  * cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node):
@@ -94211,6 +99881,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         if state is not None:
  *             return (<ElementDefaultClassLookup>state).element_class
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(7, 309, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -94221,6 +99892,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *             return (<ElementDefaultClassLookup>state).element_class
  *         else:
  */
+    __Pyx_TraceLine(310,0,__PYX_ERR(7, 310, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_state != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -94232,6 +99904,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         else:
  *             return _Element
  */
+      __Pyx_TraceLine(311,0,__PYX_ERR(7, 311, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->element_class);
       __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->element_class;
@@ -94253,6 +99926,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  *         if state is not None:
  */
+    __Pyx_TraceLine(313,0,__PYX_ERR(7, 313, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Element));
@@ -94276,6 +99950,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         if state is not None:
  *             return (<ElementDefaultClassLookup>state).comment_class
  */
+    __Pyx_TraceLine(314,0,__PYX_ERR(7, 314, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/classlookup.pxi":315
@@ -94285,6 +99960,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *             return (<ElementDefaultClassLookup>state).comment_class
  *         else:
  */
+    __Pyx_TraceLine(315,0,__PYX_ERR(7, 315, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_state != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -94296,6 +99972,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         else:
  *             return _Comment
  */
+      __Pyx_TraceLine(316,0,__PYX_ERR(7, 316, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->comment_class);
       __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->comment_class;
@@ -94317,6 +99994,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
  *         if state is not None:
  */
+    __Pyx_TraceLine(318,0,__PYX_ERR(7, 318, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Comment));
@@ -94340,6 +100018,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         if state is not None:
  *             return (<ElementDefaultClassLookup>state).entity_class
  */
+    __Pyx_TraceLine(319,0,__PYX_ERR(7, 319, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/classlookup.pxi":320
@@ -94349,6 +100028,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *             return (<ElementDefaultClassLookup>state).entity_class
  *         else:
  */
+    __Pyx_TraceLine(320,0,__PYX_ERR(7, 320, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_state != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -94360,6 +100040,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         else:
  *             return _Entity
  */
+      __Pyx_TraceLine(321,0,__PYX_ERR(7, 321, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->entity_class);
       __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->entity_class;
@@ -94381,6 +100062,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *     elif c_node.type == tree.XML_PI_NODE:
  *         if state is None or (<ElementDefaultClassLookup>state).pi_class is None:
  */
+    __Pyx_TraceLine(323,0,__PYX_ERR(7, 323, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__Entity));
@@ -94404,6 +100086,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         if state is None or (<ElementDefaultClassLookup>state).pi_class is None:
  *             # special case XSLT-PI
  */
+    __Pyx_TraceLine(324,0,__PYX_ERR(7, 324, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/classlookup.pxi":325
@@ -94413,6 +100096,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *             # special case XSLT-PI
  *             if c_node.name is not NULL and c_node.content is not NULL:
  */
+    __Pyx_TraceLine(325,0,__PYX_ERR(7, 325, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_state == Py_None);
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (!__pyx_t_3) {
@@ -94433,6 +100117,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *                 if tree.xmlStrcmp(c_node.name, <unsigned char*>"xml-stylesheet") == 0:
  *                     if tree.xmlStrstr(c_node.content, <unsigned char*>"text/xsl") is not NULL or \
  */
+      __Pyx_TraceLine(327,0,__PYX_ERR(7, 327, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_node->name != NULL) != 0);
       if (__pyx_t_1) {
       } else {
@@ -94451,6 +100136,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *                     if tree.xmlStrstr(c_node.content, <unsigned char*>"text/xsl") is not NULL or \
  *                            tree.xmlStrstr(c_node.content, <unsigned char*>"text/xml") is not NULL:
  */
+        __Pyx_TraceLine(328,0,__PYX_ERR(7, 328, __pyx_L1_error))
         __pyx_t_2 = ((xmlStrcmp(__pyx_v_c_node->name, ((unsigned char *)((unsigned char *)((char const *)"xml-stylesheet")))) == 0) != 0);
         if (__pyx_t_2) {
 
@@ -94461,6 +100147,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *                            tree.xmlStrstr(c_node.content, <unsigned char*>"text/xml") is not NULL:
  *                         return _XSLTProcessingInstruction
  */
+          __Pyx_TraceLine(329,0,__PYX_ERR(7, 329, __pyx_L1_error))
           __pyx_t_1 = ((xmlStrstr(__pyx_v_c_node->content, ((unsigned char *)((unsigned char *)((char const *)"text/xsl")))) != NULL) != 0);
           if (!__pyx_t_1) {
           } else {
@@ -94475,6 +100162,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *                         return _XSLTProcessingInstruction
  *             return _ProcessingInstruction
  */
+          __Pyx_TraceLine(330,0,__PYX_ERR(7, 330, __pyx_L1_error))
           __pyx_t_1 = ((xmlStrstr(__pyx_v_c_node->content, ((unsigned char *)((unsigned char *)((char const *)"text/xml")))) != NULL) != 0);
           __pyx_t_2 = __pyx_t_1;
           __pyx_L14_bool_binop_done:;
@@ -94486,6 +100174,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *                            tree.xmlStrstr(c_node.content, <unsigned char*>"text/xml") is not NULL:
  *                         return _XSLTProcessingInstruction
  */
+          __Pyx_TraceLine(329,0,__PYX_ERR(7, 329, __pyx_L1_error))
           if (__pyx_t_2) {
 
             /* "src/lxml/classlookup.pxi":331
@@ -94495,6 +100184,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *             return _ProcessingInstruction
  *         else:
  */
+            __Pyx_TraceLine(331,0,__PYX_ERR(7, 331, __pyx_L1_error))
             __Pyx_XDECREF(__pyx_r);
             __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction));
             __pyx_r = ((PyObject *)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction);
@@ -94534,6 +100224,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *         else:
  *             return (<ElementDefaultClassLookup>state).pi_class
  */
+      __Pyx_TraceLine(332,0,__PYX_ERR(7, 332, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree__ProcessingInstruction));
       __pyx_r = ((PyObject *)__pyx_ptype_4lxml_5etree__ProcessingInstruction);
@@ -94555,6 +100246,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  *     else:
  *         assert 0, f"Unknown node type: {c_node.type}"
  */
+    __Pyx_TraceLine(334,0,__PYX_ERR(7, 334, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->pi_class);
@@ -94579,6 +100271,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
  * 
  * 
  */
+    __Pyx_TraceLine(336,0,__PYX_ERR(7, 336, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       if (unlikely(!0)) {
@@ -94614,6 +100307,7 @@ static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94644,8 +100338,10 @@ static int __pyx_pw_4lxml_5etree_32AttributeBasedElementClassLookup_1__cinit__(P
 
 static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 359, 0, __PYX_ERR(7, 359, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":360
  *     cdef const_xmlChar* _c_name
@@ -94654,6 +100350,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(st
  * 
  *     def __init__(self, attribute_name, class_mapping,
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(7, 360, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__attribute_class_lookup;
 
   /* "src/lxml/classlookup.pxi":359
@@ -94666,6 +100363,12 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(st
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.AttributeBasedElementClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -94779,6 +100482,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_v_name = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -94788,6 +100492,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[7], 362, 0, __PYX_ERR(7, 362, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":364
  *     def __init__(self, attribute_name, class_mapping,
@@ -94796,6 +100501,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *         ns, name = self._pytag
  *         if ns is None:
  */
+  __Pyx_TraceLine(364,0,__PYX_ERR(7, 364, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_attribute_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -94811,6 +100517,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *         if ns is None:
  *             self._c_ns = NULL
  */
+  __Pyx_TraceLine(365,0,__PYX_ERR(7, 365, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_pytag;
   __Pyx_INCREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -94848,6 +100555,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *             self._c_ns = NULL
  *         else:
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(7, 366, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_ns == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -94859,6 +100567,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *         else:
  *             self._c_ns = _xcstr(ns)
  */
+    __Pyx_TraceLine(367,0,__PYX_ERR(7, 367, __pyx_L1_error))
     __pyx_v_self->_c_ns = NULL;
 
     /* "src/lxml/classlookup.pxi":366
@@ -94878,6 +100587,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *         self._c_name = _xcstr(name)
  *         self._class_mapping = dict(class_mapping)
  */
+  __Pyx_TraceLine(369,0,__PYX_ERR(7, 369, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_c_ns = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns);
   }
@@ -94890,6 +100600,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  *         self._class_mapping = dict(class_mapping)
  * 
  */
+  __Pyx_TraceLine(370,0,__PYX_ERR(7, 370, __pyx_L1_error))
   __pyx_v_self->_c_name = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name);
 
   /* "src/lxml/classlookup.pxi":371
@@ -94899,6 +100610,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  * 
  *         FallbackElementClassLookup.__init__(self, fallback)
  */
+  __Pyx_TraceLine(371,0,__PYX_ERR(7, 371, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_class_mapping); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 371, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -94914,6 +100626,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
  * 
  * cdef object _attribute_class_lookup(state, _Document doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(373,0,__PYX_ERR(7, 373, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_FallbackElementClassLookup), __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
@@ -94984,6 +100697,7 @@ static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup_2__init__(st
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95002,11 +100716,13 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_v_cls = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_attribute_class_lookup", 0);
+  __Pyx_TraceCall("_attribute_class_lookup", __pyx_f[7], 375, 0, __PYX_ERR(7, 375, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":379
  *     cdef python.PyObject* dict_result
@@ -95015,6 +100731,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         value = _attributeValueFromNsName(
  */
+  __Pyx_TraceLine(379,0,__PYX_ERR(7, 379, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_state;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_t_1);
@@ -95027,6 +100744,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *         value = _attributeValueFromNsName(
  *             c_node, lookup._c_ns, lookup._c_name)
  */
+  __Pyx_TraceLine(380,0,__PYX_ERR(7, 380, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_2) {
 
@@ -95037,6 +100755,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *             c_node, lookup._c_ns, lookup._c_name)
  *         dict_result = python.PyDict_GetItem(lookup._class_mapping, value)
  */
+    __Pyx_TraceLine(381,0,__PYX_ERR(7, 381, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__attributeValueFromNsName(__pyx_v_c_node, __pyx_v_lookup->_c_ns, __pyx_v_lookup->_c_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 381, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_value = __pyx_t_1;
@@ -95049,6 +100768,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *         if dict_result is not NULL:
  *             cls = <object>dict_result
  */
+    __Pyx_TraceLine(383,0,__PYX_ERR(7, 383, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_lookup->_class_mapping;
     __Pyx_INCREF(__pyx_t_1);
     __pyx_v_dict_result = PyDict_GetItem(__pyx_t_1, __pyx_v_value);
@@ -95061,6 +100781,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *             cls = <object>dict_result
  *             _validateNodeClass(c_node, cls)
  */
+    __Pyx_TraceLine(384,0,__PYX_ERR(7, 384, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_dict_result != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -95071,6 +100792,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *             _validateNodeClass(c_node, cls)
  *             return cls
  */
+      __Pyx_TraceLine(385,0,__PYX_ERR(7, 385, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)__pyx_v_dict_result);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_v_cls = __pyx_t_1;
@@ -95083,6 +100805,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *             return cls
  *     return _callLookupFallback(lookup, doc, c_node)
  */
+      __Pyx_TraceLine(386,0,__PYX_ERR(7, 386, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree__validateNodeClass(__pyx_v_c_node, __pyx_v_cls); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 386, __pyx_L1_error)
 
       /* "src/lxml/classlookup.pxi":387
@@ -95092,6 +100815,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  *     return _callLookupFallback(lookup, doc, c_node)
  * 
  */
+      __Pyx_TraceLine(387,0,__PYX_ERR(7, 387, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_cls);
       __pyx_r = __pyx_v_cls;
@@ -95122,6 +100846,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
  * 
  * 
  */
+  __Pyx_TraceLine(388,0,__PYX_ERR(7, 388, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 388, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -95147,6 +100872,7 @@ static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_cls);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95177,8 +100903,10 @@ static int __pyx_pw_4lxml_5etree_29ParserBasedElementClassLookup_1__cinit__(PyOb
 
 static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 398, 0, __PYX_ERR(7, 398, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":399
  *     """
@@ -95187,6 +100915,7 @@ static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(struc
  * 
  * cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(399,0,__PYX_ERR(7, 399, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__parser_class_lookup;
 
   /* "src/lxml/classlookup.pxi":398
@@ -95199,6 +100928,12 @@ static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(struc
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.ParserBasedElementClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95213,12 +100948,14 @@ static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(struc
 
 static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_parser_class_lookup", 0);
+  __Pyx_TraceCall("_parser_class_lookup", __pyx_f[7], 401, 0, __PYX_ERR(7, 401, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":402
  * 
@@ -95227,6 +100964,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
  *         return doc._parser._class_lookup._lookup_function(
  *             doc._parser._class_lookup, doc, c_node)
  */
+  __Pyx_TraceLine(402,0,__PYX_ERR(7, 402, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_doc->_parser->_class_lookup) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -95238,6 +100976,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
  *             doc._parser._class_lookup, doc, c_node)
  *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)
  */
+    __Pyx_TraceLine(403,0,__PYX_ERR(7, 403, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "src/lxml/classlookup.pxi":404
@@ -95247,6 +100986,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
  *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)
  * 
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(7, 404, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_doc->_parser->_class_lookup);
     __Pyx_INCREF(__pyx_t_3);
 
@@ -95257,6 +100997,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
  *             doc._parser._class_lookup, doc, c_node)
  *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)
  */
+    __Pyx_TraceLine(403,0,__PYX_ERR(7, 403, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_doc->_parser->_class_lookup->_lookup_function(__pyx_t_3, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 403, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -95280,6 +101021,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
  * 
  * 
  */
+  __Pyx_TraceLine(405,0,__PYX_ERR(7, 405, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_state), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 405, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -95303,6 +101045,7 @@ static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_sta
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95333,8 +101076,10 @@ static int __pyx_pw_4lxml_5etree_24CustomElementClassLookup_1__cinit__(PyObject
 
 static int __pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 427, 0, __PYX_ERR(7, 427, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":428
  *     """
@@ -95343,6 +101088,7 @@ static int __pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(struct __p
  * 
  *     def lookup(self, type, doc, namespace, name):
  */
+  __Pyx_TraceLine(428,0,__PYX_ERR(7, 428, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__custom_class_lookup;
 
   /* "src/lxml/classlookup.pxi":427
@@ -95355,6 +101101,12 @@ static int __pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(struct __p
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.CustomElementClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95454,8 +101206,11 @@ static PyObject *__pyx_pw_4lxml_5etree_24CustomElementClassLookup_3lookup(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_24CustomElementClassLookup_2lookup(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type, CYTHON_UNUSED PyObject *__pyx_v_doc, CYTHON_UNUSED PyObject *__pyx_v_namespace, CYTHON_UNUSED PyObject *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__209)
   __Pyx_RefNannySetupContext("lookup", 0);
+  __Pyx_TraceCall("lookup", __pyx_f[7], 430, 0, __PYX_ERR(7, 430, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":432
  *     def lookup(self, type, doc, namespace, name):
@@ -95464,6 +101219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24CustomElementClassLookup_2lookup(CYTHON
  * 
  * cdef object _custom_class_lookup(state, _Document doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(7, 432, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -95477,8 +101233,12 @@ static PyObject *__pyx_pf_4lxml_5etree_24CustomElementClassLookup_2lookup(CYTHON
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.CustomElementClassLookup.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95499,6 +101259,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_v_cls = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -95508,6 +101269,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_custom_class_lookup", 0);
+  __Pyx_TraceCall("_custom_class_lookup", __pyx_f[7], 434, 0, __PYX_ERR(7, 434, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":437
  *     cdef CustomElementClassLookup lookup
@@ -95516,6 +101278,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  * 
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(7, 437, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_state;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)__pyx_t_1);
@@ -95528,6 +101291,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         element_type = u"element"
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  */
+  __Pyx_TraceLine(439,0,__PYX_ERR(7, 439, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_ELEMENT_NODE:
 
@@ -95538,6 +101302,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     elif c_node.type == tree.XML_COMMENT_NODE:
  *         element_type = u"comment"
  */
+    __Pyx_TraceLine(440,0,__PYX_ERR(7, 440, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_element);
     __pyx_v_element_type = __pyx_n_u_element;
 
@@ -95557,6 +101322,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         element_type = u"comment"
  *     elif c_node.type == tree.XML_PI_NODE:
  */
+    __Pyx_TraceLine(441,0,__PYX_ERR(7, 441, __pyx_L1_error))
     case XML_COMMENT_NODE:
 
     /* "src/lxml/classlookup.pxi":442
@@ -95566,6 +101332,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     elif c_node.type == tree.XML_PI_NODE:
  *         element_type = u"PI"
  */
+    __Pyx_TraceLine(442,0,__PYX_ERR(7, 442, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_comment);
     __pyx_v_element_type = __pyx_n_u_comment;
 
@@ -95585,6 +101352,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         element_type = u"PI"
  *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
  */
+    __Pyx_TraceLine(443,0,__PYX_ERR(7, 443, __pyx_L1_error))
     case XML_PI_NODE:
 
     /* "src/lxml/classlookup.pxi":444
@@ -95594,6 +101362,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
  *         element_type = u"entity"
  */
+    __Pyx_TraceLine(444,0,__PYX_ERR(7, 444, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_PI);
     __pyx_v_element_type = __pyx_n_u_PI;
 
@@ -95613,6 +101382,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         element_type = u"entity"
  *     else:
  */
+    __Pyx_TraceLine(445,0,__PYX_ERR(7, 445, __pyx_L1_error))
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/classlookup.pxi":446
@@ -95622,6 +101392,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     else:
  *         element_type = u"element"
  */
+    __Pyx_TraceLine(446,0,__PYX_ERR(7, 446, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_entity);
     __pyx_v_element_type = __pyx_n_u_entity;
 
@@ -95642,6 +101413,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     if c_node.name is NULL:
  *         name = None
  */
+    __Pyx_TraceLine(448,0,__PYX_ERR(7, 448, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_u_element);
     __pyx_v_element_type = __pyx_n_u_element;
     break;
@@ -95654,6 +101426,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         name = None
  *     else:
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(7, 449, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->name == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -95664,6 +101437,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     else:
  *         name = funicode(c_node.name)
  */
+    __Pyx_TraceLine(450,0,__PYX_ERR(7, 450, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_name = Py_None;
 
@@ -95684,6 +101458,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     c_str = tree._getNs(c_node)
  *     ns = funicode(c_str) if c_str is not NULL else None
  */
+  __Pyx_TraceLine(452,0,__PYX_ERR(7, 452, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 452, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -95699,6 +101474,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     ns = funicode(c_str) if c_str is not NULL else None
  * 
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(7, 453, __pyx_L1_error))
   __pyx_v_c_str = _getNs(__pyx_v_c_node);
 
   /* "src/lxml/classlookup.pxi":454
@@ -95708,6 +101484,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  * 
  *     cls = lookup.lookup(element_type, doc, ns, name)
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(7, 454, __pyx_L1_error))
   if (((__pyx_v_c_str != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 454, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -95727,6 +101504,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     if cls is not None:
  *         _validateNodeClass(c_node, cls)
  */
+  __Pyx_TraceLine(456,0,__PYX_ERR(7, 456, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lookup), __pyx_n_s_lookup); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -95790,6 +101568,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         _validateNodeClass(c_node, cls)
  *         return cls
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(7, 457, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_cls != Py_None);
   __pyx_t_7 = (__pyx_t_2 != 0);
   if (__pyx_t_7) {
@@ -95801,6 +101580,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *         return cls
  *     return _callLookupFallback(lookup, doc, c_node)
  */
+    __Pyx_TraceLine(458,0,__PYX_ERR(7, 458, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree__validateNodeClass(__pyx_v_c_node, __pyx_v_cls); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(7, 458, __pyx_L1_error)
 
     /* "src/lxml/classlookup.pxi":459
@@ -95810,6 +101590,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  *     return _callLookupFallback(lookup, doc, c_node)
  * 
  */
+    __Pyx_TraceLine(459,0,__PYX_ERR(7, 459, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_cls);
     __pyx_r = __pyx_v_cls;
@@ -95831,6 +101612,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
  * 
  * 
  */
+  __Pyx_TraceLine(460,0,__PYX_ERR(7, 460, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 460, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -95861,6 +101643,7 @@ static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_sta
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_cls);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95891,8 +101674,10 @@ static int __pyx_pw_4lxml_5etree_24PythonElementClassLookup_1__cinit__(PyObject
 
 static int __pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[7], 509, 0, __PYX_ERR(7, 509, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":510
  *     """
@@ -95901,6 +101686,7 @@ static int __pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(struct __p
  * 
  *     def lookup(self, doc, element):
  */
+  __Pyx_TraceLine(510,0,__PYX_ERR(7, 510, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__python_class_lookup;
 
   /* "src/lxml/classlookup.pxi":509
@@ -95913,6 +101699,12 @@ static int __pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(struct __p
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.PythonElementClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -95990,8 +101782,11 @@ static PyObject *__pyx_pw_4lxml_5etree_24PythonElementClassLookup_3lookup(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_24PythonElementClassLookup_2lookup(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_doc, CYTHON_UNUSED PyObject *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__210)
   __Pyx_RefNannySetupContext("lookup", 0);
+  __Pyx_TraceCall("lookup", __pyx_f[7], 512, 0, __PYX_ERR(7, 512, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":517
  *         Override this method to implement your own lookup scheme.
@@ -96000,6 +101795,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24PythonElementClassLookup_2lookup(CYTHON
  * 
  * cdef object _python_class_lookup(state, _Document doc, tree.xmlNode* c_node):
  */
+  __Pyx_TraceLine(517,0,__PYX_ERR(7, 517, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -96013,8 +101809,12 @@ static PyObject *__pyx_pf_4lxml_5etree_24PythonElementClassLookup_2lookup(CYTHON
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.PythonElementClassLookup.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -96032,6 +101832,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *__pyx_v_proxy = 0;
   PyObject *__pyx_v_cls = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -96041,6 +101842,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
   int __pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_python_class_lookup", 0);
+  __Pyx_TraceCall("_python_class_lookup", __pyx_f[7], 519, 0, __PYX_ERR(7, 519, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":522
  *     cdef PythonElementClassLookup lookup
@@ -96049,6 +101851,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  * 
  *     proxy = _newReadOnlyProxy(None, c_node)
  */
+  __Pyx_TraceLine(522,0,__PYX_ERR(7, 522, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_state;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)__pyx_t_1);
@@ -96061,6 +101864,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  *     cls = lookup.lookup(doc, proxy)
  *     _freeReadOnlyProxies(proxy)
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(7, 524, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)Py_None), __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 524, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_1);
@@ -96073,6 +101877,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  *     _freeReadOnlyProxies(proxy)
  * 
  */
+  __Pyx_TraceLine(525,0,__PYX_ERR(7, 525, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lookup), __pyx_n_s_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 525, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -96130,6 +101935,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  * 
  *     if cls is not None:
  */
+  __Pyx_TraceLine(526,0,__PYX_ERR(7, 526, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__freeReadOnlyProxies(__pyx_v_proxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 526, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -96141,6 +101947,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  *         _validateNodeClass(c_node, cls)
  *         return cls
  */
+  __Pyx_TraceLine(528,0,__PYX_ERR(7, 528, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_cls != Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -96152,6 +101959,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  *         return cls
  *     return _callLookupFallback(lookup, doc, c_node)
  */
+    __Pyx_TraceLine(529,0,__PYX_ERR(7, 529, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__validateNodeClass(__pyx_v_c_node, __pyx_v_cls); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(7, 529, __pyx_L1_error)
 
     /* "src/lxml/classlookup.pxi":530
@@ -96161,6 +101969,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  *     return _callLookupFallback(lookup, doc, c_node)
  * 
  */
+    __Pyx_TraceLine(530,0,__PYX_ERR(7, 530, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_cls);
     __pyx_r = __pyx_v_cls;
@@ -96182,6 +101991,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(7, 531, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -96210,6 +102020,7 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
   __Pyx_XDECREF((PyObject *)__pyx_v_proxy);
   __Pyx_XDECREF(__pyx_v_cls);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -96223,10 +102034,12 @@ static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_sta
  */
 
 static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_lookup_function __pyx_v_function, PyObject *__pyx_v_state) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   _element_class_lookup_function __pyx_t_2;
   __Pyx_RefNannySetupContext("_setElementClassLookupFunction", 0);
+  __Pyx_TraceCall("_setElementClassLookupFunction", __pyx_f[7], 539, 0, __PYX_ERR(7, 539, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_state);
 
   /* "src/lxml/classlookup.pxi":542
@@ -96236,6 +102049,7 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  *         state    = DEFAULT_ELEMENT_CLASS_LOOKUP
  *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function
  */
+  __Pyx_TraceLine(542,0,__PYX_ERR(7, 542, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_function == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -96246,6 +102060,7 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function
  * 
  */
+    __Pyx_TraceLine(543,0,__PYX_ERR(7, 543, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
 
@@ -96256,6 +102071,7 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  * 
  *     ELEMENT_CLASS_LOOKUP_STATE = state
  */
+    __Pyx_TraceLine(544,0,__PYX_ERR(7, 544, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP->__pyx_base.__pyx_base._lookup_function;
     __pyx_v_function = __pyx_t_2;
 
@@ -96275,6 +102091,7 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  *     LOOKUP_ELEMENT_CLASS = function
  * 
  */
+  __Pyx_TraceLine(546,0,__PYX_ERR(7, 546, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_state);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE, __pyx_v_state);
@@ -96287,6 +102104,7 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  * 
  * def set_element_class_lookup(ElementClassLookup lookup = None):
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(7, 547, __pyx_L1_error))
   __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS = __pyx_v_function;
 
   /* "src/lxml/classlookup.pxi":539
@@ -96298,7 +102116,12 @@ static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_l
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._setElementClassLookupFunction", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_state);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -96375,11 +102198,14 @@ static PyObject *__pyx_pw_4lxml_5etree_41set_element_class_lookup(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_40set_element_class_lookup(CYTHON_UNUSED PyObject *__pyx_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__211)
   __Pyx_RefNannySetupContext("set_element_class_lookup", 0);
+  __Pyx_TraceCall("set_element_class_lookup", __pyx_f[7], 549, 0, __PYX_ERR(7, 549, __pyx_L1_error));
 
   /* "src/lxml/classlookup.pxi":554
  *     Set the global default element class lookup method.
@@ -96388,6 +102214,7 @@ static PyObject *__pyx_pf_4lxml_5etree_40set_element_class_lookup(CYTHON_UNUSED
  *         _setElementClassLookupFunction(NULL, None)
  *     else:
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(7, 554, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_lookup) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -96407,6 +102234,7 @@ static PyObject *__pyx_pf_4lxml_5etree_40set_element_class_lookup(CYTHON_UNUSED
  *     else:
  *         _setElementClassLookupFunction(lookup._lookup_function, lookup)
  */
+    __Pyx_TraceLine(555,0,__PYX_ERR(7, 555, __pyx_L1_error))
     __pyx_f_4lxml_5etree__setElementClassLookupFunction(NULL, Py_None);
 
     /* "src/lxml/classlookup.pxi":554
@@ -96426,6 +102254,7 @@ static PyObject *__pyx_pf_4lxml_5etree_40set_element_class_lookup(CYTHON_UNUSED
  * 
  * # default setup: parser delegation
  */
+  __Pyx_TraceLine(557,0,__PYX_ERR(7, 557, __pyx_L1_error))
   /*else*/ {
     __pyx_f_4lxml_5etree__setElementClassLookupFunction(__pyx_v_lookup->_lookup_function, ((PyObject *)__pyx_v_lookup));
   }
@@ -96441,7 +102270,13 @@ static PyObject *__pyx_pf_4lxml_5etree_40set_element_class_lookup(CYTHON_UNUSED
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.set_element_class_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -96506,11 +102341,13 @@ static int __pyx_pw_4lxml_5etree_18_NamespaceRegistry_1__cinit__(PyObject *__pyx
 
 static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_ns_uri) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[9], 19, 0, __PYX_ERR(9, 19, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":20
  *     cdef char* _c_ns_uri_utf
@@ -96519,6 +102356,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *         if ns_uri is None:
  *             self._ns_uri_utf = None
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(9, 20, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_ns_uri);
   __Pyx_GIVEREF(__pyx_v_ns_uri);
   __Pyx_GOTREF(__pyx_v_self->_ns_uri);
@@ -96532,6 +102370,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *             self._ns_uri_utf = None
  *             self._c_ns_uri_utf = NULL
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(9, 21, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_ns_uri == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -96543,6 +102382,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *             self._c_ns_uri_utf = NULL
  *         else:
  */
+    __Pyx_TraceLine(22,0,__PYX_ERR(9, 22, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_ns_uri_utf);
@@ -96556,6 +102396,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *         else:
  *             self._ns_uri_utf = _utf8(ns_uri)
  */
+    __Pyx_TraceLine(23,0,__PYX_ERR(9, 23, __pyx_L1_error))
     __pyx_v_self->_c_ns_uri_utf = NULL;
 
     /* "src/lxml/nsclasses.pxi":21
@@ -96575,6 +102416,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *             self._c_ns_uri_utf = _cstr(self._ns_uri_utf)
  *         self._entries = {}
  */
+  __Pyx_TraceLine(25,0,__PYX_ERR(9, 25, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 25, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -96591,6 +102433,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  *         self._entries = {}
  * 
  */
+    __Pyx_TraceLine(26,0,__PYX_ERR(9, 26, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_self->_ns_uri_utf;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_self->_c_ns_uri_utf = PyBytes_AS_STRING(__pyx_t_3);
@@ -96605,6 +102448,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
  * 
  *     def update(self, class_dict_iterable):
  */
+  __Pyx_TraceLine(27,0,__PYX_ERR(9, 27, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 27, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -96629,6 +102473,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___cinit__(struct __pyx_obj
   __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -96660,6 +102505,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -96672,7 +102518,9 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
   PyObject *__pyx_t_9 = NULL;
   PyObject *(*__pyx_t_10)(PyObject *);
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__212)
   __Pyx_RefNannySetupContext("update", 0);
+  __Pyx_TraceCall("update", __pyx_f[9], 29, 0, __PYX_ERR(9, 29, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_class_dict_iterable);
 
   /* "src/lxml/nsclasses.pxi":41
@@ -96682,6 +102530,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  *             class_dict_iterable = class_dict_iterable.items()
  *         for name, item in class_dict_iterable:
  */
+  __Pyx_TraceLine(41,0,__PYX_ERR(9, 41, __pyx_L1_error))
   __pyx_t_1 = __Pyx_HasAttr(__pyx_v_class_dict_iterable, __pyx_n_u_items); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 41, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -96693,6 +102542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  *         for name, item in class_dict_iterable:
  *             if (name is None or name[:1] != '_') and callable(item):
  */
+    __Pyx_TraceLine(42,0,__PYX_ERR(9, 42, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_class_dict_iterable, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 42, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -96732,6 +102582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  *             if (name is None or name[:1] != '_') and callable(item):
  *                 self[name] = item
  */
+  __Pyx_TraceLine(43,0,__PYX_ERR(9, 43, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_class_dict_iterable)) || PyTuple_CheckExact(__pyx_v_class_dict_iterable)) {
     __pyx_t_3 = __pyx_v_class_dict_iterable; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
@@ -96829,15 +102680,16 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  *                 self[name] = item
  * 
  */
+    __Pyx_TraceLine(44,0,__PYX_ERR(9, 44, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_name == Py_None);
     __pyx_t_11 = (__pyx_t_1 != 0);
     if (!__pyx_t_11) {
     } else {
       goto __pyx_L10_next_and;
     }
-    __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_name, 0, 1, NULL, NULL, &__pyx_slice__69, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 44, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_name, 0, 1, NULL, NULL, &__pyx_slice__213, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 44, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s__70, Py_NE)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 44, __pyx_L1_error)
+    __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s__214, Py_NE)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(9, 44, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_11) {
     } else {
@@ -96858,6 +102710,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  * 
  *     def __getitem__(self, name):
  */
+      __Pyx_TraceLine(45,0,__PYX_ERR(9, 45, __pyx_L1_error))
       if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_item) < 0)) __PYX_ERR(9, 45, __pyx_L1_error)
 
       /* "src/lxml/nsclasses.pxi":44
@@ -96876,6 +102729,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
  *             if (name is None or name[:1] != '_') and callable(item):
  *                 self[name] = item
  */
+    __Pyx_TraceLine(43,0,__PYX_ERR(9, 43, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -96903,6 +102757,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_2update(struct __pyx
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XDECREF(__pyx_v_class_dict_iterable);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -96930,11 +102785,13 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_5__getitem__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_4__getitem__(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[9], 47, 0, __PYX_ERR(9, 47, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_name);
 
   /* "src/lxml/nsclasses.pxi":48
@@ -96944,6 +102801,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_4__getitem__(struct
  *             name = _utf8(name)
  *         return self._get(name)
  */
+  __Pyx_TraceLine(48,0,__PYX_ERR(9, 48, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_name != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -96955,6 +102813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_4__getitem__(struct
  *         return self._get(name)
  * 
  */
+    __Pyx_TraceLine(49,0,__PYX_ERR(9, 49, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 49, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
@@ -96976,6 +102835,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_4__getitem__(struct
  * 
  *     def __delitem__(self, name):
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(9, 50, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry *)__pyx_v_self->__pyx_vtab)->_get(__pyx_v_self, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 50, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -96999,6 +102859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_4__getitem__(struct
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97026,11 +102887,13 @@ static int __pyx_pw_4lxml_5etree_18_NamespaceRegistry_7__delitem__(PyObject *__p
 
 static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__delitem__", 0);
+  __Pyx_TraceCall("__delitem__", __pyx_f[9], 52, 0, __PYX_ERR(9, 52, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_name);
 
   /* "src/lxml/nsclasses.pxi":53
@@ -97040,6 +102903,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_
  *             name = _utf8(name)
  *         del self._entries[name]
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(9, 53, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_name != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -97051,6 +102915,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_
  *         del self._entries[name]
  * 
  */
+    __Pyx_TraceLine(54,0,__PYX_ERR(9, 54, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 54, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
@@ -97072,6 +102937,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_
  * 
  *     cdef object _get(self, object name):
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(9, 55, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(9, 55, __pyx_L1_error)
@@ -97095,6 +102961,7 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97110,10 +102977,12 @@ static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry_6__delitem__(struct __pyx_
 static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_v_dict_result;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_get", 0);
+  __Pyx_TraceCall("_get", __pyx_f[9], 57, 0, __PYX_ERR(9, 57, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":59
  *     cdef object _get(self, object name):
@@ -97122,6 +102991,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
  *         if dict_result is NULL:
  *             raise KeyError, u"Name not registered."
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(9, 59, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_dict_result = PyDict_GetItem(__pyx_t_1, __pyx_v_name);
@@ -97134,6 +103004,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
  *             raise KeyError, u"Name not registered."
  *         return <object>dict_result
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(9, 60, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_dict_result == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -97144,6 +103015,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
  *         return <object>dict_result
  * 
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(9, 61, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_kp_u_Name_not_registered, 0, 0);
     __PYX_ERR(9, 61, __pyx_L1_error)
 
@@ -97163,6 +103035,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
  * 
  *     cdef object _getForString(self, char* name):
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(9, 62, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
   __pyx_r = ((PyObject *)__pyx_v_dict_result);
@@ -97183,6 +103056,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97198,11 +103072,13 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj
 static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, char *__pyx_v_name) {
   PyObject *__pyx_v_dict_result;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_getForString", 0);
+  __Pyx_TraceCall("_getForString", __pyx_f[9], 64, 0, __PYX_ERR(9, 64, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":66
  *     cdef object _getForString(self, char* name):
@@ -97211,6 +103087,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct
  *         if dict_result is NULL:
  *             raise KeyError, u"Name not registered."
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(9, 66, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 66, __pyx_L1_error)
@@ -97226,6 +103103,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct
  *             raise KeyError, u"Name not registered."
  *         return <object>dict_result
  */
+  __Pyx_TraceLine(67,0,__PYX_ERR(9, 67, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_dict_result == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -97236,6 +103114,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct
  *         return <object>dict_result
  * 
  */
+    __Pyx_TraceLine(68,0,__PYX_ERR(9, 68, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_kp_u_Name_not_registered, 0, 0);
     __PYX_ERR(9, 68, __pyx_L1_error)
 
@@ -97255,6 +103134,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(9, 69, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
   __pyx_r = ((PyObject *)__pyx_v_dict_result);
@@ -97276,6 +103156,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97303,10 +103184,12 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_9__iter__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_8__iter__(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[9], 71, 0, __PYX_ERR(9, 71, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":72
  * 
@@ -97315,6 +103198,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_8__iter__(struct __p
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(9, 72, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_v_self->_entries;
   __Pyx_INCREF(__pyx_t_1);
@@ -97341,6 +103225,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_8__iter__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97369,10 +103254,13 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_11items(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_10items(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__215)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[9], 74, 0, __PYX_ERR(9, 74, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":75
  * 
@@ -97381,6 +103269,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_10items(struct __pyx
  * 
  *     def iteritems(self):
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(9, 75, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
@@ -97411,6 +103300,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_10items(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97439,10 +103329,13 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_13iteritems(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_12iteritems(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__216)
   __Pyx_RefNannySetupContext("iteritems", 0);
+  __Pyx_TraceCall("iteritems", __pyx_f[9], 77, 0, __PYX_ERR(9, 77, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":78
  * 
@@ -97451,6 +103344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_12iteritems(struct _
  * 
  *     def clear(self):
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(9, 78, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
@@ -97481,6 +103375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_12iteritems(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97509,9 +103404,12 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_15clear(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_14clear(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__217)
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[9], 80, 0, __PYX_ERR(9, 80, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":81
  * 
@@ -97520,6 +103418,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_14clear(struct __pyx
  * 
  *     def __call__(self, obj):
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(9, 81, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
     __PYX_ERR(9, 81, __pyx_L1_error)
@@ -97542,6 +103441,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_14clear(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97606,6 +103506,7 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_17__call__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -97617,6 +103518,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
   int __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[9], 83, 0, __PYX_ERR(9, 83, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":92
  *         #   class elementname(ElementBase): pass
@@ -97625,6 +103527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
  *             # @ns(None) or @ns('tag')
  *             return partial(self.__deco, obj)
  */
+  __Pyx_TraceLine(92,0,__PYX_ERR(9, 92, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_obj == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -97644,6 +103547,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
  *         # plain @ns decorator
  *         self[obj.__name__] = obj
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(9, 94, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_deco); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 94, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -97715,6 +103619,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
  *         return obj
  * 
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(9, 96, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_t_4, __pyx_v_obj) < 0)) __PYX_ERR(9, 96, __pyx_L1_error)
@@ -97727,6 +103632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
  * 
  *     def __deco(self, name, obj):
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(9, 97, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_obj);
   __pyx_r = __pyx_v_obj;
@@ -97751,6 +103657,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_16__call__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97827,8 +103734,11 @@ static PyObject *__pyx_pw_4lxml_5etree_18_NamespaceRegistry_19__deco(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_18__deco(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__218)
   __Pyx_RefNannySetupContext("__deco", 0);
+  __Pyx_TraceCall("__deco", __pyx_f[9], 99, 0, __PYX_ERR(9, 99, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":100
  * 
@@ -97837,6 +103747,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_18__deco(struct __py
  *         return obj
  * 
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(9, 100, __pyx_L1_error))
   if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_obj) < 0)) __PYX_ERR(9, 100, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":101
@@ -97846,6 +103757,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_18__deco(struct __py
  * 
  * 
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(9, 101, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_obj);
   __pyx_r = __pyx_v_obj;
@@ -97865,6 +103777,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_18__deco(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -97892,12 +103805,14 @@ static int __pyx_pw_4lxml_5etree_23_ClassNamespaceRegistry_1__setitem__(PyObject
 
 static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[9], 108, 0, __PYX_ERR(9, 108, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_name);
 
   /* "src/lxml/nsclasses.pxi":109
@@ -97907,6 +103822,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
  *             raise NamespaceRegistryError, \
  *                 u"Registered element classes must be subtypes of ElementBase"
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(9, 109, __pyx_L1_error))
   __pyx_t_2 = PyType_Check(__pyx_v_item); 
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (!__pyx_t_3) {
@@ -97927,6 +103843,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
  *                 u"Registered element classes must be subtypes of ElementBase"
  *         if name is not None:
  */
+    __Pyx_TraceLine(110,0,__PYX_ERR(9, 110, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_NamespaceRegistryError), __pyx_kp_u_Registered_element_classes_must, 0, 0);
     __PYX_ERR(9, 110, __pyx_L1_error)
 
@@ -97946,6 +103863,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
  *             name = _utf8(name)
  *         self._entries[name] = item
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(9, 112, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_name != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -97957,6 +103875,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
  *         self._entries[name] = item
  * 
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(9, 113, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -97978,6 +103897,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(9, 114, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(9, 114, __pyx_L1_error)
@@ -98001,6 +103921,7 @@ static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(struct __
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98028,9 +103949,11 @@ static PyObject *__pyx_pw_4lxml_5etree_23_ClassNamespaceRegistry_3__repr__(PyObj
 
 static PyObject *__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry_2__repr__(struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[9], 116, 0, __PYX_ERR(9, 116, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":117
  * 
@@ -98039,6 +103962,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry_2__repr__(struc
  * 
  * 
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(9, 117, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_Namespace_r, __pyx_v_self->__pyx_base._ns_uri); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 117, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -98061,6 +103985,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry_2__repr__(struc
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98091,9 +104016,11 @@ static int __pyx_pw_4lxml_5etree_27ElementNamespaceClassLookup_1__cinit__(PyObje
 
 static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___cinit__(struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[9], 140, 0, __PYX_ERR(9, 140, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":141
  *     cdef dict _namespace_registries
@@ -98102,6 +104029,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___cinit__(struct
  * 
  *     def __init__(self, ElementClassLookup fallback=None):
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(9, 141, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -98126,6 +104054,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___cinit__(struct
   __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98201,6 +104130,7 @@ static int __pyx_pw_4lxml_5etree_27ElementNamespaceClassLookup_3__init__(PyObjec
 
 static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_2__init__(struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_fallback) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -98208,6 +104138,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_2__init__(struct
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[9], 143, 0, __PYX_ERR(9, 143, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":144
  * 
@@ -98216,6 +104147,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_2__init__(struct
  *         self._lookup_function = _find_nselement_class
  * 
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(9, 144, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_FallbackElementClassLookup), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 144, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -98272,6 +104204,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_2__init__(struct
  * 
  *     def get_namespace(self, ns_uri):
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(9, 145, __pyx_L1_error))
   __pyx_v_self->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__find_nselement_class;
 
   /* "src/lxml/nsclasses.pxi":143
@@ -98293,6 +104226,7 @@ static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_2__init__(struct
   __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98324,6 +104258,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
   PyObject *__pyx_v_ns_utf = NULL;
   struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *__pyx_v_registry = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -98334,7 +104269,9 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__219)
   __Pyx_RefNannySetupContext("get_namespace", 0);
+  __Pyx_TraceCall("get_namespace", __pyx_f[9], 147, 0, __PYX_ERR(9, 147, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":154
  * 
@@ -98343,6 +104280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *             ns_utf = _utf8(ns_uri)
  *         else:
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(9, 154, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ns_uri); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 154, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -98353,6 +104291,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *         else:
  *             ns_utf = None
  */
+    __Pyx_TraceLine(155,0,__PYX_ERR(9, 155, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 155, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_ns_utf = ((PyObject*)__pyx_t_2);
@@ -98375,6 +104314,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *         try:
  *             return self._namespace_registries[ns_utf]
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(9, 157, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __pyx_v_ns_utf = ((PyObject*)Py_None);
@@ -98388,6 +104328,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *             return self._namespace_registries[ns_utf]
  *         except KeyError:
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(9, 158, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -98404,6 +104345,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *         except KeyError:
  *             registry = self._namespace_registries[ns_utf] = \
  */
+      __Pyx_TraceLine(159,0,__PYX_ERR(9, 159, __pyx_L4_error))
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(__pyx_v_self->_namespace_registries == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -98433,6 +104375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *             registry = self._namespace_registries[ns_utf] = \
  *                        _ClassNamespaceRegistry(ns_uri)
  */
+    __Pyx_TraceLine(160,0,__PYX_ERR(9, 160, __pyx_L6_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.get_namespace", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -98448,6 +104391,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *             return registry
  * 
  */
+      __Pyx_TraceLine(162,0,__PYX_ERR(9, 162, __pyx_L6_except_error))
       __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__ClassNamespaceRegistry), __pyx_v_ns_uri); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 162, __pyx_L6_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_t_9);
@@ -98460,6 +104404,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  *                        _ClassNamespaceRegistry(ns_uri)
  *             return registry
  */
+      __Pyx_TraceLine(161,0,__PYX_ERR(9, 161, __pyx_L6_except_error))
       if (unlikely(__pyx_v_self->_namespace_registries == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(9, 161, __pyx_L6_except_error)
@@ -98474,6 +104419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
  * 
  * cdef object _find_nselement_class(state, _Document doc, xmlNode* c_node):
  */
+      __Pyx_TraceLine(163,0,__PYX_ERR(9, 163, __pyx_L6_except_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_v_registry));
       __pyx_r = ((PyObject *)__pyx_v_registry);
@@ -98531,6 +104477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_4get_namesp
   __Pyx_XDECREF(__pyx_v_ns_utf);
   __Pyx_XDECREF((PyObject *)__pyx_v_registry);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98550,12 +104497,14 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
   const xmlChar *__pyx_v_c_namespace_utf;
   PyObject *__pyx_v_classes = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_find_nselement_class", 0);
+  __Pyx_TraceCall("_find_nselement_class", __pyx_f[9], 165, 0, __PYX_ERR(9, 165, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":169
  *     cdef ElementNamespaceClassLookup lookup
@@ -98564,6 +104513,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         return _lookupDefaultElementClass(None, doc, c_node)
  * 
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(9, 169, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_state == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -98575,6 +104525,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  *     lookup = <ElementNamespaceClassLookup>state
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(9, 170, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree__lookupDefaultElementClass(Py_None, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 170, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -98598,6 +104549,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *     if c_node.type != tree.XML_ELEMENT_NODE:
  *         return _callLookupFallback(lookup, doc, c_node)
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(9, 172, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_state;
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_t_3);
@@ -98610,6 +104562,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         return _callLookupFallback(lookup, doc, c_node)
  * 
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(9, 173, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->type != XML_ELEMENT_NODE) != 0);
   if (__pyx_t_2) {
 
@@ -98620,6 +104573,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  *     c_namespace_utf = _getNs(c_node)
  */
+    __Pyx_TraceLine(174,0,__PYX_ERR(9, 174, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 174, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -98643,6 +104597,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *     if c_namespace_utf is not NULL:
  *         dict_result = python.PyDict_GetItem(
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(9, 176, __pyx_L1_error))
   __pyx_v_c_namespace_utf = _getNs(__pyx_v_c_node);
 
   /* "src/lxml/nsclasses.pxi":177
@@ -98652,6 +104607,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         dict_result = python.PyDict_GetItem(
  *             lookup._namespace_registries, <unsigned char*>c_namespace_utf)
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(9, 177, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_namespace_utf != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -98662,6 +104618,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *     else:
  *         dict_result = python.PyDict_GetItem(
  */
+    __Pyx_TraceLine(179,0,__PYX_ERR(9, 179, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_lookup->_namespace_registries;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_namespace_utf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 179, __pyx_L1_error)
@@ -98674,6 +104631,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             lookup._namespace_registries, <unsigned char*>c_namespace_utf)
  *     else:
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(9, 178, __pyx_L1_error))
     __pyx_v_dict_result = PyDict_GetItem(__pyx_t_3, __pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -98695,6 +104653,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             lookup._namespace_registries, None)
  *     if dict_result is not NULL:
  */
+  __Pyx_TraceLine(181,0,__PYX_ERR(9, 181, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/nsclasses.pxi":182
@@ -98704,6 +104663,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *     if dict_result is not NULL:
  *         registry = <_NamespaceRegistry>dict_result
  */
+    __Pyx_TraceLine(182,0,__PYX_ERR(9, 182, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_lookup->_namespace_registries;
     __Pyx_INCREF(__pyx_t_4);
 
@@ -98714,6 +104674,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             lookup._namespace_registries, None)
  *     if dict_result is not NULL:
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(9, 181, __pyx_L1_error))
     __pyx_v_dict_result = PyDict_GetItem(__pyx_t_4, Py_None);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -98726,6 +104687,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         registry = <_NamespaceRegistry>dict_result
  *         classes = registry._entries
  */
+  __Pyx_TraceLine(183,0,__PYX_ERR(9, 183, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_dict_result != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -98736,6 +104698,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         classes = registry._entries
  * 
  */
+    __Pyx_TraceLine(184,0,__PYX_ERR(9, 184, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_dict_result);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_t_4);
@@ -98748,6 +104711,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  *         if c_node.name is not NULL:
  */
+    __Pyx_TraceLine(185,0,__PYX_ERR(9, 185, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_registry->_entries;
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_classes = ((PyObject*)__pyx_t_4);
@@ -98760,6 +104724,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             dict_result = python.PyDict_GetItem(
  *                 classes, <unsigned char*>c_node.name)
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(9, 187, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->name != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -98770,6 +104735,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *         else:
  *             dict_result = NULL
  */
+      __Pyx_TraceLine(189,0,__PYX_ERR(9, 189, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_node->name)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 189, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
 
@@ -98780,6 +104746,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *                 classes, <unsigned char*>c_node.name)
  *         else:
  */
+      __Pyx_TraceLine(188,0,__PYX_ERR(9, 188, __pyx_L1_error))
       __pyx_v_dict_result = PyDict_GetItem(__pyx_v_classes, __pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -98800,6 +104767,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  *         if dict_result is NULL:
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(9, 191, __pyx_L1_error))
     /*else*/ {
       __pyx_v_dict_result = NULL;
     }
@@ -98812,6 +104780,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             dict_result = python.PyDict_GetItem(classes, None)
  * 
  */
+    __Pyx_TraceLine(193,0,__PYX_ERR(9, 193, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_dict_result == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -98822,6 +104791,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  *         if dict_result is not NULL:
  */
+      __Pyx_TraceLine(194,0,__PYX_ERR(9, 194, __pyx_L1_error))
       __pyx_v_dict_result = PyDict_GetItem(__pyx_v_classes, Py_None);
 
       /* "src/lxml/nsclasses.pxi":193
@@ -98840,6 +104810,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *             return <object>dict_result
  *     return _callLookupFallback(lookup, doc, c_node)
  */
+    __Pyx_TraceLine(196,0,__PYX_ERR(9, 196, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_dict_result != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -98850,6 +104821,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  *     return _callLookupFallback(lookup, doc, c_node)
  * 
  */
+      __Pyx_TraceLine(197,0,__PYX_ERR(9, 197, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
       __pyx_r = ((PyObject *)__pyx_v_dict_result);
@@ -98880,6 +104852,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
  * 
  * 
  */
+  __Pyx_TraceLine(198,0,__PYX_ERR(9, 198, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -98906,6 +104879,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_st
   __Pyx_XDECREF((PyObject *)__pyx_v_registry);
   __Pyx_XDECREF(__pyx_v_classes);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -98937,6 +104911,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_ns_utf = NULL;
   struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_registry = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -98947,7 +104922,9 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__220)
   __Pyx_RefNannySetupContext("FunctionNamespace", 0);
+  __Pyx_TraceCall("FunctionNamespace", __pyx_f[9], 207, 0, __PYX_ERR(9, 207, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":228
  *     ...     return x + 3
@@ -98956,6 +104933,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *     try:
  *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
  */
+  __Pyx_TraceLine(228,0,__PYX_ERR(9, 228, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_uri); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 228, __pyx_L1_error)
   if (__pyx_t_2) {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 228, __pyx_L1_error)
@@ -98976,6 +104954,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
  *     except KeyError:
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(9, 229, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -98992,6 +104971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *     except KeyError:
  *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
  */
+      __Pyx_TraceLine(230,0,__PYX_ERR(9, 230, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -99022,6 +105002,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
  *                    _XPathFunctionNamespaceRegistry(ns_uri)
  */
+    __Pyx_TraceLine(231,0,__PYX_ERR(9, 231, __pyx_L5_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_7) {
       __Pyx_AddTraceback("lxml.etree.FunctionNamespace", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -99037,6 +105018,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *         return registry
  * 
  */
+      __Pyx_TraceLine(233,0,__PYX_ERR(9, 233, __pyx_L5_except_error))
       __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__XPathFunctionNamespaceRegistry), __pyx_v_ns_uri); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 233, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_t_9);
@@ -99049,6 +105031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  *                    _XPathFunctionNamespaceRegistry(ns_uri)
  *         return registry
  */
+      __Pyx_TraceLine(232,0,__PYX_ERR(9, 232, __pyx_L5_except_error))
       if (unlikely(__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(9, 232, __pyx_L5_except_error)
@@ -99063,6 +105046,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
  * 
  * @cython.internal
  */
+      __Pyx_TraceLine(234,0,__PYX_ERR(9, 234, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_v_registry));
       __pyx_r = ((PyObject *)__pyx_v_registry);
@@ -99120,6 +105104,7 @@ static PyObject *__pyx_pf_4lxml_5etree_42FunctionNamespace(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_ns_utf);
   __Pyx_XDECREF((PyObject *)__pyx_v_registry);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99147,11 +105132,13 @@ static int __pyx_pw_4lxml_5etree_26_FunctionNamespaceRegistry_1__setitem__(PyObj
 
 static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[9], 238, 0, __PYX_ERR(9, 238, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":239
  * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):
@@ -99160,6 +105147,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
  *             raise NamespaceRegistryError, \
  *                 u"Registered functions must be callable."
  */
+  __Pyx_TraceLine(239,0,__PYX_ERR(9, 239, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_item); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 239, __pyx_L1_error)
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
@@ -99171,6 +105159,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
  *                 u"Registered functions must be callable."
  *         if not name:
  */
+    __Pyx_TraceLine(240,0,__PYX_ERR(9, 240, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_NamespaceRegistryError), __pyx_kp_u_Registered_functions_must_be_cal, 0, 0);
     __PYX_ERR(9, 240, __pyx_L1_error)
 
@@ -99190,6 +105179,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
  *             raise ValueError, \
  *                 u"extensions must have non empty names"
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(9, 242, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(9, 242, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (unlikely(__pyx_t_1)) {
@@ -99201,6 +105191,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
  *                 u"extensions must have non empty names"
  *         self._entries[_utf8(name)] = item
  */
+    __Pyx_TraceLine(243,0,__PYX_ERR(9, 243, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_extensions_must_have_non_empty_n, 0, 0);
     __PYX_ERR(9, 243, __pyx_L1_error)
 
@@ -99220,6 +105211,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(245,0,__PYX_ERR(9, 245, __pyx_L1_error))
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(9, 245, __pyx_L1_error)
@@ -99245,6 +105237,7 @@ static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(struct
   __Pyx_AddTraceback("lxml.etree._FunctionNamespaceRegistry.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99272,9 +105265,11 @@ static PyObject *__pyx_pw_4lxml_5etree_26_FunctionNamespaceRegistry_3__repr__(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry_2__repr__(struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[9], 247, 0, __PYX_ERR(9, 247, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":248
  * 
@@ -99283,6 +105278,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry_2__repr__(st
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(9, 248, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_FunctionNamespace_r, __pyx_v_self->__pyx_base._ns_uri); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -99305,6 +105301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry_2__repr__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99332,8 +105329,10 @@ static int __pyx_pw_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_1__de
 
 static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del__(struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_TraceCall("__del__", __pyx_f[9], 258, 0, __PYX_ERR(9, 258, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":259
  *         u"Namespace prefix for extension functions."
@@ -99342,6 +105341,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del
  *             self._prefix_utf = None
  *         def __get__(self):
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(9, 259, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_prefix);
@@ -99355,6 +105355,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del
  *         def __get__(self):
  *             if self._prefix is None:
  */
+  __Pyx_TraceLine(260,0,__PYX_ERR(9, 260, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_prefix_utf);
@@ -99371,6 +105372,12 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._XPathFunctionNamespaceRegistry.prefix.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99398,10 +105405,12 @@ static PyObject *__pyx_pw_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix
 
 static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_2__get__(struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[9], 261, 0, __PYX_ERR(9, 261, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":262
  *             self._prefix_utf = None
@@ -99410,6 +105419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix
  *                 return ''
  *             else:
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(9, 262, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_prefix == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -99421,9 +105431,10 @@ static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix
  *             else:
  *                 return self._prefix
  */
+    __Pyx_TraceLine(263,0,__PYX_ERR(9, 263, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_s__16);
-    __pyx_r = __pyx_kp_s__16;
+    __Pyx_INCREF(__pyx_kp_s__23);
+    __pyx_r = __pyx_kp_s__23;
     goto __pyx_L0;
 
     /* "src/lxml/nsclasses.pxi":262
@@ -99442,6 +105453,7 @@ static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix
  *         def __set__(self, prefix):
  *             if prefix == '':
  */
+  __Pyx_TraceLine(265,0,__PYX_ERR(9, 265, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_prefix);
@@ -99458,8 +105470,12 @@ static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._XPathFunctionNamespaceRegistry.prefix.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99487,11 +105503,13 @@ static int __pyx_pw_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_5__se
 
 static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__set__(struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_prefix) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[9], 266, 0, __PYX_ERR(9, 266, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_prefix);
 
   /* "src/lxml/nsclasses.pxi":267
@@ -99501,7 +105519,8 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__se
  *                 prefix = None # empty prefix
  *             self._prefix_utf = _utf8(prefix) if prefix is not None else None
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_prefix, __pyx_kp_s__16, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 267, __pyx_L1_error)
+  __Pyx_TraceLine(267,0,__PYX_ERR(9, 267, __pyx_L1_error))
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_prefix, __pyx_kp_s__23, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(9, 267, __pyx_L1_error)
   if (__pyx_t_1) {
 
     /* "src/lxml/nsclasses.pxi":268
@@ -99511,6 +105530,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__se
  *             self._prefix_utf = _utf8(prefix) if prefix is not None else None
  *             self._prefix = prefix
  */
+    __Pyx_TraceLine(268,0,__PYX_ERR(9, 268, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_DECREF_SET(__pyx_v_prefix, Py_None);
 
@@ -99530,6 +105550,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__se
  *             self._prefix = prefix
  * 
  */
+  __Pyx_TraceLine(269,0,__PYX_ERR(9, 269, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_prefix != Py_None);
   if ((__pyx_t_1 != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 269, __pyx_L1_error)
@@ -99553,6 +105574,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__se
  * 
  * cdef list _find_all_extension_prefixes():
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(9, 270, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_prefix);
   __Pyx_GIVEREF(__pyx_v_prefix);
   __Pyx_GOTREF(__pyx_v_self->_prefix);
@@ -99577,6 +105599,7 @@ static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix_4__se
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_prefix);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99593,6 +105616,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
   struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_registry = 0;
   PyObject *__pyx_v_ns_prefixes = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -99604,6 +105628,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
   int __pyx_t_8;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_find_all_extension_prefixes", 0);
+  __Pyx_TraceCall("_find_all_extension_prefixes", __pyx_f[9], 272, 0, __PYX_ERR(9, 272, __pyx_L1_error));
 
   /* "src/lxml/nsclasses.pxi":275
  *     u"Internal lookup function to find all function prefixes for XSLT/XPath."
@@ -99612,6 +105637,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *     for registry in __FUNCTION_NAMESPACE_REGISTRIES.itervalues():
  *         if registry._prefix_utf is not None:
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(9, 275, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 275, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_ns_prefixes = ((PyObject*)__pyx_t_1);
@@ -99624,6 +105650,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *         if registry._prefix_utf is not None:
  *             if registry._ns_uri_utf is not None:
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(9, 276, __pyx_L1_error))
   __pyx_t_2 = 0;
   if (unlikely(__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "itervalues");
@@ -99650,6 +105677,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *             if registry._ns_uri_utf is not None:
  *                 ns_prefixes.append(
  */
+    __Pyx_TraceLine(277,0,__PYX_ERR(9, 277, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_registry->_prefix_utf != ((PyObject*)Py_None));
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
@@ -99661,6 +105689,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *                 ns_prefixes.append(
  *                     (registry._prefix_utf, registry._ns_uri_utf))
  */
+      __Pyx_TraceLine(278,0,__PYX_ERR(9, 278, __pyx_L1_error))
       __pyx_t_8 = (__pyx_v_registry->__pyx_base.__pyx_base._ns_uri_utf != ((PyObject*)Py_None));
       __pyx_t_7 = (__pyx_t_8 != 0);
       if (__pyx_t_7) {
@@ -99671,6 +105700,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *                     (registry._prefix_utf, registry._ns_uri_utf))             # <<<<<<<<<<<<<<
  *     return ns_prefixes
  */
+        __Pyx_TraceLine(280,0,__PYX_ERR(9, 280, __pyx_L1_error))
         __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 280, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_v_registry->_prefix_utf);
@@ -99687,6 +105717,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *                     (registry._prefix_utf, registry._ns_uri_utf))
  *     return ns_prefixes
  */
+        __Pyx_TraceLine(279,0,__PYX_ERR(9, 279, __pyx_L1_error))
         __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_ns_prefixes, __pyx_t_5); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(9, 279, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -99715,6 +105746,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  *                     (registry._prefix_utf, registry._ns_uri_utf))
  *     return ns_prefixes             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(281,0,__PYX_ERR(9, 281, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_ns_prefixes);
   __pyx_r = __pyx_v_ns_prefixes;
@@ -99738,6 +105770,7 @@ static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
   __Pyx_XDECREF((PyObject *)__pyx_v_registry);
   __Pyx_XDECREF(__pyx_v_ns_prefixes);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99768,8 +105801,10 @@ static int __pyx_pw_4lxml_5etree_14_InputDocument_1__cinit__(PyObject *__pyx_v_s
 
 static int __pyx_pf_4lxml_5etree_14_InputDocument___cinit__(struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[10], 19, 0, __PYX_ERR(10, 19, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":20
  * 
@@ -99778,6 +105813,7 @@ static int __pyx_pf_4lxml_5etree_14_InputDocument___cinit__(struct __pyx_obj_4lx
  * 
  * 
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(10, 20, __pyx_L1_error))
   __pyx_v_self->_type = __pyx_e_4lxml_5etree_PARSER_DATA_INVALID;
 
   /* "src/lxml/docloader.pxi":19
@@ -99790,6 +105826,12 @@ static int __pyx_pf_4lxml_5etree_14_InputDocument___cinit__(struct __pyx_obj_4lx
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._InputDocument.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99878,8 +105920,11 @@ static PyObject *__pyx_pw_4lxml_5etree_8Resolver_1resolve(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_system_url, CYTHON_UNUSED PyObject *__pyx_v_public_id, CYTHON_UNUSED PyObject *__pyx_v_context) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__221)
   __Pyx_RefNannySetupContext("resolve", 0);
+  __Pyx_TraceCall("resolve", __pyx_f[10], 25, 0, __PYX_ERR(10, 25, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":34
  *         Return the result of one of the ``resolve_*()`` methods.
@@ -99888,6 +105933,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve(CYTHON_UNUSED struct __
  * 
  *     def resolve_empty(self, context):
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(10, 34, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -99901,8 +105947,12 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve(CYTHON_UNUSED struct __
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.Resolver.resolve", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -99933,9 +105983,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8Resolver_3resolve_empty(PyObject *__pyx_
 static PyObject *__pyx_pf_4lxml_5etree_8Resolver_2resolve_empty(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_context) {
   struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__222)
   __Pyx_RefNannySetupContext("resolve_empty", 0);
+  __Pyx_TraceCall("resolve_empty", __pyx_f[10], 36, 0, __PYX_ERR(10, 36, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":44
  *         """
@@ -99944,6 +105997,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_2resolve_empty(CYTHON_UNUSED st
  *         doc_ref._type = PARSER_DATA_EMPTY
  *         return doc_ref
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(10, 44, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__InputDocument)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 44, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_1);
@@ -99956,6 +106010,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_2resolve_empty(CYTHON_UNUSED st
  *         return doc_ref
  * 
  */
+  __Pyx_TraceLine(45,0,__PYX_ERR(10, 45, __pyx_L1_error))
   __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_EMPTY;
 
   /* "src/lxml/docloader.pxi":46
@@ -99965,6 +106020,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_2resolve_empty(CYTHON_UNUSED st
  * 
  *     def resolve_string(self, string, context, *, base_url=None):
  */
+  __Pyx_TraceLine(46,0,__PYX_ERR(10, 46, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
   __pyx_r = ((PyObject *)__pyx_v_doc_ref);
@@ -99986,6 +106042,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_2resolve_empty(CYTHON_UNUSED st
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc_ref);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100072,11 +106129,14 @@ static PyObject *__pyx_pw_4lxml_5etree_8Resolver_5resolve_string(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_self, PyObject *__pyx_v_string, CYTHON_UNUSED PyObject *__pyx_v_context, PyObject *__pyx_v_base_url) {
   struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__223)
   __Pyx_RefNannySetupContext("resolve_string", 0);
+  __Pyx_TraceCall("resolve_string", __pyx_f[10], 48, 0, __PYX_ERR(10, 48, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_string);
 
   /* "src/lxml/docloader.pxi":58
@@ -100086,6 +106146,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *             string = (<unicode>string).encode('utf8')
  *         elif not isinstance(string, bytes):
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(10, 58, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_string); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -100097,6 +106158,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         elif not isinstance(string, bytes):
  *             raise TypeError, "argument must be a byte string or unicode string"
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(10, 59, __pyx_L1_error))
     if (unlikely(__pyx_v_string == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
       __PYX_ERR(10, 59, __pyx_L1_error)
@@ -100123,6 +106185,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *             raise TypeError, "argument must be a byte string or unicode string"
  *         doc_ref = _InputDocument()
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(10, 60, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v_string); 
   __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
@@ -100134,6 +106197,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         doc_ref = _InputDocument()
  *         doc_ref._type = PARSER_DATA_STRING
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(10, 61, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_argument_must_be_a_byte_string_o, 0, 0);
     __PYX_ERR(10, 61, __pyx_L1_error)
 
@@ -100154,6 +106218,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         doc_ref._type = PARSER_DATA_STRING
  *         doc_ref._data_bytes = string
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(10, 62, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__InputDocument)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 62, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_3);
@@ -100166,6 +106231,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         doc_ref._data_bytes = string
  *         if base_url is not None:
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(10, 63, __pyx_L1_error))
   __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_STRING;
 
   /* "src/lxml/docloader.pxi":64
@@ -100175,6 +106241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         if base_url is not None:
  *             doc_ref._filename = _encodeFilename(base_url)
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(10, 64, __pyx_L1_error))
   if (!(likely(PyBytes_CheckExact(__pyx_v_string))||((__pyx_v_string) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_string)->tp_name), 0))) __PYX_ERR(10, 64, __pyx_L1_error)
   __pyx_t_3 = __pyx_v_string;
   __Pyx_INCREF(__pyx_t_3);
@@ -100191,6 +106258,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *             doc_ref._filename = _encodeFilename(base_url)
  *         return doc_ref
  */
+  __Pyx_TraceLine(65,0,__PYX_ERR(10, 65, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_base_url != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -100202,6 +106270,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  *         return doc_ref
  * 
  */
+    __Pyx_TraceLine(66,0,__PYX_ERR(10, 66, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 66, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -100226,6 +106295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
  * 
  *     def resolve_filename(self, filename, context):
  */
+  __Pyx_TraceLine(67,0,__PYX_ERR(10, 67, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
   __pyx_r = ((PyObject *)__pyx_v_doc_ref);
@@ -100248,6 +106318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_4resolve_string(CYTHON_UNUSED s
   __Pyx_XDECREF((PyObject *)__pyx_v_doc_ref);
   __Pyx_XDECREF(__pyx_v_string);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100326,9 +106397,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8Resolver_7resolve_filename(PyObject *__p
 static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_self, PyObject *__pyx_v_filename, CYTHON_UNUSED PyObject *__pyx_v_context) {
   struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__224)
   __Pyx_RefNannySetupContext("resolve_filename", 0);
+  __Pyx_TraceCall("resolve_filename", __pyx_f[10], 69, 0, __PYX_ERR(10, 69, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":78
  *         """
@@ -100337,6 +106411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED
  *         doc_ref._type = PARSER_DATA_FILENAME
  *         doc_ref._filename = _encodeFilename(filename)
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(10, 78, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__InputDocument)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 78, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_1);
@@ -100349,6 +106424,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED
  *         doc_ref._filename = _encodeFilename(filename)
  *         return doc_ref
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(10, 79, __pyx_L1_error))
   __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME;
 
   /* "src/lxml/docloader.pxi":80
@@ -100358,6 +106434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED
  *         return doc_ref
  * 
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(10, 80, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 80, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -100373,6 +106450,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED
  * 
  *     def resolve_file(self, f, context, *, base_url=None, bint close=True):
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(10, 81, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
   __pyx_r = ((PyObject *)__pyx_v_doc_ref);
@@ -100394,6 +106472,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_6resolve_filename(CYTHON_UNUSED
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc_ref);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100488,6 +106567,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8Resolver_9resolve_file(PyObject *__pyx_v
 static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_self, PyObject *__pyx_v_f, CYTHON_UNUSED PyObject *__pyx_v_context, PyObject *__pyx_v_base_url, int __pyx_v_close) {
   struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -100498,7 +106578,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   int __pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__225)
   __Pyx_RefNannySetupContext("resolve_file", 0);
+  __Pyx_TraceCall("resolve_file", __pyx_f[10], 83, 0, __PYX_ERR(10, 83, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":97
  *         """
@@ -100507,6 +106589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *             f.read
  *         except AttributeError:
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(10, 97, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -100523,6 +106606,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         except AttributeError:
  *             raise TypeError, u"Argument is not a file-like object"
  */
+      __Pyx_TraceLine(98,0,__PYX_ERR(10, 98, __pyx_L3_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 98, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -100549,6 +106633,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *             raise TypeError, u"Argument is not a file-like object"
  *         doc_ref = _InputDocument()
  */
+    __Pyx_TraceLine(99,0,__PYX_ERR(10, 99, __pyx_L5_except_error))
     __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_5) {
       __Pyx_AddTraceback("lxml.etree.Resolver.resolve_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -100564,6 +106649,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         doc_ref = _InputDocument()
  *         doc_ref._type = PARSER_DATA_FILE
  */
+      __Pyx_TraceLine(100,0,__PYX_ERR(10, 100, __pyx_L5_except_error))
       __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Argument_is_not_a_file_like_obje, 0, 0);
       __PYX_ERR(10, 100, __pyx_L5_except_error)
     }
@@ -100592,6 +106678,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         doc_ref._type = PARSER_DATA_FILE
  *         if base_url is not None:
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(10, 101, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__InputDocument)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 101, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_7);
@@ -100604,6 +106691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         if base_url is not None:
  *             doc_ref._filename = _encodeFilename(base_url)
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(10, 102, __pyx_L1_error))
   __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_FILE;
 
   /* "src/lxml/docloader.pxi":103
@@ -100613,6 +106701,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *             doc_ref._filename = _encodeFilename(base_url)
  *         else:
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(10, 103, __pyx_L1_error))
   __pyx_t_8 = (__pyx_v_base_url != Py_None);
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
@@ -100624,6 +106713,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         else:
  *             doc_ref._filename = _getFilenameForFile(f)
  */
+    __Pyx_TraceLine(104,0,__PYX_ERR(10, 104, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 104, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_7);
@@ -100649,6 +106739,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         doc_ref._close_file = close
  *         doc_ref._file = f
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(10, 106, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_f); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
@@ -100667,6 +106758,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         doc_ref._file = f
  *         return doc_ref
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(10, 107, __pyx_L1_error))
   __pyx_v_doc_ref->_close_file = __pyx_v_close;
 
   /* "src/lxml/docloader.pxi":108
@@ -100676,6 +106768,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  *         return doc_ref
  * 
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(10, 108, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_f);
   __Pyx_GIVEREF(__pyx_v_f);
   __Pyx_GOTREF(__pyx_v_doc_ref->_file);
@@ -100689,6 +106782,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(10, 109, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
   __pyx_r = ((PyObject *)__pyx_v_doc_ref);
@@ -100712,6 +106806,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Resolver_8resolve_file(CYTHON_UNUSED str
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc_ref);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100787,9 +106882,11 @@ static int __pyx_pw_4lxml_5etree_17_ResolverRegistry_1__cinit__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___cinit__(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self, struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_default_resolver) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[10], 116, 0, __PYX_ERR(10, 116, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":117
  *     cdef Resolver _default_resolver
@@ -100798,6 +106895,7 @@ static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___cinit__(struct __pyx_obj_
  *         self._default_resolver = default_resolver
  * 
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(10, 117, __pyx_L1_error))
   __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 117, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -100813,6 +106911,7 @@ static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___cinit__(struct __pyx_obj_
  * 
  *     def add(self, Resolver resolver not None):
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(10, 118, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_default_resolver));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_default_resolver));
   __Pyx_GOTREF(__pyx_v_self->_default_resolver);
@@ -100835,6 +106934,7 @@ static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___cinit__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree._ResolverRegistry.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100869,12 +106969,15 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ResolverRegistry_3add(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_2add(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self, struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_resolver) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__226)
   __Pyx_RefNannySetupContext("add", 0);
+  __Pyx_TraceCall("add", __pyx_f[10], 120, 0, __PYX_ERR(10, 120, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":131
  *         until the first match is found.
@@ -100883,6 +106986,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_2add(struct __pyx_obj
  * 
  *     def remove(self, resolver):
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(10, 131, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_resolvers, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 131, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -100950,6 +107054,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_2add(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -100979,12 +107084,15 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ResolverRegistry_5remove(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_4remove(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self, PyObject *__pyx_v_resolver) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__227)
   __Pyx_RefNannySetupContext("remove", 0);
+  __Pyx_TraceCall("remove", __pyx_f[10], 133, 0, __PYX_ERR(10, 133, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":135
  *     def remove(self, resolver):
@@ -100993,6 +107101,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_4remove(struct __pyx_
  * 
  *     cdef _ResolverRegistry _copy(self):
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(10, 135, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_resolvers, __pyx_n_s_discard); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -101060,6 +107169,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_4remove(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101075,11 +107185,13 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_4remove(struct __pyx_
 static struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_registry = 0;
   struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[10], 137, 0, __PYX_ERR(10, 137, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":139
  *     cdef _ResolverRegistry _copy(self):
@@ -101088,6 +107200,7 @@ static struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_
  *         registry._resolvers = self._resolvers.copy()
  *         return registry
  */
+  __Pyx_TraceLine(139,0,__PYX_ERR(10, 139, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry), ((PyObject *)__pyx_v_self->_default_resolver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1);
@@ -101100,6 +107213,7 @@ static struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_
  *         return registry
  * 
  */
+  __Pyx_TraceLine(140,0,__PYX_ERR(10, 140, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_resolvers, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -101133,6 +107247,7 @@ static struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_
  * 
  *     def copy(self):
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(10, 141, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_registry));
   __pyx_r = __pyx_v_registry;
@@ -101156,6 +107271,7 @@ static struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_registry);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101185,9 +107301,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ResolverRegistry_7copy(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_6copy(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__228)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[10], 143, 0, __PYX_ERR(10, 143, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":145
  *     def copy(self):
@@ -101196,6 +107315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_6copy(struct __pyx_ob
  * 
  *     def resolve(self, system_url, public_id, context):
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(10, 145, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 145, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -101218,6 +107338,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_6copy(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101308,6 +107429,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
   PyObject *__pyx_v_resolver = NULL;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -101319,7 +107441,9 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
   PyObject *__pyx_t_8 = NULL;
   int __pyx_t_9;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__229)
   __Pyx_RefNannySetupContext("resolve", 0);
+  __Pyx_TraceCall("resolve", __pyx_f[10], 147, 0, __PYX_ERR(10, 147, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":149
  *     def resolve(self, system_url, public_id, context):
@@ -101328,6 +107452,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *             result = resolver.resolve(system_url, public_id, context)
  *             if result is not None:
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(10, 149, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_self->_resolvers)) || PyTuple_CheckExact(__pyx_v_self->_resolvers)) {
     __pyx_t_1 = __pyx_v_self->_resolvers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -101377,6 +107502,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *             if result is not None:
  *                 return result
  */
+    __Pyx_TraceLine(150,0,__PYX_ERR(10, 150, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_resolver, __pyx_n_s_resolve); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 150, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -101437,6 +107563,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *                 return result
  *         if self._default_resolver is None:
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(10, 151, __pyx_L1_error))
     __pyx_t_9 = (__pyx_v_result != Py_None);
     __pyx_t_10 = (__pyx_t_9 != 0);
     if (__pyx_t_10) {
@@ -101448,6 +107575,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *         if self._default_resolver is None:
  *             return None
  */
+      __Pyx_TraceLine(152,0,__PYX_ERR(10, 152, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_result);
       __pyx_r = __pyx_v_result;
@@ -101470,6 +107598,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *             result = resolver.resolve(system_url, public_id, context)
  *             if result is not None:
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(10, 149, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -101480,6 +107609,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *             return None
  *         return self._default_resolver.resolve(system_url, public_id, context)
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(10, 153, __pyx_L1_error))
   __pyx_t_10 = (((PyObject *)__pyx_v_self->_default_resolver) == Py_None);
   __pyx_t_9 = (__pyx_t_10 != 0);
   if (__pyx_t_9) {
@@ -101491,6 +107621,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  *         return self._default_resolver.resolve(system_url, public_id, context)
  * 
  */
+    __Pyx_TraceLine(154,0,__PYX_ERR(10, 154, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -101511,6 +107642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(10, 155, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_default_resolver), __pyx_n_s_resolve); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -101587,6 +107719,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_8resolve(struct __pyx
   __Pyx_XDECREF(__pyx_v_resolver);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101614,10 +107747,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17_ResolverRegistry_11__repr__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_10__repr__(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[10], 157, 0, __PYX_ERR(10, 157, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":158
  * 
@@ -101626,6 +107761,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_10__repr__(struct __p
  * 
  * 
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(10, 158, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_v_self->_resolvers;
   __Pyx_INCREF(__pyx_t_1);
@@ -101652,6 +107788,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_10__repr__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101666,9 +107803,11 @@ static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_10__repr__(struct __p
 
 static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_5etree__ResolverContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("clear", 0);
+  __Pyx_TraceCall("clear", __pyx_f[10], 166, 0, __PYX_ERR(10, 166, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":167
  * 
@@ -101677,6 +107816,7 @@ static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_
  *         self._storage.clear()
  *         return 0
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(10, 167, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17_ExceptionContext_clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 167, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":168
@@ -101686,6 +107826,7 @@ static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_
  *         return 0
  * 
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(10, 168, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_10_TempStore_clear(__pyx_v_self->_storage); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 168, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":169
@@ -101695,6 +107836,7 @@ static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_
  * 
  * 
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(10, 169, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -101711,6 +107853,7 @@ static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_
   __Pyx_AddTraceback("lxml.etree._ResolverContext.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101725,11 +107868,13 @@ static int __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_
 
 static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxml_5etree__ResolverContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_resolvers) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_initResolverContext", 0);
+  __Pyx_TraceCall("_initResolverContext", __pyx_f[10], 172, 0, __PYX_ERR(10, 172, __pyx_L1_error));
 
   /* "src/lxml/docloader.pxi":174
  * cdef _initResolverContext(_ResolverContext context,
@@ -101738,6 +107883,7 @@ static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxm
  *         context._resolvers = _ResolverRegistry()
  *     else:
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(10, 174, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_resolvers) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -101749,6 +107895,7 @@ static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxm
  *     else:
  *         context._resolvers = resolvers
  */
+    __Pyx_TraceLine(175,0,__PYX_ERR(10, 175, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 175, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -101773,6 +107920,7 @@ static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxm
  *         context._resolvers = resolvers             # <<<<<<<<<<<<<<
  *     context._storage = _TempStore()
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(10, 177, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(((PyObject *)__pyx_v_resolvers));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_resolvers));
@@ -101787,6 +107935,7 @@ static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxm
  *         context._resolvers = resolvers
  *     context._storage = _TempStore()             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(10, 178, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__TempStore)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -101812,6 +107961,7 @@ static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxm
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -101936,12 +108086,15 @@ static PyObject *__pyx_pw_4lxml_5etree_10ParseError_1__init__(PyObject *__pyx_se
 
 static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_code, PyObject *__pyx_v_line, PyObject *__pyx_v_column, PyObject *__pyx_v_filename) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__230)
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 12, 0, __PYX_ERR(2, 12, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":13
  *     """
@@ -101950,6 +108103,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObj
  *         self.lineno, self.offset = (line, column - 1)
  *         self.code = code
  */
+  __Pyx_TraceLine(13,0,__PYX_ERR(2, 13, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_4lxml_5etree__ParseError);
@@ -102016,6 +108170,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObj
  *         self.code = code
  *         self.filename = filename
  */
+  __Pyx_TraceLine(14,0,__PYX_ERR(2, 14, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_line;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_column, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 14, __pyx_L1_error)
@@ -102032,6 +108187,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObj
  *         self.filename = filename
  * 
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(2, 15, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_code) < 0) __PYX_ERR(2, 15, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":16
@@ -102041,6 +108197,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObj
  * 
  *     @property
  */
+  __Pyx_TraceLine(16,0,__PYX_ERR(2, 16, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_filename, __pyx_v_filename) < 0) __PYX_ERR(2, 16, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":12
@@ -102063,6 +108220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError___init__(CYTHON_UNUSED PyObj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102091,11 +108249,14 @@ static PyObject *__pyx_pw_4lxml_5etree_10ParseError_3position(PyObject *__pyx_se
 
 static PyObject *__pyx_pf_4lxml_5etree_10ParseError_2position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__231)
   __Pyx_RefNannySetupContext("position", 0);
+  __Pyx_TraceCall("position", __pyx_f[2], 19, 0, __PYX_ERR(2, 19, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":20
  *     @property
@@ -102104,6 +108265,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError_2position(CYTHON_UNUSED PyOb
  * 
  *     @position.setter
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(2, 20, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 20, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -102141,6 +108303,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError_2position(CYTHON_UNUSED PyOb
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102218,12 +108381,15 @@ static PyObject *__pyx_pw_4lxml_5etree_10ParseError_5position(PyObject *__pyx_se
 static PyObject *__pyx_pf_4lxml_5etree_10ParseError_4position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_new_pos) {
   PyObject *__pyx_v_column = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *(*__pyx_t_4)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__232)
   __Pyx_RefNannySetupContext("position", 0);
+  __Pyx_TraceCall("position", __pyx_f[2], 23, 0, __PYX_ERR(2, 23, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":24
  *     @position.setter
@@ -102232,6 +108398,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError_4position(CYTHON_UNUSED PyOb
  *         self.offset = column - 1
  * 
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(2, 24, __pyx_L1_error))
   if ((likely(PyTuple_CheckExact(__pyx_v_new_pos))) || (PyList_CheckExact(__pyx_v_new_pos))) {
     PyObject* sequence = __pyx_v_new_pos;
     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -102288,6 +108455,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError_4position(CYTHON_UNUSED PyOb
  * 
  * cdef object _ParseError = ParseError
  */
+  __Pyx_TraceLine(25,0,__PYX_ERR(2, 25, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_column, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 25, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_offset, __pyx_t_2) < 0) __PYX_ERR(2, 25, __pyx_L1_error)
@@ -102313,6 +108481,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ParseError_4position(CYTHON_UNUSED PyOb
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_column);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102343,9 +108512,11 @@ static int __pyx_pw_4lxml_5etree_24_ParserDictionaryContext_1__cinit__(PyObject
 
 static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___cinit__(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[2], 55, 0, __PYX_ERR(2, 55, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":56
  * 
@@ -102354,6 +108525,7 @@ static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___cinit__(struct __p
  *         self._implied_parser_contexts = []
  * 
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(2, 56, __pyx_L1_error))
   __pyx_v_self->_c_dict = NULL;
 
   /* "src/lxml/parser.pxi":57
@@ -102363,6 +108535,7 @@ static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___cinit__(struct __p
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(2, 57, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -102387,6 +108560,7 @@ static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___cinit__(struct __p
   __Pyx_AddTraceback("lxml.etree._ParserDictionaryContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102411,9 +108585,11 @@ static void __pyx_pw_4lxml_5etree_24_ParserDictionaryContext_3__dealloc__(PyObje
 }
 
 static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext_2__dealloc__(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[2], 59, 0, __PYX_ERR(2, 59, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":60
  * 
@@ -102422,6 +108598,7 @@ static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext_2__dealloc__(struct
  *             xmlparser.xmlDictFree(self._c_dict)
  * 
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(2, 60, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_dict != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -102432,6 +108609,7 @@ static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext_2__dealloc__(struct
  * 
  *     cdef void initMainParserContext(self):
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(2, 61, __pyx_L1_error))
     xmlDictFree(__pyx_v_self->_c_dict);
 
     /* "src/lxml/parser.pxi":60
@@ -102452,6 +108630,11 @@ static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext_2__dealloc__(struct
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -102465,9 +108648,11 @@ static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext_2__dealloc__(struct
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
   PyObject *__pyx_v_thread_dict;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("initMainParserContext", 0);
+  __Pyx_TraceCall("initMainParserContext", __pyx_f[2], 63, 0, __PYX_ERR(2, 63, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":66
  *         u"""Put the global context into the thread dictionary of the main
@@ -102476,6 +108661,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContex
  *         if thread_dict is not NULL:
  *             (<dict>thread_dict)[u"_ParserDictionaryContext"] = self
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(2, 66, __pyx_L1_error))
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
   /* "src/lxml/parser.pxi":67
@@ -102485,6 +108671,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContex
  *             (<dict>thread_dict)[u"_ParserDictionaryContext"] = self
  * 
  */
+  __Pyx_TraceLine(67,0,__PYX_ERR(2, 67, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_thread_dict != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -102495,6 +108682,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContex
  * 
  *     cdef _ParserDictionaryContext _findThreadParserContext(self):
  */
+    __Pyx_TraceLine(68,0,__PYX_ERR(2, 68, __pyx_L1_error))
     if (unlikely(((PyObject *)__pyx_v_thread_dict) == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(2, 68, __pyx_L1_error)
@@ -102523,6 +108711,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContex
   __pyx_L1_error:;
   __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initMainParserContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -102540,11 +108729,13 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
   PyObject *__pyx_v_d = NULL;
   PyObject *__pyx_v_result;
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_findThreadParserContext", 0);
+  __Pyx_TraceCall("_findThreadParserContext", __pyx_f[2], 70, 0, __PYX_ERR(2, 70, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":73
  *         u"Find (or create) the _ParserDictionaryContext object for the current thread"
@@ -102553,6 +108744,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         if thread_dict is NULL:
  *             return self
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(2, 73, __pyx_L1_error))
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
   /* "src/lxml/parser.pxi":74
@@ -102562,6 +108754,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *             return self
  *         d = <dict>thread_dict
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(2, 74, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -102572,6 +108765,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         d = <dict>thread_dict
  *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
  */
+    __Pyx_TraceLine(75,0,__PYX_ERR(2, 75, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __pyx_r = __pyx_v_self;
@@ -102593,6 +108787,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
  *         if result is not NULL:
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(2, 76, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_thread_dict);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_d = ((PyObject*)__pyx_t_2);
@@ -102605,6 +108800,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         if result is not NULL:
  *             return <object>result
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(2, 77, __pyx_L1_error))
   __pyx_v_result = PyDict_GetItem(__pyx_v_d, __pyx_n_u_ParserDictionaryContext);
 
   /* "src/lxml/parser.pxi":78
@@ -102614,6 +108810,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *             return <object>result
  *         context = <_ParserDictionaryContext>_ParserDictionaryContext.__new__(_ParserDictionaryContext)
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(2, 78, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -102624,6 +108821,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         context = <_ParserDictionaryContext>_ParserDictionaryContext.__new__(_ParserDictionaryContext)
  *         d[u"_ParserDictionaryContext"] = context
  */
+    __Pyx_TraceLine(79,0,__PYX_ERR(2, 79, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     if (!(likely(((((PyObject *)__pyx_v_result)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_4lxml_5etree__ParserDictionaryContext))))) __PYX_ERR(2, 79, __pyx_L1_error)
     __Pyx_INCREF(((PyObject *)__pyx_v_result));
@@ -102646,6 +108844,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         d[u"_ParserDictionaryContext"] = context
  *         return context
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(2, 80, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ParserDictionaryContext(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ParserDictionaryContext), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 80, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __pyx_t_3 = ((PyObject *)__pyx_t_2);
@@ -102661,6 +108860,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  *         return context
  * 
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(2, 81, __pyx_L1_error))
   if (unlikely(__pyx_v_d == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(2, 81, __pyx_L1_error)
@@ -102674,6 +108874,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
  * 
  *     cdef void setDefaultParser(self, _BaseParser parser):
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(2, 82, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = __pyx_v_context;
@@ -102697,6 +108898,7 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_d);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102711,9 +108913,11 @@ static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5et
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("setDefaultParser", 0);
+  __Pyx_TraceCall("setDefaultParser", __pyx_f[2], 84, 0, __PYX_ERR(2, 84, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":87
  *         u"Set the default parser for the current thread"
@@ -102722,6 +108926,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(str
  *         context._default_parser = parser
  * 
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(2, 87, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 87, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -102734,6 +108939,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(str
  * 
  *     cdef _BaseParser getDefaultParser(self):
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(2, 88, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
   __Pyx_GOTREF(__pyx_v_context->_default_parser);
@@ -102755,6 +108961,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(str
   __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.setDefaultParser", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -102769,11 +108976,13 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(str
 static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("getDefaultParser", 0);
+  __Pyx_TraceCall("getDefaultParser", __pyx_f[2], 90, 0, __PYX_ERR(2, 90, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":93
  *         u"Return (or create) the default parser of the current thread"
@@ -102782,6 +108991,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *         if context._default_parser is None:
  *             if self._default_parser is None:
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(2, 93, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -102794,6 +109004,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *             if self._default_parser is None:
  *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
  */
+  __Pyx_TraceLine(94,0,__PYX_ERR(2, 94, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_context->_default_parser) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -102805,6 +109016,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
  *             if context is not self:
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(2, 95, __pyx_L1_error))
     __pyx_t_3 = (((PyObject *)__pyx_v_self->_default_parser) == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -102816,6 +109028,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *             if context is not self:
  *                 context._default_parser = self._default_parser._copy()
  */
+      __Pyx_TraceLine(96,0,__PYX_ERR(2, 96, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._copy(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 96, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
@@ -102840,6 +109053,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *                 context._default_parser = self._default_parser._copy()
  *         return context._default_parser
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(2, 97, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_context != __pyx_v_self);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -102851,6 +109065,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  *         return context._default_parser
  * 
  */
+      __Pyx_TraceLine(98,0,__PYX_ERR(2, 98, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->_default_parser->__pyx_vtab)->_copy(__pyx_v_self->_default_parser)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
@@ -102884,6 +109099,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
  * 
  *     cdef tree.xmlDict* _getThreadDict(self, tree.xmlDict* default):
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(2, 99, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context->_default_parser));
   __pyx_r = __pyx_v_context->_default_parser;
@@ -102905,6 +109121,7 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -102920,11 +109137,13 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_Parser
 static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDict *__pyx_v_default) {
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
   xmlDict *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_getThreadDict", 0);
+  __Pyx_TraceCall("_getThreadDict", __pyx_f[2], 101, 0, __PYX_ERR(2, 101, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":104
  *         u"Return the thread-local dict or create a new one if necessary."
@@ -102933,6 +109152,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *         if context._c_dict is NULL:
  *             # thread dict not yet set up => use default or create a new one
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(2, 104, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 104, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -102945,6 +109165,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *             # thread dict not yet set up => use default or create a new one
  *             if default is not NULL:
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(2, 105, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_context->_c_dict == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -102955,6 +109176,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *                 context._c_dict = default
  *                 xmlparser.xmlDictReference(default)
  */
+    __Pyx_TraceLine(107,0,__PYX_ERR(2, 107, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_default != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -102965,6 +109187,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *                 xmlparser.xmlDictReference(default)
  *                 return default
  */
+      __Pyx_TraceLine(108,0,__PYX_ERR(2, 108, __pyx_L1_error))
       __pyx_v_context->_c_dict = __pyx_v_default;
 
       /* "src/lxml/parser.pxi":109
@@ -102974,6 +109197,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *                 return default
  *             if self._c_dict is NULL:
  */
+      __Pyx_TraceLine(109,0,__PYX_ERR(2, 109, __pyx_L1_error))
       (void)(xmlDictReference(__pyx_v_default));
 
       /* "src/lxml/parser.pxi":110
@@ -102983,6 +109207,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *             if self._c_dict is NULL:
  *                 self._c_dict = xmlparser.xmlDictCreate()
  */
+      __Pyx_TraceLine(110,0,__PYX_ERR(2, 110, __pyx_L1_error))
       __pyx_r = __pyx_v_default;
       goto __pyx_L0;
 
@@ -103002,6 +109227,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *                 self._c_dict = xmlparser.xmlDictCreate()
  *             if context is not self:
  */
+    __Pyx_TraceLine(111,0,__PYX_ERR(2, 111, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->_c_dict == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -103012,6 +109238,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *             if context is not self:
  *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)
  */
+      __Pyx_TraceLine(112,0,__PYX_ERR(2, 112, __pyx_L1_error))
       __pyx_v_self->_c_dict = xmlDictCreate();
 
       /* "src/lxml/parser.pxi":111
@@ -103030,6 +109257,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)
  *         return context._c_dict
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(2, 113, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_context != __pyx_v_self);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -103041,6 +109269,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  *         return context._c_dict
  * 
  */
+      __Pyx_TraceLine(114,0,__PYX_ERR(2, 114, __pyx_L1_error))
       __pyx_v_context->_c_dict = xmlDictCreateSub(__pyx_v_self->_c_dict);
 
       /* "src/lxml/parser.pxi":113
@@ -103068,6 +109297,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
  * 
  *     cdef void initThreadDictRef(self, tree.xmlDict** c_dict_ref):
  */
+  __Pyx_TraceLine(115,0,__PYX_ERR(2, 115, __pyx_L1_error))
   __pyx_r = __pyx_v_context->_c_dict;
   goto __pyx_L0;
 
@@ -103086,6 +109316,7 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -103101,9 +109332,11 @@ static xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(s
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDict **__pyx_v_c_dict_ref) {
   xmlDict *__pyx_v_c_dict;
   xmlDict *__pyx_v_c_thread_dict;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("initThreadDictRef", 0);
+  __Pyx_TraceCall("initThreadDictRef", __pyx_f[2], 117, 0, __PYX_ERR(2, 117, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":118
  * 
@@ -103112,6 +109345,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *         c_thread_dict = self._getThreadDict(c_dict)
  *         if c_dict is c_thread_dict:
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(2, 118, __pyx_L1_error))
   __pyx_v_c_dict = (__pyx_v_c_dict_ref[0]);
 
   /* "src/lxml/parser.pxi":119
@@ -103121,6 +109355,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *         if c_dict is c_thread_dict:
  *             return
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(2, 119, __pyx_L1_error))
   __pyx_v_c_thread_dict = __pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(__pyx_v_self, __pyx_v_c_dict);
 
   /* "src/lxml/parser.pxi":120
@@ -103130,6 +109365,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *             return
  *         if c_dict is not NULL:
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(2, 120, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_dict == __pyx_v_c_thread_dict) != 0);
   if (__pyx_t_1) {
 
@@ -103140,6 +109376,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *         if c_dict is not NULL:
  *             xmlparser.xmlDictFree(c_dict)
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(2, 121, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/parser.pxi":120
@@ -103158,6 +109395,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *             xmlparser.xmlDictFree(c_dict)
  *         c_dict_ref[0] = c_thread_dict
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(2, 122, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_dict != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -103168,6 +109406,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *         c_dict_ref[0] = c_thread_dict
  *         xmlparser.xmlDictReference(c_thread_dict)
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(2, 123, __pyx_L1_error))
     xmlDictFree(__pyx_v_c_dict);
 
     /* "src/lxml/parser.pxi":122
@@ -103186,6 +109425,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  *         xmlparser.xmlDictReference(c_thread_dict)
  * 
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(2, 124, __pyx_L1_error))
   (__pyx_v_c_dict_ref[0]) = __pyx_v_c_thread_dict;
 
   /* "src/lxml/parser.pxi":125
@@ -103195,6 +109435,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  * 
  *     cdef void initParserDict(self, xmlparser.xmlParserCtxt* pctxt):
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(2, 125, __pyx_L1_error))
   (void)(xmlDictReference(__pyx_v_c_thread_dict));
 
   /* "src/lxml/parser.pxi":117
@@ -103206,7 +109447,11 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initThreadDictRef", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103219,8 +109464,10 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(st
  */
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlParserCtxt *__pyx_v_pctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("initParserDict", 0);
+  __Pyx_TraceCall("initParserDict", __pyx_f[2], 127, 0, __PYX_ERR(2, 127, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":129
  *     cdef void initParserDict(self, xmlparser.xmlParserCtxt* pctxt):
@@ -103229,6 +109476,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struc
  *         pctxt.dictNames = 1
  * 
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(2, 129, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(__pyx_v_self, (&__pyx_v_pctxt->dict));
 
   /* "src/lxml/parser.pxi":130
@@ -103238,6 +109486,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struc
  * 
  *     cdef void initXPathParserDict(self, xpath.xmlXPathContext* pctxt):
  */
+  __Pyx_TraceLine(130,0,__PYX_ERR(2, 130, __pyx_L1_error))
   __pyx_v_pctxt->dictNames = 1;
 
   /* "src/lxml/parser.pxi":127
@@ -103249,6 +109498,11 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struc
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initParserDict", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103261,8 +109515,10 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struc
  */
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlXPathContext *__pyx_v_pctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("initXPathParserDict", 0);
+  __Pyx_TraceCall("initXPathParserDict", __pyx_f[2], 132, 0, __PYX_ERR(2, 132, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":134
  *     cdef void initXPathParserDict(self, xpath.xmlXPathContext* pctxt):
@@ -103271,6 +109527,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict(
  * 
  *     cdef void initDocDict(self, xmlDoc* result):
  */
+  __Pyx_TraceLine(134,0,__PYX_ERR(2, 134, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(__pyx_v_self, (&__pyx_v_pctxt->dict));
 
   /* "src/lxml/parser.pxi":132
@@ -103282,6 +109539,11 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict(
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initXPathParserDict", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103294,8 +109556,10 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict(
  */
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDoc *__pyx_v_result) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("initDocDict", 0);
+  __Pyx_TraceCall("initDocDict", __pyx_f[2], 136, 0, __PYX_ERR(2, 136, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":141
  *         # This case should only occur for new documents with empty dicts,
@@ -103304,6 +109568,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(struct _
  * 
  *     cdef _ParserContext findImpliedContext(self):
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(2, 141, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(__pyx_v_self, (&__pyx_v_result->dict));
 
   /* "src/lxml/parser.pxi":136
@@ -103315,6 +109580,11 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(struct _
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initDocDict", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103330,10 +109600,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_implied_context = 0;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("findImpliedContext", 0);
+  __Pyx_TraceCall("findImpliedContext", __pyx_f[2], 143, 0, __PYX_ERR(2, 143, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":153
  * 
@@ -103342,6 +109614,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  *         if context._implied_parser_contexts:
  *             implied_context = context._implied_parser_contexts[-1]
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(2, 153, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 153, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -103354,6 +109627,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  *             implied_context = context._implied_parser_contexts[-1]
  *             return implied_context
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(2, 154, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_context->_implied_parser_contexts != Py_None)&&(PyList_GET_SIZE(__pyx_v_context->_implied_parser_contexts) != 0);
   if (__pyx_t_2) {
 
@@ -103364,6 +109638,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  *             return implied_context
  *         return None
  */
+    __Pyx_TraceLine(155,0,__PYX_ERR(2, 155, __pyx_L1_error))
     if (unlikely(__pyx_v_context->_implied_parser_contexts == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(2, 155, __pyx_L1_error)
@@ -103381,6 +109656,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  *         return None
  * 
  */
+    __Pyx_TraceLine(156,0,__PYX_ERR(2, 156, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __Pyx_INCREF(((PyObject *)__pyx_v_implied_context));
     __pyx_r = __pyx_v_implied_context;
@@ -103402,6 +109678,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  * 
  *     cdef void pushImpliedContextFromParser(self, _BaseParser parser):
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(2, 157, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -103423,6 +109700,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF((PyObject *)__pyx_v_implied_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -103436,11 +109714,13 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_Par
  */
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFromParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("pushImpliedContextFromParser", 0);
+  __Pyx_TraceCall("pushImpliedContextFromParser", __pyx_f[2], 159, 0, __PYX_ERR(2, 159, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":161
  *     cdef void pushImpliedContextFromParser(self, _BaseParser parser):
@@ -103449,6 +109729,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFr
  *             self.pushImpliedContext(parser._getParserContext())
  *         else:
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(2, 161, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -103460,6 +109741,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFr
  *         else:
  *             self.pushImpliedContext(None)
  */
+    __Pyx_TraceLine(162,0,__PYX_ERR(2, 162, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_parser->__pyx_vtab)->_getParserContext(__pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 162, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(__pyx_v_self, ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3));
@@ -103482,6 +109764,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFr
  * 
  *     cdef void pushImpliedContext(self, _ParserContext parser_context):
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(2, 164, __pyx_L1_error))
   /*else*/ {
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(__pyx_v_self, ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None));
   }
@@ -103501,6 +109784,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFr
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.pushImpliedContextFromParser", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103514,10 +109798,12 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFr
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_parser_context) {
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("pushImpliedContext", 0);
+  __Pyx_TraceCall("pushImpliedContext", __pyx_f[2], 166, 0, __PYX_ERR(2, 166, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":169
  *         u"Push a new implied context object."
@@ -103526,6 +109812,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(s
  *         context._implied_parser_contexts.append(parser_context)
  * 
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(2, 169, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 169, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -103538,6 +109825,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(s
  * 
  *     cdef void popImpliedContext(self):
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(2, 170, __pyx_L1_error))
   if (unlikely(__pyx_v_context->_implied_parser_contexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(2, 170, __pyx_L1_error)
@@ -103559,6 +109847,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(s
   __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.pushImpliedContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103572,9 +109861,11 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(s
 
 static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context = 0;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("popImpliedContext", 0);
+  __Pyx_TraceCall("popImpliedContext", __pyx_f[2], 172, 0, __PYX_ERR(2, 172, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":175
  *         u"Pop the current implied context object."
@@ -103583,6 +109874,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(st
  *         context._implied_parser_contexts.pop()
  * 
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(2, 175, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 175, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
@@ -103595,6 +109887,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(st
  * 
  * cdef _ParserDictionaryContext __GLOBAL_PARSER_CONTEXT = _ParserDictionaryContext()
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(2, 176, __pyx_L1_error))
   if (unlikely(__pyx_v_context->_implied_parser_contexts == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
     __PYX_ERR(2, 176, __pyx_L1_error)
@@ -103618,6 +109911,7 @@ static void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(st
   __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.popImpliedContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -103635,11 +109929,13 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
   Py_UNICODE *__pyx_v_uchars;
   const xmlChar *__pyx_v_buffer;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_UNICODE __pyx_t_1[7];
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_setupPythonUnicode", 0);
+  __Pyx_TraceCall("_setupPythonUnicode", __pyx_f[2], 188, 0, __PYX_ERR(2, 188, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":197
  *     cdef Py_ssize_t l
@@ -103648,6 +109944,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     cdef const_xmlChar* buffer = <const_xmlChar*>uchars
  *     # apparently, libxml2 can't detect UTF-16 on some systems
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(2, 197, __pyx_L1_error))
   __pyx_t_1[0] = '<';
   __pyx_t_1[1] = 't';
   __pyx_t_1[2] = 'e';
@@ -103664,6 +109961,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     # apparently, libxml2 can't detect UTF-16 on some systems
  *     if (buffer[0] == c'<' and buffer[1] == c'\0' and
  */
+  __Pyx_TraceLine(198,0,__PYX_ERR(2, 198, __pyx_L1_error))
   __pyx_v_buffer = ((const xmlChar *)__pyx_v_uchars);
 
   /* "src/lxml/parser.pxi":200
@@ -103673,6 +109971,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *             buffer[2] == c't' and buffer[3] == c'\0'):
  *         enc = "UTF-16LE"
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(2, 200, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_buffer[0]) == '<') != 0);
   if (__pyx_t_3) {
   } else {
@@ -103693,6 +109992,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *         enc = "UTF-16LE"
  *     elif (buffer[0] == c'\0' and buffer[1] == c'<' and
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(2, 201, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_buffer[2]) == 't') != 0);
   if (__pyx_t_3) {
   } else {
@@ -103710,6 +110010,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *             buffer[2] == c't' and buffer[3] == c'\0'):
  *         enc = "UTF-16LE"
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(2, 200, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/parser.pxi":202
@@ -103719,6 +110020,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     elif (buffer[0] == c'\0' and buffer[1] == c'<' and
  *             buffer[2] == c'\0' and buffer[3] == c't'):
  */
+    __Pyx_TraceLine(202,0,__PYX_ERR(2, 202, __pyx_L1_error))
     __pyx_v_enc = ((const char *)"UTF-16LE");
 
     /* "src/lxml/parser.pxi":200
@@ -103738,6 +110040,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *             buffer[2] == c'\0' and buffer[3] == c't'):
  *         enc = "UTF-16BE"
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(2, 203, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_buffer[0]) == '\x00') != 0);
   if (__pyx_t_3) {
   } else {
@@ -103758,6 +110061,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *         enc = "UTF-16BE"
  *     else:
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(2, 204, __pyx_L1_error))
   __pyx_t_3 = (((__pyx_v_buffer[2]) == '\x00') != 0);
   if (__pyx_t_3) {
   } else {
@@ -103775,6 +110079,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *             buffer[2] == c'\0' and buffer[3] == c't'):
  *         enc = "UTF-16BE"
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(2, 203, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/parser.pxi":205
@@ -103784,6 +110089,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     else:
  *         # let libxml2 give it a try
  */
+    __Pyx_TraceLine(205,0,__PYX_ERR(2, 205, __pyx_L1_error))
     __pyx_v_enc = ((const char *)"UTF-16BE");
 
     /* "src/lxml/parser.pxi":203
@@ -103803,6 +110109,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *         if enc is NULL:
  *             # not my fault, it's YOUR broken system :)
  */
+  __Pyx_TraceLine(208,0,__PYX_ERR(2, 208, __pyx_L1_error))
   /*else*/ {
     __pyx_v_enc = __pyx_f_4lxml_5etree__findEncodingName(__pyx_v_buffer, ((sizeof(Py_UNICODE)) * 7));
 
@@ -103813,6 +110120,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *             # not my fault, it's YOUR broken system :)
  *             return 0
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(2, 209, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_enc == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -103823,6 +110131,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     enchandler = tree.xmlFindCharEncodingHandler(enc)
  *     if enchandler is not NULL:
  */
+      __Pyx_TraceLine(211,0,__PYX_ERR(2, 211, __pyx_L1_error))
       __pyx_r = 0;
       goto __pyx_L0;
 
@@ -103844,6 +110153,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     if enchandler is not NULL:
  *         global _UNICODE_ENCODING
  */
+  __Pyx_TraceLine(212,0,__PYX_ERR(2, 212, __pyx_L1_error))
   __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_enc);
 
   /* "src/lxml/parser.pxi":213
@@ -103853,6 +110163,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *         global _UNICODE_ENCODING
  *         tree.xmlCharEncCloseFunc(enchandler)
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(2, 213, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_enchandler != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -103863,6 +110174,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *         _UNICODE_ENCODING = enc
  *     return 0
  */
+    __Pyx_TraceLine(215,0,__PYX_ERR(2, 215, __pyx_L1_error))
     (void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
 
     /* "src/lxml/parser.pxi":216
@@ -103872,6 +110184,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  *     return 0
  * 
  */
+    __Pyx_TraceLine(216,0,__PYX_ERR(2, 216, __pyx_L1_error))
     __pyx_v_4lxml_5etree__UNICODE_ENCODING = __pyx_v_enc;
 
     /* "src/lxml/parser.pxi":213
@@ -103890,6 +110203,7 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  * 
  * cdef const_char* _findEncodingName(const_xmlChar* buffer, int size):
  */
+  __Pyx_TraceLine(217,0,__PYX_ERR(2, 217, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -103902,7 +110216,11 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._setupPythonUnicode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -103918,10 +110236,12 @@ static int __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
 static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v_buffer, int __pyx_v_size) {
   xmlCharEncoding __pyx_v_enc;
   const char *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_findEncodingName", 0);
+  __Pyx_TraceCall("_findEncodingName", __pyx_f[2], 219, 0, __PYX_ERR(2, 219, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":222
  *     u"Work around bug in libxml2: find iconv name of encoding on our own."
@@ -103930,6 +110250,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     if enc == tree.XML_CHAR_ENCODING_UTF16LE:
  *         if size >= 4 and (buffer[0] == <const_xmlChar>'\xFF' and
  */
+  __Pyx_TraceLine(222,0,__PYX_ERR(2, 222, __pyx_L1_error))
   __pyx_v_enc = xmlDetectCharEncoding(__pyx_v_buffer, __pyx_v_size);
 
   /* "src/lxml/parser.pxi":223
@@ -103939,6 +110260,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         if size >= 4 and (buffer[0] == <const_xmlChar>'\xFF' and
  *                           buffer[1] == <const_xmlChar>'\xFE' and
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(2, 223, __pyx_L1_error))
   switch (__pyx_v_enc) {
     case XML_CHAR_ENCODING_UTF16LE:
 
@@ -103949,6 +110271,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *                           buffer[1] == <const_xmlChar>'\xFE' and
  *                           buffer[2] == 0 and buffer[3] == 0):
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(2, 224, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_size >= 4) != 0);
     if (__pyx_t_2) {
     } else {
@@ -103969,6 +110292,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *                           buffer[2] == 0 and buffer[3] == 0):
  *             return "UTF-32LE"  # according to BOM
  */
+    __Pyx_TraceLine(225,0,__PYX_ERR(2, 225, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_buffer[1]) == ((const xmlChar)'\xFE')) != 0);
     if (__pyx_t_2) {
     } else {
@@ -103983,6 +110307,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *             return "UTF-32LE"  # according to BOM
  *         else:
  */
+    __Pyx_TraceLine(226,0,__PYX_ERR(2, 226, __pyx_L1_error))
     __pyx_t_2 = (((__pyx_v_buffer[2]) == 0) != 0);
     if (__pyx_t_2) {
     } else {
@@ -104000,6 +110325,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *                           buffer[1] == <const_xmlChar>'\xFE' and
  *                           buffer[2] == 0 and buffer[3] == 0):
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(2, 224, __pyx_L1_error))
     if (__pyx_t_1) {
 
       /* "src/lxml/parser.pxi":227
@@ -104009,6 +110335,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         else:
  *             return "UTF-16LE"
  */
+      __Pyx_TraceLine(227,0,__PYX_ERR(2, 227, __pyx_L1_error))
       __pyx_r = ((const char *)"UTF-32LE");
       goto __pyx_L0;
 
@@ -104028,6 +110355,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:
  *         return "UTF-16BE"
  */
+    __Pyx_TraceLine(229,0,__PYX_ERR(2, 229, __pyx_L1_error))
     /*else*/ {
       __pyx_r = ((const char *)"UTF-16LE");
       goto __pyx_L0;
@@ -104049,6 +110377,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         return "UTF-16BE"
  *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
  */
+    __Pyx_TraceLine(230,0,__PYX_ERR(2, 230, __pyx_L1_error))
     case XML_CHAR_ENCODING_UTF16BE:
 
     /* "src/lxml/parser.pxi":231
@@ -104058,6 +110387,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
  *         return "UCS-4LE"
  */
+    __Pyx_TraceLine(231,0,__PYX_ERR(2, 231, __pyx_L1_error))
     __pyx_r = ((const char *)"UTF-16BE");
     goto __pyx_L0;
 
@@ -104077,6 +110407,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         return "UCS-4LE"
  *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
  */
+    __Pyx_TraceLine(232,0,__PYX_ERR(2, 232, __pyx_L1_error))
     case XML_CHAR_ENCODING_UCS4LE:
 
     /* "src/lxml/parser.pxi":233
@@ -104086,6 +110417,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
  *         return "UCS-4BE"
  */
+    __Pyx_TraceLine(233,0,__PYX_ERR(2, 233, __pyx_L1_error))
     __pyx_r = ((const char *)"UCS-4LE");
     goto __pyx_L0;
 
@@ -104105,6 +110437,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         return "UCS-4BE"
  *     elif enc == tree.XML_CHAR_ENCODING_NONE:
  */
+    __Pyx_TraceLine(234,0,__PYX_ERR(2, 234, __pyx_L1_error))
     case XML_CHAR_ENCODING_UCS4BE:
 
     /* "src/lxml/parser.pxi":235
@@ -104114,6 +110447,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     elif enc == tree.XML_CHAR_ENCODING_NONE:
  *         return NULL
  */
+    __Pyx_TraceLine(235,0,__PYX_ERR(2, 235, __pyx_L1_error))
     __pyx_r = ((const char *)"UCS-4BE");
     goto __pyx_L0;
 
@@ -104133,6 +110467,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *         return NULL
  *     else:
  */
+    __Pyx_TraceLine(236,0,__PYX_ERR(2, 236, __pyx_L1_error))
     case XML_CHAR_ENCODING_NONE:
 
     /* "src/lxml/parser.pxi":237
@@ -104142,6 +110477,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  *     else:
  *         # returns a constant char*, no need to free it
  */
+    __Pyx_TraceLine(237,0,__PYX_ERR(2, 237, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -104162,6 +110498,7 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  * 
  * _setupPythonUnicode()
  */
+    __Pyx_TraceLine(240,0,__PYX_ERR(2, 240, __pyx_L1_error))
     __pyx_r = xmlGetCharEncodingName(__pyx_v_enc);
     goto __pyx_L0;
     break;
@@ -104176,7 +110513,11 @@ static const char *__pyx_f_4lxml_5etree__findEncodingName(const xmlChar *__pyx_v
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._findEncodingName", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -104301,11 +110642,13 @@ static int __pyx_pw_4lxml_5etree_18_FileReaderContext_1__cinit__(PyObject *__pyx
 
 static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self, PyObject *__pyx_v_filelike, PyObject *__pyx_v_exc_context, PyObject *__pyx_v_url, PyObject *__pyx_v_encoding, int __pyx_v_close_file) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[2], 260, 0, __PYX_ERR(2, 260, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_url);
 
   /* "src/lxml/parser.pxi":261
@@ -104315,6 +110658,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._filelike = filelike
  *         self._close_file_after_read = close_file
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(2, 261, __pyx_L1_error))
   if (!(likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext)))) __PYX_ERR(2, 261, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_exc_context;
   __Pyx_INCREF(__pyx_t_1);
@@ -104331,6 +110675,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._close_file_after_read = close_file
  *         self._encoding = encoding
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(2, 262, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_filelike);
   __Pyx_GIVEREF(__pyx_v_filelike);
   __Pyx_GOTREF(__pyx_v_self->_filelike);
@@ -104344,6 +110689,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._encoding = encoding
  *         if url is None:
  */
+  __Pyx_TraceLine(263,0,__PYX_ERR(2, 263, __pyx_L1_error))
   __pyx_v_self->_close_file_after_read = __pyx_v_close_file;
 
   /* "src/lxml/parser.pxi":264
@@ -104353,6 +110699,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         if url is None:
  *             self._c_url = NULL
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(2, 264, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_encoding);
   __Pyx_GIVEREF(__pyx_v_encoding);
   __Pyx_GOTREF(__pyx_v_self->_encoding);
@@ -104366,6 +110713,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *             self._c_url = NULL
  *         else:
  */
+  __Pyx_TraceLine(265,0,__PYX_ERR(2, 265, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_url == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -104377,6 +110725,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         else:
  *             url = _encodeFilename(url)
  */
+    __Pyx_TraceLine(266,0,__PYX_ERR(2, 266, __pyx_L1_error))
     __pyx_v_self->_c_url = NULL;
 
     /* "src/lxml/parser.pxi":265
@@ -104396,6 +110745,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *             self._c_url = _cstr(url)
  *         self._url = url
  */
+  __Pyx_TraceLine(268,0,__PYX_ERR(2, 268, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 268, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -104409,6 +110759,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._url = url
  *         self._bytes  = b''
  */
+    __Pyx_TraceLine(269,0,__PYX_ERR(2, 269, __pyx_L1_error))
     __pyx_v_self->_c_url = PyBytes_AS_STRING(__pyx_v_url);
   }
   __pyx_L3:;
@@ -104420,6 +110771,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._bytes  = b''
  *         self._bytes_read = 0
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(2, 270, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_url);
   __Pyx_GIVEREF(__pyx_v_url);
   __Pyx_GOTREF(__pyx_v_self->_url);
@@ -104433,11 +110785,12 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  *         self._bytes_read = 0
  * 
  */
-  __Pyx_INCREF(__pyx_kp_b__16);
-  __Pyx_GIVEREF(__pyx_kp_b__16);
+  __Pyx_TraceLine(271,0,__PYX_ERR(2, 271, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_kp_b__23);
+  __Pyx_GIVEREF(__pyx_kp_b__23);
   __Pyx_GOTREF(__pyx_v_self->_bytes);
   __Pyx_DECREF(__pyx_v_self->_bytes);
-  __pyx_v_self->_bytes = __pyx_kp_b__16;
+  __pyx_v_self->_bytes = __pyx_kp_b__23;
 
   /* "src/lxml/parser.pxi":272
  *         self._url = url
@@ -104446,6 +110799,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
  * 
  *     cdef _close_file(self):
  */
+  __Pyx_TraceLine(272,0,__PYX_ERR(2, 272, __pyx_L1_error))
   __pyx_v_self->_bytes_read = 0;
 
   /* "src/lxml/parser.pxi":260
@@ -104465,6 +110819,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_url);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -104480,6 +110835,7 @@ static int __pyx_pf_4lxml_5etree_18_FileReaderContext___cinit__(struct __pyx_obj
 static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self) {
   PyObject *__pyx_v_close = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -104497,6 +110853,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("_close_file", 0);
+  __Pyx_TraceCall("_close_file", __pyx_f[2], 274, 0, __PYX_ERR(2, 274, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":275
  * 
@@ -104505,6 +110862,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *             return
  *         try:
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(2, 275, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_filelike == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -104524,6 +110882,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *         try:
  *             close = self._filelike.close
  */
+    __Pyx_TraceLine(276,0,__PYX_ERR(2, 276, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -104544,6 +110903,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *             close = self._filelike.close
  *         except AttributeError:
  */
+  __Pyx_TraceLine(277,0,__PYX_ERR(2, 277, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -104561,6 +110921,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *         except AttributeError:
  *             close = None
  */
+        __Pyx_TraceLine(278,0,__PYX_ERR(2, 278, __pyx_L9_error))
         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 278, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_v_close = __pyx_t_7;
@@ -104588,6 +110949,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *             close = None
  *         finally:
  */
+      __Pyx_TraceLine(279,0,__PYX_ERR(2, 279, __pyx_L11_except_error))
       __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
       if (__pyx_t_8) {
         __Pyx_AddTraceback("lxml.etree._FileReaderContext._close_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -104603,6 +110965,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *         finally:
  *             self._filelike = None
  */
+        __Pyx_TraceLine(280,0,__PYX_ERR(2, 280, __pyx_L11_except_error))
         __Pyx_INCREF(Py_None);
         __Pyx_XDECREF_SET(__pyx_v_close, Py_None);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -104641,6 +111004,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *         if close is not None:
  *             close()
  */
+  __Pyx_TraceLine(282,0,__PYX_ERR(2, 282, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __Pyx_INCREF(Py_None);
@@ -104698,6 +111062,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  *             close()
  * 
  */
+  __Pyx_TraceLine(283,0,__PYX_ERR(2, 283, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_close != Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -104709,6 +111074,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
  * 
  *     cdef xmlparser.xmlParserInputBuffer* _createParserInputBuffer(self):
  */
+    __Pyx_TraceLine(284,0,__PYX_ERR(2, 284, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_close);
     __pyx_t_9 = __pyx_v_close; __pyx_t_7 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
@@ -104759,6 +111125,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_FileReaderContext__close_file(struct __
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_close);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -104775,10 +111142,12 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
   FILE *__pyx_v_c_stream;
   xmlParserInputBuffer *__pyx_v_c_buffer;
   xmlParserInputBuffer *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_createParserInputBuffer", 0);
+  __Pyx_TraceCall("_createParserInputBuffer", __pyx_f[2], 286, 0, __PYX_ERR(2, 286, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":289
  *         cdef stdio.FILE* c_stream
@@ -104787,6 +111156,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *         c_stream = python.PyFile_AsFile(self._filelike)
  *         if c_stream is NULL:
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(2, 289, __pyx_L1_error))
   __pyx_v_c_buffer = xmlAllocParserInputBuffer(0);
 
   /* "src/lxml/parser.pxi":290
@@ -104796,6 +111166,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *         if c_stream is NULL:
  *             c_buffer.readcallback  = _readFilelikeParser
  */
+  __Pyx_TraceLine(290,0,__PYX_ERR(2, 290, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_filelike;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_c_stream = PyFile_AsFile(__pyx_t_1);
@@ -104808,6 +111179,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *             c_buffer.readcallback  = _readFilelikeParser
  *             c_buffer.context = <python.PyObject*>self
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(2, 291, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_stream == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -104818,6 +111190,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *             c_buffer.context = <python.PyObject*>self
  *         else:
  */
+    __Pyx_TraceLine(292,0,__PYX_ERR(2, 292, __pyx_L1_error))
     __pyx_v_c_buffer->readcallback = __pyx_f_4lxml_5etree__readFilelikeParser;
 
     /* "src/lxml/parser.pxi":293
@@ -104827,6 +111200,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *         else:
  *             c_buffer.readcallback  = _readFileParser
  */
+    __Pyx_TraceLine(293,0,__PYX_ERR(2, 293, __pyx_L1_error))
     __pyx_v_c_buffer->context = ((PyObject *)__pyx_v_self);
 
     /* "src/lxml/parser.pxi":291
@@ -104846,6 +111220,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *             c_buffer.context = c_stream
  *         return c_buffer
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(2, 295, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_buffer->readcallback = __pyx_f_4lxml_5etree__readFileParser;
 
@@ -104856,6 +111231,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  *         return c_buffer
  * 
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(2, 296, __pyx_L1_error))
     __pyx_v_c_buffer->context = __pyx_v_c_stream;
   }
   __pyx_L3:;
@@ -104867,6 +111243,7 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  * 
  *     cdef xmlparser.xmlParserInput* _createParserInput(
  */
+  __Pyx_TraceLine(297,0,__PYX_ERR(2, 297, __pyx_L1_error))
   __pyx_r = __pyx_v_c_buffer;
   goto __pyx_L0;
 
@@ -104879,7 +111256,12 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext._createParserInputBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -104895,8 +111277,10 @@ static xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createPa
 static xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self, xmlParserCtxt *__pyx_v_ctxt) {
   xmlParserInputBuffer *__pyx_v_c_buffer;
   xmlParserInput *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createParserInput", 0);
+  __Pyx_TraceCall("_createParserInput", __pyx_f[2], 299, 0, __PYX_ERR(2, 299, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":302
  *             self, xmlparser.xmlParserCtxt* ctxt):
@@ -104905,6 +111289,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserIn
  *         return xmlparser.xmlNewIOInputStream(ctxt, c_buffer, 0)
  * 
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(2, 302, __pyx_L1_error))
   __pyx_v_c_buffer = __pyx_f_4lxml_5etree_18_FileReaderContext__createParserInputBuffer(__pyx_v_self);
 
   /* "src/lxml/parser.pxi":303
@@ -104914,6 +111299,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserIn
  * 
  *     cdef tree.xmlDtd* _readDtd(self):
  */
+  __Pyx_TraceLine(303,0,__PYX_ERR(2, 303, __pyx_L1_error))
   __pyx_r = xmlNewIOInputStream(__pyx_v_ctxt, __pyx_v_c_buffer, 0);
   goto __pyx_L0;
 
@@ -104926,7 +111312,11 @@ static xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserIn
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext._createParserInput", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -104942,8 +111332,10 @@ static xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserIn
 static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self) {
   xmlParserInputBuffer *__pyx_v_c_buffer;
   xmlDtd *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_readDtd", 0);
+  __Pyx_TraceCall("_readDtd", __pyx_f[2], 305, 0, __PYX_ERR(2, 305, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":307
  *     cdef tree.xmlDtd* _readDtd(self):
@@ -104952,6 +111344,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
  *         with nogil:
  *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(2, 307, __pyx_L1_error))
   __pyx_v_c_buffer = __pyx_f_4lxml_5etree_18_FileReaderContext__createParserInputBuffer(__pyx_v_self);
 
   /* "src/lxml/parser.pxi":308
@@ -104961,6 +111354,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
  *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
  * 
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(2, 308, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -104976,6 +111370,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
  * 
  *     cdef xmlDoc* _readDoc(self, xmlparser.xmlParserCtxt* ctxt, int options):
  */
+        __Pyx_TraceLine(309,1,__PYX_ERR(2, 309, __pyx_L4_error))
         __pyx_r = xmlIOParseDTD(NULL, __pyx_v_c_buffer, 0);
         goto __pyx_L3_return;
       }
@@ -104987,6 +111382,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
  *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
  * 
  */
+      __Pyx_TraceLine(308,1,__PYX_ERR(2, 308, __pyx_L1_error))
       /*finally:*/ {
         __pyx_L3_return: {
           #ifdef WITH_THREAD
@@ -104995,6 +111391,13 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
           #endif
           goto __pyx_L0;
         }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
       }
   }
 
@@ -105007,7 +111410,11 @@ static xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_o
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext._readDtd", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -105028,6 +111435,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
   void *__pyx_v_c_callback_context;
   int __pyx_v_orig_options;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -105042,6 +111450,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_readDoc", 0);
+  __Pyx_TraceCall("_readDoc", __pyx_f[2], 311, 0, __PYX_ERR(2, 311, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":319
  *         cdef void* c_callback_context
@@ -105050,6 +111459,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             c_encoding = NULL
  *         else:
  */
+  __Pyx_TraceLine(319,0,__PYX_ERR(2, 319, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_encoding == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -105061,6 +111471,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         else:
  *             c_encoding = _cstr(self._encoding)
  */
+    __Pyx_TraceLine(320,0,__PYX_ERR(2, 320, __pyx_L1_error))
     __pyx_v_c_encoding = NULL;
 
     /* "src/lxml/parser.pxi":319
@@ -105080,6 +111491,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  * 
  *         c_stream = python.PyFile_AsFile(self._filelike)
  */
+  __Pyx_TraceLine(322,0,__PYX_ERR(2, 322, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_v_self->_encoding;
     __Pyx_INCREF(__pyx_t_3);
@@ -105095,6 +111507,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         if c_stream is NULL:
  *             c_read_callback  = _readFilelikeParser
  */
+  __Pyx_TraceLine(324,0,__PYX_ERR(2, 324, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_filelike;
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_c_stream = PyFile_AsFile(__pyx_t_3);
@@ -105107,6 +111520,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             c_read_callback  = _readFilelikeParser
  *             c_callback_context = <python.PyObject*>self
  */
+  __Pyx_TraceLine(325,0,__PYX_ERR(2, 325, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_stream == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -105117,6 +111531,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             c_callback_context = <python.PyObject*>self
  *         else:
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(2, 326, __pyx_L1_error))
     __pyx_v_c_read_callback = __pyx_f_4lxml_5etree__readFilelikeParser;
 
     /* "src/lxml/parser.pxi":327
@@ -105126,6 +111541,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         else:
  *             c_read_callback  = _readFileParser
  */
+    __Pyx_TraceLine(327,0,__PYX_ERR(2, 327, __pyx_L1_error))
     __pyx_v_c_callback_context = ((PyObject *)__pyx_v_self);
 
     /* "src/lxml/parser.pxi":325
@@ -105145,6 +111561,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             c_callback_context = c_stream
  * 
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(2, 329, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_read_callback = __pyx_f_4lxml_5etree__readFileParser;
 
@@ -105155,6 +111572,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  * 
  *         orig_options = ctxt.options
  */
+    __Pyx_TraceLine(330,0,__PYX_ERR(2, 330, __pyx_L1_error))
     __pyx_v_c_callback_context = __pyx_v_c_stream;
   }
   __pyx_L4:;
@@ -105166,6 +111584,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         with nogil:
  *             if ctxt.html:
  */
+  __Pyx_TraceLine(332,0,__PYX_ERR(2, 332, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_ctxt->options;
   __pyx_v_orig_options = __pyx_t_4;
 
@@ -105176,6 +111595,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             if ctxt.html:
  *                 result = htmlparser.htmlCtxtReadIO(
  */
+  __Pyx_TraceLine(333,0,__PYX_ERR(2, 333, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -105191,6 +111611,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                 result = htmlparser.htmlCtxtReadIO(
  *                         ctxt, c_read_callback, NULL, c_callback_context,
  */
+        __Pyx_TraceLine(334,1,__PYX_ERR(2, 334, __pyx_L6_error))
         __pyx_t_2 = (__pyx_v_ctxt->html != 0);
         if (__pyx_t_2) {
 
@@ -105201,6 +111622,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                         ctxt, c_read_callback, NULL, c_callback_context,
  *                         self._c_url, c_encoding, options)
  */
+          __Pyx_TraceLine(335,1,__PYX_ERR(2, 335, __pyx_L6_error))
           __pyx_v_result = htmlCtxtReadIO(__pyx_v_ctxt, __pyx_v_c_read_callback, NULL, __pyx_v_c_callback_context, __pyx_v_self->_c_url, __pyx_v_c_encoding, __pyx_v_options);
 
           /* "src/lxml/parser.pxi":338
@@ -105210,6 +111632,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:
  *                         tree.xmlFreeDoc(result)
  */
+          __Pyx_TraceLine(338,1,__PYX_ERR(2, 338, __pyx_L6_error))
           __pyx_t_2 = ((__pyx_v_result != NULL) != 0);
           if (__pyx_t_2) {
 
@@ -105220,6 +111643,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                         tree.xmlFreeDoc(result)
  *                         result = NULL
  */
+            __Pyx_TraceLine(339,1,__PYX_ERR(2, 339, __pyx_L6_error))
             __pyx_t_2 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_ctxt->dict, __pyx_v_result) < 0) != 0);
             if (__pyx_t_2) {
 
@@ -105230,6 +111654,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                         result = NULL
  *             else:
  */
+              __Pyx_TraceLine(340,1,__PYX_ERR(2, 340, __pyx_L6_error))
               xmlFreeDoc(__pyx_v_result);
 
               /* "src/lxml/parser.pxi":341
@@ -105239,6 +111664,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             else:
  *                 result = xmlparser.xmlCtxtReadIO(
  */
+              __Pyx_TraceLine(341,1,__PYX_ERR(2, 341, __pyx_L6_error))
               __pyx_v_result = NULL;
 
               /* "src/lxml/parser.pxi":339
@@ -105276,6 +111702,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *                     ctxt, c_read_callback, NULL, c_callback_context,
  *                     self._c_url, c_encoding, options)
  */
+        __Pyx_TraceLine(343,1,__PYX_ERR(2, 343, __pyx_L6_error))
         /*else*/ {
 
           /* "src/lxml/parser.pxi":345
@@ -105285,6 +111712,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         ctxt.options = orig_options # work around libxml2 problem
  *         try:
  */
+          __Pyx_TraceLine(345,1,__PYX_ERR(2, 345, __pyx_L6_error))
           __pyx_v_result = xmlCtxtReadIO(__pyx_v_ctxt, __pyx_v_c_read_callback, NULL, __pyx_v_c_callback_context, __pyx_v_self->_c_url, __pyx_v_c_encoding, __pyx_v_options);
         }
         __pyx_L8:;
@@ -105297,6 +111725,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             if ctxt.html:
  *                 result = htmlparser.htmlCtxtReadIO(
  */
+      __Pyx_TraceLine(333,1,__PYX_ERR(2, 333, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -105305,6 +111734,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
           #endif
           goto __pyx_L7;
         }
+        __pyx_L6_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L7:;
       }
   }
@@ -105316,6 +111752,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         try:
  *             self._close_file()
  */
+  __Pyx_TraceLine(346,0,__PYX_ERR(2, 346, __pyx_L1_error))
   __pyx_v_ctxt->options = __pyx_v_orig_options;
 
   /* "src/lxml/parser.pxi":347
@@ -105325,6 +111762,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             self._close_file()
  *         except:
  */
+  __Pyx_TraceLine(347,0,__PYX_ERR(2, 347, __pyx_L12_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -105342,6 +111780,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         except:
  *             self._exc_context._store_raised()
  */
+        __Pyx_TraceLine(348,0,__PYX_ERR(2, 348, __pyx_L14_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree_18_FileReaderContext__close_file(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 348, __pyx_L14_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -105368,6 +111807,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *             self._exc_context._store_raised()
  *         finally:
  */
+      __Pyx_TraceLine(349,0,__PYX_ERR(2, 349, __pyx_L16_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._FileReaderContext._readDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(2, 349, __pyx_L16_except_error)
@@ -105382,6 +111822,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  *         finally:
  *             return result  # swallow any exceptions
  */
+        __Pyx_TraceLine(350,0,__PYX_ERR(2, 350, __pyx_L16_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -105418,6 +111859,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  * 
  *     cdef int copyToBuffer(self, char* c_buffer, int c_requested):
  */
+  __Pyx_TraceLine(352,0,__PYX_ERR(2, 352, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_r = __pyx_v_result;
@@ -105467,7 +111909,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_o
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext._readDoc", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -105486,6 +111935,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
   Py_ssize_t __pyx_v_byte_count;
   Py_ssize_t __pyx_v_remaining;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -105502,6 +111952,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   __Pyx_RefNannySetupContext("copyToBuffer", 0);
+  __Pyx_TraceCall("copyToBuffer", __pyx_f[2], 354, 0, __PYX_ERR(2, 354, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":355
  * 
@@ -105510,6 +111961,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *         cdef char* c_start
  *         cdef Py_ssize_t byte_count, remaining
  */
+  __Pyx_TraceLine(355,0,__PYX_ERR(2, 355, __pyx_L1_error))
   __pyx_v_c_byte_count = 0;
 
   /* "src/lxml/parser.pxi":358
@@ -105519,6 +111971,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             return 0
  *         try:
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(2, 358, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_bytes_read < 0) != 0);
   if (__pyx_t_1) {
 
@@ -105529,6 +111982,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *         try:
  *             byte_count = python.PyBytes_GET_SIZE(self._bytes)
  */
+    __Pyx_TraceLine(359,0,__PYX_ERR(2, 359, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -105548,6 +112002,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             byte_count = python.PyBytes_GET_SIZE(self._bytes)
  *             remaining  = byte_count - self._bytes_read
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(2, 360, __pyx_L5_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -105565,6 +112020,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             remaining  = byte_count - self._bytes_read
  *             while c_requested > remaining:
  */
+        __Pyx_TraceLine(361,0,__PYX_ERR(2, 361, __pyx_L7_error))
         __pyx_t_5 = __pyx_v_self->_bytes;
         __Pyx_INCREF(__pyx_t_5);
         __pyx_v_byte_count = PyBytes_GET_SIZE(__pyx_t_5);
@@ -105577,6 +112033,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             while c_requested > remaining:
  *                 c_start = _cstr(self._bytes) + self._bytes_read
  */
+        __Pyx_TraceLine(362,0,__PYX_ERR(2, 362, __pyx_L7_error))
         __pyx_v_remaining = (__pyx_v_byte_count - __pyx_v_self->_bytes_read);
 
         /* "src/lxml/parser.pxi":363
@@ -105586,6 +112043,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_start = _cstr(self._bytes) + self._bytes_read
  *                 cstring_h.memcpy(c_buffer, c_start, remaining)
  */
+        __Pyx_TraceLine(363,0,__PYX_ERR(2, 363, __pyx_L7_error))
         while (1) {
           __pyx_t_1 = ((__pyx_v_c_requested > __pyx_v_remaining) != 0);
           if (!__pyx_t_1) break;
@@ -105597,6 +112055,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 cstring_h.memcpy(c_buffer, c_start, remaining)
  *                 c_byte_count += remaining
  */
+          __Pyx_TraceLine(364,0,__PYX_ERR(2, 364, __pyx_L7_error))
           __pyx_t_5 = __pyx_v_self->_bytes;
           __Pyx_INCREF(__pyx_t_5);
           __pyx_v_c_start = (PyBytes_AS_STRING(__pyx_t_5) + __pyx_v_self->_bytes_read);
@@ -105609,6 +112068,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_byte_count += remaining
  *                 c_buffer += remaining
  */
+          __Pyx_TraceLine(365,0,__PYX_ERR(2, 365, __pyx_L7_error))
           (void)(memcpy(__pyx_v_c_buffer, __pyx_v_c_start, __pyx_v_remaining));
 
           /* "src/lxml/parser.pxi":366
@@ -105618,6 +112078,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_buffer += remaining
  *                 c_requested -= remaining
  */
+          __Pyx_TraceLine(366,0,__PYX_ERR(2, 366, __pyx_L7_error))
           __pyx_v_c_byte_count = (__pyx_v_c_byte_count + __pyx_v_remaining);
 
           /* "src/lxml/parser.pxi":367
@@ -105627,6 +112088,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_requested -= remaining
  * 
  */
+          __Pyx_TraceLine(367,0,__PYX_ERR(2, 367, __pyx_L7_error))
           __pyx_v_c_buffer = (__pyx_v_c_buffer + __pyx_v_remaining);
 
           /* "src/lxml/parser.pxi":368
@@ -105636,6 +112098,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  * 
  *                 self._bytes = self._filelike.read(c_requested)
  */
+          __Pyx_TraceLine(368,0,__PYX_ERR(2, 368, __pyx_L7_error))
           __pyx_v_c_requested = (__pyx_v_c_requested - __pyx_v_remaining);
 
           /* "src/lxml/parser.pxi":370
@@ -105645,6 +112108,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 if not isinstance(self._bytes, bytes):
  *                     if isinstance(self._bytes, unicode):
  */
+          __Pyx_TraceLine(370,0,__PYX_ERR(2, 370, __pyx_L7_error))
           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_filelike, __pyx_n_s_read); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 370, __pyx_L7_error)
           __Pyx_GOTREF(__pyx_t_6);
           __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_c_requested); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 370, __pyx_L7_error)
@@ -105708,6 +112172,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                     if isinstance(self._bytes, unicode):
  *                         if self._encoding is None:
  */
+          __Pyx_TraceLine(371,0,__PYX_ERR(2, 371, __pyx_L7_error))
           __pyx_t_5 = __pyx_v_self->_bytes;
           __Pyx_INCREF(__pyx_t_5);
           __pyx_t_1 = PyBytes_Check(__pyx_t_5); 
@@ -105722,6 +112187,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                         if self._encoding is None:
  *                             self._bytes = (<unicode>self._bytes).encode('utf8')
  */
+            __Pyx_TraceLine(372,0,__PYX_ERR(2, 372, __pyx_L7_error))
             __pyx_t_5 = __pyx_v_self->_bytes;
             __Pyx_INCREF(__pyx_t_5);
             __pyx_t_10 = PyUnicode_Check(__pyx_t_5); 
@@ -105736,6 +112202,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                             self._bytes = (<unicode>self._bytes).encode('utf8')
  *                         else:
  */
+              __Pyx_TraceLine(373,0,__PYX_ERR(2, 373, __pyx_L7_error))
               __pyx_t_1 = (__pyx_v_self->_encoding == Py_None);
               __pyx_t_10 = (__pyx_t_1 != 0);
               if (__pyx_t_10) {
@@ -105747,6 +112214,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                         else:
  *                             self._bytes = python.PyUnicode_AsEncodedString(
  */
+                __Pyx_TraceLine(374,0,__PYX_ERR(2, 374, __pyx_L7_error))
                 if (unlikely(__pyx_v_self->_bytes == Py_None)) {
                   PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
                   __PYX_ERR(2, 374, __pyx_L7_error)
@@ -105776,6 +112244,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                                 self._bytes, _cstr(self._encoding), NULL)
  *                     else:
  */
+              __Pyx_TraceLine(376,0,__PYX_ERR(2, 376, __pyx_L7_error))
               /*else*/ {
 
                 /* "src/lxml/parser.pxi":377
@@ -105785,6 +112254,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                     else:
  *                         self._close_file()
  */
+                __Pyx_TraceLine(377,0,__PYX_ERR(2, 377, __pyx_L7_error))
                 __pyx_t_5 = __pyx_v_self->_bytes;
                 __Pyx_INCREF(__pyx_t_5);
                 __pyx_t_6 = __pyx_v_self->_encoding;
@@ -105797,6 +112267,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                                 self._bytes, _cstr(self._encoding), NULL)
  *                     else:
  */
+                __Pyx_TraceLine(376,0,__PYX_ERR(2, 376, __pyx_L7_error))
                 __pyx_t_9 = PyUnicode_AsEncodedString(__pyx_t_5, PyBytes_AS_STRING(__pyx_t_6), NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 376, __pyx_L7_error)
                 __Pyx_GOTREF(__pyx_t_9);
                 __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -105826,6 +112297,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                         raise TypeError, \
  *                             u"reading from file-like objects must return byte strings or unicode strings"
  */
+            __Pyx_TraceLine(379,0,__PYX_ERR(2, 379, __pyx_L7_error))
             /*else*/ {
               __pyx_t_9 = __pyx_f_4lxml_5etree_18_FileReaderContext__close_file(__pyx_v_self); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 379, __pyx_L7_error)
               __Pyx_GOTREF(__pyx_t_9);
@@ -105838,6 +112310,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                             u"reading from file-like objects must return byte strings or unicode strings"
  * 
  */
+              __Pyx_TraceLine(380,0,__PYX_ERR(2, 380, __pyx_L7_error))
               __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_reading_from_file_like_objects_m, 0, 0);
               __PYX_ERR(2, 380, __pyx_L7_error)
             }
@@ -105859,6 +112332,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 if remaining == 0:
  *                     self._bytes_read = -1
  */
+          __Pyx_TraceLine(383,0,__PYX_ERR(2, 383, __pyx_L7_error))
           __pyx_t_9 = __pyx_v_self->_bytes;
           __Pyx_INCREF(__pyx_t_9);
           __pyx_v_remaining = PyBytes_GET_SIZE(__pyx_t_9);
@@ -105871,6 +112345,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                     self._bytes_read = -1
  *                     self._close_file()
  */
+          __Pyx_TraceLine(384,0,__PYX_ERR(2, 384, __pyx_L7_error))
           __pyx_t_10 = ((__pyx_v_remaining == 0) != 0);
           if (__pyx_t_10) {
 
@@ -105881,6 +112356,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                     self._close_file()
  *                     return c_byte_count
  */
+            __Pyx_TraceLine(385,0,__PYX_ERR(2, 385, __pyx_L7_error))
             __pyx_v_self->_bytes_read = -1L;
 
             /* "src/lxml/parser.pxi":386
@@ -105890,6 +112366,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                     return c_byte_count
  *                 self._bytes_read = 0
  */
+            __Pyx_TraceLine(386,0,__PYX_ERR(2, 386, __pyx_L7_error))
             __pyx_t_9 = __pyx_f_4lxml_5etree_18_FileReaderContext__close_file(__pyx_v_self); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 386, __pyx_L7_error)
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -105901,6 +112378,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 self._bytes_read = 0
  * 
  */
+            __Pyx_TraceLine(387,0,__PYX_ERR(2, 387, __pyx_L7_error))
             __pyx_r = __pyx_v_c_byte_count;
             goto __pyx_L11_try_return;
 
@@ -105920,6 +112398,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  * 
  *             if c_requested > 0:
  */
+          __Pyx_TraceLine(388,0,__PYX_ERR(2, 388, __pyx_L7_error))
           __pyx_v_self->_bytes_read = 0;
         }
 
@@ -105930,6 +112409,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_start = _cstr(self._bytes) + self._bytes_read
  *                 cstring_h.memcpy(c_buffer, c_start, c_requested)
  */
+        __Pyx_TraceLine(390,0,__PYX_ERR(2, 390, __pyx_L7_error))
         __pyx_t_10 = ((__pyx_v_c_requested > 0) != 0);
         if (__pyx_t_10) {
 
@@ -105940,6 +112420,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 cstring_h.memcpy(c_buffer, c_start, c_requested)
  *                 c_byte_count += c_requested
  */
+          __Pyx_TraceLine(391,0,__PYX_ERR(2, 391, __pyx_L7_error))
           __pyx_t_9 = __pyx_v_self->_bytes;
           __Pyx_INCREF(__pyx_t_9);
           __pyx_v_c_start = (PyBytes_AS_STRING(__pyx_t_9) + __pyx_v_self->_bytes_read);
@@ -105952,6 +112433,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 c_byte_count += c_requested
  *                 self._bytes_read += c_requested
  */
+          __Pyx_TraceLine(392,0,__PYX_ERR(2, 392, __pyx_L7_error))
           (void)(memcpy(__pyx_v_c_buffer, __pyx_v_c_start, __pyx_v_c_requested));
 
           /* "src/lxml/parser.pxi":393
@@ -105961,6 +112443,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 self._bytes_read += c_requested
  *         except:
  */
+          __Pyx_TraceLine(393,0,__PYX_ERR(2, 393, __pyx_L7_error))
           __pyx_v_c_byte_count = (__pyx_v_c_byte_count + __pyx_v_c_requested);
 
           /* "src/lxml/parser.pxi":394
@@ -105970,6 +112453,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *         except:
  *             c_byte_count = -1
  */
+          __Pyx_TraceLine(394,0,__PYX_ERR(2, 394, __pyx_L7_error))
           __pyx_v_self->_bytes_read = (__pyx_v_self->_bytes_read + __pyx_v_c_requested);
 
           /* "src/lxml/parser.pxi":390
@@ -106007,6 +112491,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             c_byte_count = -1
  *             self._exc_context._store_raised()
  */
+      __Pyx_TraceLine(395,0,__PYX_ERR(2, 395, __pyx_L9_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._FileReaderContext.copyToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(2, 395, __pyx_L9_except_error)
@@ -106021,6 +112506,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             self._exc_context._store_raised()
  *             try:
  */
+        __Pyx_TraceLine(396,0,__PYX_ERR(2, 396, __pyx_L9_except_error))
         __pyx_v_c_byte_count = -1;
 
         /* "src/lxml/parser.pxi":397
@@ -106030,6 +112516,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             try:
  *                 self._close_file()
  */
+        __Pyx_TraceLine(397,0,__PYX_ERR(2, 397, __pyx_L9_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);
 
         /* "src/lxml/parser.pxi":398
@@ -106039,6 +112526,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 self._close_file()
  *             except:
  */
+        __Pyx_TraceLine(398,0,__PYX_ERR(2, 398, __pyx_L22_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -106055,6 +112543,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *             except:
  *                 self._exc_context._store_raised()
  */
+            __Pyx_TraceLine(399,0,__PYX_ERR(2, 399, __pyx_L22_error))
             __pyx_t_7 = __pyx_f_4lxml_5etree_18_FileReaderContext__close_file(__pyx_v_self); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 399, __pyx_L22_error)
             __Pyx_GOTREF(__pyx_t_7);
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -106082,6 +112571,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *                 self._exc_context._store_raised()
  *         finally:
  */
+          __Pyx_TraceLine(400,0,__PYX_ERR(2, 400, __pyx_L24_except_error))
           /*except:*/ {
             __Pyx_AddTraceback("lxml.etree._FileReaderContext.copyToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
             if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_14) < 0) __PYX_ERR(2, 400, __pyx_L24_except_error)
@@ -106096,6 +112586,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  *         finally:
  *             return c_byte_count  # swallow any exceptions
  */
+            __Pyx_TraceLine(401,0,__PYX_ERR(2, 401, __pyx_L24_except_error))
             ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -106164,6 +112655,7 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  * 
  * cdef int _readFilelikeParser(void* ctxt, char* c_buffer, int c_size) with gil:
  */
+  __Pyx_TraceLine(403,0,__PYX_ERR(2, 403, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_r = __pyx_v_c_byte_count;
@@ -106220,7 +112712,17 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext.copyToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -106235,11 +112737,13 @@ static int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_o
 
 static int __pyx_f_4lxml_5etree__readFilelikeParser(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_c_size) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   #ifdef WITH_THREAD
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_readFilelikeParser", 0);
+  __Pyx_TraceCall("_readFilelikeParser", __pyx_f[2], 405, 0, __PYX_ERR(2, 405, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":406
  * 
@@ -106248,6 +112752,7 @@ static int __pyx_f_4lxml_5etree__readFilelikeParser(void *__pyx_v_ctxt, char *__
  * 
  * cdef int _readFileParser(void* ctxt, char* c_buffer, int c_size) nogil:
  */
+  __Pyx_TraceLine(406,0,__PYX_ERR(2, 406, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_c_size);
   goto __pyx_L0;
 
@@ -106260,7 +112765,11 @@ static int __pyx_f_4lxml_5etree__readFilelikeParser(void *__pyx_v_ctxt, char *__
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._readFilelikeParser", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -106278,6 +112787,8 @@ static int __pyx_f_4lxml_5etree__readFilelikeParser(void *__pyx_v_ctxt, char *__
 
 static int __pyx_f_4lxml_5etree__readFileParser(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_c_size) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_readFileParser", __pyx_f[2], 408, 1, __PYX_ERR(2, 408, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":409
  * 
@@ -106286,6 +112797,7 @@ static int __pyx_f_4lxml_5etree__readFileParser(void *__pyx_v_ctxt, char *__pyx_
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(409,1,__PYX_ERR(2, 409, __pyx_L1_error))
   __pyx_r = fread(__pyx_v_c_buffer, 1, __pyx_v_c_size, ((FILE *)__pyx_v_ctxt));
   goto __pyx_L0;
 
@@ -106298,7 +112810,11 @@ static int __pyx_f_4lxml_5etree__readFileParser(void *__pyx_v_ctxt, char *__pyx_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._readFileParser", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
@@ -106321,6 +112837,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   PyObject *__pyx_v_filename = NULL;
   char *__pyx_v_c_filename;
   xmlParserInput *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -106337,6 +112854,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_local_resolver", 0);
+  __Pyx_TraceCall("_local_resolver", __pyx_f[2], 415, 0, __PYX_ERR(2, 415, __pyx_L1_error));
 
   /* "src/lxml/parser.pxi":424
  *     # passed, check to see if the thread state object has an implied
@@ -106345,6 +112863,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         context = <_ResolverContext>c_context._private
  *     else:
  */
+  __Pyx_TraceLine(424,0,__PYX_ERR(2, 424, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_context->_private != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -106355,6 +112874,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     else:
  *         context = __GLOBAL_PARSER_CONTEXT.findImpliedContext()
  */
+    __Pyx_TraceLine(425,0,__PYX_ERR(2, 425, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_c_context->_private);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_t_2);
@@ -106377,6 +112897,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *     if context is None:
  */
+  __Pyx_TraceLine(427,0,__PYX_ERR(2, 427, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_findImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 427, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -106392,6 +112913,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         if __DEFAULT_ENTITY_LOADER is NULL:
  *             return NULL
  */
+  __Pyx_TraceLine(429,0,__PYX_ERR(2, 429, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_context) == Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -106403,6 +112925,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             return NULL
  *         with nogil:
  */
+    __Pyx_TraceLine(430,0,__PYX_ERR(2, 430, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER == NULL) != 0);
     if (__pyx_t_3) {
 
@@ -106413,6 +112936,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         with nogil:
  *             # free the GIL as we might do serious I/O here (e.g. HTTP)
  */
+      __Pyx_TraceLine(431,0,__PYX_ERR(2, 431, __pyx_L1_error))
       __pyx_r = NULL;
       goto __pyx_L0;
 
@@ -106432,6 +112956,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             # free the GIL as we might do serious I/O here (e.g. HTTP)
  *             c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
  */
+    __Pyx_TraceLine(432,0,__PYX_ERR(2, 432, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -106447,6 +112972,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         return c_input
  * 
  */
+          __Pyx_TraceLine(434,1,__PYX_ERR(2, 434, __pyx_L7_error))
           __pyx_v_c_input = __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER(__pyx_v_c_url, __pyx_v_c_pubid, __pyx_v_c_context);
         }
 
@@ -106457,6 +112983,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             # free the GIL as we might do serious I/O here (e.g. HTTP)
  *             c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
  */
+        __Pyx_TraceLine(432,1,__PYX_ERR(2, 432, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -106465,6 +112992,13 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
             #endif
             goto __pyx_L8;
           }
+          __pyx_L7_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L8:;
         }
     }
@@ -106476,6 +113010,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *     try:
  */
+    __Pyx_TraceLine(435,0,__PYX_ERR(2, 435, __pyx_L1_error))
     __pyx_r = __pyx_v_c_input;
     goto __pyx_L0;
 
@@ -106495,6 +113030,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         if c_url is NULL:
  *             url = None
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(2, 437, __pyx_L9_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -106511,6 +113047,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             url = None
  *         else:
  */
+      __Pyx_TraceLine(438,0,__PYX_ERR(2, 438, __pyx_L9_error))
       __pyx_t_3 = ((__pyx_v_c_url == NULL) != 0);
       if (__pyx_t_3) {
 
@@ -106521,6 +113058,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         else:
  *             # parsing a related document (DTD etc.) => UTF-8 encoded URL?
  */
+        __Pyx_TraceLine(439,0,__PYX_ERR(2, 439, __pyx_L9_error))
         __Pyx_INCREF(Py_None);
         __pyx_v_url = Py_None;
 
@@ -106541,6 +113079,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         if c_pubid is NULL:
  *             pubid = None
  */
+      __Pyx_TraceLine(442,0,__PYX_ERR(2, 442, __pyx_L9_error))
       /*else*/ {
         __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(((const xmlChar *)__pyx_v_c_url)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 442, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_2);
@@ -106556,6 +113095,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             pubid = None
  *         else:
  */
+      __Pyx_TraceLine(443,0,__PYX_ERR(2, 443, __pyx_L9_error))
       __pyx_t_3 = ((__pyx_v_c_pubid == NULL) != 0);
       if (__pyx_t_3) {
 
@@ -106566,6 +113106,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         else:
  *             pubid = funicode(<const_xmlChar*>c_pubid) # always UTF-8
  */
+        __Pyx_TraceLine(444,0,__PYX_ERR(2, 444, __pyx_L9_error))
         __Pyx_INCREF(Py_None);
         __pyx_v_pubid = Py_None;
 
@@ -106586,6 +113127,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *         doc_ref = context._resolvers.resolve(url, pubid, context)
  */
+      __Pyx_TraceLine(446,0,__PYX_ERR(2, 446, __pyx_L9_error))
       /*else*/ {
         __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(((const xmlChar *)__pyx_v_c_pubid)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 446, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_2);
@@ -106601,6 +113143,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     except:
  *         context._store_raised()
  */
+      __Pyx_TraceLine(448,0,__PYX_ERR(2, 448, __pyx_L9_error))
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_resolvers), __pyx_n_s_resolve); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 448, __pyx_L9_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
@@ -106680,6 +113223,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         context._store_raised()
  *         return NULL
  */
+    __Pyx_TraceLine(449,0,__PYX_ERR(2, 449, __pyx_L11_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._local_resolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_10) < 0) __PYX_ERR(2, 449, __pyx_L11_except_error)
@@ -106694,6 +113238,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         return NULL
  * 
  */
+      __Pyx_TraceLine(450,0,__PYX_ERR(2, 450, __pyx_L11_except_error))
       ((struct __pyx_vtabstruct_4lxml_5etree__ResolverContext *)__pyx_v_context->__pyx_base.__pyx_vtab)->__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
 
       /* "src/lxml/parser.pxi":451
@@ -106703,6 +113248,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *     if doc_ref is not None:
  */
+      __Pyx_TraceLine(451,0,__PYX_ERR(2, 451, __pyx_L11_except_error))
       __pyx_r = NULL;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -106739,6 +113285,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         if doc_ref._type == PARSER_DATA_STRING:
  *             data = doc_ref._data_bytes
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(2, 453, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_doc_ref) != Py_None);
   __pyx_t_1 = (__pyx_t_3 != 0);
   if (__pyx_t_1) {
@@ -106750,6 +113297,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             data = doc_ref._data_bytes
  *             filename = doc_ref._filename
  */
+    __Pyx_TraceLine(454,0,__PYX_ERR(2, 454, __pyx_L1_error))
     switch (__pyx_v_doc_ref->_type) {
       case __pyx_e_4lxml_5etree_PARSER_DATA_STRING:
 
@@ -106760,6 +113308,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             filename = doc_ref._filename
  *             if not filename:
  */
+      __Pyx_TraceLine(455,0,__PYX_ERR(2, 455, __pyx_L1_error))
       __pyx_t_10 = __pyx_v_doc_ref->_data_bytes;
       __Pyx_INCREF(__pyx_t_10);
       __pyx_v_data = __pyx_t_10;
@@ -106772,6 +113321,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             if not filename:
  *                 filename = None
  */
+      __Pyx_TraceLine(456,0,__PYX_ERR(2, 456, __pyx_L1_error))
       __pyx_t_10 = __pyx_v_doc_ref->_filename;
       __Pyx_INCREF(__pyx_t_10);
       __pyx_v_filename = __pyx_t_10;
@@ -106784,6 +113334,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 filename = None
  *             elif not isinstance(filename, bytes):
  */
+      __Pyx_TraceLine(457,0,__PYX_ERR(2, 457, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 457, __pyx_L1_error)
       __pyx_t_3 = ((!__pyx_t_1) != 0);
       if (__pyx_t_3) {
@@ -106795,6 +113346,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             elif not isinstance(filename, bytes):
  *                 # most likely a text URL
  */
+        __Pyx_TraceLine(458,0,__PYX_ERR(2, 458, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
 
@@ -106815,6 +113367,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 # most likely a text URL
  *                 filename = filename.encode('utf8')
  */
+      __Pyx_TraceLine(459,0,__PYX_ERR(2, 459, __pyx_L1_error))
       __pyx_t_3 = PyBytes_Check(__pyx_v_filename); 
       __pyx_t_1 = ((!(__pyx_t_3 != 0)) != 0);
       if (__pyx_t_1) {
@@ -106826,9 +113379,10 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 if not isinstance(filename, bytes):
  *                     filename = None
  */
+        __Pyx_TraceLine(461,0,__PYX_ERR(2, 461, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_encode); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 461, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 461, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__233, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 461, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_7);
@@ -106841,6 +113395,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                     filename = None
  * 
  */
+        __Pyx_TraceLine(462,0,__PYX_ERR(2, 462, __pyx_L1_error))
         __pyx_t_1 = PyBytes_Check(__pyx_v_filename); 
         __pyx_t_3 = ((!(__pyx_t_1 != 0)) != 0);
         if (__pyx_t_3) {
@@ -106852,6 +113407,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *             c_input = xmlparser.xmlNewInputStream(c_context)
  */
+          __Pyx_TraceLine(463,0,__PYX_ERR(2, 463, __pyx_L1_error))
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
 
@@ -106881,6 +113437,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             if c_input is not NULL:
  *                 if filename is not None:
  */
+      __Pyx_TraceLine(465,0,__PYX_ERR(2, 465, __pyx_L1_error))
       __pyx_v_c_input = xmlNewInputStream(__pyx_v_c_context);
 
       /* "src/lxml/parser.pxi":466
@@ -106890,6 +113447,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 if filename is not None:
  *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
  */
+      __Pyx_TraceLine(466,0,__PYX_ERR(2, 466, __pyx_L1_error))
       __pyx_t_3 = ((__pyx_v_c_input != NULL) != 0);
       if (__pyx_t_3) {
 
@@ -106900,6 +113458,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                     c_input.filename = <char *>tree.xmlStrdup(_xcstr(filename))
  *                 c_input.base = _xcstr(data)
  */
+        __Pyx_TraceLine(467,0,__PYX_ERR(2, 467, __pyx_L1_error))
         __pyx_t_3 = (__pyx_v_filename != Py_None);
         __pyx_t_1 = (__pyx_t_3 != 0);
         if (__pyx_t_1) {
@@ -106911,6 +113470,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 c_input.base = _xcstr(data)
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  */
+          __Pyx_TraceLine(468,0,__PYX_ERR(2, 468, __pyx_L1_error))
           __pyx_v_c_input->filename = ((char *)xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_filename)));
 
           /* "src/lxml/parser.pxi":467
@@ -106929,6 +113489,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 c_input.length = python.PyBytes_GET_SIZE(data)
  *                 c_input.cur = c_input.base
  */
+        __Pyx_TraceLine(469,0,__PYX_ERR(2, 469, __pyx_L1_error))
         __pyx_v_c_input->base = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_data);
 
         /* "src/lxml/parser.pxi":470
@@ -106938,6 +113499,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 c_input.cur = c_input.base
  *                 c_input.end = c_input.base + c_input.length
  */
+        __Pyx_TraceLine(470,0,__PYX_ERR(2, 470, __pyx_L1_error))
         __pyx_v_c_input->length = PyBytes_GET_SIZE(__pyx_v_data);
 
         /* "src/lxml/parser.pxi":471
@@ -106947,6 +113509,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 c_input.end = c_input.base + c_input.length
  *         elif doc_ref._type == PARSER_DATA_FILENAME:
  */
+        __Pyx_TraceLine(471,0,__PYX_ERR(2, 471, __pyx_L1_error))
         __pyx_t_11 = __pyx_v_c_input->base;
         __pyx_v_c_input->cur = __pyx_t_11;
 
@@ -106957,6 +113520,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         elif doc_ref._type == PARSER_DATA_FILENAME:
  *             data = None
  */
+        __Pyx_TraceLine(472,0,__PYX_ERR(2, 472, __pyx_L1_error))
         __pyx_v_c_input->end = (__pyx_v_c_input->base + __pyx_v_c_input->length);
 
         /* "src/lxml/parser.pxi":466
@@ -106984,6 +113548,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             data = None
  *             c_filename = _cstr(doc_ref._filename)
  */
+      __Pyx_TraceLine(473,0,__PYX_ERR(2, 473, __pyx_L1_error))
       case __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME:
 
       /* "src/lxml/parser.pxi":474
@@ -106993,6 +113558,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             c_filename = _cstr(doc_ref._filename)
  *             with nogil:
  */
+      __Pyx_TraceLine(474,0,__PYX_ERR(2, 474, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __pyx_v_data = Py_None;
 
@@ -107003,6 +113569,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             with nogil:
  *                 # free the GIL as we might do serious I/O here
  */
+      __Pyx_TraceLine(475,0,__PYX_ERR(2, 475, __pyx_L1_error))
       __pyx_t_7 = __pyx_v_doc_ref->_filename;
       __Pyx_INCREF(__pyx_t_7);
       __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_t_7);
@@ -107015,6 +113582,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 # free the GIL as we might do serious I/O here
  *                 c_input = xmlparser.xmlNewInputFromFile(
  */
+      __Pyx_TraceLine(476,0,__PYX_ERR(2, 476, __pyx_L1_error))
       {
           #ifdef WITH_THREAD
           PyThreadState *_save;
@@ -107030,6 +113598,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                     c_context, c_filename)
  *         elif doc_ref._type == PARSER_DATA_FILE:
  */
+            __Pyx_TraceLine(478,1,__PYX_ERR(2, 478, __pyx_L25_error))
             __pyx_v_c_input = xmlNewInputFromFile(__pyx_v_c_context, __pyx_v_c_filename);
           }
 
@@ -107040,6 +113609,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                 # free the GIL as we might do serious I/O here
  *                 c_input = xmlparser.xmlNewInputFromFile(
  */
+          __Pyx_TraceLine(476,1,__PYX_ERR(2, 476, __pyx_L1_error))
           /*finally:*/ {
             /*normal exit:*/{
               #ifdef WITH_THREAD
@@ -107048,6 +113618,13 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
               #endif
               goto __pyx_L26;
             }
+            __pyx_L25_error: {
+              #ifdef WITH_THREAD
+              __Pyx_FastGIL_Forget();
+              Py_BLOCK_THREADS
+              #endif
+              goto __pyx_L1_error;
+            }
             __pyx_L26:;
           }
       }
@@ -107068,6 +113645,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             file_context = _FileReaderContext(doc_ref._file, context, url,
  *                                               None, doc_ref._close_file)
  */
+      __Pyx_TraceLine(480,0,__PYX_ERR(2, 480, __pyx_L1_error))
       case __pyx_e_4lxml_5etree_PARSER_DATA_FILE:
 
       /* "src/lxml/parser.pxi":482
@@ -107077,6 +113655,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             c_input = file_context._createParserInput(c_context)
  *             data = file_context
  */
+      __Pyx_TraceLine(482,0,__PYX_ERR(2, 482, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_doc_ref->_close_file); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 482, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
 
@@ -107087,6 +113666,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *                                               None, doc_ref._close_file)
  *             c_input = file_context._createParserInput(c_context)
  */
+      __Pyx_TraceLine(481,0,__PYX_ERR(2, 481, __pyx_L1_error))
       __pyx_t_10 = PyTuple_New(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 481, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_INCREF(__pyx_v_doc_ref->_file);
@@ -107117,6 +113697,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             data = file_context
  *         else:
  */
+      __Pyx_TraceLine(483,0,__PYX_ERR(2, 483, __pyx_L1_error))
       __pyx_v_c_input = __pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput(__pyx_v_file_context, __pyx_v_c_context);
 
       /* "src/lxml/parser.pxi":484
@@ -107126,6 +113707,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         else:
  *             data = None
  */
+      __Pyx_TraceLine(484,0,__PYX_ERR(2, 484, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_file_context));
       __pyx_v_data = ((PyObject *)__pyx_v_file_context);
 
@@ -107146,6 +113728,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             c_input = NULL
  * 
  */
+      __Pyx_TraceLine(486,0,__PYX_ERR(2, 486, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __pyx_v_data = Py_None;
 
@@ -107156,6 +113739,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *         if data is not None:
  */
+      __Pyx_TraceLine(487,0,__PYX_ERR(2, 487, __pyx_L1_error))
       __pyx_v_c_input = NULL;
       break;
     }
@@ -107167,6 +113751,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             context._storage.add(data)
  *         if c_input is not NULL:
  */
+    __Pyx_TraceLine(489,0,__PYX_ERR(2, 489, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_data != Py_None);
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
@@ -107178,6 +113763,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         if c_input is not NULL:
  *             return c_input
  */
+      __Pyx_TraceLine(490,0,__PYX_ERR(2, 490, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree_10_TempStore_add(__pyx_v_context->_storage, __pyx_v_data); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 490, __pyx_L1_error)
 
       /* "src/lxml/parser.pxi":489
@@ -107196,6 +113782,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *             return c_input
  * 
  */
+    __Pyx_TraceLine(491,0,__PYX_ERR(2, 491, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_input != NULL) != 0);
     if (__pyx_t_3) {
 
@@ -107206,6 +113793,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *     if __DEFAULT_ENTITY_LOADER is NULL:
  */
+      __Pyx_TraceLine(492,0,__PYX_ERR(2, 492, __pyx_L1_error))
       __pyx_r = __pyx_v_c_input;
       goto __pyx_L0;
 
@@ -107234,6 +113822,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         return NULL
  * 
  */
+  __Pyx_TraceLine(494,0,__PYX_ERR(2, 494, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -107244,6 +113833,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  *     with nogil:
  */
+    __Pyx_TraceLine(495,0,__PYX_ERR(2, 495, __pyx_L1_error))
     __pyx_r = NULL;
     goto __pyx_L0;
 
@@ -107263,6 +113853,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         # free the GIL as we might do serious I/O here (e.g. HTTP)
  *         c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(2, 497, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -107278,6 +113869,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *     return c_input
  * 
  */
+        __Pyx_TraceLine(499,1,__PYX_ERR(2, 499, __pyx_L31_error))
         __pyx_v_c_input = __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER(__pyx_v_c_url, __pyx_v_c_pubid, __pyx_v_c_context);
       }
 
@@ -107288,6 +113880,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  *         # free the GIL as we might do serious I/O here (e.g. HTTP)
  *         c_input = __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
  */
+      __Pyx_TraceLine(497,1,__PYX_ERR(2, 497, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -107296,6 +113889,13 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
           #endif
           goto __pyx_L32;
         }
+        __pyx_L31_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L32:;
       }
   }
@@ -107307,6 +113907,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
  * 
  * cdef xmlparser.xmlExternalEntityLoader __DEFAULT_ENTITY_LOADER
  */
+  __Pyx_TraceLine(500,0,__PYX_ERR(2, 500, __pyx_L1_error))
   __pyx_r = __pyx_v_c_input;
   goto __pyx_L0;
 
@@ -107334,6 +113935,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   __Pyx_XDECREF(__pyx_v_pubid);
   __Pyx_XDECREF(__pyx_v_data);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -107341,7 +113943,7 @@ static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(const char *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":520
+/* "src/lxml/parser.pxi":521
  *     cdef bint _collect_ids
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -107367,49 +113969,55 @@ static int __pyx_pw_4lxml_5etree_14_ParserContext_1__cinit__(PyObject *__pyx_v_s
 
 static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[2], 521, 0, __PYX_ERR(2, 521, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":521
+  /* "src/lxml/parser.pxi":522
  * 
  *     def __cinit__(self):
  *         self._c_ctxt = NULL             # <<<<<<<<<<<<<<
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:
  */
+  __Pyx_TraceLine(522,0,__PYX_ERR(2, 522, __pyx_L1_error))
   __pyx_v_self->_c_ctxt = NULL;
 
-  /* "src/lxml/parser.pxi":522
+  /* "src/lxml/parser.pxi":523
  *     def __cinit__(self):
  *         self._c_ctxt = NULL
  *         self._collect_ids = True             # <<<<<<<<<<<<<<
  *         if not config.ENABLE_THREADING:
  *             self._lock = NULL
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(2, 523, __pyx_L1_error))
   __pyx_v_self->_collect_ids = 1;
 
-  /* "src/lxml/parser.pxi":523
+  /* "src/lxml/parser.pxi":524
  *         self._c_ctxt = NULL
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
  *             self._lock = NULL
  *         else:
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(2, 524, __pyx_L1_error))
   __pyx_t_1 = ((!(ENABLE_THREADING != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":524
+    /* "src/lxml/parser.pxi":525
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:
  *             self._lock = NULL             # <<<<<<<<<<<<<<
  *         else:
  *             self._lock = python.PyThread_allocate_lock()
  */
+    __Pyx_TraceLine(525,0,__PYX_ERR(2, 525, __pyx_L1_error))
     __pyx_v_self->_lock = NULL;
 
-    /* "src/lxml/parser.pxi":523
+    /* "src/lxml/parser.pxi":524
  *         self._c_ctxt = NULL
  *         self._collect_ids = True
  *         if not config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
@@ -107419,26 +114027,28 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":526
+  /* "src/lxml/parser.pxi":527
  *             self._lock = NULL
  *         else:
  *             self._lock = python.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
  *         self._error_log = _ErrorLog()
  * 
  */
+  __Pyx_TraceLine(527,0,__PYX_ERR(2, 527, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_lock = PyThread_allocate_lock();
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":527
+  /* "src/lxml/parser.pxi":528
  *         else:
  *             self._lock = python.PyThread_allocate_lock()
  *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
  * 
  *     def __dealloc__(self):
  */
-  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 527, __pyx_L1_error)
+  __Pyx_TraceLine(528,0,__PYX_ERR(2, 528, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 528, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->_error_log);
@@ -107446,7 +114056,7 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   __pyx_v_self->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":520
+  /* "src/lxml/parser.pxi":521
  *     cdef bint _collect_ids
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -107462,11 +114072,12 @@ static int __pyx_pf_4lxml_5etree_14_ParserContext___cinit__(struct __pyx_obj_4lx
   __Pyx_AddTraceback("lxml.etree._ParserContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":529
+/* "src/lxml/parser.pxi":530
  *         self._error_log = _ErrorLog()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -107486,18 +114097,22 @@ static void __pyx_pw_4lxml_5etree_14_ParserContext_3__dealloc__(PyObject *__pyx_
 }
 
 static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  int __pyx_t_3;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[2], 530, 0, __PYX_ERR(2, 530, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":530
+  /* "src/lxml/parser.pxi":531
  * 
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
  *             python.PyThread_free_lock(self._lock)
  *             self._lock = NULL
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(2, 531, __pyx_L1_error))
   __pyx_t_2 = (ENABLE_THREADING != 0);
   if (__pyx_t_2) {
   } else {
@@ -107509,25 +114124,27 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":531
+    /* "src/lxml/parser.pxi":532
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_free_lock(self._lock)             # <<<<<<<<<<<<<<
  *             self._lock = NULL
  *         if self._c_ctxt is not NULL:
  */
+    __Pyx_TraceLine(532,0,__PYX_ERR(2, 532, __pyx_L1_error))
     PyThread_free_lock(__pyx_v_self->_lock);
 
-    /* "src/lxml/parser.pxi":532
+    /* "src/lxml/parser.pxi":533
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_free_lock(self._lock)
  *             self._lock = NULL             # <<<<<<<<<<<<<<
  *         if self._c_ctxt is not NULL:
- *             if self._validator is not None:
+ *             if <void*>self._validator is not NULL and self._validator is not None:
  */
+    __Pyx_TraceLine(533,0,__PYX_ERR(2, 533, __pyx_L1_error))
     __pyx_v_self->_lock = NULL;
 
-    /* "src/lxml/parser.pxi":530
+    /* "src/lxml/parser.pxi":531
  * 
  *     def __dealloc__(self):
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -107536,64 +114153,76 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
   }
 
-  /* "src/lxml/parser.pxi":533
+  /* "src/lxml/parser.pxi":534
  *             python.PyThread_free_lock(self._lock)
  *             self._lock = NULL
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
- *             if self._validator is not None:
+ *             if <void*>self._validator is not NULL and self._validator is not None:
  *                 # If the parser was not closed correctly (e.g. interrupted iterparse()),
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(2, 534, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_ctxt != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":534
+    /* "src/lxml/parser.pxi":535
  *             self._lock = NULL
  *         if self._c_ctxt is not NULL:
- *             if self._validator is not None:             # <<<<<<<<<<<<<<
+ *             if <void*>self._validator is not NULL and self._validator is not None:             # <<<<<<<<<<<<<<
  *                 # If the parser was not closed correctly (e.g. interrupted iterparse()),
  *                 # and the schema validator wasn't freed and cleaned up yet, the libxml2 SAX
  */
-    __pyx_t_1 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
-    __pyx_t_2 = (__pyx_t_1 != 0);
+    __Pyx_TraceLine(535,0,__PYX_ERR(2, 535, __pyx_L1_error))
+    __pyx_t_2 = ((((void *)__pyx_v_self->_validator) != NULL) != 0);
     if (__pyx_t_2) {
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+      goto __pyx_L8_bool_binop_done;
+    }
+    __pyx_t_2 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
+    __pyx_t_3 = (__pyx_t_2 != 0);
+    __pyx_t_1 = __pyx_t_3;
+    __pyx_L8_bool_binop_done:;
+    if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":540
+      /* "src/lxml/parser.pxi":541
  *                 # crash when trying to xmlFree() a static SAX handler.
  *                 # Thus, make sure we disconnect the handler interceptor here at the latest.
  *                 self._validator.disconnect()             # <<<<<<<<<<<<<<
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
  * 
  */
+      __Pyx_TraceLine(541,0,__PYX_ERR(2, 541, __pyx_L1_error))
       __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(__pyx_v_self->_validator);
 
-      /* "src/lxml/parser.pxi":534
+      /* "src/lxml/parser.pxi":535
  *             self._lock = NULL
  *         if self._c_ctxt is not NULL:
- *             if self._validator is not None:             # <<<<<<<<<<<<<<
+ *             if <void*>self._validator is not NULL and self._validator is not None:             # <<<<<<<<<<<<<<
  *                 # If the parser was not closed correctly (e.g. interrupted iterparse()),
  *                 # and the schema validator wasn't freed and cleaned up yet, the libxml2 SAX
  */
     }
 
-    /* "src/lxml/parser.pxi":541
+    /* "src/lxml/parser.pxi":542
  *                 # Thus, make sure we disconnect the handler interceptor here at the latest.
  *                 self._validator.disconnect()
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _copy(self):
  */
+    __Pyx_TraceLine(542,0,__PYX_ERR(2, 542, __pyx_L1_error))
     xmlFreeParserCtxt(__pyx_v_self->_c_ctxt);
 
-    /* "src/lxml/parser.pxi":533
+    /* "src/lxml/parser.pxi":534
  *             python.PyThread_free_lock(self._lock)
  *             self._lock = NULL
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
- *             if self._validator is not None:
+ *             if <void*>self._validator is not NULL and self._validator is not None:
  *                 # If the parser was not closed correctly (e.g. interrupted iterparse()),
  */
   }
 
-  /* "src/lxml/parser.pxi":529
+  /* "src/lxml/parser.pxi":530
  *         self._error_log = _ErrorLog()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -107602,10 +114231,15 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":543
+/* "src/lxml/parser.pxi":544
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -107616,21 +114250,24 @@ static void __pyx_pf_4lxml_5etree_14_ParserContext_2__dealloc__(struct __pyx_obj
 static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_ParserContext__copy(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[2], 544, 0, __PYX_ERR(2, 544, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":545
+  /* "src/lxml/parser.pxi":546
  *     cdef _ParserContext _copy(self):
  *         cdef _ParserContext context
  *         context = self.__class__()             # <<<<<<<<<<<<<<
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 545, __pyx_L1_error)
+  __Pyx_TraceLine(546,0,__PYX_ERR(2, 546, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -107643,35 +114280,37 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 545, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 545, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ParserContext))))) __PYX_ERR(2, 545, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ParserContext))))) __PYX_ERR(2, 546, __pyx_L1_error)
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":546
+  /* "src/lxml/parser.pxi":547
  *         cdef _ParserContext context
  *         context = self.__class__()
  *         context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
  *         context._validator = self._validator.copy()
  *         _initParserContext(context, self._resolvers._copy(), NULL)
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(2, 547, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_collect_ids;
   __pyx_v_context->_collect_ids = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":547
+  /* "src/lxml/parser.pxi":548
  *         context = self.__class__()
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()             # <<<<<<<<<<<<<<
  *         _initParserContext(context, self._resolvers._copy(), NULL)
  *         return context
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(__pyx_v_self->_validator)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 547, __pyx_L1_error)
+  __Pyx_TraceLine(548,0,__PYX_ERR(2, 548, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(__pyx_v_self->_validator)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_context->_validator);
@@ -107679,33 +114318,35 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   __pyx_v_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":548
+  /* "src/lxml/parser.pxi":549
  *         context._collect_ids = self._collect_ids
  *         context._validator = self._validator.copy()
  *         _initParserContext(context, self._resolvers._copy(), NULL)             # <<<<<<<<<<<<<<
  *         return context
  * 
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(__pyx_v_self->__pyx_base._resolvers)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 548, __pyx_L1_error)
+  __Pyx_TraceLine(549,0,__PYX_ERR(2, 549, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(__pyx_v_self->__pyx_base._resolvers)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 548, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":549
+  /* "src/lxml/parser.pxi":550
  *         context._validator = self._validator.copy()
  *         _initParserContext(context, self._resolvers._copy(), NULL)
  *         return context             # <<<<<<<<<<<<<<
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  */
+  __Pyx_TraceLine(550,0,__PYX_ERR(2, 550, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = __pyx_v_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":543
+  /* "src/lxml/parser.pxi":544
  *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -107723,11 +114364,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":551
+/* "src/lxml/parser.pxi":552
  *         return context
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -107736,28 +114378,32 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_Par
  */
 
 static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_initParserContext", 0);
+  __Pyx_TraceCall("_initParserContext", __pyx_f[2], 552, 0, __PYX_ERR(2, 552, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":552
+  /* "src/lxml/parser.pxi":553
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         self._c_ctxt = c_ctxt             # <<<<<<<<<<<<<<
  *         c_ctxt._private = <void*>self
  * 
  */
+  __Pyx_TraceLine(553,0,__PYX_ERR(2, 553, __pyx_L1_error))
   __pyx_v_self->_c_ctxt = __pyx_v_c_ctxt;
 
-  /* "src/lxml/parser.pxi":553
+  /* "src/lxml/parser.pxi":554
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         self._c_ctxt = c_ctxt
  *         c_ctxt._private = <void*>self             # <<<<<<<<<<<<<<
  * 
  *     cdef void _resetParserContext(self):
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(2, 554, __pyx_L1_error))
   __pyx_v_c_ctxt->_private = ((void *)__pyx_v_self);
 
-  /* "src/lxml/parser.pxi":551
+  /* "src/lxml/parser.pxi":552
  *         return context
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -107766,10 +114412,15 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserContext._initParserContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":555
+/* "src/lxml/parser.pxi":556
  *         c_ctxt._private = <void*>self
  * 
  *     cdef void _resetParserContext(self):             # <<<<<<<<<<<<<<
@@ -107778,49 +114429,55 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __py
  */
 
 static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_resetParserContext", 0);
+  __Pyx_TraceCall("_resetParserContext", __pyx_f[2], 556, 0, __PYX_ERR(2, 556, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":556
+  /* "src/lxml/parser.pxi":557
  * 
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
  *             if self._c_ctxt.html:
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)
  */
+  __Pyx_TraceLine(557,0,__PYX_ERR(2, 557, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_ctxt != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":557
+    /* "src/lxml/parser.pxi":558
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:             # <<<<<<<<<<<<<<
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2
  */
+    __Pyx_TraceLine(558,0,__PYX_ERR(2, 558, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_self->_c_ctxt->html != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":558
+      /* "src/lxml/parser.pxi":559
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)             # <<<<<<<<<<<<<<
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2
  *             else:
  */
+      __Pyx_TraceLine(559,0,__PYX_ERR(2, 559, __pyx_L1_error))
       htmlCtxtReset(__pyx_v_self->_c_ctxt);
 
-      /* "src/lxml/parser.pxi":559
+      /* "src/lxml/parser.pxi":560
  *             if self._c_ctxt.html:
  *                 htmlparser.htmlCtxtReset(self._c_ctxt)
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2             # <<<<<<<<<<<<<<
  *             else:
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
  */
+      __Pyx_TraceLine(560,0,__PYX_ERR(2, 560, __pyx_L1_error))
       __pyx_v_self->_c_ctxt->disableSAX = 0;
 
-      /* "src/lxml/parser.pxi":557
+      /* "src/lxml/parser.pxi":558
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:
  *             if self._c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -107830,19 +114487,20 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
       goto __pyx_L4;
     }
 
-    /* "src/lxml/parser.pxi":561
+    /* "src/lxml/parser.pxi":562
  *                 self._c_ctxt.disableSAX = 0 # work around bug in libxml2
  *             else:
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
  * 
  *     cdef int prepare(self) except -1:
  */
+    __Pyx_TraceLine(562,0,__PYX_ERR(2, 562, __pyx_L1_error))
     /*else*/ {
       xmlClearParserCtxt(__pyx_v_self->_c_ctxt);
     }
     __pyx_L4:;
 
-    /* "src/lxml/parser.pxi":556
+    /* "src/lxml/parser.pxi":557
  * 
  *     cdef void _resetParserContext(self):
  *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -107851,7 +114509,7 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
  */
   }
 
-  /* "src/lxml/parser.pxi":555
+  /* "src/lxml/parser.pxi":556
  *         c_ctxt._private = <void*>self
  * 
  *     cdef void _resetParserContext(self):             # <<<<<<<<<<<<<<
@@ -107860,10 +114518,15 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserContext._resetParserContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parser.pxi":563
+/* "src/lxml/parser.pxi":564
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
  * 
  *     cdef int prepare(self) except -1:             # <<<<<<<<<<<<<<
@@ -107874,20 +114537,23 @@ static void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __p
 static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
   int __pyx_v_result;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("prepare", 0);
+  __Pyx_TraceCall("prepare", __pyx_f[2], 564, 0, __PYX_ERR(2, 564, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":565
+  /* "src/lxml/parser.pxi":566
  *     cdef int prepare(self) except -1:
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 result = python.PyThread_acquire_lock(
  */
+  __Pyx_TraceLine(566,0,__PYX_ERR(2, 566, __pyx_L1_error))
   __pyx_t_2 = (ENABLE_THREADING != 0);
   if (__pyx_t_2) {
   } else {
@@ -107899,13 +114565,14 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":566
+    /* "src/lxml/parser.pxi":567
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  */
+    __Pyx_TraceLine(567,0,__PYX_ERR(2, 567, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -107914,23 +114581,25 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":567
+          /* "src/lxml/parser.pxi":568
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:
  *                 result = python.PyThread_acquire_lock(             # <<<<<<<<<<<<<<
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:
  */
+          __Pyx_TraceLine(568,1,__PYX_ERR(2, 568, __pyx_L7_error))
           __pyx_v_result = PyThread_acquire_lock(__pyx_v_self->_lock, WAIT_LOCK);
         }
 
-        /* "src/lxml/parser.pxi":566
+        /* "src/lxml/parser.pxi":567
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  */
+        __Pyx_TraceLine(567,1,__PYX_ERR(2, 567, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -107939,31 +114608,40 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
             #endif
             goto __pyx_L8;
           }
+          __pyx_L7_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L8:;
         }
     }
 
-    /* "src/lxml/parser.pxi":569
+    /* "src/lxml/parser.pxi":570
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:             # <<<<<<<<<<<<<<
  *                 raise ParserError, u"parser locking failed"
  *         self._error_log.clear()
  */
+    __Pyx_TraceLine(570,0,__PYX_ERR(2, 570, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_result == 0) != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "src/lxml/parser.pxi":570
+      /* "src/lxml/parser.pxi":571
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:
  *                 raise ParserError, u"parser locking failed"             # <<<<<<<<<<<<<<
  *         self._error_log.clear()
  *         self._doc = None
  */
+      __Pyx_TraceLine(571,0,__PYX_ERR(2, 571, __pyx_L1_error))
       __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_ParserError), __pyx_kp_u_parser_locking_failed, 0, 0);
-      __PYX_ERR(2, 570, __pyx_L1_error)
+      __PYX_ERR(2, 571, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":569
+      /* "src/lxml/parser.pxi":570
  *                 result = python.PyThread_acquire_lock(
  *                     self._lock, python.WAIT_LOCK)
  *             if result == 0:             # <<<<<<<<<<<<<<
@@ -107972,7 +114650,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":565
+    /* "src/lxml/parser.pxi":566
  *     cdef int prepare(self) except -1:
  *         cdef int result
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -107981,63 +114659,68 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":571
+  /* "src/lxml/parser.pxi":572
  *             if result == 0:
  *                 raise ParserError, u"parser locking failed"
  *         self._error_log.clear()             # <<<<<<<<<<<<<<
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->_error_log, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 571, __pyx_L1_error)
+  __Pyx_TraceLine(572,0,__PYX_ERR(2, 572, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->_error_log, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":572
+  /* "src/lxml/parser.pxi":573
  *                 raise ParserError, u"parser locking failed"
  *         self._error_log.clear()
  *         self._doc = None             # <<<<<<<<<<<<<<
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:
  */
+  __Pyx_TraceLine(573,0,__PYX_ERR(2, 573, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_doc);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
   __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "src/lxml/parser.pxi":573
+  /* "src/lxml/parser.pxi":574
  *         self._error_log.clear()
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError             # <<<<<<<<<<<<<<
  *         if self._validator is not None:
  *             self._validator.connect(self._c_ctxt, self._error_log)
  */
+  __Pyx_TraceLine(574,0,__PYX_ERR(2, 574, __pyx_L1_error))
   __pyx_v_self->_c_ctxt->sax->serror = __pyx_f_4lxml_5etree__receiveParserError;
 
-  /* "src/lxml/parser.pxi":574
+  /* "src/lxml/parser.pxi":575
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
  *             self._validator.connect(self._c_ctxt, self._error_log)
  *         return 0
  */
+  __Pyx_TraceLine(575,0,__PYX_ERR(2, 575, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":575
+    /* "src/lxml/parser.pxi":576
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:
  *             self._validator.connect(self._c_ctxt, self._error_log)             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+    __Pyx_TraceLine(576,0,__PYX_ERR(2, 576, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_error_log);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_4 = __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(__pyx_v_self->_validator, __pyx_v_self->_c_ctxt, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 575, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(__pyx_v_self->_validator, __pyx_v_self->_c_ctxt, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 576, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":574
+    /* "src/lxml/parser.pxi":575
  *         self._doc = None
  *         self._c_ctxt.sax.serror = _receiveParserError
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -108046,17 +114729,18 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":576
+  /* "src/lxml/parser.pxi":577
  *         if self._validator is not None:
  *             self._validator.connect(self._c_ctxt, self._error_log)
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef int cleanup(self) except -1:
  */
+  __Pyx_TraceLine(577,0,__PYX_ERR(2, 577, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":563
+  /* "src/lxml/parser.pxi":564
  *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
  * 
  *     cdef int prepare(self) except -1:             # <<<<<<<<<<<<<<
@@ -108070,11 +114754,12 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
   __Pyx_AddTraceback("lxml.etree._ParserContext.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":578
+/* "src/lxml/parser.pxi":579
  *         return 0
  * 
  *     cdef int cleanup(self) except -1:             # <<<<<<<<<<<<<<
@@ -108084,33 +114769,37 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_
 
 static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("cleanup", 0);
+  __Pyx_TraceCall("cleanup", __pyx_f[2], 579, 0, __PYX_ERR(2, 579, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":579
+  /* "src/lxml/parser.pxi":580
  * 
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
  *             self._validator.disconnect()
  *         self._resetParserContext()
  */
+  __Pyx_TraceLine(580,0,__PYX_ERR(2, 580, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":580
+    /* "src/lxml/parser.pxi":581
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:
  *             self._validator.disconnect()             # <<<<<<<<<<<<<<
  *         self._resetParserContext()
  *         self.clear()
  */
+    __Pyx_TraceLine(581,0,__PYX_ERR(2, 581, __pyx_L1_error))
     __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(__pyx_v_self->_validator);
 
-    /* "src/lxml/parser.pxi":579
+    /* "src/lxml/parser.pxi":580
  * 
  *     cdef int cleanup(self) except -1:
  *         if self._validator is not None:             # <<<<<<<<<<<<<<
@@ -108119,53 +114808,58 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":581
+  /* "src/lxml/parser.pxi":582
  *         if self._validator is not None:
  *             self._validator.disconnect()
  *         self._resetParserContext()             # <<<<<<<<<<<<<<
  *         self.clear()
  *         self._doc = None
  */
+  __Pyx_TraceLine(582,0,__PYX_ERR(2, 582, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_resetParserContext(__pyx_v_self);
 
-  /* "src/lxml/parser.pxi":582
+  /* "src/lxml/parser.pxi":583
  *             self._validator.disconnect()
  *         self._resetParserContext()
  *         self.clear()             # <<<<<<<<<<<<<<
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 582, __pyx_L1_error)
+  __Pyx_TraceLine(583,0,__PYX_ERR(2, 583, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 583, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":583
+  /* "src/lxml/parser.pxi":584
  *         self._resetParserContext()
  *         self.clear()
  *         self._doc = None             # <<<<<<<<<<<<<<
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  */
+  __Pyx_TraceLine(584,0,__PYX_ERR(2, 584, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_doc);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
   __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "src/lxml/parser.pxi":584
+  /* "src/lxml/parser.pxi":585
  *         self.clear()
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL             # <<<<<<<<<<<<<<
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_release_lock(self._lock)
  */
+  __Pyx_TraceLine(585,0,__PYX_ERR(2, 585, __pyx_L1_error))
   __pyx_v_self->_c_ctxt->sax->serror = NULL;
 
-  /* "src/lxml/parser.pxi":585
+  /* "src/lxml/parser.pxi":586
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
  *             python.PyThread_release_lock(self._lock)
  *         return 0
  */
+  __Pyx_TraceLine(586,0,__PYX_ERR(2, 586, __pyx_L1_error))
   __pyx_t_1 = (ENABLE_THREADING != 0);
   if (__pyx_t_1) {
   } else {
@@ -108177,16 +114871,17 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":586
+    /* "src/lxml/parser.pxi":587
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_release_lock(self._lock)             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+    __Pyx_TraceLine(587,0,__PYX_ERR(2, 587, __pyx_L1_error))
     PyThread_release_lock(__pyx_v_self->_lock);
 
-    /* "src/lxml/parser.pxi":585
+    /* "src/lxml/parser.pxi":586
  *         self._doc = None
  *         self._c_ctxt.sax.serror = NULL
  *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
@@ -108195,17 +114890,18 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":587
+  /* "src/lxml/parser.pxi":588
  *         if config.ENABLE_THREADING and self._lock is not NULL:
  *             python.PyThread_release_lock(self._lock)
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser,
  */
+  __Pyx_TraceLine(588,0,__PYX_ERR(2, 588, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":578
+  /* "src/lxml/parser.pxi":579
  *         return 0
  * 
  *     cdef int cleanup(self) except -1:             # <<<<<<<<<<<<<<
@@ -108218,11 +114914,12 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
   __Pyx_AddTraceback("lxml.etree._ParserContext.cleanup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":589
+/* "src/lxml/parser.pxi":590
  *         return 0
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -108233,6 +114930,7 @@ static int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_
 static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
   xmlDoc *__pyx_v_c_doc;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
@@ -108240,24 +114938,27 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_handleParseResult", 0);
+  __Pyx_TraceCall("_handleParseResult", __pyx_f[2], 590, 0, __PYX_ERR(2, 590, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":591
+  /* "src/lxml/parser.pxi":592
  *     cdef object _handleParseResult(self, _BaseParser parser,
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)             # <<<<<<<<<<<<<<
  *         if self._doc is not None and self._doc._c_doc is c_doc:
  *             return self._doc
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_self, __pyx_v_parser, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 591, __pyx_L1_error)
+  __Pyx_TraceLine(592,0,__PYX_ERR(2, 592, __pyx_L1_error))
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_self, __pyx_v_parser, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 592, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":592
+  /* "src/lxml/parser.pxi":593
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:             # <<<<<<<<<<<<<<
  *             return self._doc
  *         else:
  */
+  __Pyx_TraceLine(593,0,__PYX_ERR(2, 593, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -108270,19 +114971,20 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":593
+    /* "src/lxml/parser.pxi":594
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:
  *             return self._doc             # <<<<<<<<<<<<<<
  *         else:
  *             return _documentFactory(c_doc, parser)
  */
+    __Pyx_TraceLine(594,0,__PYX_ERR(2, 594, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->_doc));
     __pyx_r = ((PyObject *)__pyx_v_self->_doc);
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":592
+    /* "src/lxml/parser.pxi":593
  *                                    xmlDoc* result, filename):
  *         c_doc = self._handleParseResultDoc(parser, result, filename)
  *         if self._doc is not None and self._doc._c_doc is c_doc:             # <<<<<<<<<<<<<<
@@ -108291,23 +114993,24 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
  */
   }
 
-  /* "src/lxml/parser.pxi":595
+  /* "src/lxml/parser.pxi":596
  *             return self._doc
  *         else:
  *             return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
  */
+  __Pyx_TraceLine(596,0,__PYX_ERR(2, 596, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 595, __pyx_L1_error)
+    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 596, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_r = __pyx_t_5;
     __pyx_t_5 = 0;
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":589
+  /* "src/lxml/parser.pxi":590
  *         return 0
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -108322,11 +115025,12 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":597
+/* "src/lxml/parser.pxi":598
  *             return _documentFactory(c_doc, parser)
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -108337,41 +115041,46 @@ static PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct
 static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
   int __pyx_v_recover;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlDoc *__pyx_t_2;
   __Pyx_RefNannySetupContext("_handleParseResultDoc", 0);
+  __Pyx_TraceCall("_handleParseResultDoc", __pyx_f[2], 598, 0, __PYX_ERR(2, 598, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":599
+  /* "src/lxml/parser.pxi":600
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
  *                                        xmlDoc* result, filename) except NULL:
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         return _handleParseResult(self, self._c_ctxt, result,
  *                                   filename, recover,
  */
+  __Pyx_TraceLine(600,0,__PYX_ERR(2, 600, __pyx_L1_error))
   __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parser.pxi":602
+  /* "src/lxml/parser.pxi":603
  *         return _handleParseResult(self, self._c_ctxt, result,
  *                                   filename, recover,
  *                                   free_doc=self._doc is None)             # <<<<<<<<<<<<<<
  * 
  * cdef _initParserContext(_ParserContext context,
  */
+  __Pyx_TraceLine(603,0,__PYX_ERR(2, 603, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
 
-  /* "src/lxml/parser.pxi":600
+  /* "src/lxml/parser.pxi":601
  *                                        xmlDoc* result, filename) except NULL:
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         return _handleParseResult(self, self._c_ctxt, result,             # <<<<<<<<<<<<<<
  *                                   filename, recover,
  *                                   free_doc=self._doc is None)
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover, __pyx_t_1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(2, 600, __pyx_L1_error)
+  __Pyx_TraceLine(601,0,__PYX_ERR(2, 601, __pyx_L1_error))
+  __pyx_t_2 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover, __pyx_t_1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(2, 601, __pyx_L1_error)
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":597
+  /* "src/lxml/parser.pxi":598
  *             return _documentFactory(c_doc, parser)
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -108384,11 +115093,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
   __Pyx_AddTraceback("lxml.etree._ParserContext._handleParseResultDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":604
+/* "src/lxml/parser.pxi":605
  *                                   free_doc=self._doc is None)
  * 
  * cdef _initParserContext(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -108398,42 +115108,47 @@ static xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struc
 
 static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_resolvers, xmlParserCtxt *__pyx_v_c_ctxt) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_initParserContext", 0);
+  __Pyx_TraceCall("_initParserContext", __pyx_f[2], 605, 0, __PYX_ERR(2, 605, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":607
+  /* "src/lxml/parser.pxi":608
  *                         _ResolverRegistry resolvers,
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)             # <<<<<<<<<<<<<<
  *     if c_ctxt is not NULL:
  *         context._initParserContext(c_ctxt)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), __pyx_v_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 607, __pyx_L1_error)
+  __Pyx_TraceLine(608,0,__PYX_ERR(2, 608, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), __pyx_v_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 608, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":608
+  /* "src/lxml/parser.pxi":609
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
  *         context._initParserContext(c_ctxt)
  * 
  */
+  __Pyx_TraceLine(609,0,__PYX_ERR(2, 609, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":609
+    /* "src/lxml/parser.pxi":610
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:
  *         context._initParserContext(c_ctxt)             # <<<<<<<<<<<<<<
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:
  */
+    __Pyx_TraceLine(610,0,__PYX_ERR(2, 610, __pyx_L1_error))
     ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_initParserContext(__pyx_v_context, __pyx_v_c_ctxt);
 
-    /* "src/lxml/parser.pxi":608
+    /* "src/lxml/parser.pxi":609
  *                         xmlparser.xmlParserCtxt* c_ctxt):
  *     _initResolverContext(context, resolvers)
  *     if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -108442,7 +115157,7 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":604
+  /* "src/lxml/parser.pxi":605
  *                                   free_doc=self._doc is None)
  * 
  * cdef _initParserContext(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -108459,11 +115174,12 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":611
+/* "src/lxml/parser.pxi":612
  *         context._initParserContext(c_ctxt)
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -108472,22 +115188,25 @@ static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_
  */
 
 static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__parser_context, xmlError *__pyx_v_error) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   #ifdef WITH_THREAD
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_forwardParserError", 0);
+  __Pyx_TraceCall("_forwardParserError", __pyx_f[2], 612, 0, __PYX_ERR(2, 612, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":612
+  /* "src/lxml/parser.pxi":613
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)             # <<<<<<<<<<<<<<
  * 
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
  */
+  __Pyx_TraceLine(613,0,__PYX_ERR(2, 613, __pyx_L1_error))
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v__parser_context->_private)->_error_log), __pyx_v_error);
 
-  /* "src/lxml/parser.pxi":611
+  /* "src/lxml/parser.pxi":612
  *         context._initParserContext(c_ctxt)
  * 
  * cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -108496,13 +115215,18 @@ static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__par
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._forwardParserError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/parser.pxi":614
+/* "src/lxml/parser.pxi":615
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)
  * 
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -108511,16 +115235,19 @@ static void __pyx_f_4lxml_5etree__forwardParserError(xmlParserCtxt *__pyx_v__par
  */
 
 static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xmlError *__pyx_v_error) {
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("_receiveParserError", __pyx_f[2], 615, 1, __PYX_ERR(2, 615, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":616
+  /* "src/lxml/parser.pxi":617
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:             # <<<<<<<<<<<<<<
  *             _forwardError(NULL, error)
  *         else:
  */
+  __Pyx_TraceLine(617,1,__PYX_ERR(2, 617, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_context == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -108532,16 +115259,17 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":617
+    /* "src/lxml/parser.pxi":618
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:
  *             _forwardError(NULL, error)             # <<<<<<<<<<<<<<
  *         else:
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  */
+    __Pyx_TraceLine(618,1,__PYX_ERR(2, 618, __pyx_L1_error))
     __pyx_f_4lxml_5etree__forwardError(NULL, __pyx_v_error);
 
-    /* "src/lxml/parser.pxi":616
+    /* "src/lxml/parser.pxi":617
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
  *     if __DEBUG:
  *         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:             # <<<<<<<<<<<<<<
@@ -108551,19 +115279,20 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":619
+  /* "src/lxml/parser.pxi":620
  *             _forwardError(NULL, error)
  *         else:
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)             # <<<<<<<<<<<<<<
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  */
+  __Pyx_TraceLine(620,1,__PYX_ERR(2, 620, __pyx_L1_error))
   /*else*/ {
     __pyx_f_4lxml_5etree__forwardParserError(((xmlParserCtxt *)__pyx_v_c_context), __pyx_v_error);
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":614
+  /* "src/lxml/parser.pxi":615
  *     (<_ParserContext>_parser_context._private)._error_log._receive(error)
  * 
  * cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -108572,9 +115301,14 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveParserError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
-/* "src/lxml/parser.pxi":621
+/* "src/lxml/parser.pxi":622
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
@@ -108588,6 +115322,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   int __pyx_v_line;
   int __pyx_v_column;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -108608,15 +115343,17 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   PyObject *__pyx_t_17 = NULL;
   PyObject *__pyx_t_18 = NULL;
   __Pyx_RefNannySetupContext("_raiseParseError", 0);
+  __Pyx_TraceCall("_raiseParseError", __pyx_f[2], 622, 0, __PYX_ERR(2, 622, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_filename);
 
-  /* "src/lxml/parser.pxi":623
+  /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
  */
+  __Pyx_TraceLine(624,0,__PYX_ERR(2, 624, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_filename != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -108625,68 +115362,73 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":624
+  /* "src/lxml/parser.pxi":625
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:             # <<<<<<<<<<<<<<
  *         if isinstance(filename, bytes):
  *             filename = _decodeFilenameWithLength(
  */
+  __Pyx_TraceLine(625,0,__PYX_ERR(2, 625, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_ctxt->lastError.domain == XML_FROM_IO) != 0);
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":623
+  /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
  */
+  __Pyx_TraceLine(624,0,__PYX_ERR(2, 624, __pyx_L1_error))
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":625
+    /* "src/lxml/parser.pxi":626
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))
  */
+    __Pyx_TraceLine(626,0,__PYX_ERR(2, 626, __pyx_L1_error))
     __pyx_t_1 = PyBytes_Check(__pyx_v_filename); 
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":627
+      /* "src/lxml/parser.pxi":628
  *         if isinstance(filename, bytes):
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))             # <<<<<<<<<<<<<<
  *         if ctxt.lastError.message is not NULL:
  *             try:
  */
+      __Pyx_TraceLine(628,0,__PYX_ERR(2, 628, __pyx_L1_error))
       if (unlikely(__pyx_v_filename == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-        __PYX_ERR(2, 627, __pyx_L1_error)
+        __PYX_ERR(2, 628, __pyx_L1_error)
       }
-      __pyx_t_4 = __Pyx_PyBytes_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(2, 627, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyBytes_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(2, 628, __pyx_L1_error)
       if (unlikely(__pyx_v_filename == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-        __PYX_ERR(2, 627, __pyx_L1_error)
+        __PYX_ERR(2, 628, __pyx_L1_error)
       }
-      __pyx_t_5 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(2, 627, __pyx_L1_error)
+      __pyx_t_5 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(2, 628, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":626
+      /* "src/lxml/parser.pxi":627
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
  *             filename = _decodeFilenameWithLength(             # <<<<<<<<<<<<<<
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  */
-      __pyx_t_6 = __pyx_f_4lxml_5etree__decodeFilenameWithLength(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 626, __pyx_L1_error)
+      __Pyx_TraceLine(627,0,__PYX_ERR(2, 627, __pyx_L1_error))
+      __pyx_t_6 = __pyx_f_4lxml_5etree__decodeFilenameWithLength(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/parser.pxi":625
+      /* "src/lxml/parser.pxi":626
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -108695,23 +115437,25 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
     }
 
-    /* "src/lxml/parser.pxi":628
+    /* "src/lxml/parser.pxi":629
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
  *             try:
  *                 message = (ctxt.lastError.message).decode('utf-8')
  */
+    __Pyx_TraceLine(629,0,__PYX_ERR(2, 629, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_ctxt->lastError.message != NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":629
+      /* "src/lxml/parser.pxi":630
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
  *                 message = (ctxt.lastError.message).decode('utf-8')
  *             except UnicodeDecodeError:
  */
+      __Pyx_TraceLine(630,0,__PYX_ERR(2, 630, __pyx_L8_error))
       {
         __Pyx_PyThreadState_declare
         __Pyx_PyThreadState_assign
@@ -108721,21 +115465,22 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __Pyx_XGOTREF(__pyx_t_9);
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":630
+          /* "src/lxml/parser.pxi":631
  *         if ctxt.lastError.message is not NULL:
  *             try:
  *                 message = (ctxt.lastError.message).decode('utf-8')             # <<<<<<<<<<<<<<
  *             except UnicodeDecodeError:
  *                 # the filename may be in there => play it safe
  */
+          __Pyx_TraceLine(631,0,__PYX_ERR(2, 631, __pyx_L8_error))
           __pyx_t_10 = __pyx_v_ctxt->lastError.message;
-          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 630, __pyx_L8_error)
+          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 631, __pyx_L8_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_6);
           __pyx_v_message = __pyx_t_6;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "src/lxml/parser.pxi":629
+          /* "src/lxml/parser.pxi":630
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -108750,30 +115495,32 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_L8_error:;
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-        /* "src/lxml/parser.pxi":631
+        /* "src/lxml/parser.pxi":632
  *             try:
  *                 message = (ctxt.lastError.message).decode('utf-8')
  *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
  *                 # the filename may be in there => play it safe
  *                 message = (ctxt.lastError.message).decode('iso8859-1')
  */
+        __Pyx_TraceLine(632,0,__PYX_ERR(2, 632, __pyx_L10_except_error))
         __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
         if (__pyx_t_11) {
           __Pyx_AddTraceback("lxml.etree._raiseParseError", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(2, 631, __pyx_L10_except_error)
+          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(2, 632, __pyx_L10_except_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GOTREF(__pyx_t_13);
 
-          /* "src/lxml/parser.pxi":633
+          /* "src/lxml/parser.pxi":634
  *             except UnicodeDecodeError:
  *                 # the filename may be in there => play it safe
  *                 message = (ctxt.lastError.message).decode('iso8859-1')             # <<<<<<<<<<<<<<
  *             message = f"Error reading file '{filename}': {message.strip()}"
  *         else:
  */
+          __Pyx_TraceLine(634,0,__PYX_ERR(2, 634, __pyx_L10_except_error))
           __pyx_t_10 = __pyx_v_ctxt->lastError.message;
-          __pyx_t_14 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 633, __pyx_L10_except_error)
+          __pyx_t_14 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 634, __pyx_L10_except_error)
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_INCREF(__pyx_t_14);
           __Pyx_XDECREF_SET(__pyx_v_message, __pyx_t_14);
@@ -108786,7 +115533,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         goto __pyx_L10_except_error;
         __pyx_L10_except_error:;
 
-        /* "src/lxml/parser.pxi":629
+        /* "src/lxml/parser.pxi":630
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -108806,14 +115553,15 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         __pyx_L13_try_end:;
       }
 
-      /* "src/lxml/parser.pxi":634
+      /* "src/lxml/parser.pxi":635
  *                 # the filename may be in there => play it safe
  *                 message = (ctxt.lastError.message).decode('iso8859-1')
  *             message = f"Error reading file '{filename}': {message.strip()}"             # <<<<<<<<<<<<<<
  *         else:
  *             message = f"Error reading '{filename}'"
  */
-      __pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 634, __pyx_L1_error)
+      __Pyx_TraceLine(635,0,__PYX_ERR(2, 635, __pyx_L1_error))
+      __pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_t_5 = 0;
       __pyx_t_15 = 127;
@@ -108821,18 +115569,18 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __pyx_t_5 += 20;
       __Pyx_GIVEREF(__pyx_kp_u_Error_reading_file);
       PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_kp_u_Error_reading_file);
-      __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_filename, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 634, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_filename, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) : __pyx_t_15;
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12);
       __pyx_t_12 = 0;
-      __Pyx_INCREF(__pyx_kp_u__72);
+      __Pyx_INCREF(__pyx_kp_u__234);
       __pyx_t_5 += 3;
-      __Pyx_GIVEREF(__pyx_kp_u__72);
-      PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_kp_u__72);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 634, __pyx_L1_error)
+      __Pyx_GIVEREF(__pyx_kp_u__234);
+      PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_kp_u__234);
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_14 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -108845,14 +115593,14 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
         }
       }
       if (__pyx_t_14) {
-        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 634, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 635, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       } else {
-        __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 634, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 635, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 634, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
@@ -108860,13 +115608,13 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __Pyx_GIVEREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_t_6);
       __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_13, 4, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 634, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_13, 4, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/parser.pxi":628
+      /* "src/lxml/parser.pxi":629
  *             filename = _decodeFilenameWithLength(
  *                 <bytes>filename, len(<bytes>filename))
  *         if ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -108876,15 +115624,16 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":636
+    /* "src/lxml/parser.pxi":637
  *             message = f"Error reading file '{filename}': {message.strip()}"
  *         else:
  *             message = f"Error reading '{filename}'"             # <<<<<<<<<<<<<<
  *         raise IOError, message
  *     elif error_log:
  */
+    __Pyx_TraceLine(637,0,__PYX_ERR(2, 637, __pyx_L1_error))
     /*else*/ {
-      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 636, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 637, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_5 = 0;
       __pyx_t_15 = 127;
@@ -108892,18 +115641,18 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __pyx_t_5 += 15;
       __Pyx_GIVEREF(__pyx_kp_u_Error_reading);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Error_reading);
-      __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_filename, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 636, __pyx_L1_error)
+      __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_filename, __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 637, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) : __pyx_t_15;
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13);
       __Pyx_GIVEREF(__pyx_t_13);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_13);
       __pyx_t_13 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_5 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__31);
-      __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 636, __pyx_L1_error)
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__60);
+      __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 637, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_message = __pyx_t_13;
@@ -108911,17 +115660,18 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":637
+    /* "src/lxml/parser.pxi":638
  *         else:
  *             message = f"Error reading '{filename}'"
  *         raise IOError, message             # <<<<<<<<<<<<<<
  *     elif error_log:
  *         raise error_log._buildParseException(
  */
+    __Pyx_TraceLine(638,0,__PYX_ERR(2, 638, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_IOError, __pyx_v_message, 0, 0);
-    __PYX_ERR(2, 637, __pyx_L1_error)
+    __PYX_ERR(2, 638, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":623
+    /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
  *                           _ErrorLog error_log) except 0:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
@@ -108930,41 +115680,44 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":638
+  /* "src/lxml/parser.pxi":639
  *             message = f"Error reading '{filename}'"
  *         raise IOError, message
  *     elif error_log:             # <<<<<<<<<<<<<<
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_error_log)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 638, __pyx_L1_error)
+  __Pyx_TraceLine(639,0,__PYX_ERR(2, 639, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_error_log)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 639, __pyx_L1_error)
   if (unlikely(__pyx_t_3)) {
 
-    /* "src/lxml/parser.pxi":640
+    /* "src/lxml/parser.pxi":641
  *     elif error_log:
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")             # <<<<<<<<<<<<<<
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()
  */
-    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 640, __pyx_L1_error)
+    __Pyx_TraceLine(641,0,__PYX_ERR(2, 641, __pyx_L1_error))
+    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 641, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_13);
 
-    /* "src/lxml/parser.pxi":639
+    /* "src/lxml/parser.pxi":640
  *         raise IOError, message
  *     elif error_log:
  *         raise error_log._buildParseException(             # <<<<<<<<<<<<<<
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:
  */
-    __pyx_t_6 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_error_log), __pyx_t_13, __pyx_kp_u_Document_is_not_well_formed); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 639, __pyx_L1_error)
+    __Pyx_TraceLine(640,0,__PYX_ERR(2, 640, __pyx_L1_error))
+    __pyx_t_6 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_error_log), __pyx_t_13, __pyx_kp_u_Document_is_not_well_formed); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 640, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __PYX_ERR(2, 639, __pyx_L1_error)
+    __PYX_ERR(2, 640, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":638
+    /* "src/lxml/parser.pxi":639
  *             message = f"Error reading '{filename}'"
  *         raise IOError, message
  *     elif error_log:             # <<<<<<<<<<<<<<
@@ -108973,26 +115726,28 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":641
+  /* "src/lxml/parser.pxi":642
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
  *         message = (ctxt.lastError.message).strip()
  *         code = ctxt.lastError.code
  */
+  __Pyx_TraceLine(642,0,__PYX_ERR(2, 642, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_ctxt->lastError.message != NULL) != 0);
   if (likely(__pyx_t_3)) {
 
-    /* "src/lxml/parser.pxi":642
+    /* "src/lxml/parser.pxi":643
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()             # <<<<<<<<<<<<<<
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line
  */
-    __pyx_t_13 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 642, __pyx_L1_error)
+    __Pyx_TraceLine(643,0,__PYX_ERR(2, 643, __pyx_L1_error))
+    __pyx_t_13 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 643, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_strip); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 642, __pyx_L1_error)
+    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_strip); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 643, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __pyx_t_13 = NULL;
@@ -109006,64 +115761,69 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       }
     }
     if (__pyx_t_13) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 642, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 643, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     } else {
-      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 642, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 643, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __pyx_v_message = __pyx_t_6;
     __pyx_t_6 = 0;
 
-    /* "src/lxml/parser.pxi":643
+    /* "src/lxml/parser.pxi":644
  *     elif ctxt.lastError.message is not NULL:
  *         message = (ctxt.lastError.message).strip()
  *         code = ctxt.lastError.code             # <<<<<<<<<<<<<<
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2
  */
+    __Pyx_TraceLine(644,0,__PYX_ERR(2, 644, __pyx_L1_error))
     __pyx_t_11 = __pyx_v_ctxt->lastError.code;
     __pyx_v_code = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":644
+    /* "src/lxml/parser.pxi":645
  *         message = (ctxt.lastError.message).strip()
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line             # <<<<<<<<<<<<<<
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:
  */
+    __Pyx_TraceLine(645,0,__PYX_ERR(2, 645, __pyx_L1_error))
     __pyx_t_11 = __pyx_v_ctxt->lastError.line;
     __pyx_v_line = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":645
+    /* "src/lxml/parser.pxi":646
  *         code = ctxt.lastError.code
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2             # <<<<<<<<<<<<<<
  *         if ctxt.lastError.line > 0:
  *             message = f"line {line}: {message}"
  */
+    __Pyx_TraceLine(646,0,__PYX_ERR(2, 646, __pyx_L1_error))
     __pyx_t_11 = __pyx_v_ctxt->lastError.int2;
     __pyx_v_column = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":646
+    /* "src/lxml/parser.pxi":647
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:             # <<<<<<<<<<<<<<
  *             message = f"line {line}: {message}"
  *         raise XMLSyntaxError(message, code, line, column, filename)
  */
+    __Pyx_TraceLine(647,0,__PYX_ERR(2, 647, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_ctxt->lastError.line > 0) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/parser.pxi":647
+      /* "src/lxml/parser.pxi":648
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:
  *             message = f"line {line}: {message}"             # <<<<<<<<<<<<<<
  *         raise XMLSyntaxError(message, code, line, column, filename)
  *     else:
  */
-      __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 647, __pyx_L1_error)
+      __Pyx_TraceLine(648,0,__PYX_ERR(2, 648, __pyx_L1_error))
+      __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 648, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_5 = 0;
       __pyx_t_15 = 127;
@@ -109071,30 +115831,30 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __pyx_t_5 += 5;
       __Pyx_GIVEREF(__pyx_kp_u_line_3);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_line_3);
-      __pyx_t_12 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 647, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_12);
       __pyx_t_12 = 0;
-      __Pyx_INCREF(__pyx_kp_u__25);
+      __Pyx_INCREF(__pyx_kp_u__33);
       __pyx_t_5 += 2;
-      __Pyx_GIVEREF(__pyx_kp_u__25);
-      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__25);
-      __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 647, __pyx_L1_error)
+      __Pyx_GIVEREF(__pyx_kp_u__33);
+      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__33);
+      __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) : __pyx_t_15;
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_12);
       __pyx_t_12 = 0;
-      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 647, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_6, 4, __pyx_t_5, __pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_12);
       __pyx_t_12 = 0;
 
-      /* "src/lxml/parser.pxi":646
+      /* "src/lxml/parser.pxi":647
  *         line = ctxt.lastError.line
  *         column = ctxt.lastError.int2
  *         if ctxt.lastError.line > 0:             # <<<<<<<<<<<<<<
@@ -109103,20 +115863,21 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
     }
 
-    /* "src/lxml/parser.pxi":648
+    /* "src/lxml/parser.pxi":649
  *         if ctxt.lastError.line > 0:
  *             message = f"line {line}: {message}"
  *         raise XMLSyntaxError(message, code, line, column, filename)             # <<<<<<<<<<<<<<
  *     else:
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 648, __pyx_L1_error)
+    __Pyx_TraceLine(649,0,__PYX_ERR(2, 649, __pyx_L1_error))
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 649, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 648, __pyx_L1_error)
+    __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 649, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 648, __pyx_L1_error)
+    __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 649, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_14);
-    __pyx_t_16 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 648, __pyx_L1_error)
+    __pyx_t_16 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 649, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_16);
     __pyx_t_17 = NULL;
     __pyx_t_11 = 0;
@@ -109133,7 +115894,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_6)) {
       PyObject *__pyx_temp[6] = {__pyx_t_17, __pyx_v_message, __pyx_t_13, __pyx_t_14, __pyx_t_16, __pyx_v_filename};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 649, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -109144,7 +115905,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
       PyObject *__pyx_temp[6] = {__pyx_t_17, __pyx_v_message, __pyx_t_13, __pyx_t_14, __pyx_t_16, __pyx_v_filename};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 649, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -109153,7 +115914,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     } else
     #endif
     {
-      __pyx_t_18 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 648, __pyx_L1_error)
+      __pyx_t_18 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 649, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_18);
       if (__pyx_t_17) {
         __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
@@ -109173,16 +115934,16 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __pyx_t_13 = 0;
       __pyx_t_14 = 0;
       __pyx_t_16 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_18, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 648, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_18, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 649, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_12, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __PYX_ERR(2, 648, __pyx_L1_error)
+    __PYX_ERR(2, 649, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":641
+    /* "src/lxml/parser.pxi":642
  *         raise error_log._buildParseException(
  *             XMLSyntaxError, u"Document is not well formed")
  *     elif ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
@@ -109191,26 +115952,28 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  */
   }
 
-  /* "src/lxml/parser.pxi":650
+  /* "src/lxml/parser.pxi":651
  *         raise XMLSyntaxError(message, code, line, column, filename)
  *     else:
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,             # <<<<<<<<<<<<<<
  *                              filename)
  * 
  */
+  __Pyx_TraceLine(651,0,__PYX_ERR(2, 651, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 650, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 651, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_18 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 650, __pyx_L1_error)
+    __pyx_t_18 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_18)) __PYX_ERR(2, 651, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_18);
 
-    /* "src/lxml/parser.pxi":651
+    /* "src/lxml/parser.pxi":652
  *     else:
  *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,
  *                              filename)             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _handleParseResult(_ParserContext context,
  */
+    __Pyx_TraceLine(652,0,__PYX_ERR(2, 652, __pyx_L1_error))
     __pyx_t_16 = NULL;
     __pyx_t_11 = 0;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -109226,7 +115989,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_6)) {
       PyObject *__pyx_temp[6] = {__pyx_t_16, Py_None, __pyx_t_18, __pyx_int_0, __pyx_int_0, __pyx_v_filename};
-      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 650, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 651, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
@@ -109235,14 +115998,14 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
       PyObject *__pyx_temp[6] = {__pyx_t_16, Py_None, __pyx_t_18, __pyx_int_0, __pyx_int_0, __pyx_v_filename};
-      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 650, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 651, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
     } else
     #endif
     {
-      __pyx_t_14 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 650, __pyx_L1_error)
+      __pyx_t_14 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 651, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_16) {
         __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
@@ -109262,17 +116025,17 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
       __Pyx_GIVEREF(__pyx_v_filename);
       PyTuple_SET_ITEM(__pyx_t_14, 4+__pyx_t_11, __pyx_v_filename);
       __pyx_t_18 = 0;
-      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 650, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 651, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_12, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-    __PYX_ERR(2, 650, __pyx_L1_error)
+    __PYX_ERR(2, 651, __pyx_L1_error)
   }
 
-  /* "src/lxml/parser.pxi":621
+  /* "src/lxml/parser.pxi":622
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
@@ -109293,11 +116056,12 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   __pyx_r = 0;
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":653
+/* "src/lxml/parser.pxi":654
  *                              filename)
  * 
  * cdef xmlDoc* _handleParseResult(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -109309,6 +116073,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   int __pyx_v_well_formed;
   PyObject *__pyx_v_error = NULL;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -109322,27 +116087,30 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   PyObject *__pyx_t_10 = NULL;
   int __pyx_t_11;
   __Pyx_RefNannySetupContext("_handleParseResult", 0);
+  __Pyx_TraceCall("_handleParseResult", __pyx_f[2], 654, 0, __PYX_ERR(2, 654, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":658
+  /* "src/lxml/parser.pxi":659
  *                                 bint recover, bint free_doc) except NULL:
  *     cdef bint well_formed
  *     if result is not NULL:             # <<<<<<<<<<<<<<
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  * 
  */
+  __Pyx_TraceLine(659,0,__PYX_ERR(2, 659, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":659
+    /* "src/lxml/parser.pxi":660
  *     cdef bint well_formed
  *     if result is not NULL:
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
  * 
  *     if c_ctxt.myDoc is not NULL:
  */
+    __Pyx_TraceLine(660,0,__PYX_ERR(2, 660, __pyx_L1_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-    /* "src/lxml/parser.pxi":658
+    /* "src/lxml/parser.pxi":659
  *                                 bint recover, bint free_doc) except NULL:
  *     cdef bint well_formed
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -109351,45 +116119,49 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":661
+  /* "src/lxml/parser.pxi":662
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  * 
  *     if c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
  *         if c_ctxt.myDoc is not result:
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  */
+  __Pyx_TraceLine(662,0,__PYX_ERR(2, 662, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->myDoc != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":662
+    /* "src/lxml/parser.pxi":663
  * 
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  *             tree.xmlFreeDoc(c_ctxt.myDoc)
  */
+    __Pyx_TraceLine(663,0,__PYX_ERR(2, 663, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_ctxt->myDoc != __pyx_v_result) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":663
+      /* "src/lxml/parser.pxi":664
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
  *             tree.xmlFreeDoc(c_ctxt.myDoc)
  *         c_ctxt.myDoc = NULL
  */
+      __Pyx_TraceLine(664,0,__PYX_ERR(2, 664, __pyx_L1_error))
       __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_c_ctxt->myDoc);
 
-      /* "src/lxml/parser.pxi":664
+      /* "src/lxml/parser.pxi":665
  *         if c_ctxt.myDoc is not result:
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  *             tree.xmlFreeDoc(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
  *         c_ctxt.myDoc = NULL
  * 
  */
+      __Pyx_TraceLine(665,0,__PYX_ERR(2, 665, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_c_ctxt->myDoc);
 
-      /* "src/lxml/parser.pxi":662
+      /* "src/lxml/parser.pxi":663
  * 
  *     if c_ctxt.myDoc is not NULL:
  *         if c_ctxt.myDoc is not result:             # <<<<<<<<<<<<<<
@@ -109398,16 +116170,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":665
+    /* "src/lxml/parser.pxi":666
  *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
  *             tree.xmlFreeDoc(c_ctxt.myDoc)
  *         c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
  * 
  *     if result is not NULL:
  */
+    __Pyx_TraceLine(666,0,__PYX_ERR(2, 666, __pyx_L1_error))
     __pyx_v_c_ctxt->myDoc = NULL;
 
-    /* "src/lxml/parser.pxi":661
+    /* "src/lxml/parser.pxi":662
  *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  * 
  *     if c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
@@ -109416,23 +116189,25 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":667
+  /* "src/lxml/parser.pxi":668
  *         c_ctxt.myDoc = NULL
  * 
  *     if result is not NULL:             # <<<<<<<<<<<<<<
  *         if (context._validator is not None and
  *                 not context._validator.isvalid()):
  */
+  __Pyx_TraceLine(668,0,__PYX_ERR(2, 668, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":668
+    /* "src/lxml/parser.pxi":669
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(2, 669, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_context->_validator) != Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -109441,36 +116216,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L8_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":669
+    /* "src/lxml/parser.pxi":670
  *     if result is not NULL:
  *         if (context._validator is not None and
  *                 not context._validator.isvalid()):             # <<<<<<<<<<<<<<
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  */
+    __Pyx_TraceLine(670,0,__PYX_ERR(2, 670, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(__pyx_v_context->_validator) != 0)) != 0);
     __pyx_t_1 = __pyx_t_3;
     __pyx_L8_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":668
+    /* "src/lxml/parser.pxi":669
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(2, 669, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":670
+      /* "src/lxml/parser.pxi":671
  *         if (context._validator is not None and
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...             # <<<<<<<<<<<<<<
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  */
+      __Pyx_TraceLine(671,0,__PYX_ERR(2, 671, __pyx_L1_error))
       __pyx_v_well_formed = 0;
 
-      /* "src/lxml/parser.pxi":668
+      /* "src/lxml/parser.pxi":669
  * 
  *     if result is not NULL:
  *         if (context._validator is not None and             # <<<<<<<<<<<<<<
@@ -109480,13 +116258,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":671
+    /* "src/lxml/parser.pxi":672
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log
  */
+    __Pyx_TraceLine(672,0,__PYX_ERR(2, 672, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_v_c_ctxt->wellFormed != 0)) != 0);
     if (__pyx_t_3) {
     } else {
@@ -109500,13 +116279,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L10_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":672
+    /* "src/lxml/parser.pxi":673
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and             # <<<<<<<<<<<<<<
  *                 [1 for error in context._error_log
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):
  */
+    __Pyx_TraceLine(673,0,__PYX_ERR(2, 673, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_ctxt->charset == XML_CHAR_ENCODING_8859_1) != 0);
     if (__pyx_t_3) {
     } else {
@@ -109514,39 +116294,40 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L10_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":673
+    /* "src/lxml/parser.pxi":674
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log             # <<<<<<<<<<<<<<
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):
  *             # An encoding error occurred and libxml2 switched from UTF-8
  */
-    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 673, __pyx_L1_error)
+    __Pyx_TraceLine(674,0,__PYX_ERR(2, 674, __pyx_L1_error))
+    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 674, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(((PyObject *)__pyx_v_context->_error_log))) || PyTuple_CheckExact(((PyObject *)__pyx_v_context->_error_log))) {
       __pyx_t_5 = ((PyObject *)__pyx_v_context->_error_log); __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_context->_error_log)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 673, __pyx_L1_error)
+      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_context->_error_log)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 674, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 673, __pyx_L1_error)
+      __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 674, __pyx_L1_error)
     }
     for (;;) {
       if (likely(!__pyx_t_7)) {
         if (likely(PyList_CheckExact(__pyx_t_5))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 673, __pyx_L1_error)
+          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 674, __pyx_L1_error)
           #else
-          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 673, __pyx_L1_error)
+          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 674, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 673, __pyx_L1_error)
+          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 674, __pyx_L1_error)
           #else
-          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 673, __pyx_L1_error)
+          __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 674, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
           #endif
         }
@@ -109556,7 +116337,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(2, 673, __pyx_L1_error)
+            else __PYX_ERR(2, 674, __pyx_L1_error)
           }
           break;
         }
@@ -109565,36 +116346,38 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       __Pyx_XDECREF_SET(__pyx_v_error, __pyx_t_8);
       __pyx_t_8 = 0;
 
-      /* "src/lxml/parser.pxi":674
+      /* "src/lxml/parser.pxi":675
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):             # <<<<<<<<<<<<<<
  *             # An encoding error occurred and libxml2 switched from UTF-8
  *             # input to (undecoded) Latin-1, at some arbitrary point in the
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 674, __pyx_L1_error)
+      __Pyx_TraceLine(675,0,__PYX_ERR(2, 675, __pyx_L1_error))
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 675, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 674, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 675, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ERR_INVALID_CHAR); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 674, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ERR_INVALID_CHAR); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 675, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 674, __pyx_L1_error)
+      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 675, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 674, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(2, 675, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       if (__pyx_t_3) {
-        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_int_1))) __PYX_ERR(2, 673, __pyx_L1_error)
+        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_int_1))) __PYX_ERR(2, 674, __pyx_L1_error)
       }
 
-      /* "src/lxml/parser.pxi":673
+      /* "src/lxml/parser.pxi":674
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log             # <<<<<<<<<<<<<<
  *                  if error.type == ErrorTypes.ERR_INVALID_CHAR]):
  *             # An encoding error occurred and libxml2 switched from UTF-8
  */
+      __Pyx_TraceLine(674,0,__PYX_ERR(2, 674, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_3 = (PyList_GET_SIZE(__pyx_t_4) != 0);
@@ -109602,25 +116385,27 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_3;
     __pyx_L10_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":671
+    /* "src/lxml/parser.pxi":672
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
  *                 c_ctxt.charset == tree.XML_CHAR_ENCODING_8859_1 and
  *                 [1 for error in context._error_log
  */
+    __Pyx_TraceLine(672,0,__PYX_ERR(2, 672, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":679
+      /* "src/lxml/parser.pxi":680
  *             # document.  Better raise an error than allowing for a broken
  *             # tree with mixed encodings.
  *             well_formed = 0             # <<<<<<<<<<<<<<
  *         elif recover or (c_ctxt.wellFormed and
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  */
+      __Pyx_TraceLine(680,0,__PYX_ERR(2, 680, __pyx_L1_error))
       __pyx_v_well_formed = 0;
 
-      /* "src/lxml/parser.pxi":671
+      /* "src/lxml/parser.pxi":672
  *                 not context._validator.isvalid()):
  *             well_formed = 0  # actually not 'valid', but anyway ...
  *         elif (not c_ctxt.wellFormed and not c_ctxt.html and             # <<<<<<<<<<<<<<
@@ -109630,13 +116415,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":680
+    /* "src/lxml/parser.pxi":681
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  */
+    __Pyx_TraceLine(681,0,__PYX_ERR(2, 681, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_recover != 0);
     if (!__pyx_t_3) {
     } else {
@@ -109650,36 +116436,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L17_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":681
+    /* "src/lxml/parser.pxi":682
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):             # <<<<<<<<<<<<<<
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
  */
+    __Pyx_TraceLine(682,0,__PYX_ERR(2, 682, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_ctxt->lastError.level < XML_ERR_ERROR) != 0);
     __pyx_t_1 = __pyx_t_3;
     __pyx_L17_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":680
+    /* "src/lxml/parser.pxi":681
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  */
+    __Pyx_TraceLine(681,0,__PYX_ERR(2, 681, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":682
+      /* "src/lxml/parser.pxi":683
  *         elif recover or (c_ctxt.wellFormed and
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1             # <<<<<<<<<<<<<<
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
  *                  and context is not None:
  */
+      __Pyx_TraceLine(683,0,__PYX_ERR(2, 683, __pyx_L1_error))
       __pyx_v_well_formed = 1;
 
-      /* "src/lxml/parser.pxi":680
+      /* "src/lxml/parser.pxi":681
  *             # tree with mixed encodings.
  *             well_formed = 0
  *         elif recover or (c_ctxt.wellFormed and             # <<<<<<<<<<<<<<
@@ -109689,13 +116478,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":683
+    /* "src/lxml/parser.pxi":684
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  */
+    __Pyx_TraceLine(684,0,__PYX_ERR(2, 684, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_v_c_ctxt->replaceEntities != 0)) != 0);
     if (__pyx_t_3) {
     } else {
@@ -109703,13 +116493,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L20_bool_binop_done;
     }
 
-    /* "src/lxml/parser.pxi":684
+    /* "src/lxml/parser.pxi":685
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
  *                  and context is not None:             # <<<<<<<<<<<<<<
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  */
+    __Pyx_TraceLine(685,0,__PYX_ERR(2, 685, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_v_c_ctxt->validate != 0)) != 0);
     if (__pyx_t_3) {
     } else {
@@ -109721,23 +116512,25 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_2;
     __pyx_L20_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":683
+    /* "src/lxml/parser.pxi":684
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  */
+    __Pyx_TraceLine(684,0,__PYX_ERR(2, 684, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":686
+      /* "src/lxml/parser.pxi":687
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 686, __pyx_L1_error)
+      __Pyx_TraceLine(687,0,__PYX_ERR(2, 687, __pyx_L1_error))
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 687, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -109750,10 +116543,10 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         }
       }
       if (__pyx_t_9) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 686, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 687, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       } else {
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 686, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 687, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -109761,9 +116554,9 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
         __pyx_t_7 = NULL;
       } else {
-        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 686, __pyx_L1_error)
+        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 687, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 686, __pyx_L1_error)
+        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 687, __pyx_L1_error)
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       for (;;) {
@@ -109771,17 +116564,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           if (likely(PyList_CheckExact(__pyx_t_5))) {
             if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 686, __pyx_L1_error)
+            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 687, __pyx_L1_error)
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 686, __pyx_L1_error)
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 687, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           } else {
             if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 686, __pyx_L1_error)
+            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(2, 687, __pyx_L1_error)
             #else
-            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 686, __pyx_L1_error)
+            __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 687, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_4);
             #endif
           }
@@ -109791,7 +116584,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else __PYX_ERR(2, 686, __pyx_L1_error)
+              else __PYX_ERR(2, 687, __pyx_L1_error)
             }
             break;
           }
@@ -109800,24 +116593,25 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
         __Pyx_XDECREF_SET(__pyx_v_error, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "src/lxml/parser.pxi":687
+        /* "src/lxml/parser.pxi":688
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 687, __pyx_L1_error)
+        __Pyx_TraceLine(688,0,__PYX_ERR(2, 688, __pyx_L1_error))
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 688, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 687, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 688, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 687, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 688, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-        __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 687, __pyx_L1_error)
+        __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 688, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 687, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 688, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         if (__pyx_t_2) {
         } else {
@@ -109825,56 +116619,60 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
           goto __pyx_L26_bool_binop_done;
         }
 
-        /* "src/lxml/parser.pxi":688
+        /* "src/lxml/parser.pxi":689
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
  *                     well_formed = 0
  *                     break
  */
-        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 688, __pyx_L1_error)
+        __Pyx_TraceLine(689,0,__PYX_ERR(2, 689, __pyx_L1_error))
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 689, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 688, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 689, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 688, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 689, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 688, __pyx_L1_error)
+        __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 689, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 688, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 689, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __pyx_t_1 = __pyx_t_2;
         __pyx_L26_bool_binop_done:;
 
-        /* "src/lxml/parser.pxi":687
+        /* "src/lxml/parser.pxi":688
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0
  */
+        __Pyx_TraceLine(688,0,__PYX_ERR(2, 688, __pyx_L1_error))
         if (__pyx_t_1) {
 
-          /* "src/lxml/parser.pxi":689
+          /* "src/lxml/parser.pxi":690
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0             # <<<<<<<<<<<<<<
  *                     break
  *             else:
  */
+          __Pyx_TraceLine(690,0,__PYX_ERR(2, 690, __pyx_L1_error))
           __pyx_v_well_formed = 0;
 
-          /* "src/lxml/parser.pxi":690
+          /* "src/lxml/parser.pxi":691
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                     well_formed = 0
  *                     break             # <<<<<<<<<<<<<<
  *             else:
  *                 well_formed = 1
  */
+          __Pyx_TraceLine(691,0,__PYX_ERR(2, 691, __pyx_L1_error))
           goto __pyx_L24_break;
 
-          /* "src/lxml/parser.pxi":687
+          /* "src/lxml/parser.pxi":688
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -109883,37 +116681,40 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
         }
 
-        /* "src/lxml/parser.pxi":686
+        /* "src/lxml/parser.pxi":687
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
+        __Pyx_TraceLine(687,0,__PYX_ERR(2, 687, __pyx_L1_error))
       }
       /*else*/ {
 
-        /* "src/lxml/parser.pxi":692
+        /* "src/lxml/parser.pxi":693
  *                     break
  *             else:
  *                 well_formed = 1             # <<<<<<<<<<<<<<
  *         else:
  *             well_formed = 0
  */
+        __Pyx_TraceLine(693,0,__PYX_ERR(2, 693, __pyx_L1_error))
         __pyx_v_well_formed = 1;
       }
 
-      /* "src/lxml/parser.pxi":686
+      /* "src/lxml/parser.pxi":687
  *                  and context is not None:
  *             # in this mode, we ignore errors about undefined entities
  *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
+      __Pyx_TraceLine(687,0,__PYX_ERR(2, 687, __pyx_L1_error))
       __pyx_L24_break:;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":683
+      /* "src/lxml/parser.pxi":684
  *                          c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
  *             well_formed = 1
  *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
@@ -109923,48 +116724,52 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":694
+    /* "src/lxml/parser.pxi":695
  *                 well_formed = 1
  *         else:
  *             well_formed = 0             # <<<<<<<<<<<<<<
  * 
  *         if not well_formed:
  */
+    __Pyx_TraceLine(695,0,__PYX_ERR(2, 695, __pyx_L1_error))
     /*else*/ {
       __pyx_v_well_formed = 0;
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":696
+    /* "src/lxml/parser.pxi":697
  *             well_formed = 0
  * 
  *         if not well_formed:             # <<<<<<<<<<<<<<
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  */
+    __Pyx_TraceLine(697,0,__PYX_ERR(2, 697, __pyx_L1_error))
     __pyx_t_1 = ((!(__pyx_v_well_formed != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":697
+      /* "src/lxml/parser.pxi":698
  * 
  *         if not well_formed:
  *             if free_doc:             # <<<<<<<<<<<<<<
  *                 tree.xmlFreeDoc(result)
  *             result = NULL
  */
+      __Pyx_TraceLine(698,0,__PYX_ERR(2, 698, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_free_doc != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":698
+        /* "src/lxml/parser.pxi":699
  *         if not well_formed:
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *             result = NULL
  * 
  */
+        __Pyx_TraceLine(699,0,__PYX_ERR(2, 699, __pyx_L1_error))
         xmlFreeDoc(__pyx_v_result);
 
-        /* "src/lxml/parser.pxi":697
+        /* "src/lxml/parser.pxi":698
  * 
  *         if not well_formed:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -109973,16 +116778,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       }
 
-      /* "src/lxml/parser.pxi":699
+      /* "src/lxml/parser.pxi":700
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  *             result = NULL             # <<<<<<<<<<<<<<
  * 
  *     if context is not None and context._has_raised():
  */
+      __Pyx_TraceLine(700,0,__PYX_ERR(2, 700, __pyx_L1_error))
       __pyx_v_result = NULL;
 
-      /* "src/lxml/parser.pxi":696
+      /* "src/lxml/parser.pxi":697
  *             well_formed = 0
  * 
  *         if not well_formed:             # <<<<<<<<<<<<<<
@@ -109991,7 +116797,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":667
+    /* "src/lxml/parser.pxi":668
  *         c_ctxt.myDoc = NULL
  * 
  *     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -110000,13 +116806,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":701
+  /* "src/lxml/parser.pxi":702
  *             result = NULL
  * 
  *     if context is not None and context._has_raised():             # <<<<<<<<<<<<<<
  *         if result is not NULL:
  *             if free_doc:
  */
+  __Pyx_TraceLine(702,0,__PYX_ERR(2, 702, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_context) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -110014,42 +116821,45 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_t_1 = __pyx_t_3;
     goto __pyx_L32_bool_binop_done;
   }
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 701, __pyx_L1_error)
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 702, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_3 != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L32_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":702
+    /* "src/lxml/parser.pxi":703
  * 
  *     if context is not None and context._has_raised():
  *         if result is not NULL:             # <<<<<<<<<<<<<<
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  */
+    __Pyx_TraceLine(703,0,__PYX_ERR(2, 703, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":703
+      /* "src/lxml/parser.pxi":704
  *     if context is not None and context._has_raised():
  *         if result is not NULL:
  *             if free_doc:             # <<<<<<<<<<<<<<
  *                 tree.xmlFreeDoc(result)
  *             result = NULL
  */
+      __Pyx_TraceLine(704,0,__PYX_ERR(2, 704, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_free_doc != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":704
+        /* "src/lxml/parser.pxi":705
  *         if result is not NULL:
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *             result = NULL
  *         context._raise_if_stored()
  */
+        __Pyx_TraceLine(705,0,__PYX_ERR(2, 705, __pyx_L1_error))
         xmlFreeDoc(__pyx_v_result);
 
-        /* "src/lxml/parser.pxi":703
+        /* "src/lxml/parser.pxi":704
  *     if context is not None and context._has_raised():
  *         if result is not NULL:
  *             if free_doc:             # <<<<<<<<<<<<<<
@@ -110058,16 +116868,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       }
 
-      /* "src/lxml/parser.pxi":705
+      /* "src/lxml/parser.pxi":706
  *             if free_doc:
  *                 tree.xmlFreeDoc(result)
  *             result = NULL             # <<<<<<<<<<<<<<
  *         context._raise_if_stored()
  * 
  */
+      __Pyx_TraceLine(706,0,__PYX_ERR(2, 706, __pyx_L1_error))
       __pyx_v_result = NULL;
 
-      /* "src/lxml/parser.pxi":702
+      /* "src/lxml/parser.pxi":703
  * 
  *     if context is not None and context._has_raised():
  *         if result is not NULL:             # <<<<<<<<<<<<<<
@@ -110076,16 +116887,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":706
+    /* "src/lxml/parser.pxi":707
  *                 tree.xmlFreeDoc(result)
  *             result = NULL
  *         context._raise_if_stored()             # <<<<<<<<<<<<<<
  * 
  *     if result is NULL:
  */
-    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 706, __pyx_L1_error)
+    __Pyx_TraceLine(707,0,__PYX_ERR(2, 707, __pyx_L1_error))
+    __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 707, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":701
+    /* "src/lxml/parser.pxi":702
  *             result = NULL
  * 
  *     if context is not None and context._has_raised():             # <<<<<<<<<<<<<<
@@ -110094,40 +116906,43 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":708
+  /* "src/lxml/parser.pxi":709
  *         context._raise_if_stored()
  * 
  *     if result is NULL:             # <<<<<<<<<<<<<<
  *         if context is not None:
  *             _raiseParseError(c_ctxt, filename, context._error_log)
  */
+  __Pyx_TraceLine(709,0,__PYX_ERR(2, 709, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":709
+    /* "src/lxml/parser.pxi":710
  * 
  *     if result is NULL:
  *         if context is not None:             # <<<<<<<<<<<<<<
  *             _raiseParseError(c_ctxt, filename, context._error_log)
  *         else:
  */
+    __Pyx_TraceLine(710,0,__PYX_ERR(2, 710, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_context) != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":710
+      /* "src/lxml/parser.pxi":711
  *     if result is NULL:
  *         if context is not None:
  *             _raiseParseError(c_ctxt, filename, context._error_log)             # <<<<<<<<<<<<<<
  *         else:
  *             _raiseParseError(c_ctxt, filename, None)
  */
+      __Pyx_TraceLine(711,0,__PYX_ERR(2, 711, __pyx_L1_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_context->_error_log);
       __Pyx_INCREF(__pyx_t_5);
-      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5)); if (unlikely(__pyx_t_11 == ((int)0))) __PYX_ERR(2, 710, __pyx_L1_error)
+      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5)); if (unlikely(__pyx_t_11 == ((int)0))) __PYX_ERR(2, 711, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":709
+      /* "src/lxml/parser.pxi":710
  * 
  *     if result is NULL:
  *         if context is not None:             # <<<<<<<<<<<<<<
@@ -110137,19 +116952,20 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
       goto __pyx_L37;
     }
 
-    /* "src/lxml/parser.pxi":712
+    /* "src/lxml/parser.pxi":713
  *             _raiseParseError(c_ctxt, filename, context._error_log)
  *         else:
  *             _raiseParseError(c_ctxt, filename, None)             # <<<<<<<<<<<<<<
  *     else:
  *         if result.URL is NULL and filename is not None:
  */
+    __Pyx_TraceLine(713,0,__PYX_ERR(2, 713, __pyx_L1_error))
     /*else*/ {
-      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None)); if (unlikely(__pyx_t_11 == ((int)0))) __PYX_ERR(2, 712, __pyx_L1_error)
+      __pyx_t_11 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None)); if (unlikely(__pyx_t_11 == ((int)0))) __PYX_ERR(2, 713, __pyx_L1_error)
     }
     __pyx_L37:;
 
-    /* "src/lxml/parser.pxi":708
+    /* "src/lxml/parser.pxi":709
  *         context._raise_if_stored()
  * 
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -110159,13 +116975,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     goto __pyx_L36;
   }
 
-  /* "src/lxml/parser.pxi":714
+  /* "src/lxml/parser.pxi":715
  *             _raiseParseError(c_ctxt, filename, None)
  *     else:
  *         if result.URL is NULL and filename is not None:             # <<<<<<<<<<<<<<
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(2, 715, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = ((__pyx_v_result->URL == NULL) != 0);
     if (__pyx_t_1) {
@@ -110179,16 +116996,17 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     __pyx_L39_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":715
+      /* "src/lxml/parser.pxi":716
  *     else:
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))             # <<<<<<<<<<<<<<
  *         if result.encoding is NULL:
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  */
+      __Pyx_TraceLine(716,0,__PYX_ERR(2, 716, __pyx_L1_error))
       __pyx_v_result->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_filename));
 
-      /* "src/lxml/parser.pxi":714
+      /* "src/lxml/parser.pxi":715
  *             _raiseParseError(c_ctxt, filename, None)
  *     else:
  *         if result.URL is NULL and filename is not None:             # <<<<<<<<<<<<<<
@@ -110197,26 +117015,28 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
     }
 
-    /* "src/lxml/parser.pxi":716
+    /* "src/lxml/parser.pxi":717
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:             # <<<<<<<<<<<<<<
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  */
+    __Pyx_TraceLine(717,0,__PYX_ERR(2, 717, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_result->encoding == NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":717
+      /* "src/lxml/parser.pxi":718
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")             # <<<<<<<<<<<<<<
  * 
  *     if context._validator is not None and \
  */
+      __Pyx_TraceLine(718,0,__PYX_ERR(2, 718, __pyx_L1_error))
       __pyx_v_result->encoding = xmlStrdup(((unsigned char *)((unsigned char *)((char const *)"UTF-8"))));
 
-      /* "src/lxml/parser.pxi":716
+      /* "src/lxml/parser.pxi":717
  *         if result.URL is NULL and filename is not None:
  *             result.URL = tree.xmlStrdup(_xcstr(filename))
  *         if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -110227,13 +117047,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   }
   __pyx_L36:;
 
-  /* "src/lxml/parser.pxi":719
+  /* "src/lxml/parser.pxi":720
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
  *            context._validator._add_default_attributes:
  *         # we currently need to do this here as libxml2 does not
  */
+  __Pyx_TraceLine(720,0,__PYX_ERR(2, 720, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_context->_validator) != Py_None);
   __pyx_t_1 = (__pyx_t_3 != 0);
   if (__pyx_t_1) {
@@ -110242,36 +117063,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
     goto __pyx_L43_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":720
+  /* "src/lxml/parser.pxi":721
  * 
  *     if context._validator is not None and \
  *            context._validator._add_default_attributes:             # <<<<<<<<<<<<<<
  *         # we currently need to do this here as libxml2 does not
  *         # support inserting default attributes during parse-time
  */
+  __Pyx_TraceLine(721,0,__PYX_ERR(2, 721, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_context->_validator->_add_default_attributes != 0);
   __pyx_t_2 = __pyx_t_1;
   __pyx_L43_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":719
+  /* "src/lxml/parser.pxi":720
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
  *            context._validator._add_default_attributes:
  *         # we currently need to do this here as libxml2 does not
  */
+  __Pyx_TraceLine(720,0,__PYX_ERR(2, 720, __pyx_L1_error))
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":724
+    /* "src/lxml/parser.pxi":725
  *         # support inserting default attributes during parse-time
  *         # validation
  *         context._validator.inject_default_attributes(result)             # <<<<<<<<<<<<<<
  * 
  *     return result
  */
+    __Pyx_TraceLine(725,0,__PYX_ERR(2, 725, __pyx_L1_error))
     __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes(__pyx_v_context->_validator, __pyx_v_result);
 
-    /* "src/lxml/parser.pxi":719
+    /* "src/lxml/parser.pxi":720
  *             result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  * 
  *     if context._validator is not None and \             # <<<<<<<<<<<<<<
@@ -110280,17 +117104,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":726
+  /* "src/lxml/parser.pxi":727
  *         context._validator.inject_default_attributes(result)
  * 
  *     return result             # <<<<<<<<<<<<<<
  * 
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
  */
+  __Pyx_TraceLine(727,0,__PYX_ERR(2, 727, __pyx_L1_error))
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":653
+  /* "src/lxml/parser.pxi":654
  *                              filename)
  * 
  * cdef xmlDoc* _handleParseResult(_ParserContext context,             # <<<<<<<<<<<<<<
@@ -110309,11 +117134,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_error);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":728
+/* "src/lxml/parser.pxi":729
  *     return result
  * 
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:             # <<<<<<<<<<<<<<
@@ -110324,30 +117150,34 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
 static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDoc *__pyx_v_c_doc) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
+  __Pyx_TraceCall("_fixHtmlDictNames", __pyx_f[2], 729, 1, __PYX_ERR(2, 729, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":730
+  /* "src/lxml/parser.pxi":731
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
  *         return 0
  *     c_node = c_doc.children
  */
+  __Pyx_TraceLine(731,1,__PYX_ERR(2, 731, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":731
+    /* "src/lxml/parser.pxi":732
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:
  *         return 0             # <<<<<<<<<<<<<<
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  */
+    __Pyx_TraceLine(732,1,__PYX_ERR(2, 732, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":730
+    /* "src/lxml/parser.pxi":731
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
  *     cdef xmlNode* c_node
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -110356,56 +117186,61 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   }
 
-  /* "src/lxml/parser.pxi":732
+  /* "src/lxml/parser.pxi":733
  *     if c_doc is NULL:
  *         return 0
  *     c_node = c_doc.children             # <<<<<<<<<<<<<<
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(733,1,__PYX_ERR(2, 733, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_doc->children;
   __pyx_v_c_node = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":733
+  /* "src/lxml/parser.pxi":734
  *         return 0
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)             # <<<<<<<<<<<<<<
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  */
+  __Pyx_TraceLine(734,1,__PYX_ERR(2, 734, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
-  /* "src/lxml/parser.pxi":734
+  /* "src/lxml/parser.pxi":735
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  */
+  __Pyx_TraceLine(735,1,__PYX_ERR(2, 735, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":735
+    /* "src/lxml/parser.pxi":736
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+    __Pyx_TraceLine(736,1,__PYX_ERR(2, 736, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_dict, __pyx_v_c_node) < 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":736
+      /* "src/lxml/parser.pxi":737
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1             # <<<<<<<<<<<<<<
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0
  */
+      __Pyx_TraceLine(737,1,__PYX_ERR(2, 737, __pyx_L1_error))
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":735
+      /* "src/lxml/parser.pxi":736
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -110414,7 +117249,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
     }
 
-    /* "src/lxml/parser.pxi":734
+    /* "src/lxml/parser.pxi":735
  *     c_node = c_doc.children
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -110423,26 +117258,28 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
   }
 
-  /* "src/lxml/parser.pxi":737
+  /* "src/lxml/parser.pxi":738
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+  __Pyx_TraceLine(738,1,__PYX_ERR(2, 738, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/parser.pxi":738
+  /* "src/lxml/parser.pxi":739
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * cdef int _fixHtmlDictSubtreeNames(tree.xmlDict* c_dict, xmlDoc* c_doc,
  */
+  __Pyx_TraceLine(739,1,__PYX_ERR(2, 739, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":728
+  /* "src/lxml/parser.pxi":729
  *     return result
  * 
  * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:             # <<<<<<<<<<<<<<
@@ -110451,11 +117288,15 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._fixHtmlDictNames", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":740
+/* "src/lxml/parser.pxi":741
  *     return 0
  * 
  * cdef int _fixHtmlDictSubtreeNames(tree.xmlDict* c_dict, xmlDoc* c_doc,             # <<<<<<<<<<<<<<
@@ -110466,29 +117307,33 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDo
 static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict, xmlDoc *__pyx_v_c_doc, xmlNode *__pyx_v_c_start_node) {
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
+  __Pyx_TraceCall("_fixHtmlDictSubtreeNames", __pyx_f[2], 741, 1, __PYX_ERR(2, 741, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":747
+  /* "src/lxml/parser.pxi":748
  *     """
  *     cdef xmlNode* c_node
  *     if not c_doc:             # <<<<<<<<<<<<<<
  *         return 0
  *     if not c_start_node:
  */
+  __Pyx_TraceLine(748,1,__PYX_ERR(2, 748, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_c_doc != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":748
+    /* "src/lxml/parser.pxi":749
  *     cdef xmlNode* c_node
  *     if not c_doc:
  *         return 0             # <<<<<<<<<<<<<<
  *     if not c_start_node:
  *         return _fixHtmlDictNames(c_dict, c_doc)
  */
+    __Pyx_TraceLine(749,1,__PYX_ERR(2, 749, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":747
+    /* "src/lxml/parser.pxi":748
  *     """
  *     cdef xmlNode* c_node
  *     if not c_doc:             # <<<<<<<<<<<<<<
@@ -110497,27 +117342,29 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":749
+  /* "src/lxml/parser.pxi":750
  *     if not c_doc:
  *         return 0
  *     if not c_start_node:             # <<<<<<<<<<<<<<
  *         return _fixHtmlDictNames(c_dict, c_doc)
  *     c_node = c_start_node
  */
+  __Pyx_TraceLine(750,1,__PYX_ERR(2, 750, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_c_start_node != 0)) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":750
+    /* "src/lxml/parser.pxi":751
  *         return 0
  *     if not c_start_node:
  *         return _fixHtmlDictNames(c_dict, c_doc)             # <<<<<<<<<<<<<<
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  */
+    __Pyx_TraceLine(751,1,__PYX_ERR(2, 751, __pyx_L1_error))
     __pyx_r = __pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_c_dict, __pyx_v_c_doc);
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":749
+    /* "src/lxml/parser.pxi":750
  *     if not c_doc:
  *         return 0
  *     if not c_start_node:             # <<<<<<<<<<<<<<
@@ -110526,55 +117373,60 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":751
+  /* "src/lxml/parser.pxi":752
  *     if not c_start_node:
  *         return _fixHtmlDictNames(c_dict, c_doc)
  *     c_node = c_start_node             # <<<<<<<<<<<<<<
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(752,1,__PYX_ERR(2, 752, __pyx_L1_error))
   __pyx_v_c_node = __pyx_v_c_start_node;
 
-  /* "src/lxml/parser.pxi":752
+  /* "src/lxml/parser.pxi":753
  *         return _fixHtmlDictNames(c_dict, c_doc)
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)             # <<<<<<<<<<<<<<
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  */
+  __Pyx_TraceLine(753,1,__PYX_ERR(2, 753, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
-  /* "src/lxml/parser.pxi":753
+  /* "src/lxml/parser.pxi":754
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  */
+  __Pyx_TraceLine(754,1,__PYX_ERR(2, 754, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":754
+    /* "src/lxml/parser.pxi":755
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+    __Pyx_TraceLine(755,1,__PYX_ERR(2, 755, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_dict, __pyx_v_c_node) < 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":755
+      /* "src/lxml/parser.pxi":756
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1             # <<<<<<<<<<<<<<
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0
  */
+      __Pyx_TraceLine(756,1,__PYX_ERR(2, 756, __pyx_L1_error))
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":754
+      /* "src/lxml/parser.pxi":755
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
@@ -110583,7 +117435,7 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
     }
 
-    /* "src/lxml/parser.pxi":753
+    /* "src/lxml/parser.pxi":754
  *     c_node = c_start_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -110592,26 +117444,28 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
   }
 
-  /* "src/lxml/parser.pxi":756
+  /* "src/lxml/parser.pxi":757
  *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+  __Pyx_TraceLine(757,1,__PYX_ERR(2, 757, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/parser.pxi":757
+  /* "src/lxml/parser.pxi":758
  *             return -1
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,
  */
+  __Pyx_TraceLine(758,1,__PYX_ERR(2, 758, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":740
+  /* "src/lxml/parser.pxi":741
  *     return 0
  * 
  * cdef int _fixHtmlDictSubtreeNames(tree.xmlDict* c_dict, xmlDoc* c_doc,             # <<<<<<<<<<<<<<
@@ -110620,11 +117474,15 @@ static int __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(xmlDict *__pyx_v_c_dict
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._fixHtmlDictSubtreeNames", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":759
+/* "src/lxml/parser.pxi":760
  *     return 0
  * 
  * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
@@ -110636,39 +117494,44 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
   xmlNode *__pyx_v_c_attr;
   const xmlChar *__pyx_v_c_name;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
+  __Pyx_TraceCall("_fixHtmlDictNodeNames", __pyx_f[2], 760, 1, __PYX_ERR(2, 760, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":762
+  /* "src/lxml/parser.pxi":763
  *                                       xmlNode* c_node) nogil:
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)             # <<<<<<<<<<<<<<
  *     if c_name is NULL:
  *         return -1
  */
+  __Pyx_TraceLine(763,1,__PYX_ERR(2, 763, __pyx_L1_error))
   __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->name, -1);
 
-  /* "src/lxml/parser.pxi":763
+  /* "src/lxml/parser.pxi":764
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:             # <<<<<<<<<<<<<<
  *         return -1
  *     if c_name is not c_node.name:
  */
+  __Pyx_TraceLine(764,1,__PYX_ERR(2, 764, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":764
+    /* "src/lxml/parser.pxi":765
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:
  *         return -1             # <<<<<<<<<<<<<<
  *     if c_name is not c_node.name:
  *         tree.xmlFree(<char*>c_node.name)
  */
+    __Pyx_TraceLine(765,1,__PYX_ERR(2, 765, __pyx_L1_error))
     __pyx_r = -1;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":763
+    /* "src/lxml/parser.pxi":764
  *     cdef xmlNode* c_attr
  *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
  *     if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -110677,35 +117540,38 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   }
 
-  /* "src/lxml/parser.pxi":765
+  /* "src/lxml/parser.pxi":766
  *     if c_name is NULL:
  *         return -1
  *     if c_name is not c_node.name:             # <<<<<<<<<<<<<<
  *         tree.xmlFree(<char*>c_node.name)
  *         c_node.name = c_name
  */
+  __Pyx_TraceLine(766,1,__PYX_ERR(2, 766, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_name != __pyx_v_c_node->name) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":766
+    /* "src/lxml/parser.pxi":767
  *         return -1
  *     if c_name is not c_node.name:
  *         tree.xmlFree(<char*>c_node.name)             # <<<<<<<<<<<<<<
  *         c_node.name = c_name
  *     c_attr = <xmlNode*>c_node.properties
  */
+    __Pyx_TraceLine(767,1,__PYX_ERR(2, 767, __pyx_L1_error))
     xmlFree(((char *)__pyx_v_c_node->name));
 
-    /* "src/lxml/parser.pxi":767
+    /* "src/lxml/parser.pxi":768
  *     if c_name is not c_node.name:
  *         tree.xmlFree(<char*>c_node.name)
  *         c_node.name = c_name             # <<<<<<<<<<<<<<
  *     c_attr = <xmlNode*>c_node.properties
  *     while c_attr is not NULL:
  */
+    __Pyx_TraceLine(768,1,__PYX_ERR(2, 768, __pyx_L1_error))
     __pyx_v_c_node->name = __pyx_v_c_name;
 
-    /* "src/lxml/parser.pxi":765
+    /* "src/lxml/parser.pxi":766
  *     if c_name is NULL:
  *         return -1
  *     if c_name is not c_node.name:             # <<<<<<<<<<<<<<
@@ -110714,56 +117580,61 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
   }
 
-  /* "src/lxml/parser.pxi":768
+  /* "src/lxml/parser.pxi":769
  *         tree.xmlFree(<char*>c_node.name)
  *         c_node.name = c_name
  *     c_attr = <xmlNode*>c_node.properties             # <<<<<<<<<<<<<<
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  */
+  __Pyx_TraceLine(769,1,__PYX_ERR(2, 769, __pyx_L1_error))
   __pyx_v_c_attr = ((xmlNode *)__pyx_v_c_node->properties);
 
-  /* "src/lxml/parser.pxi":769
+  /* "src/lxml/parser.pxi":770
  *         c_node.name = c_name
  *     c_attr = <xmlNode*>c_node.properties
  *     while c_attr is not NULL:             # <<<<<<<<<<<<<<
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:
  */
+  __Pyx_TraceLine(770,1,__PYX_ERR(2, 770, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/parser.pxi":770
+    /* "src/lxml/parser.pxi":771
  *     c_attr = <xmlNode*>c_node.properties
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)             # <<<<<<<<<<<<<<
  *         if c_name is NULL:
  *             return -1
  */
+    __Pyx_TraceLine(771,1,__PYX_ERR(2, 771, __pyx_L1_error))
     __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_attr->name, -1);
 
-    /* "src/lxml/parser.pxi":771
+    /* "src/lxml/parser.pxi":772
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:             # <<<<<<<<<<<<<<
  *             return -1
  *         if c_name is not c_attr.name:
  */
+    __Pyx_TraceLine(772,1,__PYX_ERR(2, 772, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":772
+      /* "src/lxml/parser.pxi":773
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:
  *             return -1             # <<<<<<<<<<<<<<
  *         if c_name is not c_attr.name:
  *             tree.xmlFree(<char*>c_attr.name)
  */
+      __Pyx_TraceLine(773,1,__PYX_ERR(2, 773, __pyx_L1_error))
       __pyx_r = -1;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":771
+      /* "src/lxml/parser.pxi":772
  *     while c_attr is not NULL:
  *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
  *         if c_name is NULL:             # <<<<<<<<<<<<<<
@@ -110772,35 +117643,38 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     }
 
-    /* "src/lxml/parser.pxi":773
+    /* "src/lxml/parser.pxi":774
  *         if c_name is NULL:
  *             return -1
  *         if c_name is not c_attr.name:             # <<<<<<<<<<<<<<
  *             tree.xmlFree(<char*>c_attr.name)
  *             c_attr.name = c_name
  */
+    __Pyx_TraceLine(774,1,__PYX_ERR(2, 774, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_name != __pyx_v_c_attr->name) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":774
+      /* "src/lxml/parser.pxi":775
  *             return -1
  *         if c_name is not c_attr.name:
  *             tree.xmlFree(<char*>c_attr.name)             # <<<<<<<<<<<<<<
  *             c_attr.name = c_name
  *         c_attr = c_attr.next
  */
+      __Pyx_TraceLine(775,1,__PYX_ERR(2, 775, __pyx_L1_error))
       xmlFree(((char *)__pyx_v_c_attr->name));
 
-      /* "src/lxml/parser.pxi":775
+      /* "src/lxml/parser.pxi":776
  *         if c_name is not c_attr.name:
  *             tree.xmlFree(<char*>c_attr.name)
  *             c_attr.name = c_name             # <<<<<<<<<<<<<<
  *         c_attr = c_attr.next
  *     return 0
  */
+      __Pyx_TraceLine(776,1,__PYX_ERR(2, 776, __pyx_L1_error))
       __pyx_v_c_attr->name = __pyx_v_c_name;
 
-      /* "src/lxml/parser.pxi":773
+      /* "src/lxml/parser.pxi":774
  *         if c_name is NULL:
  *             return -1
  *         if c_name is not c_attr.name:             # <<<<<<<<<<<<<<
@@ -110809,28 +117683,30 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
     }
 
-    /* "src/lxml/parser.pxi":776
+    /* "src/lxml/parser.pxi":777
  *             tree.xmlFree(<char*>c_attr.name)
  *             c_attr.name = c_name
  *         c_attr = c_attr.next             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+    __Pyx_TraceLine(777,1,__PYX_ERR(2, 777, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_attr->next;
     __pyx_v_c_attr = __pyx_t_2;
   }
 
-  /* "src/lxml/parser.pxi":777
+  /* "src/lxml/parser.pxi":778
  *             c_attr.name = c_name
  *         c_attr = c_attr.next
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * @cython.internal
  */
+  __Pyx_TraceLine(778,1,__PYX_ERR(2, 778, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":759
+  /* "src/lxml/parser.pxi":760
  *     return 0
  * 
  * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
@@ -110839,11 +117715,15 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._fixHtmlDictNodeNames", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":797
+/* "src/lxml/parser.pxi":798
  *     cdef tuple _events_to_collect  # (event_types, tag)
  * 
  *     def __init__(self, int parse_options, bint for_html, XMLSchema schema,             # <<<<<<<<<<<<<<
@@ -110903,53 +117783,53 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_for_html)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_schema)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  3:
         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_remove_comments)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  4:
         if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_remove_pis)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  5:
         if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strip_cdata)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  6:
         if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_collect_ids)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  7:
         if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); __PYX_ERR(2, 798, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  8:
         if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_encoding)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); __PYX_ERR(2, 797, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); __PYX_ERR(2, 798, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 797, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 798, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
       goto __pyx_L5_argtuple_error;
@@ -110964,8 +117844,8 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
       values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
       values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
     }
-    __pyx_v_parse_options = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 797, __pyx_L3_error)
-    __pyx_v_for_html = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_for_html == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 797, __pyx_L3_error)
+    __pyx_v_parse_options = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 798, __pyx_L3_error)
+    __pyx_v_for_html = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_for_html == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 798, __pyx_L3_error)
     __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[2]);
     __pyx_v_remove_comments = values[3];
     __pyx_v_remove_pis = values[4];
@@ -110976,13 +117856,13 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 797, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 798, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __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(2, 797, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) __PYX_ERR(2, 798, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser___init__(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_parse_options, __pyx_v_for_html, __pyx_v_schema, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding);
 
   /* function exit code */
@@ -110997,6 +117877,7 @@ static int __pyx_pw_4lxml_5etree_11_BaseParser_1__init__(PyObject *__pyx_v_self,
 static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, int __pyx_v_parse_options, int __pyx_v_for_html, struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema, PyObject *__pyx_v_remove_comments, PyObject *__pyx_v_remove_pis, PyObject *__pyx_v_strip_cdata, PyObject *__pyx_v_collect_ids, PyObject *__pyx_v_target, PyObject *__pyx_v_encoding) {
   xmlCharEncodingHandler *__pyx_v_enchandler;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -111006,15 +117887,17 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   Py_UCS4 __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 798, 0, __PYX_ERR(2, 798, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
 
-  /* "src/lxml/parser.pxi":802
+  /* "src/lxml/parser.pxi":803
  *         cdef tree.xmlCharEncodingHandler* enchandler
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):             # <<<<<<<<<<<<<<
  *             raise TypeError, u"This class cannot be instantiated"
  * 
  */
+  __Pyx_TraceLine(803,0,__PYX_ERR(2, 803, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_4lxml_5etree_XMLParser); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -111029,17 +117912,18 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "src/lxml/parser.pxi":803
+    /* "src/lxml/parser.pxi":804
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):
  *             raise TypeError, u"This class cannot be instantiated"             # <<<<<<<<<<<<<<
  * 
  *         self._parse_options = parse_options
  */
+    __Pyx_TraceLine(804,0,__PYX_ERR(2, 804, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_This_class_cannot_be_instantiate, 0, 0);
-    __PYX_ERR(2, 803, __pyx_L1_error)
+    __PYX_ERR(2, 804, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":802
+    /* "src/lxml/parser.pxi":803
  *         cdef tree.xmlCharEncodingHandler* enchandler
  *         cdef int c_encoding
  *         if not isinstance(self, (XMLParser, HTMLParser)):             # <<<<<<<<<<<<<<
@@ -111048,98 +117932,107 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
   }
 
-  /* "src/lxml/parser.pxi":805
+  /* "src/lxml/parser.pxi":806
  *             raise TypeError, u"This class cannot be instantiated"
  * 
  *         self._parse_options = parse_options             # <<<<<<<<<<<<<<
  *         self.target = target
  *         self._for_html = for_html
  */
+  __Pyx_TraceLine(806,0,__PYX_ERR(2, 806, __pyx_L1_error))
   __pyx_v_self->_parse_options = __pyx_v_parse_options;
 
-  /* "src/lxml/parser.pxi":806
+  /* "src/lxml/parser.pxi":807
  * 
  *         self._parse_options = parse_options
  *         self.target = target             # <<<<<<<<<<<<<<
  *         self._for_html = for_html
  *         self._remove_comments = remove_comments
  */
+  __Pyx_TraceLine(807,0,__PYX_ERR(2, 807, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_target);
   __Pyx_GIVEREF(__pyx_v_target);
   __Pyx_GOTREF(__pyx_v_self->target);
   __Pyx_DECREF(__pyx_v_self->target);
   __pyx_v_self->target = __pyx_v_target;
 
-  /* "src/lxml/parser.pxi":807
+  /* "src/lxml/parser.pxi":808
  *         self._parse_options = parse_options
  *         self.target = target
  *         self._for_html = for_html             # <<<<<<<<<<<<<<
  *         self._remove_comments = remove_comments
  *         self._remove_pis = remove_pis
  */
+  __Pyx_TraceLine(808,0,__PYX_ERR(2, 808, __pyx_L1_error))
   __pyx_v_self->_for_html = __pyx_v_for_html;
 
-  /* "src/lxml/parser.pxi":808
+  /* "src/lxml/parser.pxi":809
  *         self.target = target
  *         self._for_html = for_html
  *         self._remove_comments = remove_comments             # <<<<<<<<<<<<<<
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 808, __pyx_L1_error)
+  __Pyx_TraceLine(809,0,__PYX_ERR(2, 809, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_comments); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error)
   __pyx_v_self->_remove_comments = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":809
+  /* "src/lxml/parser.pxi":810
  *         self._for_html = for_html
  *         self._remove_comments = remove_comments
  *         self._remove_pis = remove_pis             # <<<<<<<<<<<<<<
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_pis); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error)
+  __Pyx_TraceLine(810,0,__PYX_ERR(2, 810, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_pis); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 810, __pyx_L1_error)
   __pyx_v_self->_remove_pis = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":810
+  /* "src/lxml/parser.pxi":811
  *         self._remove_comments = remove_comments
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata             # <<<<<<<<<<<<<<
  *         self._collect_ids = collect_ids
  *         self._schema = schema
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 810, __pyx_L1_error)
+  __Pyx_TraceLine(811,0,__PYX_ERR(2, 811, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 811, __pyx_L1_error)
   __pyx_v_self->_strip_cdata = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":811
+  /* "src/lxml/parser.pxi":812
  *         self._remove_pis = remove_pis
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids             # <<<<<<<<<<<<<<
  *         self._schema = schema
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_collect_ids); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 811, __pyx_L1_error)
+  __Pyx_TraceLine(812,0,__PYX_ERR(2, 812, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_collect_ids); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 812, __pyx_L1_error)
   __pyx_v_self->_collect_ids = __pyx_t_2;
 
-  /* "src/lxml/parser.pxi":812
+  /* "src/lxml/parser.pxi":813
  *         self._strip_cdata = strip_cdata
  *         self._collect_ids = collect_ids
  *         self._schema = schema             # <<<<<<<<<<<<<<
  * 
  *         self._resolvers = _ResolverRegistry()
  */
+  __Pyx_TraceLine(813,0,__PYX_ERR(2, 813, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_schema));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_schema));
   __Pyx_GOTREF(__pyx_v_self->_schema);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_schema));
   __pyx_v_self->_schema = __pyx_v_schema;
 
-  /* "src/lxml/parser.pxi":814
+  /* "src/lxml/parser.pxi":815
  *         self._schema = schema
  * 
  *         self._resolvers = _ResolverRegistry()             # <<<<<<<<<<<<<<
  * 
  *         if encoding is None:
  */
-  __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 814, __pyx_L1_error)
+  __Pyx_TraceLine(815,0,__PYX_ERR(2, 815, __pyx_L1_error))
+  __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 815, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __Pyx_GOTREF(__pyx_v_self->_resolvers);
@@ -111147,31 +118040,33 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":816
+  /* "src/lxml/parser.pxi":817
  *         self._resolvers = _ResolverRegistry()
  * 
  *         if encoding is None:             # <<<<<<<<<<<<<<
  *             self._default_encoding = None
  *         else:
  */
+  __Pyx_TraceLine(817,0,__PYX_ERR(2, 817, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_encoding == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":817
+    /* "src/lxml/parser.pxi":818
  * 
  *         if encoding is None:
  *             self._default_encoding = None             # <<<<<<<<<<<<<<
  *         else:
  *             encoding = _utf8(encoding)
  */
+    __Pyx_TraceLine(818,0,__PYX_ERR(2, 818, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_default_encoding);
     __Pyx_DECREF(__pyx_v_self->_default_encoding);
     __pyx_v_self->_default_encoding = Py_None;
 
-    /* "src/lxml/parser.pxi":816
+    /* "src/lxml/parser.pxi":817
  *         self._resolvers = _ResolverRegistry()
  * 
  *         if encoding is None:             # <<<<<<<<<<<<<<
@@ -111181,46 +118076,50 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
     goto __pyx_L6;
   }
 
-  /* "src/lxml/parser.pxi":819
+  /* "src/lxml/parser.pxi":820
  *             self._default_encoding = None
  *         else:
  *             encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:
  */
+  __Pyx_TraceLine(820,0,__PYX_ERR(2, 820, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 819, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 820, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":820
+    /* "src/lxml/parser.pxi":821
  *         else:
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))             # <<<<<<<<<<<<<<
  *             if enchandler is NULL:
  *                 raise LookupError, f"unknown encoding: '{encoding}'"
  */
+    __Pyx_TraceLine(821,0,__PYX_ERR(2, 821, __pyx_L1_error))
     __pyx_v_enchandler = xmlFindCharEncodingHandler(PyBytes_AS_STRING(__pyx_v_encoding));
 
-    /* "src/lxml/parser.pxi":821
+    /* "src/lxml/parser.pxi":822
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:             # <<<<<<<<<<<<<<
  *                 raise LookupError, f"unknown encoding: '{encoding}'"
  *             tree.xmlCharEncCloseFunc(enchandler)
  */
+    __Pyx_TraceLine(822,0,__PYX_ERR(2, 822, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_enchandler == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "src/lxml/parser.pxi":822
+      /* "src/lxml/parser.pxi":823
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:
  *                 raise LookupError, f"unknown encoding: '{encoding}'"             # <<<<<<<<<<<<<<
  *             tree.xmlCharEncCloseFunc(enchandler)
  *             self._default_encoding = encoding
  */
-      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 822, __pyx_L1_error)
+      __Pyx_TraceLine(823,0,__PYX_ERR(2, 823, __pyx_L1_error))
+      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 823, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = 0;
       __pyx_t_6 = 127;
@@ -111228,25 +118127,25 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
       __pyx_t_5 += 19;
       __Pyx_GIVEREF(__pyx_kp_u_unknown_encoding);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_unknown_encoding);
-      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_encoding, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 822, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_encoding, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 823, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
       __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7);
       __pyx_t_7 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_5 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__31);
-      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 822, __pyx_L1_error)
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__60);
+      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 823, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_7, 0, 0);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __PYX_ERR(2, 822, __pyx_L1_error)
+      __PYX_ERR(2, 823, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":821
+      /* "src/lxml/parser.pxi":822
  *             encoding = _utf8(encoding)
  *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
  *             if enchandler is NULL:             # <<<<<<<<<<<<<<
@@ -111255,22 +118154,24 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
  */
     }
 
-    /* "src/lxml/parser.pxi":823
+    /* "src/lxml/parser.pxi":824
  *             if enchandler is NULL:
  *                 raise LookupError, f"unknown encoding: '{encoding}'"
  *             tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
  *             self._default_encoding = encoding
  * 
  */
+    __Pyx_TraceLine(824,0,__PYX_ERR(2, 824, __pyx_L1_error))
     (void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
 
-    /* "src/lxml/parser.pxi":824
+    /* "src/lxml/parser.pxi":825
  *                 raise LookupError, f"unknown encoding: '{encoding}'"
  *             tree.xmlCharEncCloseFunc(enchandler)
  *             self._default_encoding = encoding             # <<<<<<<<<<<<<<
  * 
  *     cdef _setBaseURL(self, base_url):
  */
+    __Pyx_TraceLine(825,0,__PYX_ERR(2, 825, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_encoding);
     __Pyx_GIVEREF(__pyx_v_encoding);
     __Pyx_GOTREF(__pyx_v_self->_default_encoding);
@@ -111279,7 +118180,7 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   }
   __pyx_L6:;
 
-  /* "src/lxml/parser.pxi":797
+  /* "src/lxml/parser.pxi":798
  *     cdef tuple _events_to_collect  # (event_types, tag)
  * 
  *     def __init__(self, int parse_options, bint for_html, XMLSchema schema,             # <<<<<<<<<<<<<<
@@ -111297,11 +118198,12 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_encoding);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":826
+/* "src/lxml/parser.pxi":827
  *             self._default_encoding = encoding
  * 
  *     cdef _setBaseURL(self, base_url):             # <<<<<<<<<<<<<<
@@ -111311,27 +118213,30 @@ static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(struct __pyx_obj_4lxml_5
 
 static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v_base_url) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_setBaseURL", 0);
+  __Pyx_TraceCall("_setBaseURL", __pyx_f[2], 827, 0, __PYX_ERR(2, 827, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":827
+  /* "src/lxml/parser.pxi":828
  * 
  *     cdef _setBaseURL(self, base_url):
  *         self._filename = _encodeFilename(base_url)             # <<<<<<<<<<<<<<
  * 
  *     cdef _collectEvents(self, event_types, tag):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 827, __pyx_L1_error)
+  __Pyx_TraceLine(828,0,__PYX_ERR(2, 828, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 828, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(2, 827, __pyx_L1_error)
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(2, 828, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_filename);
   __Pyx_DECREF(__pyx_v_self->_filename);
   __pyx_v_self->_filename = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":826
+  /* "src/lxml/parser.pxi":827
  *             self._default_encoding = encoding
  * 
  *     cdef _setBaseURL(self, base_url):             # <<<<<<<<<<<<<<
@@ -111348,11 +118253,12 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL(struct __pyx_obj
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":829
+/* "src/lxml/parser.pxi":830
  *         self._filename = _encodeFilename(base_url)
  * 
  *     cdef _collectEvents(self, event_types, tag):             # <<<<<<<<<<<<<<
@@ -111362,6 +118268,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL(struct __pyx_obj
 
 static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v_event_types, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -111369,30 +118276,33 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_collectEvents", 0);
+  __Pyx_TraceCall("_collectEvents", __pyx_f[2], 830, 0, __PYX_ERR(2, 830, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_event_types);
 
-  /* "src/lxml/parser.pxi":830
+  /* "src/lxml/parser.pxi":831
  * 
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:             # <<<<<<<<<<<<<<
  *             event_types = ()
  *         else:
  */
+  __Pyx_TraceLine(831,0,__PYX_ERR(2, 831, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_event_types == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":831
+    /* "src/lxml/parser.pxi":832
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:
  *             event_types = ()             # <<<<<<<<<<<<<<
  *         else:
  *             event_types = tuple(set(event_types))
  */
+    __Pyx_TraceLine(832,0,__PYX_ERR(2, 832, __pyx_L1_error))
     __Pyx_INCREF(__pyx_empty_tuple);
     __Pyx_DECREF_SET(__pyx_v_event_types, __pyx_empty_tuple);
 
-    /* "src/lxml/parser.pxi":830
+    /* "src/lxml/parser.pxi":831
  * 
  *     cdef _collectEvents(self, event_types, tag):
  *         if event_types is None:             # <<<<<<<<<<<<<<
@@ -111402,41 +118312,44 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":833
+  /* "src/lxml/parser.pxi":834
  *             event_types = ()
  *         else:
  *             event_types = tuple(set(event_types))             # <<<<<<<<<<<<<<
  *             _buildParseEventFilter(event_types)  # purely for validation
  *         self._events_to_collect = (event_types, tag)
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(2, 834, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_3 = PySet_New(__pyx_v_event_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 833, __pyx_L1_error)
+    __pyx_t_3 = PySet_New(__pyx_v_event_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 833, __pyx_L1_error)
+    __pyx_t_4 = PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_event_types, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":834
+    /* "src/lxml/parser.pxi":835
  *         else:
  *             event_types = tuple(set(event_types))
  *             _buildParseEventFilter(event_types)  # purely for validation             # <<<<<<<<<<<<<<
  *         self._events_to_collect = (event_types, tag)
  * 
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_event_types); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 834, __pyx_L1_error)
+    __Pyx_TraceLine(835,0,__PYX_ERR(2, 835, __pyx_L1_error))
+    __pyx_t_5 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_event_types); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 835, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":835
+  /* "src/lxml/parser.pxi":836
  *             event_types = tuple(set(event_types))
  *             _buildParseEventFilter(event_types)  # purely for validation
  *         self._events_to_collect = (event_types, tag)             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _getParserContext(self):
  */
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 835, __pyx_L1_error)
+  __Pyx_TraceLine(836,0,__PYX_ERR(2, 836, __pyx_L1_error))
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_event_types);
   __Pyx_GIVEREF(__pyx_v_event_types);
@@ -111450,7 +118363,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   __pyx_v_self->_events_to_collect = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":829
+  /* "src/lxml/parser.pxi":830
  *         self._filename = _encodeFilename(base_url)
  * 
  *     cdef _collectEvents(self, event_types, tag):             # <<<<<<<<<<<<<<
@@ -111469,11 +118382,12 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_event_types);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":837
+/* "src/lxml/parser.pxi":838
  *         self._events_to_collect = (event_types, tag)
  * 
  *     cdef _ParserContext _getParserContext(self):             # <<<<<<<<<<<<<<
@@ -111484,6 +118398,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_BaseParser__collectEvents(struct __pyx_
 static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_BaseParser__getParserContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   xmlParserCtxt *__pyx_v_pctxt;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -111493,28 +118408,31 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_getParserContext", 0);
+  __Pyx_TraceCall("_getParserContext", __pyx_f[2], 838, 0, __PYX_ERR(2, 838, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":839
+  /* "src/lxml/parser.pxi":840
  *     cdef _ParserContext _getParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:             # <<<<<<<<<<<<<<
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids
  */
+  __Pyx_TraceLine(840,0,__PYX_ERR(2, 840, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_parser_context) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":840
+    /* "src/lxml/parser.pxi":841
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:
  *             self._parser_context = self._createContext(self.target, None)             # <<<<<<<<<<<<<<
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  */
+    __Pyx_TraceLine(841,0,__PYX_ERR(2, 841, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_self->target;
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, Py_None)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 840, __pyx_L1_error)
+    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, Py_None)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 841, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GIVEREF(__pyx_t_4);
@@ -111523,51 +118441,55 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_self->_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parser.pxi":841
+    /* "src/lxml/parser.pxi":842
  *         if self._parser_context is None:
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
  *             if self._schema is not None:
  *                 self._parser_context._validator = \
  */
+    __Pyx_TraceLine(842,0,__PYX_ERR(2, 842, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_self->_collect_ids;
     __pyx_v_self->_parser_context->_collect_ids = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":842
+    /* "src/lxml/parser.pxi":843
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
  *                 self._parser_context._validator = \
  *                     self._schema._newSaxValidator(
  */
+    __Pyx_TraceLine(843,0,__PYX_ERR(2, 843, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_self->_schema) != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":844
+      /* "src/lxml/parser.pxi":845
  *             if self._schema is not None:
  *                 self._parser_context._validator = \
  *                     self._schema._newSaxValidator(             # <<<<<<<<<<<<<<
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()
  */
-      __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 844, __pyx_L1_error)
+      __Pyx_TraceLine(845,0,__PYX_ERR(2, 845, __pyx_L1_error))
+      __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
 
-      /* "src/lxml/parser.pxi":843
+      /* "src/lxml/parser.pxi":844
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  *                 self._parser_context._validator = \             # <<<<<<<<<<<<<<
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  */
+      __Pyx_TraceLine(844,0,__PYX_ERR(2, 844, __pyx_L1_error))
       __Pyx_GIVEREF(__pyx_t_4);
       __Pyx_GOTREF(__pyx_v_self->_parser_context->_validator);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_parser_context->_validator));
       __pyx_v_self->_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":842
+      /* "src/lxml/parser.pxi":843
  *             self._parser_context = self._createContext(self.target, None)
  *             self._parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -111576,43 +118498,46 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
     }
 
-    /* "src/lxml/parser.pxi":846
+    /* "src/lxml/parser.pxi":847
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()             # <<<<<<<<<<<<<<
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  */
-    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_5 == ((xmlParserCtxt *)NULL))) __PYX_ERR(2, 846, __pyx_L1_error)
+    __Pyx_TraceLine(847,0,__PYX_ERR(2, 847, __pyx_L1_error))
+    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_5 == ((xmlParserCtxt *)NULL))) __PYX_ERR(2, 847, __pyx_L1_error)
     __pyx_v_pctxt = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":847
+    /* "src/lxml/parser.pxi":848
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newParserCtxt()
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
  *             self._configureSaxContext(pctxt)
  *         return self._parser_context
  */
+    __Pyx_TraceLine(848,0,__PYX_ERR(2, 848, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_parser_context);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_resolvers);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_6 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_3), __pyx_v_pctxt); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 847, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_3), __pyx_v_pctxt); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 848, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/parser.pxi":848
+    /* "src/lxml/parser.pxi":849
  *             pctxt = self._newParserCtxt()
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)             # <<<<<<<<<<<<<<
  *         return self._parser_context
  * 
  */
-    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 848, __pyx_L1_error)
+    __Pyx_TraceLine(849,0,__PYX_ERR(2, 849, __pyx_L1_error))
+    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 849, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":839
+    /* "src/lxml/parser.pxi":840
  *     cdef _ParserContext _getParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._parser_context is None:             # <<<<<<<<<<<<<<
@@ -111621,19 +118546,20 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":849
+  /* "src/lxml/parser.pxi":850
  *             _initParserContext(self._parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  *         return self._parser_context             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _getPushParserContext(self):
  */
+  __Pyx_TraceLine(850,0,__PYX_ERR(2, 850, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_parser_context));
   __pyx_r = __pyx_v_self->_parser_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":837
+  /* "src/lxml/parser.pxi":838
  *         self._events_to_collect = (event_types, tag)
  * 
  *     cdef _ParserContext _getParserContext(self):             # <<<<<<<<<<<<<<
@@ -111650,11 +118576,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":851
+/* "src/lxml/parser.pxi":852
  *         return self._parser_context
  * 
  *     cdef _ParserContext _getPushParserContext(self):             # <<<<<<<<<<<<<<
@@ -111665,6 +118592,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
 static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_BaseParser__getPushParserContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   xmlParserCtxt *__pyx_v_pctxt;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -111674,38 +118602,42 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   xmlParserCtxt *__pyx_t_6;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_getPushParserContext", 0);
+  __Pyx_TraceCall("_getPushParserContext", __pyx_f[2], 852, 0, __PYX_ERR(2, 852, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":853
+  /* "src/lxml/parser.pxi":854
  *     cdef _ParserContext _getPushParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:             # <<<<<<<<<<<<<<
  *             self._push_parser_context = self._createContext(
  *                 self.target, self._events_to_collect)
  */
+  __Pyx_TraceLine(854,0,__PYX_ERR(2, 854, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_push_parser_context) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":855
+    /* "src/lxml/parser.pxi":856
  *         if self._push_parser_context is None:
  *             self._push_parser_context = self._createContext(
  *                 self.target, self._events_to_collect)             # <<<<<<<<<<<<<<
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  */
+    __Pyx_TraceLine(856,0,__PYX_ERR(2, 856, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_self->target;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = __pyx_v_self->_events_to_collect;
     __Pyx_INCREF(__pyx_t_4);
 
-    /* "src/lxml/parser.pxi":854
+    /* "src/lxml/parser.pxi":855
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:
  *             self._push_parser_context = self._createContext(             # <<<<<<<<<<<<<<
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  */
-    __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 854, __pyx_L1_error)
+    __Pyx_TraceLine(855,0,__PYX_ERR(2, 855, __pyx_L1_error))
+    __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_t_3, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 855, __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;
@@ -111715,51 +118647,55 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_self->_push_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":856
+    /* "src/lxml/parser.pxi":857
  *             self._push_parser_context = self._createContext(
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids             # <<<<<<<<<<<<<<
  *             if self._schema is not None:
  *                 self._push_parser_context._validator = \
  */
+    __Pyx_TraceLine(857,0,__PYX_ERR(2, 857, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_self->_collect_ids;
     __pyx_v_self->_push_parser_context->_collect_ids = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":857
+    /* "src/lxml/parser.pxi":858
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
  *                 self._push_parser_context._validator = \
  *                     self._schema._newSaxValidator(
  */
+    __Pyx_TraceLine(858,0,__PYX_ERR(2, 858, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_self->_schema) != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":859
+      /* "src/lxml/parser.pxi":860
  *             if self._schema is not None:
  *                 self._push_parser_context._validator = \
  *                     self._schema._newSaxValidator(             # <<<<<<<<<<<<<<
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()
  */
-      __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 859, __pyx_L1_error)
+      __Pyx_TraceLine(860,0,__PYX_ERR(2, 860, __pyx_L1_error))
+      __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 860, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
 
-      /* "src/lxml/parser.pxi":858
+      /* "src/lxml/parser.pxi":859
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:
  *                 self._push_parser_context._validator = \             # <<<<<<<<<<<<<<
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  */
+      __Pyx_TraceLine(859,0,__PYX_ERR(2, 859, __pyx_L1_error))
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_v_self->_push_parser_context->_validator);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_push_parser_context->_validator));
       __pyx_v_self->_push_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/parser.pxi":857
+      /* "src/lxml/parser.pxi":858
  *                 self.target, self._events_to_collect)
  *             self._push_parser_context._collect_ids = self._collect_ids
  *             if self._schema is not None:             # <<<<<<<<<<<<<<
@@ -111768,51 +118704,55 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
     }
 
-    /* "src/lxml/parser.pxi":861
+    /* "src/lxml/parser.pxi":862
  *                     self._schema._newSaxValidator(
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()             # <<<<<<<<<<<<<<
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)
  */
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newPushParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_6 == ((xmlParserCtxt *)NULL))) __PYX_ERR(2, 861, __pyx_L1_error)
+    __Pyx_TraceLine(862,0,__PYX_ERR(2, 862, __pyx_L1_error))
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newPushParserCtxt(__pyx_v_self); if (unlikely(__pyx_t_6 == ((xmlParserCtxt *)NULL))) __PYX_ERR(2, 862, __pyx_L1_error)
     __pyx_v_pctxt = __pyx_t_6;
 
-    /* "src/lxml/parser.pxi":863
+    /* "src/lxml/parser.pxi":864
  *             pctxt = self._newPushParserCtxt()
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
  *             self._configureSaxContext(pctxt)
  *         return self._push_parser_context
  */
+    __Pyx_TraceLine(864,0,__PYX_ERR(2, 864, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_push_parser_context);
     __Pyx_INCREF(__pyx_t_5);
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_resolvers);
     __Pyx_INCREF(__pyx_t_4);
 
-    /* "src/lxml/parser.pxi":862
+    /* "src/lxml/parser.pxi":863
  *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
  *             pctxt = self._newPushParserCtxt()
  *             _initParserContext(             # <<<<<<<<<<<<<<
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  */
-    __pyx_t_3 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4), __pyx_v_pctxt); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 862, __pyx_L1_error)
+    __Pyx_TraceLine(863,0,__PYX_ERR(2, 863, __pyx_L1_error))
+    __pyx_t_3 = __pyx_f_4lxml_5etree__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_4), __pyx_v_pctxt); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 863, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":864
+    /* "src/lxml/parser.pxi":865
  *             _initParserContext(
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)             # <<<<<<<<<<<<<<
  *         return self._push_parser_context
  * 
  */
-    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 864, __pyx_L1_error)
+    __Pyx_TraceLine(865,0,__PYX_ERR(2, 865, __pyx_L1_error))
+    __pyx_t_7 = __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(__pyx_v_self, __pyx_v_pctxt); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 865, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":853
+    /* "src/lxml/parser.pxi":854
  *     cdef _ParserContext _getPushParserContext(self):
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         if self._push_parser_context is None:             # <<<<<<<<<<<<<<
@@ -111821,19 +118761,20 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":865
+  /* "src/lxml/parser.pxi":866
  *                 self._push_parser_context, self._resolvers, pctxt)
  *             self._configureSaxContext(pctxt)
  *         return self._push_parser_context             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _createContext(self, target, events_to_collect):
  */
+  __Pyx_TraceLine(866,0,__PYX_ERR(2, 866, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_push_parser_context));
   __pyx_r = __pyx_v_self->_push_parser_context;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":851
+  /* "src/lxml/parser.pxi":852
  *         return self._parser_context
  * 
  *     cdef _ParserContext _getPushParserContext(self):             # <<<<<<<<<<<<<<
@@ -111850,11 +118791,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":867
+/* "src/lxml/parser.pxi":868
  *         return self._push_parser_context
  * 
  *     cdef _ParserContext _createContext(self, target, events_to_collect):             # <<<<<<<<<<<<<<
@@ -111867,6 +118809,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   PyObject *__pyx_v_events = NULL;
   PyObject *__pyx_v_tag = NULL;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -111876,40 +118819,44 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   PyObject *__pyx_t_6 = NULL;
   PyObject *(*__pyx_t_7)(PyObject *);
   __Pyx_RefNannySetupContext("_createContext", 0);
+  __Pyx_TraceCall("_createContext", __pyx_f[2], 868, 0, __PYX_ERR(2, 868, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":869
+  /* "src/lxml/parser.pxi":870
  *     cdef _ParserContext _createContext(self, target, events_to_collect):
  *         cdef _SaxParserContext sax_context
  *         if target is not None:             # <<<<<<<<<<<<<<
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  */
+  __Pyx_TraceLine(870,0,__PYX_ERR(2, 870, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_target != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":870
+    /* "src/lxml/parser.pxi":871
  *         cdef _SaxParserContext sax_context
  *         if target is not None:
  *             sax_context = _TargetParserContext(self)             # <<<<<<<<<<<<<<
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:
  */
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__TargetParserContext), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 870, __pyx_L1_error)
+    __Pyx_TraceLine(871,0,__PYX_ERR(2, 871, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__TargetParserContext), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 871, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_sax_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":871
+    /* "src/lxml/parser.pxi":872
  *         if target is not None:
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)             # <<<<<<<<<<<<<<
  *         elif events_to_collect:
  *             sax_context = _SaxParserContext(self)
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_v_sax_context), __pyx_v_target); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 871, __pyx_L1_error)
+    __Pyx_TraceLine(872,0,__PYX_ERR(2, 872, __pyx_L1_error))
+    __pyx_t_4 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_v_sax_context), __pyx_v_target); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 872, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":869
+    /* "src/lxml/parser.pxi":870
  *     cdef _ParserContext _createContext(self, target, events_to_collect):
  *         cdef _SaxParserContext sax_context
  *         if target is not None:             # <<<<<<<<<<<<<<
@@ -111919,29 +118866,31 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":872
+  /* "src/lxml/parser.pxi":873
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:             # <<<<<<<<<<<<<<
  *             sax_context = _SaxParserContext(self)
  *         else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 872, __pyx_L1_error)
+  __Pyx_TraceLine(873,0,__PYX_ERR(2, 873, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 873, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":873
+    /* "src/lxml/parser.pxi":874
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:
  *             sax_context = _SaxParserContext(self)             # <<<<<<<<<<<<<<
  *         else:
  *             # nothing special to configure
  */
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__SaxParserContext), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 873, __pyx_L1_error)
+    __Pyx_TraceLine(874,0,__PYX_ERR(2, 874, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__SaxParserContext), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 874, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_sax_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":872
+    /* "src/lxml/parser.pxi":873
  *             sax_context = _TargetParserContext(self)
  *             (<_TargetParserContext>sax_context)._setTarget(target)
  *         elif events_to_collect:             # <<<<<<<<<<<<<<
@@ -111951,16 +118900,17 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":876
+  /* "src/lxml/parser.pxi":877
  *         else:
  *             # nothing special to configure
  *             return _ParserContext()             # <<<<<<<<<<<<<<
  *         if events_to_collect:
  *             events, tag = events_to_collect
  */
+  __Pyx_TraceLine(877,0,__PYX_ERR(2, 877, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ParserContext)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 876, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ParserContext)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
     __pyx_t_3 = 0;
@@ -111968,30 +118918,32 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":877
+  /* "src/lxml/parser.pxi":878
  *             # nothing special to configure
  *             return _ParserContext()
  *         if events_to_collect:             # <<<<<<<<<<<<<<
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 877, __pyx_L1_error)
+  __Pyx_TraceLine(878,0,__PYX_ERR(2, 878, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_events_to_collect); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 878, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":878
+    /* "src/lxml/parser.pxi":879
  *             return _ParserContext()
  *         if events_to_collect:
  *             events, tag = events_to_collect             # <<<<<<<<<<<<<<
  *             sax_context._setEventFilter(events, tag)
  *         return sax_context
  */
+    __Pyx_TraceLine(879,0,__PYX_ERR(2, 879, __pyx_L1_error))
     if ((likely(PyTuple_CheckExact(__pyx_v_events_to_collect))) || (PyList_CheckExact(__pyx_v_events_to_collect))) {
       PyObject* sequence = __pyx_v_events_to_collect;
       Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(2, 878, __pyx_L1_error)
+        __PYX_ERR(2, 879, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -112004,21 +118956,21 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_5);
       #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 878, __pyx_L1_error)
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 878, __pyx_L1_error)
+      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       #endif
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_v_events_to_collect); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 878, __pyx_L1_error)
+      __pyx_t_6 = PyObject_GetIter(__pyx_v_events_to_collect); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
       index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_3);
       index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_5);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(2, 878, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(2, 879, __pyx_L1_error)
       __pyx_t_7 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L6_unpacking_done;
@@ -112026,7 +118978,7 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(2, 878, __pyx_L1_error)
+      __PYX_ERR(2, 879, __pyx_L1_error)
       __pyx_L6_unpacking_done:;
     }
     __pyx_v_events = __pyx_t_3;
@@ -112034,18 +118986,19 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
     __pyx_v_tag = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":879
+    /* "src/lxml/parser.pxi":880
  *         if events_to_collect:
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)             # <<<<<<<<<<<<<<
  *         return sax_context
  * 
  */
-    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_sax_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setEventFilter(__pyx_v_sax_context, __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 879, __pyx_L1_error)
+    __Pyx_TraceLine(880,0,__PYX_ERR(2, 880, __pyx_L1_error))
+    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_sax_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setEventFilter(__pyx_v_sax_context, __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":877
+    /* "src/lxml/parser.pxi":878
  *             # nothing special to configure
  *             return _ParserContext()
  *         if events_to_collect:             # <<<<<<<<<<<<<<
@@ -112054,19 +119007,20 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
  */
   }
 
-  /* "src/lxml/parser.pxi":880
+  /* "src/lxml/parser.pxi":881
  *             events, tag = events_to_collect
  *             sax_context._setEventFilter(events, tag)
  *         return sax_context             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(881,0,__PYX_ERR(2, 881, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_sax_context));
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_sax_context);
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":867
+  /* "src/lxml/parser.pxi":868
  *         return self._push_parser_context
  * 
  *     cdef _ParserContext _createContext(self, target, events_to_collect):             # <<<<<<<<<<<<<<
@@ -112086,11 +119040,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
   __Pyx_XDECREF(__pyx_v_events);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":883
+/* "src/lxml/parser.pxi":884
  * 
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:             # <<<<<<<<<<<<<<
@@ -112100,30 +119055,34 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_Bas
 
 static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, xmlParserCtxt *__pyx_v_pctxt) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_configureSaxContext", 0);
+  __Pyx_TraceCall("_configureSaxContext", __pyx_f[2], 884, 0, __PYX_ERR(2, 884, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":884
+  /* "src/lxml/parser.pxi":885
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:             # <<<<<<<<<<<<<<
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:
  */
+  __Pyx_TraceLine(885,0,__PYX_ERR(2, 885, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_remove_comments != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":885
+    /* "src/lxml/parser.pxi":886
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL             # <<<<<<<<<<<<<<
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL
  */
+    __Pyx_TraceLine(886,0,__PYX_ERR(2, 886, __pyx_L1_error))
     __pyx_v_pctxt->sax->comment = NULL;
 
-    /* "src/lxml/parser.pxi":884
+    /* "src/lxml/parser.pxi":885
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:
  *         if self._remove_comments:             # <<<<<<<<<<<<<<
@@ -112132,26 +119091,28 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":886
+  /* "src/lxml/parser.pxi":887
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:             # <<<<<<<<<<<<<<
  *             pctxt.sax.processingInstruction = NULL
  *         if self._strip_cdata:
  */
+  __Pyx_TraceLine(887,0,__PYX_ERR(2, 887, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_remove_pis != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":887
+    /* "src/lxml/parser.pxi":888
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
  *         if self._strip_cdata:
  *             # hard switch-off for CDATA nodes => makes them plain text
  */
+    __Pyx_TraceLine(888,0,__PYX_ERR(2, 888, __pyx_L1_error))
     __pyx_v_pctxt->sax->processingInstruction = NULL;
 
-    /* "src/lxml/parser.pxi":886
+    /* "src/lxml/parser.pxi":887
  *         if self._remove_comments:
  *             pctxt.sax.comment = NULL
  *         if self._remove_pis:             # <<<<<<<<<<<<<<
@@ -112160,26 +119121,28 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":888
+  /* "src/lxml/parser.pxi":889
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL
  *         if self._strip_cdata:             # <<<<<<<<<<<<<<
  *             # hard switch-off for CDATA nodes => makes them plain text
  *             pctxt.sax.cdataBlock = NULL
  */
+  __Pyx_TraceLine(889,0,__PYX_ERR(2, 889, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_strip_cdata != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":890
+    /* "src/lxml/parser.pxi":891
  *         if self._strip_cdata:
  *             # hard switch-off for CDATA nodes => makes them plain text
  *             pctxt.sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  */
+    __Pyx_TraceLine(891,0,__PYX_ERR(2, 891, __pyx_L1_error))
     __pyx_v_pctxt->sax->cdataBlock = NULL;
 
-    /* "src/lxml/parser.pxi":888
+    /* "src/lxml/parser.pxi":889
  *         if self._remove_pis:
  *             pctxt.sax.processingInstruction = NULL
  *         if self._strip_cdata:             # <<<<<<<<<<<<<<
@@ -112188,7 +119151,7 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":883
+  /* "src/lxml/parser.pxi":884
  * 
  *     @cython.final
  *     cdef int _configureSaxContext(self, xmlparser.xmlParserCtxt* pctxt) except -1:             # <<<<<<<<<<<<<<
@@ -112198,11 +119161,17 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseParser._configureSaxContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":892
+/* "src/lxml/parser.pxi":893
  *             pctxt.sax.cdataBlock = NULL
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:             # <<<<<<<<<<<<<<
@@ -112213,29 +119182,33 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__configureSaxContext(struct __pyx_
 static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
   xmlSAXHandler *__pyx_v_sax;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlSAXHandler *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_registerHtmlErrorHandler", 0);
+  __Pyx_TraceCall("_registerHtmlErrorHandler", __pyx_f[2], 893, 0, __PYX_ERR(2, 893, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":893
+  /* "src/lxml/parser.pxi":894
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax             # <<<<<<<<<<<<<<
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  */
+  __Pyx_TraceLine(894,0,__PYX_ERR(2, 894, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_ctxt->sax;
   __pyx_v_sax = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":894
+  /* "src/lxml/parser.pxi":895
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  */
+  __Pyx_TraceLine(895,0,__PYX_ERR(2, 895, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_sax != NULL) != 0);
   if (__pyx_t_3) {
   } else {
@@ -112253,45 +119226,49 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":896
+    /* "src/lxml/parser.pxi":897
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:             # <<<<<<<<<<<<<<
  *                 sax = <xmlparser.xmlSAXHandler*> tree.xmlMalloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:
  */
+    __Pyx_TraceLine(897,0,__PYX_ERR(2, 897, __pyx_L1_error))
     __pyx_t_2 = ((((xmlSAXHandlerV1 *)__pyx_v_sax) == (&htmlDefaultSAXHandler)) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":897
+      /* "src/lxml/parser.pxi":898
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> tree.xmlMalloc(sizeof(xmlparser.xmlSAXHandler))             # <<<<<<<<<<<<<<
  *                 if sax is NULL:
  *                     raise MemoryError()
  */
+      __Pyx_TraceLine(898,0,__PYX_ERR(2, 898, __pyx_L1_error))
       __pyx_v_sax = ((xmlSAXHandler *)xmlMalloc((sizeof(xmlSAXHandler))));
 
-      /* "src/lxml/parser.pxi":898
+      /* "src/lxml/parser.pxi":899
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> tree.xmlMalloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:             # <<<<<<<<<<<<<<
  *                     raise MemoryError()
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,
  */
+      __Pyx_TraceLine(899,0,__PYX_ERR(2, 899, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_sax == NULL) != 0);
       if (unlikely(__pyx_t_2)) {
 
-        /* "src/lxml/parser.pxi":899
+        /* "src/lxml/parser.pxi":900
  *                 sax = <xmlparser.xmlSAXHandler*> tree.xmlMalloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:
  *                     raise MemoryError()             # <<<<<<<<<<<<<<
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  */
-        PyErr_NoMemory(); __PYX_ERR(2, 899, __pyx_L1_error)
+        __Pyx_TraceLine(900,0,__PYX_ERR(2, 900, __pyx_L1_error))
+        PyErr_NoMemory(); __PYX_ERR(2, 900, __pyx_L1_error)
 
-        /* "src/lxml/parser.pxi":898
+        /* "src/lxml/parser.pxi":899
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:
  *                 sax = <xmlparser.xmlSAXHandler*> tree.xmlMalloc(sizeof(xmlparser.xmlSAXHandler))
  *                 if sax is NULL:             # <<<<<<<<<<<<<<
@@ -112300,25 +119277,27 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
       }
 
-      /* "src/lxml/parser.pxi":900
+      /* "src/lxml/parser.pxi":901
  *                 if sax is NULL:
  *                     raise MemoryError()
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,             # <<<<<<<<<<<<<<
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  *                 c_ctxt.sax = sax
  */
+      __Pyx_TraceLine(901,0,__PYX_ERR(2, 901, __pyx_L1_error))
       (void)(memcpy(__pyx_v_sax, (&htmlDefaultSAXHandler), (sizeof(htmlDefaultSAXHandler))));
 
-      /* "src/lxml/parser.pxi":902
+      /* "src/lxml/parser.pxi":903
  *                 cstring_h.memcpy(sax, &htmlparser.htmlDefaultSAXHandler,
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  *                 c_ctxt.sax = sax             # <<<<<<<<<<<<<<
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC
  *             sax.serror = _receiveParserError
  */
+      __Pyx_TraceLine(903,0,__PYX_ERR(2, 903, __pyx_L1_error))
       __pyx_v_c_ctxt->sax = __pyx_v_sax;
 
-      /* "src/lxml/parser.pxi":896
+      /* "src/lxml/parser.pxi":897
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:
  *             # need to extend SAX1 context to SAX2 to get proper error reports
  *             if <xmlparser.xmlSAXHandlerV1*>sax is &htmlparser.htmlDefaultSAXHandler:             # <<<<<<<<<<<<<<
@@ -112327,52 +119306,57 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
     }
 
-    /* "src/lxml/parser.pxi":903
+    /* "src/lxml/parser.pxi":904
  *                                  sizeof(htmlparser.htmlDefaultSAXHandler))
  *                 c_ctxt.sax = sax
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC             # <<<<<<<<<<<<<<
  *             sax.serror = _receiveParserError
  *             sax.startElementNs = NULL
  */
+    __Pyx_TraceLine(904,0,__PYX_ERR(2, 904, __pyx_L1_error))
     __pyx_v_sax->initialized = XML_SAX2_MAGIC;
 
-    /* "src/lxml/parser.pxi":904
+    /* "src/lxml/parser.pxi":905
  *                 c_ctxt.sax = sax
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC
  *             sax.serror = _receiveParserError             # <<<<<<<<<<<<<<
  *             sax.startElementNs = NULL
  *             sax.endElementNs = NULL
  */
+    __Pyx_TraceLine(905,0,__PYX_ERR(2, 905, __pyx_L1_error))
     __pyx_v_sax->serror = __pyx_f_4lxml_5etree__receiveParserError;
 
-    /* "src/lxml/parser.pxi":905
+    /* "src/lxml/parser.pxi":906
  *             sax.initialized = xmlparser.XML_SAX2_MAGIC
  *             sax.serror = _receiveParserError
  *             sax.startElementNs = NULL             # <<<<<<<<<<<<<<
  *             sax.endElementNs = NULL
  *             sax._private = NULL
  */
+    __Pyx_TraceLine(906,0,__PYX_ERR(2, 906, __pyx_L1_error))
     __pyx_v_sax->startElementNs = NULL;
 
-    /* "src/lxml/parser.pxi":906
+    /* "src/lxml/parser.pxi":907
  *             sax.serror = _receiveParserError
  *             sax.startElementNs = NULL
  *             sax.endElementNs = NULL             # <<<<<<<<<<<<<<
  *             sax._private = NULL
  *         return 0
  */
+    __Pyx_TraceLine(907,0,__PYX_ERR(2, 907, __pyx_L1_error))
     __pyx_v_sax->endElementNs = NULL;
 
-    /* "src/lxml/parser.pxi":907
+    /* "src/lxml/parser.pxi":908
  *             sax.startElementNs = NULL
  *             sax.endElementNs = NULL
  *             sax._private = NULL             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+    __Pyx_TraceLine(908,0,__PYX_ERR(2, 908, __pyx_L1_error))
     __pyx_v_sax->_private = NULL;
 
-    /* "src/lxml/parser.pxi":894
+    /* "src/lxml/parser.pxi":895
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
  *         cdef xmlparser.xmlSAXHandler* sax = c_ctxt.sax
  *         if sax is not NULL and sax.initialized and sax.initialized != xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
@@ -112381,17 +119365,18 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
  */
   }
 
-  /* "src/lxml/parser.pxi":908
+  /* "src/lxml/parser.pxi":909
  *             sax.endElementNs = NULL
  *             sax._private = NULL
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:
  */
+  __Pyx_TraceLine(909,0,__PYX_ERR(2, 909, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":892
+  /* "src/lxml/parser.pxi":893
  *             pctxt.sax.cdataBlock = NULL
  * 
  *     cdef int _registerHtmlErrorHandler(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:             # <<<<<<<<<<<<<<
@@ -112404,11 +119389,12 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
   __Pyx_AddTraceback("lxml.etree._BaseParser._registerHtmlErrorHandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":910
+/* "src/lxml/parser.pxi":911
  *         return 0
  * 
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -112419,50 +119405,56 @@ static int __pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler(CYTHON_U
 static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   xmlParserCtxt *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_newParserCtxt", 0);
+  __Pyx_TraceCall("_newParserCtxt", __pyx_f[2], 911, 0, __PYX_ERR(2, 911, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":912
+  /* "src/lxml/parser.pxi":913
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:             # <<<<<<<<<<<<<<
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:
  */
+  __Pyx_TraceLine(913,0,__PYX_ERR(2, 913, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_for_html != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":913
+    /* "src/lxml/parser.pxi":914
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)             # <<<<<<<<<<<<<<
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)
  */
+    __Pyx_TraceLine(914,0,__PYX_ERR(2, 914, __pyx_L1_error))
     __pyx_v_c_ctxt = htmlCreateMemoryParserCtxt(((char *)"dummy"), 5);
 
-    /* "src/lxml/parser.pxi":914
+    /* "src/lxml/parser.pxi":915
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *         else:
  */
+    __Pyx_TraceLine(915,0,__PYX_ERR(2, 915, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":915
+      /* "src/lxml/parser.pxi":916
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)             # <<<<<<<<<<<<<<
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  */
-      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 915, __pyx_L1_error)
+      __Pyx_TraceLine(916,0,__PYX_ERR(2, 916, __pyx_L1_error))
+      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 916, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":914
+      /* "src/lxml/parser.pxi":915
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -112471,7 +119463,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
     }
 
-    /* "src/lxml/parser.pxi":912
+    /* "src/lxml/parser.pxi":913
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -112481,38 +119473,41 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":917
+  /* "src/lxml/parser.pxi":918
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()             # <<<<<<<<<<<<<<
  *         if c_ctxt is NULL:
  *             raise MemoryError
  */
+  __Pyx_TraceLine(918,0,__PYX_ERR(2, 918, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_ctxt = xmlNewParserCtxt();
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":918
+  /* "src/lxml/parser.pxi":919
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
  *             raise MemoryError
  *         c_ctxt.sax.startDocument = _initSaxDocument
  */
+  __Pyx_TraceLine(919,0,__PYX_ERR(2, 919, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":919
+    /* "src/lxml/parser.pxi":920
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:
  *             raise MemoryError             # <<<<<<<<<<<<<<
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 919, __pyx_L1_error)
+    __Pyx_TraceLine(920,0,__PYX_ERR(2, 920, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 920, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":918
+    /* "src/lxml/parser.pxi":919
  *         else:
  *             c_ctxt = xmlparser.xmlNewParserCtxt()
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -112521,26 +119516,28 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
  */
   }
 
-  /* "src/lxml/parser.pxi":920
+  /* "src/lxml/parser.pxi":921
  *         if c_ctxt is NULL:
  *             raise MemoryError
  *         c_ctxt.sax.startDocument = _initSaxDocument             # <<<<<<<<<<<<<<
  *         return c_ctxt
  * 
  */
+  __Pyx_TraceLine(921,0,__PYX_ERR(2, 921, __pyx_L1_error))
   __pyx_v_c_ctxt->sax->startDocument = __pyx_f_4lxml_5etree__initSaxDocument;
 
-  /* "src/lxml/parser.pxi":921
+  /* "src/lxml/parser.pxi":922
  *             raise MemoryError
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(2, 922, __pyx_L1_error))
   __pyx_r = __pyx_v_c_ctxt;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":910
+  /* "src/lxml/parser.pxi":911
  *         return 0
  * 
  *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -112553,11 +119550,12 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct _
   __Pyx_AddTraceback("lxml.etree._BaseParser._newParserCtxt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":923
+/* "src/lxml/parser.pxi":924
  *         return c_ctxt
  * 
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -112569,20 +119567,23 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   xmlParserCtxt *__pyx_v_c_ctxt;
   char *__pyx_v_c_filename;
   xmlParserCtxt *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   char *__pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_newPushParserCtxt", 0);
+  __Pyx_TraceCall("_newPushParserCtxt", __pyx_f[2], 924, 0, __PYX_ERR(2, 924, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":925
+  /* "src/lxml/parser.pxi":926
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL             # <<<<<<<<<<<<<<
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  */
+  __Pyx_TraceLine(926,0,__PYX_ERR(2, 926, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_filename != ((PyObject*)Py_None));
   if ((__pyx_t_2 != 0)) {
     __pyx_t_3 = __pyx_v_self->_filename;
@@ -112594,54 +119595,59 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   }
   __pyx_v_c_filename = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":926
+  /* "src/lxml/parser.pxi":927
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:             # <<<<<<<<<<<<<<
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  */
+  __Pyx_TraceLine(927,0,__PYX_ERR(2, 927, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_for_html != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":927
+    /* "src/lxml/parser.pxi":928
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(             # <<<<<<<<<<<<<<
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:
  */
+    __Pyx_TraceLine(928,0,__PYX_ERR(2, 928, __pyx_L1_error))
     __pyx_v_c_ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename, XML_CHAR_ENCODING_NONE);
 
-    /* "src/lxml/parser.pxi":929
+    /* "src/lxml/parser.pxi":930
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
  */
+    __Pyx_TraceLine(930,0,__PYX_ERR(2, 930, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":930
+      /* "src/lxml/parser.pxi":931
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)             # <<<<<<<<<<<<<<
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         else:
  */
-      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 930, __pyx_L1_error)
+      __Pyx_TraceLine(931,0,__PYX_ERR(2, 931, __pyx_L1_error))
+      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_registerHtmlErrorHandler(__pyx_v_self, __pyx_v_c_ctxt); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 931, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":931
+      /* "src/lxml/parser.pxi":932
  *             if c_ctxt is not NULL:
  *                 self._registerHtmlErrorHandler(c_ctxt)
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
  *         else:
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  */
+      __Pyx_TraceLine(932,0,__PYX_ERR(2, 932, __pyx_L1_error))
       (void)(htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options));
 
-      /* "src/lxml/parser.pxi":929
+      /* "src/lxml/parser.pxi":930
  *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -112650,7 +119656,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
     }
 
-    /* "src/lxml/parser.pxi":926
+    /* "src/lxml/parser.pxi":927
  *         cdef xmlparser.xmlParserCtxt* c_ctxt
  *         cdef char* c_filename = _cstr(self._filename) if self._filename is not None else NULL
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -112660,44 +119666,48 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":933
+  /* "src/lxml/parser.pxi":934
  *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         else:
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(             # <<<<<<<<<<<<<<
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:
  */
+  __Pyx_TraceLine(934,0,__PYX_ERR(2, 934, __pyx_L1_error))
   /*else*/ {
 
-    /* "src/lxml/parser.pxi":934
+    /* "src/lxml/parser.pxi":935
  *         else:
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)             # <<<<<<<<<<<<<<
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  */
+    __Pyx_TraceLine(935,0,__PYX_ERR(2, 935, __pyx_L1_error))
     __pyx_v_c_ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename);
 
-    /* "src/lxml/parser.pxi":935
+    /* "src/lxml/parser.pxi":936
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:
  */
+    __Pyx_TraceLine(936,0,__PYX_ERR(2, 936, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_ctxt != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":936
+      /* "src/lxml/parser.pxi":937
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
  *         if c_ctxt is NULL:
  *             raise MemoryError()
  */
+      __Pyx_TraceLine(937,0,__PYX_ERR(2, 937, __pyx_L1_error))
       (void)(xmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options));
 
-      /* "src/lxml/parser.pxi":935
+      /* "src/lxml/parser.pxi":936
  *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
  *                 NULL, NULL, NULL, 0, c_filename)
  *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
@@ -112708,26 +119718,28 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":937
+  /* "src/lxml/parser.pxi":938
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
  *             raise MemoryError()
  *         c_ctxt.sax.startDocument = _initSaxDocument
  */
+  __Pyx_TraceLine(938,0,__PYX_ERR(2, 938, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "src/lxml/parser.pxi":938
+    /* "src/lxml/parser.pxi":939
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:
  *             raise MemoryError()             # <<<<<<<<<<<<<<
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 938, __pyx_L1_error)
+    __Pyx_TraceLine(939,0,__PYX_ERR(2, 939, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 939, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":937
+    /* "src/lxml/parser.pxi":938
  *             if c_ctxt is not NULL:
  *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
  *         if c_ctxt is NULL:             # <<<<<<<<<<<<<<
@@ -112736,26 +119748,28 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  */
   }
 
-  /* "src/lxml/parser.pxi":939
+  /* "src/lxml/parser.pxi":940
  *         if c_ctxt is NULL:
  *             raise MemoryError()
  *         c_ctxt.sax.startDocument = _initSaxDocument             # <<<<<<<<<<<<<<
  *         return c_ctxt
  * 
  */
+  __Pyx_TraceLine(940,0,__PYX_ERR(2, 940, __pyx_L1_error))
   __pyx_v_c_ctxt->sax->startDocument = __pyx_f_4lxml_5etree__initSaxDocument;
 
-  /* "src/lxml/parser.pxi":940
+  /* "src/lxml/parser.pxi":941
  *             raise MemoryError()
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt             # <<<<<<<<<<<<<<
  * 
  *     property error_log:
  */
+  __Pyx_TraceLine(941,0,__PYX_ERR(2, 941, __pyx_L1_error))
   __pyx_r = __pyx_v_c_ctxt;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":923
+  /* "src/lxml/parser.pxi":924
  *         return c_ctxt
  * 
  *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self) except NULL:             # <<<<<<<<<<<<<<
@@ -112769,11 +119783,12 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   __Pyx_AddTraceback("lxml.etree._BaseParser._newPushParserCtxt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":945
+/* "src/lxml/parser.pxi":946
  *         u"""The error log of the last parser run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112797,37 +119812,41 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9error_log_1__get__(PyObjec
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[2], 946, 0, __PYX_ERR(2, 946, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":947
+  /* "src/lxml/parser.pxi":948
  *         def __get__(self):
  *             cdef _ParserContext context
  *             context = self._getParserContext()             # <<<<<<<<<<<<<<
  *             return context._error_log.copy()
  * 
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 947, __pyx_L1_error)
+  __Pyx_TraceLine(948,0,__PYX_ERR(2, 948, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 948, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":948
+  /* "src/lxml/parser.pxi":949
  *             cdef _ParserContext context
  *             context = self._getParserContext()
  *             return context._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     property resolvers:
  */
+  __Pyx_TraceLine(949,0,__PYX_ERR(2, 949, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_context->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_context->_error_log), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 948, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_context->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_context->_error_log), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 949, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":945
+  /* "src/lxml/parser.pxi":946
  *         u"""The error log of the last parser run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112843,11 +119862,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":952
+/* "src/lxml/parser.pxi":953
  *     property resolvers:
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112870,22 +119890,25 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9resolvers_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[2], 953, 0, __PYX_ERR(2, 953, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":953
+  /* "src/lxml/parser.pxi":954
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):
  *             return self._resolvers             # <<<<<<<<<<<<<<
  * 
  *     property version:
  */
+  __Pyx_TraceLine(954,0,__PYX_ERR(2, 954, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_resolvers));
   __pyx_r = ((PyObject *)__pyx_v_self->_resolvers);
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":952
+  /* "src/lxml/parser.pxi":953
  *     property resolvers:
  *         u"The custom resolver registry of this parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112894,13 +119917,17 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseParser.resolvers.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":957
+/* "src/lxml/parser.pxi":958
  *     property version:
  *         u"The version of the underlying XML parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112923,29 +119950,32 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_7version_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[2], 958, 0, __PYX_ERR(2, 958, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":958
+  /* "src/lxml/parser.pxi":959
  *         u"The version of the underlying XML parser."
  *         def __get__(self):
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION             # <<<<<<<<<<<<<<
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):
  */
+  __Pyx_TraceLine(959,0,__PYX_ERR(2, 959, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LIBXML_VERSION); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 958, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_LIBXML_VERSION); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_libxml2_d_d_d, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 958, __pyx_L1_error)
+  __pyx_t_2 = PyUnicode_Format(__pyx_kp_u_libxml2_d_d_d, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":957
+  /* "src/lxml/parser.pxi":958
  *     property version:
  *         u"The version of the underlying XML parser."
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -112961,11 +119991,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":960
+/* "src/lxml/parser.pxi":961
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -113004,7 +120035,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_3setElementClassLookup(PyOb
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setElementClassLookup") < 0)) __PYX_ERR(2, 960, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setElementClassLookup") < 0)) __PYX_ERR(2, 961, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -113018,13 +120049,13 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_3setElementClassLookup(PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setElementClassLookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 960, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("setElementClassLookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 961, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.setElementClassLookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __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(2, 960, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) __PYX_ERR(2, 961, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_lookup);
 
   /* function exit code */
@@ -113038,21 +120069,25 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_3setElementClassLookup(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__235)
   __Pyx_RefNannySetupContext("setElementClassLookup", 0);
+  __Pyx_TraceCall("setElementClassLookup", __pyx_f[2], 961, 0, __PYX_ERR(2, 961, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":962
+  /* "src/lxml/parser.pxi":963
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
  *         self.set_element_class_lookup(lookup)             # <<<<<<<<<<<<<<
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 962, __pyx_L1_error)
+  __Pyx_TraceLine(963,0,__PYX_ERR(2, 963, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 963, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -113065,13 +120100,13 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_lookup)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 962, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_lookup)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 963, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_lookup)};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 962, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 963, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else
@@ -113079,19 +120114,19 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_lookup)};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 962, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 963, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else
     #endif
     {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 962, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 963, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_lookup));
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 962, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 963, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
@@ -113099,7 +120134,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":960
+  /* "src/lxml/parser.pxi":961
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -113119,11 +120154,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":964
+/* "src/lxml/parser.pxi":965
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -113162,7 +120198,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_5set_element_class_lookup(P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_element_class_lookup") < 0)) __PYX_ERR(2, 964, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_element_class_lookup") < 0)) __PYX_ERR(2, 965, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -113176,13 +120212,13 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_5set_element_class_lookup(P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 964, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 965, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseParser.set_element_class_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __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(2, 964, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) __PYX_ERR(2, 965, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_lookup);
 
   /* function exit code */
@@ -113196,23 +120232,27 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_5set_element_class_lookup(P
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__236)
   __Pyx_RefNannySetupContext("set_element_class_lookup", 0);
+  __Pyx_TraceCall("set_element_class_lookup", __pyx_f[2], 965, 0, __PYX_ERR(2, 965, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":971
+  /* "src/lxml/parser.pxi":972
  *         Reset it by passing None or nothing.
  *         """
  *         self._class_lookup = lookup             # <<<<<<<<<<<<<<
  * 
  *     cdef _BaseParser _copy(self):
  */
+  __Pyx_TraceLine(972,0,__PYX_ERR(2, 972, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
   __Pyx_GOTREF(__pyx_v_self->_class_lookup);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_class_lookup));
   __pyx_v_self->_class_lookup = __pyx_v_lookup;
 
-  /* "src/lxml/parser.pxi":964
+  /* "src/lxml/parser.pxi":965
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
@@ -113222,12 +120262,18 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(s
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseParser.set_element_class_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":973
+/* "src/lxml/parser.pxi":974
  *         self._class_lookup = lookup
  * 
  *     cdef _BaseParser _copy(self):             # <<<<<<<<<<<<<<
@@ -113238,6 +120284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_4set_element_class_lookup(s
 static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BaseParser__copy(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
   struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -113245,15 +120292,17 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[2], 974, 0, __PYX_ERR(2, 974, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":976
+  /* "src/lxml/parser.pxi":977
  *         u"Create a new parser with the same configuration."
  *         cdef _BaseParser parser
  *         parser = self.__class__()             # <<<<<<<<<<<<<<
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 976, __pyx_L1_error)
+  __Pyx_TraceLine(977,0,__PYX_ERR(2, 977, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 977, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -113266,74 +120315,80 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 976, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 977, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 976, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 977, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(2, 976, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(2, 977, __pyx_L1_error)
   __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":977
+  /* "src/lxml/parser.pxi":978
  *         cdef _BaseParser parser
  *         parser = self.__class__()
  *         parser._parse_options = self._parse_options             # <<<<<<<<<<<<<<
  *         parser._for_html = self._for_html
  *         parser._remove_comments = self._remove_comments
  */
+  __Pyx_TraceLine(978,0,__PYX_ERR(2, 978, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_parse_options;
   __pyx_v_parser->_parse_options = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":978
+  /* "src/lxml/parser.pxi":979
  *         parser = self.__class__()
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html             # <<<<<<<<<<<<<<
  *         parser._remove_comments = self._remove_comments
  *         parser._remove_pis = self._remove_pis
  */
+  __Pyx_TraceLine(979,0,__PYX_ERR(2, 979, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_for_html;
   __pyx_v_parser->_for_html = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":979
+  /* "src/lxml/parser.pxi":980
  *         parser._parse_options = self._parse_options
  *         parser._for_html = self._for_html
  *         parser._remove_comments = self._remove_comments             # <<<<<<<<<<<<<<
  *         parser._remove_pis = self._remove_pis
  *         parser._strip_cdata = self._strip_cdata
  */
+  __Pyx_TraceLine(980,0,__PYX_ERR(2, 980, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_remove_comments;
   __pyx_v_parser->_remove_comments = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":980
+  /* "src/lxml/parser.pxi":981
  *         parser._for_html = self._for_html
  *         parser._remove_comments = self._remove_comments
  *         parser._remove_pis = self._remove_pis             # <<<<<<<<<<<<<<
  *         parser._strip_cdata = self._strip_cdata
  *         parser._filename = self._filename
  */
+  __Pyx_TraceLine(981,0,__PYX_ERR(2, 981, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_remove_pis;
   __pyx_v_parser->_remove_pis = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":981
+  /* "src/lxml/parser.pxi":982
  *         parser._remove_comments = self._remove_comments
  *         parser._remove_pis = self._remove_pis
  *         parser._strip_cdata = self._strip_cdata             # <<<<<<<<<<<<<<
  *         parser._filename = self._filename
  *         parser._resolvers = self._resolvers
  */
+  __Pyx_TraceLine(982,0,__PYX_ERR(2, 982, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_self->_strip_cdata;
   __pyx_v_parser->_strip_cdata = __pyx_t_5;
 
-  /* "src/lxml/parser.pxi":982
+  /* "src/lxml/parser.pxi":983
  *         parser._remove_pis = self._remove_pis
  *         parser._strip_cdata = self._strip_cdata
  *         parser._filename = self._filename             # <<<<<<<<<<<<<<
  *         parser._resolvers = self._resolvers
  *         parser.target = self.target
  */
+  __Pyx_TraceLine(983,0,__PYX_ERR(2, 983, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_filename;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113342,13 +120397,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_filename = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":983
+  /* "src/lxml/parser.pxi":984
  *         parser._strip_cdata = self._strip_cdata
  *         parser._filename = self._filename
  *         parser._resolvers = self._resolvers             # <<<<<<<<<<<<<<
  *         parser.target = self.target
  *         parser._class_lookup  = self._class_lookup
  */
+  __Pyx_TraceLine(984,0,__PYX_ERR(2, 984, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_resolvers);
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113357,13 +120413,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":984
+  /* "src/lxml/parser.pxi":985
  *         parser._filename = self._filename
  *         parser._resolvers = self._resolvers
  *         parser.target = self.target             # <<<<<<<<<<<<<<
  *         parser._class_lookup  = self._class_lookup
  *         parser._default_encoding = self._default_encoding
  */
+  __Pyx_TraceLine(985,0,__PYX_ERR(2, 985, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->target;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113372,13 +120429,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->target = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":985
+  /* "src/lxml/parser.pxi":986
  *         parser._resolvers = self._resolvers
  *         parser.target = self.target
  *         parser._class_lookup  = self._class_lookup             # <<<<<<<<<<<<<<
  *         parser._default_encoding = self._default_encoding
  *         parser._schema = self._schema
  */
+  __Pyx_TraceLine(986,0,__PYX_ERR(2, 986, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_class_lookup);
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113387,13 +120445,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_class_lookup = ((struct LxmlElementClassLookup *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":986
+  /* "src/lxml/parser.pxi":987
  *         parser.target = self.target
  *         parser._class_lookup  = self._class_lookup
  *         parser._default_encoding = self._default_encoding             # <<<<<<<<<<<<<<
  *         parser._schema = self._schema
  *         parser._events_to_collect = self._events_to_collect
  */
+  __Pyx_TraceLine(987,0,__PYX_ERR(2, 987, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_default_encoding;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113402,13 +120461,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_default_encoding = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":987
+  /* "src/lxml/parser.pxi":988
  *         parser._class_lookup  = self._class_lookup
  *         parser._default_encoding = self._default_encoding
  *         parser._schema = self._schema             # <<<<<<<<<<<<<<
  *         parser._events_to_collect = self._events_to_collect
  *         return parser
  */
+  __Pyx_TraceLine(988,0,__PYX_ERR(2, 988, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_schema);
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113417,13 +120477,14 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":988
+  /* "src/lxml/parser.pxi":989
  *         parser._default_encoding = self._default_encoding
  *         parser._schema = self._schema
  *         parser._events_to_collect = self._events_to_collect             # <<<<<<<<<<<<<<
  *         return parser
  * 
  */
+  __Pyx_TraceLine(989,0,__PYX_ERR(2, 989, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_events_to_collect;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -113432,19 +120493,20 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_v_parser->_events_to_collect = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":989
+  /* "src/lxml/parser.pxi":990
  *         parser._schema = self._schema
  *         parser._events_to_collect = self._events_to_collect
  *         return parser             # <<<<<<<<<<<<<<
  * 
  *     def copy(self):
  */
+  __Pyx_TraceLine(990,0,__PYX_ERR(2, 990, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __pyx_r = __pyx_v_parser;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":973
+  /* "src/lxml/parser.pxi":974
  *         self._class_lookup = lookup
  * 
  *     cdef _BaseParser _copy(self):             # <<<<<<<<<<<<<<
@@ -113462,11 +120524,12 @@ static struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BasePa
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":991
+/* "src/lxml/parser.pxi":992
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
@@ -113491,25 +120554,29 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_7copy(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6copy(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__237)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[2], 992, 0, __PYX_ERR(2, 992, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":996
+  /* "src/lxml/parser.pxi":997
  *         Create a new parser with the same configuration.
  *         """
  *         return self._copy()             # <<<<<<<<<<<<<<
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
  */
+  __Pyx_TraceLine(997,0,__PYX_ERR(2, 997, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_copy(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 996, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_copy(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 997, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":991
+  /* "src/lxml/parser.pxi":992
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
@@ -113524,11 +120591,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6copy(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":998
+/* "src/lxml/parser.pxi":999
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -113587,7 +120655,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9makeelement(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) __PYX_ERR(2, 998, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) __PYX_ERR(2, 999, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -113606,7 +120674,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9makeelement(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 998, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 999, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
   __Pyx_AddTraceback("lxml.etree._BaseParser.makeelement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -113623,33 +120691,38 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_9makeelement(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_8makeelement(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v__tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v__extra) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__238)
   __Pyx_RefNannySetupContext("makeelement", 0);
+  __Pyx_TraceCall("makeelement", __pyx_f[2], 999, 0, __PYX_ERR(2, 999, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1003
+  /* "src/lxml/parser.pxi":1004
  *         Creates a new element associated with this parser.
  *         """
  *         return _makeElement(_tag, NULL, None, self, None, None,             # <<<<<<<<<<<<<<
  *                             attrib, nsmap, _extra)
  * 
  */
+  __Pyx_TraceLine(1004,0,__PYX_ERR(2, 1004, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
-  /* "src/lxml/parser.pxi":1004
+  /* "src/lxml/parser.pxi":1005
  *         """
  *         return _makeElement(_tag, NULL, None, self, None, None,
  *                             attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
  * 
  *     # internal parser methods
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), __pyx_v_self, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1003, __pyx_L1_error)
+  __Pyx_TraceLine(1005,0,__PYX_ERR(2, 1005, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), __pyx_v_self, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1004, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":998
+  /* "src/lxml/parser.pxi":999
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -113664,11 +120737,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_8makeelement(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1008
+/* "src/lxml/parser.pxi":1009
  *     # internal parser methods
  * 
  *     cdef xmlDoc* _parseUnicodeDoc(self, utext, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -113688,6 +120762,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   int __pyx_v_is_pep393_string;
   int __pyx_v_orig_options;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -113706,23 +120781,26 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   PyObject *__pyx_t_15 = NULL;
   int __pyx_t_16;
   __Pyx_RefNannySetupContext("_parseUnicodeDoc", 0);
+  __Pyx_TraceCall("_parseUnicodeDoc", __pyx_f[2], 1009, 0, __PYX_ERR(2, 1009, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1017
+  /* "src/lxml/parser.pxi":1018
  *         cdef int buffer_len, c_kind
  *         cdef const_char* c_text
  *         cdef const_char* c_encoding = _UNICODE_ENCODING             # <<<<<<<<<<<<<<
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  */
+  __Pyx_TraceLine(1018,0,__PYX_ERR(2, 1018, __pyx_L1_error))
   __pyx_v_c_encoding = __pyx_v_4lxml_5etree__UNICODE_ENCODING;
 
-  /* "src/lxml/parser.pxi":1019
+  /* "src/lxml/parser.pxi":1020
  *         cdef const_char* c_encoding = _UNICODE_ENCODING
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))             # <<<<<<<<<<<<<<
  *         if is_pep393_string:
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  */
+  __Pyx_TraceLine(1020,0,__PYX_ERR(2, 1020, __pyx_L1_error))
   __pyx_t_2 = (CYTHON_PEP393_ENABLED != 0);
   if (__pyx_t_2) {
   } else {
@@ -113734,63 +120812,69 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   __pyx_L3_bool_binop_done:;
   __pyx_v_is_pep393_string = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1020
+  /* "src/lxml/parser.pxi":1021
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  */
+  __Pyx_TraceLine(1021,0,__PYX_ERR(2, 1021, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_is_pep393_string != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1021
+    /* "src/lxml/parser.pxi":1022
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)             # <<<<<<<<<<<<<<
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)
  */
+    __Pyx_TraceLine(1022,0,__PYX_ERR(2, 1022, __pyx_L1_error))
     __pyx_v_c_text = ((const char *)PyUnicode_DATA(__pyx_v_utext));
 
-    /* "src/lxml/parser.pxi":1022
+    /* "src/lxml/parser.pxi":1023
  *         if is_pep393_string:
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)             # <<<<<<<<<<<<<<
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:
  */
+    __Pyx_TraceLine(1023,0,__PYX_ERR(2, 1023, __pyx_L1_error))
     __pyx_v_py_buffer_len = PyUnicode_GET_LENGTH(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":1023
+    /* "src/lxml/parser.pxi":1024
  *             c_text = <const_char*>python.PyUnicode_DATA(utext)
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)             # <<<<<<<<<<<<<<
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'
  */
+    __Pyx_TraceLine(1024,0,__PYX_ERR(2, 1024, __pyx_L1_error))
     __pyx_v_c_kind = PyUnicode_KIND(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":1024
+    /* "src/lxml/parser.pxi":1025
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:             # <<<<<<<<<<<<<<
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:
  */
+    __Pyx_TraceLine(1025,0,__PYX_ERR(2, 1025, __pyx_L1_error))
     switch (__pyx_v_c_kind) {
       case 1:
 
-      /* "src/lxml/parser.pxi":1025
+      /* "src/lxml/parser.pxi":1026
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'             # <<<<<<<<<<<<<<
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2
  */
+      __Pyx_TraceLine(1026,0,__PYX_ERR(2, 1026, __pyx_L1_error))
       __pyx_v_c_encoding = ((const char *)"ISO-8859-1");
 
-      /* "src/lxml/parser.pxi":1024
+      /* "src/lxml/parser.pxi":1025
  *             py_buffer_len = python.PyUnicode_GET_LENGTH(utext)
  *             c_kind = python.PyUnicode_KIND(utext)
  *             if c_kind == 1:             # <<<<<<<<<<<<<<
@@ -113799,44 +120883,48 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       break;
 
-      /* "src/lxml/parser.pxi":1026
+      /* "src/lxml/parser.pxi":1027
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:             # <<<<<<<<<<<<<<
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:
  */
+      __Pyx_TraceLine(1027,0,__PYX_ERR(2, 1027, __pyx_L1_error))
       case 2:
 
-      /* "src/lxml/parser.pxi":1027
+      /* "src/lxml/parser.pxi":1028
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2             # <<<<<<<<<<<<<<
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2
  */
+      __Pyx_TraceLine(1028,0,__PYX_ERR(2, 1028, __pyx_L1_error))
       __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len * 2);
 
-      /* "src/lxml/parser.pxi":1028
+      /* "src/lxml/parser.pxi":1029
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2
  *                 else:
  */
+      __Pyx_TraceLine(1029,0,__PYX_ERR(2, 1029, __pyx_L1_error))
       __pyx_t_1 = (PY_BIG_ENDIAN != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":1029
+        /* "src/lxml/parser.pxi":1030
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2             # <<<<<<<<<<<<<<
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  */
+        __Pyx_TraceLine(1030,0,__PYX_ERR(2, 1030, __pyx_L1_error))
         __pyx_v_c_encoding = ((const char *)"UTF-16BE");
 
-        /* "src/lxml/parser.pxi":1028
+        /* "src/lxml/parser.pxi":1029
  *             elif c_kind == 2:
  *                 py_buffer_len *= 2
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -113846,19 +120934,20 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         goto __pyx_L6;
       }
 
-      /* "src/lxml/parser.pxi":1031
+      /* "src/lxml/parser.pxi":1032
  *                     c_encoding = 'UTF-16BE'  # actually UCS-2
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2             # <<<<<<<<<<<<<<
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4
  */
+      __Pyx_TraceLine(1032,0,__PYX_ERR(2, 1032, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_encoding = ((const char *)"UTF-16LE");
       }
       __pyx_L6:;
 
-      /* "src/lxml/parser.pxi":1026
+      /* "src/lxml/parser.pxi":1027
  *             if c_kind == 1:
  *                 c_encoding = 'ISO-8859-1'
  *             elif c_kind == 2:             # <<<<<<<<<<<<<<
@@ -113867,44 +120956,48 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
       break;
 
-      /* "src/lxml/parser.pxi":1032
+      /* "src/lxml/parser.pxi":1033
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:             # <<<<<<<<<<<<<<
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:
  */
+      __Pyx_TraceLine(1033,0,__PYX_ERR(2, 1033, __pyx_L1_error))
       case 4:
 
-      /* "src/lxml/parser.pxi":1033
+      /* "src/lxml/parser.pxi":1034
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4             # <<<<<<<<<<<<<<
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UCS-4BE'
  */
+      __Pyx_TraceLine(1034,0,__PYX_ERR(2, 1034, __pyx_L1_error))
       __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len * 4);
 
-      /* "src/lxml/parser.pxi":1034
+      /* "src/lxml/parser.pxi":1035
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
  *                     c_encoding = 'UCS-4BE'
  *                 else:
  */
+      __Pyx_TraceLine(1035,0,__PYX_ERR(2, 1035, __pyx_L1_error))
       __pyx_t_1 = (PY_BIG_ENDIAN != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/parser.pxi":1035
+        /* "src/lxml/parser.pxi":1036
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:
  *                     c_encoding = 'UCS-4BE'             # <<<<<<<<<<<<<<
  *                 else:
  *                     c_encoding = 'UCS-4LE'
  */
+        __Pyx_TraceLine(1036,0,__PYX_ERR(2, 1036, __pyx_L1_error))
         __pyx_v_c_encoding = ((const char *)"UCS-4BE");
 
-        /* "src/lxml/parser.pxi":1034
+        /* "src/lxml/parser.pxi":1035
  *             elif c_kind == 4:
  *                 py_buffer_len *= 4
  *                 if python.PY_BIG_ENDIAN:             # <<<<<<<<<<<<<<
@@ -113914,19 +121007,20 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         goto __pyx_L7;
       }
 
-      /* "src/lxml/parser.pxi":1037
+      /* "src/lxml/parser.pxi":1038
  *                     c_encoding = 'UCS-4BE'
  *                 else:
  *                     c_encoding = 'UCS-4LE'             # <<<<<<<<<<<<<<
  *             else:
  *                 assert False, f"Illegal Unicode kind {c_kind}"
  */
+      __Pyx_TraceLine(1038,0,__PYX_ERR(2, 1038, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_encoding = ((const char *)"UCS-4LE");
       }
       __pyx_L7:;
 
-      /* "src/lxml/parser.pxi":1032
+      /* "src/lxml/parser.pxi":1033
  *                 else:
  *                     c_encoding = 'UTF-16LE'  # actually UCS-2
  *             elif c_kind == 4:             # <<<<<<<<<<<<<<
@@ -113936,31 +121030,32 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       break;
       default:
 
-      /* "src/lxml/parser.pxi":1039
+      /* "src/lxml/parser.pxi":1040
  *                     c_encoding = 'UCS-4LE'
  *             else:
  *                 assert False, f"Illegal Unicode kind {c_kind}"             # <<<<<<<<<<<<<<
  *         else:
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
  */
+      __Pyx_TraceLine(1040,0,__PYX_ERR(2, 1040, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         if (unlikely(!0)) {
-          __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_c_kind, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1039, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_c_kind, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1040, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Illegal_Unicode_kind, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1039, __pyx_L1_error)
+          __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Illegal_Unicode_kind, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1040, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __PYX_ERR(2, 1039, __pyx_L1_error)
+          __PYX_ERR(2, 1040, __pyx_L1_error)
         }
       }
       #endif
       break;
     }
 
-    /* "src/lxml/parser.pxi":1020
+    /* "src/lxml/parser.pxi":1021
  *         cdef bint is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(utext))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -113970,118 +121065,129 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     goto __pyx_L5;
   }
 
-  /* "src/lxml/parser.pxi":1041
+  /* "src/lxml/parser.pxi":1042
  *                 assert False, f"Illegal Unicode kind {c_kind}"
  *         else:
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)             # <<<<<<<<<<<<<<
  *             c_text = python.PyUnicode_AS_DATA(utext)
  *         assert py_buffer_len <= limits.INT_MAX
  */
+  __Pyx_TraceLine(1042,0,__PYX_ERR(2, 1042, __pyx_L1_error))
   /*else*/ {
     __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_utext);
 
-    /* "src/lxml/parser.pxi":1042
+    /* "src/lxml/parser.pxi":1043
  *         else:
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
  *             c_text = python.PyUnicode_AS_DATA(utext)             # <<<<<<<<<<<<<<
  *         assert py_buffer_len <= limits.INT_MAX
  *         buffer_len = py_buffer_len
  */
+    __Pyx_TraceLine(1043,0,__PYX_ERR(2, 1043, __pyx_L1_error))
     __pyx_v_c_text = PyUnicode_AS_DATA(__pyx_v_utext);
   }
   __pyx_L5:;
 
-  /* "src/lxml/parser.pxi":1043
+  /* "src/lxml/parser.pxi":1044
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
  *             c_text = python.PyUnicode_AS_DATA(utext)
  *         assert py_buffer_len <= limits.INT_MAX             # <<<<<<<<<<<<<<
  *         buffer_len = py_buffer_len
  * 
  */
+  __Pyx_TraceLine(1044,0,__PYX_ERR(2, 1044, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_py_buffer_len <= INT_MAX) != 0))) {
       PyErr_SetNone(PyExc_AssertionError);
-      __PYX_ERR(2, 1043, __pyx_L1_error)
+      __PYX_ERR(2, 1044, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "src/lxml/parser.pxi":1044
+  /* "src/lxml/parser.pxi":1045
  *             c_text = python.PyUnicode_AS_DATA(utext)
  *         assert py_buffer_len <= limits.INT_MAX
  *         buffer_len = py_buffer_len             # <<<<<<<<<<<<<<
  * 
  *         context = self._getParserContext()
  */
+  __Pyx_TraceLine(1045,0,__PYX_ERR(2, 1045, __pyx_L1_error))
   __pyx_v_buffer_len = __pyx_v_py_buffer_len;
 
-  /* "src/lxml/parser.pxi":1046
+  /* "src/lxml/parser.pxi":1047
  *         buffer_len = py_buffer_len
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1046, __pyx_L1_error)
+  __Pyx_TraceLine(1047,0,__PYX_ERR(2, 1047, __pyx_L1_error))
+  __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1047, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/parser.pxi":1047
+  /* "src/lxml/parser.pxi":1048
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 1047, __pyx_L1_error)
+  __Pyx_TraceLine(1048,0,__PYX_ERR(2, 1048, __pyx_L1_error))
+  __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1048
+  /* "src/lxml/parser.pxi":1049
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  */
+  __Pyx_TraceLine(1049,0,__PYX_ERR(2, 1049, __pyx_L9_error))
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1049
+    /* "src/lxml/parser.pxi":1050
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options
  */
+    __Pyx_TraceLine(1050,0,__PYX_ERR(2, 1050, __pyx_L9_error))
     __pyx_t_6 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_6;
 
-    /* "src/lxml/parser.pxi":1050
+    /* "src/lxml/parser.pxi":1051
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
  *             orig_options = pctxt.options
  *             with nogil:
  */
+    __Pyx_TraceLine(1051,0,__PYX_ERR(2, 1051, __pyx_L9_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1051
+    /* "src/lxml/parser.pxi":1052
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 if self._for_html:
  */
+    __Pyx_TraceLine(1052,0,__PYX_ERR(2, 1052, __pyx_L9_error))
     __pyx_t_5 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":1052
+    /* "src/lxml/parser.pxi":1053
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(
  */
+    __Pyx_TraceLine(1053,0,__PYX_ERR(2, 1053, __pyx_L9_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -114090,64 +121196,70 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1053
+          /* "src/lxml/parser.pxi":1054
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
  *                     result = htmlparser.htmlCtxtReadMemory(
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  */
+          __Pyx_TraceLine(1054,1,__PYX_ERR(2, 1054, __pyx_L12_error))
           __pyx_t_1 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/parser.pxi":1054
+            /* "src/lxml/parser.pxi":1055
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(             # <<<<<<<<<<<<<<
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  */
+            __Pyx_TraceLine(1055,1,__PYX_ERR(2, 1055, __pyx_L12_error))
             __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1057
+            /* "src/lxml/parser.pxi":1058
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  */
+            __Pyx_TraceLine(1058,1,__PYX_ERR(2, 1058, __pyx_L12_error))
             __pyx_t_1 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_1) {
 
-              /* "src/lxml/parser.pxi":1058
+              /* "src/lxml/parser.pxi":1059
  *                         self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL
  */
+              __Pyx_TraceLine(1059,1,__PYX_ERR(2, 1059, __pyx_L12_error))
               __pyx_t_1 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_1) {
 
-                /* "src/lxml/parser.pxi":1059
+                /* "src/lxml/parser.pxi":1060
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *                             result = NULL
  *                 else:
  */
+                __Pyx_TraceLine(1060,1,__PYX_ERR(2, 1060, __pyx_L12_error))
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1060
+                /* "src/lxml/parser.pxi":1061
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(
  */
+                __Pyx_TraceLine(1061,1,__PYX_ERR(2, 1061, __pyx_L12_error))
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1058
+                /* "src/lxml/parser.pxi":1059
  *                         self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -114156,7 +121268,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
               }
 
-              /* "src/lxml/parser.pxi":1057
+              /* "src/lxml/parser.pxi":1058
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -114165,7 +121277,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
  */
             }
 
-            /* "src/lxml/parser.pxi":1053
+            /* "src/lxml/parser.pxi":1054
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -114175,34 +121287,37 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
             goto __pyx_L14;
           }
 
-          /* "src/lxml/parser.pxi":1062
+          /* "src/lxml/parser.pxi":1063
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(             # <<<<<<<<<<<<<<
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  */
+          __Pyx_TraceLine(1063,1,__PYX_ERR(2, 1063, __pyx_L12_error))
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1064
+            /* "src/lxml/parser.pxi":1065
  *                     result = xmlparser.xmlCtxtReadMemory(
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)             # <<<<<<<<<<<<<<
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  */
+            __Pyx_TraceLine(1065,1,__PYX_ERR(2, 1065, __pyx_L12_error))
             __pyx_v_result = xmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
           }
           __pyx_L14:;
         }
 
-        /* "src/lxml/parser.pxi":1052
+        /* "src/lxml/parser.pxi":1053
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(
  */
+        __Pyx_TraceLine(1053,1,__PYX_ERR(2, 1053, __pyx_L9_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -114211,38 +121326,48 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
             #endif
             goto __pyx_L13;
           }
+          __pyx_L12_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L9_error;
+          }
           __pyx_L13:;
         }
     }
 
-    /* "src/lxml/parser.pxi":1065
+    /* "src/lxml/parser.pxi":1066
  *                         pctxt, c_text, buffer_len, c_filename, c_encoding,
  *                         self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
  * 
  *             return context._handleParseResultDoc(self, result, None)
  */
+    __Pyx_TraceLine(1066,0,__PYX_ERR(2, 1066, __pyx_L9_error))
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1067
+    /* "src/lxml/parser.pxi":1068
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1067, __pyx_L9_error)
+    __Pyx_TraceLine(1068,0,__PYX_ERR(2, 1068, __pyx_L9_error))
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1068, __pyx_L9_error)
     __pyx_r = __pyx_t_7;
     goto __pyx_L8_return;
   }
 
-  /* "src/lxml/parser.pxi":1069
+  /* "src/lxml/parser.pxi":1070
  *             return context._handleParseResultDoc(self, result, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlDoc* _parseDoc(self, char* c_text, int c_len,
  */
+  __Pyx_TraceLine(1070,0,__PYX_ERR(2, 1070, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L9_error:;
     /*exception exit:*/{
@@ -114261,7 +121386,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
       __Pyx_XGOTREF(__pyx_t_15);
       __pyx_t_5 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
       {
-        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(2, 1069, __pyx_L18_error)
+        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(2, 1070, __pyx_L18_error)
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_13);
@@ -114291,13 +121416,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
     }
     __pyx_L8_return: {
       __pyx_t_7 = __pyx_r;
-      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(2, 1069, __pyx_L1_error)
+      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(2, 1070, __pyx_L1_error)
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1008
+  /* "src/lxml/parser.pxi":1009
  *     # internal parser methods
  * 
  *     cdef xmlDoc* _parseUnicodeDoc(self, utext, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -114313,11 +121438,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1071
+/* "src/lxml/parser.pxi":1072
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDoc(self, char* c_text, int c_len,             # <<<<<<<<<<<<<<
@@ -114333,6 +121459,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
   xmlCharEncoding __pyx_v_enc;
   int __pyx_v_orig_options;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -114350,83 +121477,92 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
   PyObject *__pyx_t_14 = NULL;
   int __pyx_t_15;
   __Pyx_RefNannySetupContext("_parseDoc", 0);
+  __Pyx_TraceCall("_parseDoc", __pyx_f[2], 1072, 0, __PYX_ERR(2, 1072, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1080
+  /* "src/lxml/parser.pxi":1081
  *         cdef char* c_encoding
  *         cdef tree.xmlCharEncoding enc
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1080, __pyx_L1_error)
+  __Pyx_TraceLine(1081,0,__PYX_ERR(2, 1081, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1081, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1081
+  /* "src/lxml/parser.pxi":1082
  *         cdef tree.xmlCharEncoding enc
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1081, __pyx_L1_error)
+  __Pyx_TraceLine(1082,0,__PYX_ERR(2, 1082, __pyx_L1_error))
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1082, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1082
+  /* "src/lxml/parser.pxi":1083
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  */
+  __Pyx_TraceLine(1083,0,__PYX_ERR(2, 1083, __pyx_L4_error))
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1083
+    /* "src/lxml/parser.pxi":1084
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  */
+    __Pyx_TraceLine(1084,0,__PYX_ERR(2, 1084, __pyx_L4_error))
     __pyx_t_3 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_3;
 
-    /* "src/lxml/parser.pxi":1084
+    /* "src/lxml/parser.pxi":1085
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
  * 
  *             if self._default_encoding is None:
  */
+    __Pyx_TraceLine(1085,0,__PYX_ERR(2, 1085, __pyx_L4_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1086
+    /* "src/lxml/parser.pxi":1087
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
  *                 c_encoding = NULL
  *                 # libxml2 (at least 2.9.3) does not recognise UTF-32 BOMs
  */
+    __Pyx_TraceLine(1087,0,__PYX_ERR(2, 1087, __pyx_L4_error))
     __pyx_t_4 = (__pyx_v_self->_default_encoding == Py_None);
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/parser.pxi":1087
+      /* "src/lxml/parser.pxi":1088
  * 
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
  *                 # libxml2 (at least 2.9.3) does not recognise UTF-32 BOMs
  *                 # NOTE: limit to problematic cases because it changes character offsets
  */
+      __Pyx_TraceLine(1088,0,__PYX_ERR(2, 1088, __pyx_L4_error))
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1090
+      /* "src/lxml/parser.pxi":1091
  *                 # libxml2 (at least 2.9.3) does not recognise UTF-32 BOMs
  *                 # NOTE: limit to problematic cases because it changes character offsets
  *                 if c_len >= 4 and (c_text[0] == '\xFF' and c_text[1] == '\xFE' and             # <<<<<<<<<<<<<<
  *                                    c_text[2] == 0 and c_text[3] == 0):
  *                     c_encoding = "UTF-32LE"
  */
+      __Pyx_TraceLine(1091,0,__PYX_ERR(2, 1091, __pyx_L4_error))
       __pyx_t_4 = ((__pyx_v_c_len >= 4) != 0);
       if (__pyx_t_4) {
       } else {
@@ -114446,13 +121582,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         goto __pyx_L8_bool_binop_done;
       }
 
-      /* "src/lxml/parser.pxi":1091
+      /* "src/lxml/parser.pxi":1092
  *                 # NOTE: limit to problematic cases because it changes character offsets
  *                 if c_len >= 4 and (c_text[0] == '\xFF' and c_text[1] == '\xFE' and
  *                                    c_text[2] == 0 and c_text[3] == 0):             # <<<<<<<<<<<<<<
  *                     c_encoding = "UTF-32LE"
  *                     c_text += 4
  */
+      __Pyx_TraceLine(1092,0,__PYX_ERR(2, 1092, __pyx_L4_error))
       __pyx_t_4 = (((__pyx_v_c_text[2]) == 0) != 0);
       if (__pyx_t_4) {
       } else {
@@ -114463,43 +121600,47 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       __pyx_t_5 = __pyx_t_4;
       __pyx_L8_bool_binop_done:;
 
-      /* "src/lxml/parser.pxi":1090
+      /* "src/lxml/parser.pxi":1091
  *                 # libxml2 (at least 2.9.3) does not recognise UTF-32 BOMs
  *                 # NOTE: limit to problematic cases because it changes character offsets
  *                 if c_len >= 4 and (c_text[0] == '\xFF' and c_text[1] == '\xFE' and             # <<<<<<<<<<<<<<
  *                                    c_text[2] == 0 and c_text[3] == 0):
  *                     c_encoding = "UTF-32LE"
  */
+      __Pyx_TraceLine(1091,0,__PYX_ERR(2, 1091, __pyx_L4_error))
       if (__pyx_t_5) {
 
-        /* "src/lxml/parser.pxi":1092
+        /* "src/lxml/parser.pxi":1093
  *                 if c_len >= 4 and (c_text[0] == '\xFF' and c_text[1] == '\xFE' and
  *                                    c_text[2] == 0 and c_text[3] == 0):
  *                     c_encoding = "UTF-32LE"             # <<<<<<<<<<<<<<
  *                     c_text += 4
  *                     c_len -= 4
  */
+        __Pyx_TraceLine(1093,0,__PYX_ERR(2, 1093, __pyx_L4_error))
         __pyx_v_c_encoding = ((char *)"UTF-32LE");
 
-        /* "src/lxml/parser.pxi":1093
+        /* "src/lxml/parser.pxi":1094
  *                                    c_text[2] == 0 and c_text[3] == 0):
  *                     c_encoding = "UTF-32LE"
  *                     c_text += 4             # <<<<<<<<<<<<<<
  *                     c_len -= 4
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and
  */
+        __Pyx_TraceLine(1094,0,__PYX_ERR(2, 1094, __pyx_L4_error))
         __pyx_v_c_text = (__pyx_v_c_text + 4);
 
-        /* "src/lxml/parser.pxi":1094
+        /* "src/lxml/parser.pxi":1095
  *                     c_encoding = "UTF-32LE"
  *                     c_text += 4
  *                     c_len -= 4             # <<<<<<<<<<<<<<
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):
  */
+        __Pyx_TraceLine(1095,0,__PYX_ERR(2, 1095, __pyx_L4_error))
         __pyx_v_c_len = (__pyx_v_c_len - 4);
 
-        /* "src/lxml/parser.pxi":1090
+        /* "src/lxml/parser.pxi":1091
  *                 # libxml2 (at least 2.9.3) does not recognise UTF-32 BOMs
  *                 # NOTE: limit to problematic cases because it changes character offsets
  *                 if c_len >= 4 and (c_text[0] == '\xFF' and c_text[1] == '\xFE' and             # <<<<<<<<<<<<<<
@@ -114509,13 +121650,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         goto __pyx_L7;
       }
 
-      /* "src/lxml/parser.pxi":1095
+      /* "src/lxml/parser.pxi":1096
  *                     c_text += 4
  *                     c_len -= 4
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and             # <<<<<<<<<<<<<<
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):
  *                     c_encoding = "UTF-32BE"
  */
+      __Pyx_TraceLine(1096,0,__PYX_ERR(2, 1096, __pyx_L4_error))
       __pyx_t_4 = ((__pyx_v_c_len >= 4) != 0);
       if (__pyx_t_4) {
       } else {
@@ -114535,13 +121677,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         goto __pyx_L13_bool_binop_done;
       }
 
-      /* "src/lxml/parser.pxi":1096
+      /* "src/lxml/parser.pxi":1097
  *                     c_len -= 4
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):             # <<<<<<<<<<<<<<
  *                     c_encoding = "UTF-32BE"
  *                     c_text += 4
  */
+      __Pyx_TraceLine(1097,0,__PYX_ERR(2, 1097, __pyx_L4_error))
       __pyx_t_4 = (((__pyx_v_c_text[2]) == '\xFE') != 0);
       if (__pyx_t_4) {
       } else {
@@ -114552,43 +121695,47 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       __pyx_t_5 = __pyx_t_4;
       __pyx_L13_bool_binop_done:;
 
-      /* "src/lxml/parser.pxi":1095
+      /* "src/lxml/parser.pxi":1096
  *                     c_text += 4
  *                     c_len -= 4
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and             # <<<<<<<<<<<<<<
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):
  *                     c_encoding = "UTF-32BE"
  */
+      __Pyx_TraceLine(1096,0,__PYX_ERR(2, 1096, __pyx_L4_error))
       if (__pyx_t_5) {
 
-        /* "src/lxml/parser.pxi":1097
+        /* "src/lxml/parser.pxi":1098
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):
  *                     c_encoding = "UTF-32BE"             # <<<<<<<<<<<<<<
  *                     c_text += 4
  *                     c_len -= 4
  */
+        __Pyx_TraceLine(1098,0,__PYX_ERR(2, 1098, __pyx_L4_error))
         __pyx_v_c_encoding = ((char *)"UTF-32BE");
 
-        /* "src/lxml/parser.pxi":1098
+        /* "src/lxml/parser.pxi":1099
  *                                      c_text[2] == '\xFE' and c_text[3] == '\xFF'):
  *                     c_encoding = "UTF-32BE"
  *                     c_text += 4             # <<<<<<<<<<<<<<
  *                     c_len -= 4
  *                 else:
  */
+        __Pyx_TraceLine(1099,0,__PYX_ERR(2, 1099, __pyx_L4_error))
         __pyx_v_c_text = (__pyx_v_c_text + 4);
 
-        /* "src/lxml/parser.pxi":1099
+        /* "src/lxml/parser.pxi":1100
  *                     c_encoding = "UTF-32BE"
  *                     c_text += 4
  *                     c_len -= 4             # <<<<<<<<<<<<<<
  *                 else:
  *                     # no BOM => try to determine encoding
  */
+        __Pyx_TraceLine(1100,0,__PYX_ERR(2, 1100, __pyx_L4_error))
         __pyx_v_c_len = (__pyx_v_c_len - 4);
 
-        /* "src/lxml/parser.pxi":1095
+        /* "src/lxml/parser.pxi":1096
  *                     c_text += 4
  *                     c_len -= 4
  *                 elif c_len >= 4 and (c_text[0] == 0 and c_text[1] == 0 and             # <<<<<<<<<<<<<<
@@ -114598,36 +121745,39 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         goto __pyx_L7;
       }
 
-      /* "src/lxml/parser.pxi":1102
+      /* "src/lxml/parser.pxi":1103
  *                 else:
  *                     # no BOM => try to determine encoding
  *                     enc = tree.xmlDetectCharEncoding(<const_xmlChar*>c_text, c_len)             # <<<<<<<<<<<<<<
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:
  *                         c_encoding = 'UTF-32LE'
  */
+      __Pyx_TraceLine(1103,0,__PYX_ERR(2, 1103, __pyx_L4_error))
       /*else*/ {
         __pyx_v_enc = xmlDetectCharEncoding(((const xmlChar *)__pyx_v_c_text), __pyx_v_c_len);
 
-        /* "src/lxml/parser.pxi":1103
+        /* "src/lxml/parser.pxi":1104
  *                     # no BOM => try to determine encoding
  *                     enc = tree.xmlDetectCharEncoding(<const_xmlChar*>c_text, c_len)
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:             # <<<<<<<<<<<<<<
  *                         c_encoding = 'UTF-32LE'
  *                     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
  */
+        __Pyx_TraceLine(1104,0,__PYX_ERR(2, 1104, __pyx_L4_error))
         switch (__pyx_v_enc) {
           case XML_CHAR_ENCODING_UCS4LE:
 
-          /* "src/lxml/parser.pxi":1104
+          /* "src/lxml/parser.pxi":1105
  *                     enc = tree.xmlDetectCharEncoding(<const_xmlChar*>c_text, c_len)
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:
  *                         c_encoding = 'UTF-32LE'             # <<<<<<<<<<<<<<
  *                     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
  *                         c_encoding = 'UTF-32BE'
  */
+          __Pyx_TraceLine(1105,0,__PYX_ERR(2, 1105, __pyx_L4_error))
           __pyx_v_c_encoding = ((char *)"UTF-32LE");
 
-          /* "src/lxml/parser.pxi":1103
+          /* "src/lxml/parser.pxi":1104
  *                     # no BOM => try to determine encoding
  *                     enc = tree.xmlDetectCharEncoding(<const_xmlChar*>c_text, c_len)
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:             # <<<<<<<<<<<<<<
@@ -114636,25 +121786,27 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
           break;
 
-          /* "src/lxml/parser.pxi":1105
+          /* "src/lxml/parser.pxi":1106
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:
  *                         c_encoding = 'UTF-32LE'
  *                     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:             # <<<<<<<<<<<<<<
  *                         c_encoding = 'UTF-32BE'
  *             else:
  */
+          __Pyx_TraceLine(1106,0,__PYX_ERR(2, 1106, __pyx_L4_error))
           case XML_CHAR_ENCODING_UCS4BE:
 
-          /* "src/lxml/parser.pxi":1106
+          /* "src/lxml/parser.pxi":1107
  *                         c_encoding = 'UTF-32LE'
  *                     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
  *                         c_encoding = 'UTF-32BE'             # <<<<<<<<<<<<<<
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)
  */
+          __Pyx_TraceLine(1107,0,__PYX_ERR(2, 1107, __pyx_L4_error))
           __pyx_v_c_encoding = ((char *)"UTF-32BE");
 
-          /* "src/lxml/parser.pxi":1105
+          /* "src/lxml/parser.pxi":1106
  *                     if enc == tree.XML_CHAR_ENCODING_UCS4LE:
  *                         c_encoding = 'UTF-32LE'
  *                     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:             # <<<<<<<<<<<<<<
@@ -114667,7 +121819,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       }
       __pyx_L7:;
 
-      /* "src/lxml/parser.pxi":1086
+      /* "src/lxml/parser.pxi":1087
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -114677,13 +121829,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       goto __pyx_L6;
     }
 
-    /* "src/lxml/parser.pxi":1108
+    /* "src/lxml/parser.pxi":1109
  *                         c_encoding = 'UTF-32BE'
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
  * 
  *             orig_options = pctxt.options
  */
+    __Pyx_TraceLine(1109,0,__PYX_ERR(2, 1109, __pyx_L4_error))
     /*else*/ {
       __pyx_t_1 = __pyx_v_self->_default_encoding;
       __Pyx_INCREF(__pyx_t_1);
@@ -114692,23 +121845,25 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     }
     __pyx_L6:;
 
-    /* "src/lxml/parser.pxi":1110
+    /* "src/lxml/parser.pxi":1111
  *                 c_encoding = _cstr(self._default_encoding)
  * 
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 if self._for_html:
  */
+    __Pyx_TraceLine(1111,0,__PYX_ERR(2, 1111, __pyx_L4_error))
     __pyx_t_2 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1111
+    /* "src/lxml/parser.pxi":1112
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(
  */
+    __Pyx_TraceLine(1112,0,__PYX_ERR(2, 1112, __pyx_L4_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -114717,64 +121872,70 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1112
+          /* "src/lxml/parser.pxi":1113
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
  *                     result = htmlparser.htmlCtxtReadMemory(
  *                         pctxt, c_text, c_len, c_filename,
  */
+          __Pyx_TraceLine(1113,1,__PYX_ERR(2, 1113, __pyx_L19_error))
           __pyx_t_5 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_5) {
 
-            /* "src/lxml/parser.pxi":1113
+            /* "src/lxml/parser.pxi":1114
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(             # <<<<<<<<<<<<<<
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  */
+            __Pyx_TraceLine(1114,1,__PYX_ERR(2, 1114, __pyx_L19_error))
             __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1116
+            /* "src/lxml/parser.pxi":1117
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  */
+            __Pyx_TraceLine(1117,1,__PYX_ERR(2, 1117, __pyx_L19_error))
             __pyx_t_5 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_5) {
 
-              /* "src/lxml/parser.pxi":1117
+              /* "src/lxml/parser.pxi":1118
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL
  */
+              __Pyx_TraceLine(1118,1,__PYX_ERR(2, 1118, __pyx_L19_error))
               __pyx_t_5 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_5) {
 
-                /* "src/lxml/parser.pxi":1118
+                /* "src/lxml/parser.pxi":1119
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *                             result = NULL
  *                 else:
  */
+                __Pyx_TraceLine(1119,1,__PYX_ERR(2, 1119, __pyx_L19_error))
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1119
+                /* "src/lxml/parser.pxi":1120
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(
  */
+                __Pyx_TraceLine(1120,1,__PYX_ERR(2, 1120, __pyx_L19_error))
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1117
+                /* "src/lxml/parser.pxi":1118
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -114783,7 +121944,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
               }
 
-              /* "src/lxml/parser.pxi":1116
+              /* "src/lxml/parser.pxi":1117
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -114792,7 +121953,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
  */
             }
 
-            /* "src/lxml/parser.pxi":1112
+            /* "src/lxml/parser.pxi":1113
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -114802,34 +121963,37 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
             goto __pyx_L21;
           }
 
-          /* "src/lxml/parser.pxi":1121
+          /* "src/lxml/parser.pxi":1122
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadMemory(             # <<<<<<<<<<<<<<
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  */
+          __Pyx_TraceLine(1122,1,__PYX_ERR(2, 1122, __pyx_L19_error))
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1123
+            /* "src/lxml/parser.pxi":1124
  *                     result = xmlparser.xmlCtxtReadMemory(
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  */
+            __Pyx_TraceLine(1124,1,__PYX_ERR(2, 1124, __pyx_L19_error))
             __pyx_v_result = xmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
           }
           __pyx_L21:;
         }
 
-        /* "src/lxml/parser.pxi":1111
+        /* "src/lxml/parser.pxi":1112
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadMemory(
  */
+        __Pyx_TraceLine(1112,1,__PYX_ERR(2, 1112, __pyx_L4_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -114838,38 +122002,48 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
             #endif
             goto __pyx_L20;
           }
+          __pyx_L19_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L4_error;
+          }
           __pyx_L20:;
         }
     }
 
-    /* "src/lxml/parser.pxi":1124
+    /* "src/lxml/parser.pxi":1125
  *                         pctxt, c_text, c_len, c_filename,
  *                         c_encoding, self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
  * 
  *             return context._handleParseResultDoc(self, result, None)
  */
+    __Pyx_TraceLine(1125,0,__PYX_ERR(2, 1125, __pyx_L4_error))
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1126
+    /* "src/lxml/parser.pxi":1127
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1126, __pyx_L4_error)
+    __Pyx_TraceLine(1127,0,__PYX_ERR(2, 1127, __pyx_L4_error))
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1127, __pyx_L4_error)
     __pyx_r = __pyx_t_6;
     goto __pyx_L3_return;
   }
 
-  /* "src/lxml/parser.pxi":1128
+  /* "src/lxml/parser.pxi":1129
  *             return context._handleParseResultDoc(self, result, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:
  */
+  __Pyx_TraceLine(1129,0,__PYX_ERR(2, 1129, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L4_error:;
     /*exception exit:*/{
@@ -114887,7 +122061,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
       __Pyx_XGOTREF(__pyx_t_14);
       __pyx_t_2 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
       {
-        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(2, 1128, __pyx_L25_error)
+        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(2, 1129, __pyx_L25_error)
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
@@ -114917,13 +122091,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
     }
     __pyx_L3_return: {
       __pyx_t_6 = __pyx_r;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1128, __pyx_L1_error)
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1129, __pyx_L1_error)
       __pyx_r = __pyx_t_6;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1071
+  /* "src/lxml/parser.pxi":1072
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDoc(self, char* c_text, int c_len,             # <<<<<<<<<<<<<<
@@ -114938,11 +122112,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1130
+/* "src/lxml/parser.pxi":1131
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -114957,6 +122132,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
   char *__pyx_v_c_encoding;
   int __pyx_v_orig_options;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -114974,86 +122150,95 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
   PyObject *__pyx_t_14 = NULL;
   int __pyx_t_15;
   __Pyx_RefNannySetupContext("_parseDocFromFile", 0);
+  __Pyx_TraceCall("_parseDocFromFile", __pyx_f[2], 1131, 0, __PYX_ERR(2, 1131, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1135
+  /* "src/lxml/parser.pxi":1136
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_encoding
  *         result = NULL             # <<<<<<<<<<<<<<
  * 
  *         context = self._getParserContext()
  */
+  __Pyx_TraceLine(1136,0,__PYX_ERR(2, 1136, __pyx_L1_error))
   __pyx_v_result = NULL;
 
-  /* "src/lxml/parser.pxi":1137
+  /* "src/lxml/parser.pxi":1138
  *         result = NULL
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1137, __pyx_L1_error)
+  __Pyx_TraceLine(1138,0,__PYX_ERR(2, 1138, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1138
+  /* "src/lxml/parser.pxi":1139
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1138, __pyx_L1_error)
+  __Pyx_TraceLine(1139,0,__PYX_ERR(2, 1139, __pyx_L1_error))
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1139, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1139
+  /* "src/lxml/parser.pxi":1140
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  */
+  __Pyx_TraceLine(1140,0,__PYX_ERR(2, 1140, __pyx_L4_error))
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1140
+    /* "src/lxml/parser.pxi":1141
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  */
+    __Pyx_TraceLine(1141,0,__PYX_ERR(2, 1141, __pyx_L4_error))
     __pyx_t_3 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_3;
 
-    /* "src/lxml/parser.pxi":1141
+    /* "src/lxml/parser.pxi":1142
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
  * 
  *             if self._default_encoding is None:
  */
+    __Pyx_TraceLine(1142,0,__PYX_ERR(2, 1142, __pyx_L4_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1143
+    /* "src/lxml/parser.pxi":1144
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
  *                 c_encoding = NULL
  *             else:
  */
+    __Pyx_TraceLine(1144,0,__PYX_ERR(2, 1144, __pyx_L4_error))
     __pyx_t_4 = (__pyx_v_self->_default_encoding == Py_None);
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/parser.pxi":1144
+      /* "src/lxml/parser.pxi":1145
  * 
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)
  */
+      __Pyx_TraceLine(1145,0,__PYX_ERR(2, 1145, __pyx_L4_error))
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1143
+      /* "src/lxml/parser.pxi":1144
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -115063,13 +122248,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
       goto __pyx_L6;
     }
 
-    /* "src/lxml/parser.pxi":1146
+    /* "src/lxml/parser.pxi":1147
  *                 c_encoding = NULL
  *             else:
  *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
  * 
  *             orig_options = pctxt.options
  */
+    __Pyx_TraceLine(1147,0,__PYX_ERR(2, 1147, __pyx_L4_error))
     /*else*/ {
       __pyx_t_1 = __pyx_v_self->_default_encoding;
       __Pyx_INCREF(__pyx_t_1);
@@ -115078,23 +122264,25 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     }
     __pyx_L6:;
 
-    /* "src/lxml/parser.pxi":1148
+    /* "src/lxml/parser.pxi":1149
  *                 c_encoding = _cstr(self._default_encoding)
  * 
  *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 if self._for_html:
  */
+    __Pyx_TraceLine(1149,0,__PYX_ERR(2, 1149, __pyx_L4_error))
     __pyx_t_2 = __pyx_v_pctxt->options;
     __pyx_v_orig_options = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1149
+    /* "src/lxml/parser.pxi":1150
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadFile(
  */
+    __Pyx_TraceLine(1150,0,__PYX_ERR(2, 1150, __pyx_L4_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -115103,64 +122291,70 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1150
+          /* "src/lxml/parser.pxi":1151
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
  *                     result = htmlparser.htmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  */
+          __Pyx_TraceLine(1151,1,__PYX_ERR(2, 1151, __pyx_L8_error))
           __pyx_t_5 = (__pyx_v_self->_for_html != 0);
           if (__pyx_t_5) {
 
-            /* "src/lxml/parser.pxi":1151
+            /* "src/lxml/parser.pxi":1152
  *             with nogil:
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadFile(             # <<<<<<<<<<<<<<
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:
  */
+            __Pyx_TraceLine(1152,1,__PYX_ERR(2, 1152, __pyx_L8_error))
             __pyx_v_result = htmlCtxtReadFile(__pyx_v_pctxt, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
 
-            /* "src/lxml/parser.pxi":1153
+            /* "src/lxml/parser.pxi":1154
  *                     result = htmlparser.htmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  */
+            __Pyx_TraceLine(1154,1,__PYX_ERR(2, 1154, __pyx_L8_error))
             __pyx_t_5 = ((__pyx_v_result != NULL) != 0);
             if (__pyx_t_5) {
 
-              /* "src/lxml/parser.pxi":1154
+              /* "src/lxml/parser.pxi":1155
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL
  */
+              __Pyx_TraceLine(1155,1,__PYX_ERR(2, 1155, __pyx_L8_error))
               __pyx_t_5 = ((__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0) != 0);
               if (__pyx_t_5) {
 
-                /* "src/lxml/parser.pxi":1155
+                /* "src/lxml/parser.pxi":1156
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *                             result = NULL
  *                 else:
  */
+                __Pyx_TraceLine(1156,1,__PYX_ERR(2, 1156, __pyx_L8_error))
                 xmlFreeDoc(__pyx_v_result);
 
-                /* "src/lxml/parser.pxi":1156
+                /* "src/lxml/parser.pxi":1157
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
  *                             tree.xmlFreeDoc(result)
  *                             result = NULL             # <<<<<<<<<<<<<<
  *                 else:
  *                     result = xmlparser.xmlCtxtReadFile(
  */
+                __Pyx_TraceLine(1157,1,__PYX_ERR(2, 1157, __pyx_L8_error))
                 __pyx_v_result = NULL;
 
-                /* "src/lxml/parser.pxi":1154
+                /* "src/lxml/parser.pxi":1155
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:
  *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
@@ -115169,7 +122363,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
               }
 
-              /* "src/lxml/parser.pxi":1153
+              /* "src/lxml/parser.pxi":1154
  *                     result = htmlparser.htmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *                     if result is not NULL:             # <<<<<<<<<<<<<<
@@ -115178,7 +122372,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
  */
             }
 
-            /* "src/lxml/parser.pxi":1150
+            /* "src/lxml/parser.pxi":1151
  *             orig_options = pctxt.options
  *             with nogil:
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -115188,34 +122382,37 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
             goto __pyx_L10;
           }
 
-          /* "src/lxml/parser.pxi":1158
+          /* "src/lxml/parser.pxi":1159
  *                             result = NULL
  *                 else:
  *                     result = xmlparser.xmlCtxtReadFile(             # <<<<<<<<<<<<<<
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem
  */
+          __Pyx_TraceLine(1159,1,__PYX_ERR(2, 1159, __pyx_L8_error))
           /*else*/ {
 
-            /* "src/lxml/parser.pxi":1159
+            /* "src/lxml/parser.pxi":1160
  *                 else:
  *                     result = xmlparser.xmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  */
+            __Pyx_TraceLine(1160,1,__PYX_ERR(2, 1160, __pyx_L8_error))
             __pyx_v_result = xmlCtxtReadFile(__pyx_v_pctxt, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
           }
           __pyx_L10:;
         }
 
-        /* "src/lxml/parser.pxi":1149
+        /* "src/lxml/parser.pxi":1150
  * 
  *             orig_options = pctxt.options
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     result = htmlparser.htmlCtxtReadFile(
  */
+        __Pyx_TraceLine(1150,1,__PYX_ERR(2, 1150, __pyx_L4_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -115224,41 +122421,51 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
             #endif
             goto __pyx_L9;
           }
+          __pyx_L8_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L4_error;
+          }
           __pyx_L9:;
         }
     }
 
-    /* "src/lxml/parser.pxi":1160
+    /* "src/lxml/parser.pxi":1161
  *                     result = xmlparser.xmlCtxtReadFile(
  *                         pctxt, c_filename, c_encoding, self._parse_options)
  *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
  * 
  *             return context._handleParseResultDoc(self, result, c_filename)
  */
+    __Pyx_TraceLine(1161,0,__PYX_ERR(2, 1161, __pyx_L4_error))
     __pyx_v_pctxt->options = __pyx_v_orig_options;
 
-    /* "src/lxml/parser.pxi":1162
+    /* "src/lxml/parser.pxi":1163
  *             pctxt.options = orig_options # work around libxml2 problem
  * 
  *             return context._handleParseResultDoc(self, result, c_filename)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1162, __pyx_L4_error)
+    __Pyx_TraceLine(1163,0,__PYX_ERR(2, 1163, __pyx_L4_error))
+    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1163, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1162, __pyx_L4_error)
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1163, __pyx_L4_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_6;
     goto __pyx_L3_return;
   }
 
-  /* "src/lxml/parser.pxi":1164
+  /* "src/lxml/parser.pxi":1165
  *             return context._handleParseResultDoc(self, result, c_filename)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename,
  */
+  __Pyx_TraceLine(1165,0,__PYX_ERR(2, 1165, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L4_error:;
     /*exception exit:*/{
@@ -115276,7 +122483,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
       __Pyx_XGOTREF(__pyx_t_14);
       __pyx_t_2 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
       {
-        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(2, 1164, __pyx_L14_error)
+        __pyx_t_15 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(2, 1165, __pyx_L14_error)
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
@@ -115306,13 +122513,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
     }
     __pyx_L3_return: {
       __pyx_t_6 = __pyx_r;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1164, __pyx_L1_error)
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1165, __pyx_L1_error)
       __pyx_r = __pyx_t_6;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1130
+  /* "src/lxml/parser.pxi":1131
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
@@ -115327,11 +122534,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1166
+/* "src/lxml/parser.pxi":1167
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename,             # <<<<<<<<<<<<<<
@@ -115345,6 +122553,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
   xmlDoc *__pyx_v_result;
   xmlParserCtxt *__pyx_v_pctxt;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -115363,30 +122572,33 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
   PyObject *__pyx_t_15 = NULL;
   int __pyx_t_16;
   __Pyx_RefNannySetupContext("_parseDocFromFilelike", 0);
+  __Pyx_TraceCall("_parseDocFromFilelike", __pyx_f[2], 1167, 0, __PYX_ERR(2, 1167, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_filename);
 
-  /* "src/lxml/parser.pxi":1173
+  /* "src/lxml/parser.pxi":1174
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_filename
  *         if not filename:             # <<<<<<<<<<<<<<
  *             filename = None
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1173, __pyx_L1_error)
+  __Pyx_TraceLine(1174,0,__PYX_ERR(2, 1174, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1174, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1174
+    /* "src/lxml/parser.pxi":1175
  *         cdef char* c_filename
  *         if not filename:
  *             filename = None             # <<<<<<<<<<<<<<
  * 
  *         context = self._getParserContext()
  */
+    __Pyx_TraceLine(1175,0,__PYX_ERR(2, 1175, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_DECREF_SET(__pyx_v_filename, Py_None);
 
-    /* "src/lxml/parser.pxi":1173
+    /* "src/lxml/parser.pxi":1174
  *         cdef xmlparser.xmlParserCtxt* pctxt
  *         cdef char* c_filename
  *         if not filename:             # <<<<<<<<<<<<<<
@@ -115395,63 +122607,69 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
  */
   }
 
-  /* "src/lxml/parser.pxi":1176
+  /* "src/lxml/parser.pxi":1177
  *             filename = None
  * 
  *         context = self._getParserContext()             # <<<<<<<<<<<<<<
  *         context.prepare()
  *         try:
  */
-  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1176, __pyx_L1_error)
+  __Pyx_TraceLine(1177,0,__PYX_ERR(2, 1177, __pyx_L1_error))
+  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1177
+  /* "src/lxml/parser.pxi":1178
  * 
  *         context = self._getParserContext()
  *         context.prepare()             # <<<<<<<<<<<<<<
  *         try:
  *             pctxt = context._c_ctxt
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1177, __pyx_L1_error)
+  __Pyx_TraceLine(1178,0,__PYX_ERR(2, 1178, __pyx_L1_error))
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1178, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1178
+  /* "src/lxml/parser.pxi":1179
  *         context = self._getParserContext()
  *         context.prepare()
  *         try:             # <<<<<<<<<<<<<<
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  */
+  __Pyx_TraceLine(1179,0,__PYX_ERR(2, 1179, __pyx_L5_error))
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1179
+    /* "src/lxml/parser.pxi":1180
  *         context.prepare()
  *         try:
  *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             file_context = _FileReaderContext(
  */
+    __Pyx_TraceLine(1180,0,__PYX_ERR(2, 1180, __pyx_L5_error))
     __pyx_t_5 = __pyx_v_context->_c_ctxt;
     __pyx_v_pctxt = __pyx_t_5;
 
-    /* "src/lxml/parser.pxi":1180
+    /* "src/lxml/parser.pxi":1181
  *         try:
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
  *             file_context = _FileReaderContext(
  *                 filelike, context, filename,
  */
+    __Pyx_TraceLine(1181,0,__PYX_ERR(2, 1181, __pyx_L5_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1183
+    /* "src/lxml/parser.pxi":1184
  *             file_context = _FileReaderContext(
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)             # <<<<<<<<<<<<<<
  *             result = file_context._readDoc(pctxt, self._parse_options)
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_encoding); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1183, __pyx_L5_error)
+    __Pyx_TraceLine(1184,0,__PYX_ERR(2, 1184, __pyx_L5_error))
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_encoding); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1184, __pyx_L5_error)
     if (!__pyx_t_2) {
     } else {
       __Pyx_INCREF(__pyx_v_encoding);
@@ -115462,14 +122680,15 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __pyx_t_3 = __pyx_v_self->_default_encoding;
     __pyx_L7_bool_binop_done:;
 
-    /* "src/lxml/parser.pxi":1181
+    /* "src/lxml/parser.pxi":1182
  *             pctxt = context._c_ctxt
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  *             file_context = _FileReaderContext(             # <<<<<<<<<<<<<<
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)
  */
-    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1181, __pyx_L5_error)
+    __Pyx_TraceLine(1182,0,__PYX_ERR(2, 1182, __pyx_L5_error))
+    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1182, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_filelike);
     __Pyx_GIVEREF(__pyx_v_filelike);
@@ -115483,40 +122702,43 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1181, __pyx_L5_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__FileReaderContext), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1182, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1184
+    /* "src/lxml/parser.pxi":1185
  *                 filelike, context, filename,
  *                 encoding or self._default_encoding)
  *             result = file_context._readDoc(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
  * 
  *             return context._handleParseResultDoc(
  */
+    __Pyx_TraceLine(1185,0,__PYX_ERR(2, 1185, __pyx_L5_error))
     __pyx_v_result = __pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(__pyx_v_file_context, __pyx_v_pctxt, __pyx_v_self->_parse_options);
 
-    /* "src/lxml/parser.pxi":1186
+    /* "src/lxml/parser.pxi":1187
  *             result = file_context._readDoc(pctxt, self._parse_options)
  * 
  *             return context._handleParseResultDoc(             # <<<<<<<<<<<<<<
  *                 self, result, filename)
  *         finally:
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1186, __pyx_L5_error)
+    __Pyx_TraceLine(1187,0,__PYX_ERR(2, 1187, __pyx_L5_error))
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1187, __pyx_L5_error)
     __pyx_r = __pyx_t_7;
     goto __pyx_L4_return;
   }
 
-  /* "src/lxml/parser.pxi":1189
+  /* "src/lxml/parser.pxi":1190
  *                 self, result, filename)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1190,0,__PYX_ERR(2, 1190, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L5_error:;
     /*exception exit:*/{
@@ -115535,7 +122757,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
       __Pyx_XGOTREF(__pyx_t_15);
       __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
       {
-        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(2, 1189, __pyx_L10_error)
+        __pyx_t_16 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(2, 1190, __pyx_L10_error)
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_13);
@@ -115565,13 +122787,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
     }
     __pyx_L4_return: {
       __pyx_t_7 = __pyx_r;
-      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(2, 1189, __pyx_L1_error)
+      __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(2, 1190, __pyx_L1_error)
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
     }
   }
 
-  /* "src/lxml/parser.pxi":1166
+  /* "src/lxml/parser.pxi":1167
  *             context.cleanup()
  * 
  *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename,             # <<<<<<<<<<<<<<
@@ -115589,11 +122811,12 @@ static xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct _
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF((PyObject *)__pyx_v_file_context);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":793
+/* "src/lxml/parser.pxi":794
  *     cdef XMLSchema _schema
  *     cdef bytes _filename
  *     cdef readonly object target             # <<<<<<<<<<<<<<
@@ -115616,21 +122839,27 @@ static PyObject *__pyx_pw_4lxml_5etree_11_BaseParser_6target_1__get__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_6target___get__(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[2], 794, 0, __PYX_ERR(2, 794, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->target);
   __pyx_r = __pyx_v_self->target;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseParser.target.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1192
+/* "src/lxml/parser.pxi":1193
  * 
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -115643,6 +122872,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   xmlDoc *__pyx_v_c_doc;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context = NULL;
   xmlDict *__pyx_v_c_dict;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
@@ -115653,42 +122883,47 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_initSaxDocument", 0);
+  __Pyx_TraceCall("_initSaxDocument", __pyx_f[2], 1193, 0, __PYX_ERR(2, 1193, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1193
+  /* "src/lxml/parser.pxi":1194
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:
  *     xmlparser.xmlSAX2StartDocument(ctxt)             # <<<<<<<<<<<<<<
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     c_doc = c_ctxt.myDoc
  */
+  __Pyx_TraceLine(1194,0,__PYX_ERR(2, 1194, __pyx_L1_error))
   xmlSAX2StartDocument(__pyx_v_ctxt);
 
-  /* "src/lxml/parser.pxi":1194
+  /* "src/lxml/parser.pxi":1195
  * cdef void _initSaxDocument(void* ctxt) with gil:
  *     xmlparser.xmlSAX2StartDocument(ctxt)
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     c_doc = c_ctxt.myDoc
  * 
  */
+  __Pyx_TraceLine(1195,0,__PYX_ERR(2, 1195, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/parser.pxi":1195
+  /* "src/lxml/parser.pxi":1196
  *     xmlparser.xmlSAX2StartDocument(ctxt)
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     c_doc = c_ctxt.myDoc             # <<<<<<<<<<<<<<
  * 
  *     # set up document dict
  */
+  __Pyx_TraceLine(1196,0,__PYX_ERR(2, 1196, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_ctxt->myDoc;
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1198
+  /* "src/lxml/parser.pxi":1199
  * 
  *     # set up document dict
  *     if c_doc and c_ctxt.dict and not c_doc.dict:             # <<<<<<<<<<<<<<
  *         # I have no idea why libxml2 disables this - we need it
  *         c_ctxt.dictNames = 1
  */
+  __Pyx_TraceLine(1199,0,__PYX_ERR(2, 1199, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c_doc != 0);
   if (__pyx_t_3) {
   } else {
@@ -115706,35 +122941,38 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1200
+    /* "src/lxml/parser.pxi":1201
  *     if c_doc and c_ctxt.dict and not c_doc.dict:
  *         # I have no idea why libxml2 disables this - we need it
  *         c_ctxt.dictNames = 1             # <<<<<<<<<<<<<<
  *         c_doc.dict = c_ctxt.dict
  *         xmlparser.xmlDictReference(c_ctxt.dict)
  */
+    __Pyx_TraceLine(1201,0,__PYX_ERR(2, 1201, __pyx_L1_error))
     __pyx_v_c_ctxt->dictNames = 1;
 
-    /* "src/lxml/parser.pxi":1201
+    /* "src/lxml/parser.pxi":1202
  *         # I have no idea why libxml2 disables this - we need it
  *         c_ctxt.dictNames = 1
  *         c_doc.dict = c_ctxt.dict             # <<<<<<<<<<<<<<
  *         xmlparser.xmlDictReference(c_ctxt.dict)
  * 
  */
+    __Pyx_TraceLine(1202,0,__PYX_ERR(2, 1202, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_ctxt->dict;
     __pyx_v_c_doc->dict = __pyx_t_4;
 
-    /* "src/lxml/parser.pxi":1202
+    /* "src/lxml/parser.pxi":1203
  *         c_ctxt.dictNames = 1
  *         c_doc.dict = c_ctxt.dict
  *         xmlparser.xmlDictReference(c_ctxt.dict)             # <<<<<<<<<<<<<<
  * 
  *     # set up XML ID hash table
  */
+    __Pyx_TraceLine(1203,0,__PYX_ERR(2, 1203, __pyx_L1_error))
     (void)(xmlDictReference(__pyx_v_c_ctxt->dict));
 
-    /* "src/lxml/parser.pxi":1198
+    /* "src/lxml/parser.pxi":1199
  * 
  *     # set up document dict
  *     if c_doc and c_ctxt.dict and not c_doc.dict:             # <<<<<<<<<<<<<<
@@ -115743,45 +122981,49 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1205
+  /* "src/lxml/parser.pxi":1206
  * 
  *     # set up XML ID hash table
  *     if c_ctxt._private:             # <<<<<<<<<<<<<<
  *         context = <_ParserContext>c_ctxt._private
  *         if context._collect_ids:
  */
+  __Pyx_TraceLine(1206,0,__PYX_ERR(2, 1206, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_ctxt->_private != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1206
+    /* "src/lxml/parser.pxi":1207
  *     # set up XML ID hash table
  *     if c_ctxt._private:
  *         context = <_ParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *         if context._collect_ids:
  *             # keep the global parser dict from filling up with XML IDs
  */
+    __Pyx_TraceLine(1207,0,__PYX_ERR(2, 1207, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_c_ctxt->_private);
     __Pyx_INCREF(__pyx_t_5);
     __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "src/lxml/parser.pxi":1207
+    /* "src/lxml/parser.pxi":1208
  *     if c_ctxt._private:
  *         context = <_ParserContext>c_ctxt._private
  *         if context._collect_ids:             # <<<<<<<<<<<<<<
  *             # keep the global parser dict from filling up with XML IDs
  *             if c_doc and not c_doc.ids:
  */
+    __Pyx_TraceLine(1208,0,__PYX_ERR(2, 1208, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_context->_collect_ids != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1209
+      /* "src/lxml/parser.pxi":1210
  *         if context._collect_ids:
  *             # keep the global parser dict from filling up with XML IDs
  *             if c_doc and not c_doc.ids:             # <<<<<<<<<<<<<<
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()
  */
+      __Pyx_TraceLine(1210,0,__PYX_ERR(2, 1210, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_c_doc != 0);
       if (__pyx_t_3) {
       } else {
@@ -115793,44 +123035,48 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       __pyx_L10_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "src/lxml/parser.pxi":1211
+        /* "src/lxml/parser.pxi":1212
  *             if c_doc and not c_doc.ids:
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()             # <<<<<<<<<<<<<<
  *                 if c_dict:
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)
  */
+        __Pyx_TraceLine(1212,0,__PYX_ERR(2, 1212, __pyx_L1_error))
         __pyx_v_c_dict = xmlDictCreate();
 
-        /* "src/lxml/parser.pxi":1212
+        /* "src/lxml/parser.pxi":1213
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:             # <<<<<<<<<<<<<<
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)
  *                     xmlparser.xmlDictFree(c_dict)
  */
+        __Pyx_TraceLine(1213,0,__PYX_ERR(2, 1213, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_c_dict != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/parser.pxi":1213
+          /* "src/lxml/parser.pxi":1214
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)             # <<<<<<<<<<<<<<
  *                     xmlparser.xmlDictFree(c_dict)
  *                 else:
  */
+          __Pyx_TraceLine(1214,0,__PYX_ERR(2, 1214, __pyx_L1_error))
           __pyx_v_c_doc->ids = xmlHashCreateDict(0, __pyx_v_c_dict);
 
-          /* "src/lxml/parser.pxi":1214
+          /* "src/lxml/parser.pxi":1215
  *                 if c_dict:
  *                     c_doc.ids = tree.xmlHashCreateDict(0, c_dict)
  *                     xmlparser.xmlDictFree(c_dict)             # <<<<<<<<<<<<<<
  *                 else:
  *                     c_doc.ids = tree.xmlHashCreate(0)
  */
+          __Pyx_TraceLine(1215,0,__PYX_ERR(2, 1215, __pyx_L1_error))
           xmlDictFree(__pyx_v_c_dict);
 
-          /* "src/lxml/parser.pxi":1212
+          /* "src/lxml/parser.pxi":1213
  *                 # memory errors are not fatal here
  *                 c_dict = xmlparser.xmlDictCreate()
  *                 if c_dict:             # <<<<<<<<<<<<<<
@@ -115840,19 +123086,20 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
           goto __pyx_L12;
         }
 
-        /* "src/lxml/parser.pxi":1216
+        /* "src/lxml/parser.pxi":1217
  *                     xmlparser.xmlDictFree(c_dict)
  *                 else:
  *                     c_doc.ids = tree.xmlHashCreate(0)             # <<<<<<<<<<<<<<
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS
  */
+        __Pyx_TraceLine(1217,0,__PYX_ERR(2, 1217, __pyx_L1_error))
         /*else*/ {
           __pyx_v_c_doc->ids = xmlHashCreate(0);
         }
         __pyx_L12:;
 
-        /* "src/lxml/parser.pxi":1209
+        /* "src/lxml/parser.pxi":1210
  *         if context._collect_ids:
  *             # keep the global parser dict from filling up with XML IDs
  *             if c_doc and not c_doc.ids:             # <<<<<<<<<<<<<<
@@ -115861,7 +123108,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
       }
 
-      /* "src/lxml/parser.pxi":1207
+      /* "src/lxml/parser.pxi":1208
  *     if c_ctxt._private:
  *         context = <_ParserContext>c_ctxt._private
  *         if context._collect_ids:             # <<<<<<<<<<<<<<
@@ -115871,23 +123118,25 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       goto __pyx_L8;
     }
 
-    /* "src/lxml/parser.pxi":1218
+    /* "src/lxml/parser.pxi":1219
  *                     c_doc.ids = tree.xmlHashCreate(0)
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS             # <<<<<<<<<<<<<<
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):
  *                 # already initialised but empty => clear
  */
+    __Pyx_TraceLine(1219,0,__PYX_ERR(2, 1219, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_ctxt->loadsubset = (__pyx_v_c_ctxt->loadsubset | XML_SKIP_IDS);
 
-      /* "src/lxml/parser.pxi":1219
+      /* "src/lxml/parser.pxi":1220
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):             # <<<<<<<<<<<<<<
  *                 # already initialised but empty => clear
  *                 tree.xmlHashFree(c_doc.ids, NULL)
  */
+      __Pyx_TraceLine(1220,0,__PYX_ERR(2, 1220, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_c_doc != 0);
       if (__pyx_t_3) {
       } else {
@@ -115905,25 +123154,27 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
       __pyx_L14_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "src/lxml/parser.pxi":1221
+        /* "src/lxml/parser.pxi":1222
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):
  *                 # already initialised but empty => clear
  *                 tree.xmlHashFree(c_doc.ids, NULL)             # <<<<<<<<<<<<<<
  *                 c_doc.ids = NULL
  * 
  */
+        __Pyx_TraceLine(1222,0,__PYX_ERR(2, 1222, __pyx_L1_error))
         xmlHashFree(__pyx_v_c_doc->ids, NULL);
 
-        /* "src/lxml/parser.pxi":1222
+        /* "src/lxml/parser.pxi":1223
  *                 # already initialised but empty => clear
  *                 tree.xmlHashFree(c_doc.ids, NULL)
  *                 c_doc.ids = NULL             # <<<<<<<<<<<<<<
  * 
  * 
  */
+        __Pyx_TraceLine(1223,0,__PYX_ERR(2, 1223, __pyx_L1_error))
         __pyx_v_c_doc->ids = NULL;
 
-        /* "src/lxml/parser.pxi":1219
+        /* "src/lxml/parser.pxi":1220
  *         else:
  *             c_ctxt.loadsubset |= xmlparser.XML_SKIP_IDS
  *             if c_doc and c_doc.ids and not tree.xmlHashSize(c_doc.ids):             # <<<<<<<<<<<<<<
@@ -115934,7 +123185,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
     }
     __pyx_L8:;
 
-    /* "src/lxml/parser.pxi":1205
+    /* "src/lxml/parser.pxi":1206
  * 
  *     # set up XML ID hash table
  *     if c_ctxt._private:             # <<<<<<<<<<<<<<
@@ -115943,7 +123194,7 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1192
+  /* "src/lxml/parser.pxi":1193
  * 
  * 
  * cdef void _initSaxDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -115952,14 +123203,20 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("lxml.etree._initSaxDocument", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/parser.pxi":1238
+/* "src/lxml/parser.pxi":1239
  *         different from what the ``error_log`` property returns.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -115982,29 +123239,32 @@ static PyObject *__pyx_pw_4lxml_5etree_11_FeedParser_14feed_error_log_1__get__(P
 
 static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(struct __pyx_obj_4lxml_5etree__FeedParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[2], 1239, 0, __PYX_ERR(2, 1239, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1239
+  /* "src/lxml/parser.pxi":1240
  *         """
  *         def __get__(self):
  *             return self._getPushParserContext()._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     cpdef feed(self, data):
  */
+  __Pyx_TraceLine(1240,0,__PYX_ERR(2, 1240, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1239, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1240, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1239, __pyx_L1_error)
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1)->_error_log), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1240, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1238
+  /* "src/lxml/parser.pxi":1239
  *         different from what the ``error_log`` property returns.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -116020,11 +123280,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1241
+/* "src/lxml/parser.pxi":1242
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
@@ -116047,6 +123308,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_v_entry = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -116073,12 +123335,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_23 = NULL;
   PyObject *__pyx_t_24 = NULL;
   int __pyx_t_25;
+  __Pyx_TraceFrameInit(__pyx_codeobj__239)
   __Pyx_RefNannySetupContext("feed", 0);
+  __Pyx_TraceCall("feed", __pyx_f[2], 1242, 0, __PYX_ERR(2, 1242, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_feed); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1241, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_feed); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1242, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_4lxml_5etree_11_FeedParser_1feed)) {
       __Pyx_XDECREF(__pyx_r);
@@ -116094,13 +123358,13 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1241, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_3)) {
           PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_data};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1241, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_2);
         } else
@@ -116108,19 +123372,19 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
           PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_data};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1241, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_2);
         } else
         #endif
         {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1241, __pyx_L1_error)
+          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1242, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
           __Pyx_INCREF(__pyx_v_data);
           __Pyx_GIVEREF(__pyx_v_data);
           PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_data);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1241, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         }
@@ -116134,47 +123398,51 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1266
+  /* "src/lxml/parser.pxi":1267
  *         cdef int buffer_len
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:
  */
+  __Pyx_TraceLine(1267,0,__PYX_ERR(2, 1267, __pyx_L1_error))
   __pyx_v_recover = (__pyx_v_self->__pyx_base._parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parser.pxi":1267
+  /* "src/lxml/parser.pxi":1268
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):             # <<<<<<<<<<<<<<
  *             if self._default_encoding is None:
  *                 c_encoding = NULL
  */
+  __Pyx_TraceLine(1268,0,__PYX_ERR(2, 1268, __pyx_L1_error))
   __pyx_t_6 = PyBytes_Check(__pyx_v_data); 
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1268
+    /* "src/lxml/parser.pxi":1269
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
  *                 c_encoding = NULL
  *             else:
  */
+    __Pyx_TraceLine(1269,0,__PYX_ERR(2, 1269, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_self->__pyx_base._default_encoding == Py_None);
     __pyx_t_6 = (__pyx_t_7 != 0);
     if (__pyx_t_6) {
 
-      /* "src/lxml/parser.pxi":1269
+      /* "src/lxml/parser.pxi":1270
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:
  *                 c_encoding = NULL             # <<<<<<<<<<<<<<
  *             else:
  *                 c_encoding = self._default_encoding
  */
+      __Pyx_TraceLine(1270,0,__PYX_ERR(2, 1270, __pyx_L1_error))
       __pyx_v_c_encoding = NULL;
 
-      /* "src/lxml/parser.pxi":1268
+      /* "src/lxml/parser.pxi":1269
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):
  *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
@@ -116184,38 +123452,41 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       goto __pyx_L4;
     }
 
-    /* "src/lxml/parser.pxi":1271
+    /* "src/lxml/parser.pxi":1272
  *                 c_encoding = NULL
  *             else:
  *                 c_encoding = self._default_encoding             # <<<<<<<<<<<<<<
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  */
+    __Pyx_TraceLine(1272,0,__PYX_ERR(2, 1272, __pyx_L1_error))
     /*else*/ {
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->__pyx_base._default_encoding); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(2, 1271, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->__pyx_base._default_encoding); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(2, 1272, __pyx_L1_error)
       __pyx_v_c_encoding = __pyx_t_8;
     }
     __pyx_L4:;
 
-    /* "src/lxml/parser.pxi":1272
+    /* "src/lxml/parser.pxi":1273
  *             else:
  *                 c_encoding = self._default_encoding
  *             c_data = _cstr(data)             # <<<<<<<<<<<<<<
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):
  */
+    __Pyx_TraceLine(1273,0,__PYX_ERR(2, 1273, __pyx_L1_error))
     __pyx_v_c_data = PyBytes_AS_STRING(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1273
+    /* "src/lxml/parser.pxi":1274
  *                 c_encoding = self._default_encoding
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)             # <<<<<<<<<<<<<<
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:
  */
+    __Pyx_TraceLine(1274,0,__PYX_ERR(2, 1274, __pyx_L1_error))
     __pyx_v_py_buffer_len = PyBytes_GET_SIZE(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1267
+    /* "src/lxml/parser.pxi":1268
  *         cdef int error
  *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if isinstance(data, bytes):             # <<<<<<<<<<<<<<
@@ -116225,38 +123496,41 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1274
+  /* "src/lxml/parser.pxi":1275
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):             # <<<<<<<<<<<<<<
  *             if _UNICODE_ENCODING is NULL:
  *                 raise ParserError, \
  */
+  __Pyx_TraceLine(1275,0,__PYX_ERR(2, 1275, __pyx_L1_error))
   __pyx_t_6 = PyUnicode_Check(__pyx_v_data); 
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (likely(__pyx_t_7)) {
 
-    /* "src/lxml/parser.pxi":1275
+    /* "src/lxml/parser.pxi":1276
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
  *                 raise ParserError, \
  *                     u"Unicode parsing is not supported on this platform"
  */
+    __Pyx_TraceLine(1276,0,__PYX_ERR(2, 1276, __pyx_L1_error))
     __pyx_t_7 = ((__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL) != 0);
     if (unlikely(__pyx_t_7)) {
 
-      /* "src/lxml/parser.pxi":1276
+      /* "src/lxml/parser.pxi":1277
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:
  *                 raise ParserError, \             # <<<<<<<<<<<<<<
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING
  */
+      __Pyx_TraceLine(1277,0,__PYX_ERR(2, 1277, __pyx_L1_error))
       __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_ParserError), __pyx_kp_u_Unicode_parsing_is_not_supported, 0, 0);
-      __PYX_ERR(2, 1276, __pyx_L1_error)
+      __PYX_ERR(2, 1277, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":1275
+      /* "src/lxml/parser.pxi":1276
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):
  *             if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
@@ -116265,34 +123539,37 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1278
+    /* "src/lxml/parser.pxi":1279
  *                 raise ParserError, \
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING             # <<<<<<<<<<<<<<
  *             c_data = python.PyUnicode_AS_DATA(data)
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
  */
+    __Pyx_TraceLine(1279,0,__PYX_ERR(2, 1279, __pyx_L1_error))
     __pyx_v_c_encoding = __pyx_v_4lxml_5etree__UNICODE_ENCODING;
 
-    /* "src/lxml/parser.pxi":1279
+    /* "src/lxml/parser.pxi":1280
  *                     u"Unicode parsing is not supported on this platform"
  *             c_encoding = _UNICODE_ENCODING
  *             c_data = python.PyUnicode_AS_DATA(data)             # <<<<<<<<<<<<<<
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
  *         else:
  */
+    __Pyx_TraceLine(1280,0,__PYX_ERR(2, 1280, __pyx_L1_error))
     __pyx_v_c_data = PyUnicode_AS_DATA(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1280
+    /* "src/lxml/parser.pxi":1281
  *             c_encoding = _UNICODE_ENCODING
  *             c_data = python.PyUnicode_AS_DATA(data)
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)             # <<<<<<<<<<<<<<
  *         else:
  *             raise TypeError, u"Parsing requires string data"
  */
+    __Pyx_TraceLine(1281,0,__PYX_ERR(2, 1281, __pyx_L1_error))
     __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_data);
 
-    /* "src/lxml/parser.pxi":1274
+    /* "src/lxml/parser.pxi":1275
  *             c_data = _cstr(data)
  *             py_buffer_len = python.PyBytes_GET_SIZE(data)
  *         elif isinstance(data, unicode):             # <<<<<<<<<<<<<<
@@ -116302,119 +123579,130 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1282
+  /* "src/lxml/parser.pxi":1283
  *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
  *         else:
  *             raise TypeError, u"Parsing requires string data"             # <<<<<<<<<<<<<<
  * 
  *         context = self._getPushParserContext()
  */
+  __Pyx_TraceLine(1283,0,__PYX_ERR(2, 1283, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Parsing_requires_string_data, 0, 0);
-    __PYX_ERR(2, 1282, __pyx_L1_error)
+    __PYX_ERR(2, 1283, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1284
+  /* "src/lxml/parser.pxi":1285
  *             raise TypeError, u"Parsing requires string data"
  * 
  *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
  *         pctxt = context._c_ctxt
  *         error = 0
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1284, __pyx_L1_error)
+  __Pyx_TraceLine(1285,0,__PYX_ERR(2, 1285, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1285, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1285
+  /* "src/lxml/parser.pxi":1286
  * 
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  *         error = 0
  *         if not self._feed_parser_running:
  */
+  __Pyx_TraceLine(1286,0,__PYX_ERR(2, 1286, __pyx_L1_error))
   __pyx_t_9 = __pyx_v_context->_c_ctxt;
   __pyx_v_pctxt = __pyx_t_9;
 
-  /* "src/lxml/parser.pxi":1286
+  /* "src/lxml/parser.pxi":1287
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt
  *         error = 0             # <<<<<<<<<<<<<<
  *         if not self._feed_parser_running:
  *             context.prepare()
  */
+  __Pyx_TraceLine(1287,0,__PYX_ERR(2, 1287, __pyx_L1_error))
   __pyx_v_error = 0;
 
-  /* "src/lxml/parser.pxi":1287
+  /* "src/lxml/parser.pxi":1288
  *         pctxt = context._c_ctxt
  *         error = 0
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
  *             context.prepare()
  *             self._feed_parser_running = 1
  */
+  __Pyx_TraceLine(1288,0,__PYX_ERR(2, 1288, __pyx_L1_error))
   __pyx_t_7 = ((!(__pyx_v_self->_feed_parser_running != 0)) != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/parser.pxi":1288
+    /* "src/lxml/parser.pxi":1289
  *         error = 0
  *         if not self._feed_parser_running:
  *             context.prepare()             # <<<<<<<<<<<<<<
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  */
-    __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1288, __pyx_L1_error)
+    __Pyx_TraceLine(1289,0,__PYX_ERR(2, 1289, __pyx_L1_error))
+    __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1289, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1289
+    /* "src/lxml/parser.pxi":1290
  *         if not self._feed_parser_running:
  *             context.prepare()
  *             self._feed_parser_running = 1             # <<<<<<<<<<<<<<
  *             c_filename = (_cstr(self._filename)
  *                           if self._filename is not None else NULL)
  */
+    __Pyx_TraceLine(1290,0,__PYX_ERR(2, 1290, __pyx_L1_error))
     __pyx_v_self->_feed_parser_running = 1;
 
-    /* "src/lxml/parser.pxi":1291
+    /* "src/lxml/parser.pxi":1292
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  *                           if self._filename is not None else NULL)             # <<<<<<<<<<<<<<
  * 
  *             # We have to give *mlCtxtResetPush() enough input to figure
  */
+    __Pyx_TraceLine(1292,0,__PYX_ERR(2, 1292, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_self->__pyx_base._filename != ((PyObject*)Py_None));
     if ((__pyx_t_7 != 0)) {
 
-      /* "src/lxml/parser.pxi":1290
+      /* "src/lxml/parser.pxi":1291
  *             context.prepare()
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)             # <<<<<<<<<<<<<<
  *                           if self._filename is not None else NULL)
  * 
  */
+      __Pyx_TraceLine(1291,0,__PYX_ERR(2, 1291, __pyx_L1_error))
       __pyx_t_1 = __pyx_v_self->__pyx_base._filename;
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_11 = PyBytes_AS_STRING(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
 
-      /* "src/lxml/parser.pxi":1291
+      /* "src/lxml/parser.pxi":1292
  *             self._feed_parser_running = 1
  *             c_filename = (_cstr(self._filename)
  *                           if self._filename is not None else NULL)             # <<<<<<<<<<<<<<
  * 
  *             # We have to give *mlCtxtResetPush() enough input to figure
  */
+      __Pyx_TraceLine(1292,0,__PYX_ERR(2, 1292, __pyx_L1_error))
       __pyx_t_11 = NULL;
     }
     __pyx_v_c_filename = __pyx_t_11;
 
-    /* "src/lxml/parser.pxi":1297
+    /* "src/lxml/parser.pxi":1298
  *             # however if we give it all we got, we'll have nothing for
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len             # <<<<<<<<<<<<<<
  *             if self._for_html:
  *                 error = _htmlCtxtResetPush(
  */
+    __Pyx_TraceLine(1298,0,__PYX_ERR(2, 1298, __pyx_L1_error))
     if (((__pyx_v_py_buffer_len > 4) != 0)) {
       __pyx_t_10 = 4;
     } else {
@@ -116422,27 +123710,29 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     }
     __pyx_v_buffer_len = __pyx_t_10;
 
-    /* "src/lxml/parser.pxi":1298
+    /* "src/lxml/parser.pxi":1299
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:             # <<<<<<<<<<<<<<
  *                 error = _htmlCtxtResetPush(
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding,
  */
+    __Pyx_TraceLine(1299,0,__PYX_ERR(2, 1299, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_self->__pyx_base._for_html != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1299
+      /* "src/lxml/parser.pxi":1300
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:
  *                 error = _htmlCtxtResetPush(             # <<<<<<<<<<<<<<
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding,
  *                     self._parse_options)
  */
-      __pyx_t_10 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->__pyx_base._parse_options); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1299, __pyx_L1_error)
+      __Pyx_TraceLine(1300,0,__PYX_ERR(2, 1300, __pyx_L1_error))
+      __pyx_t_10 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->__pyx_base._parse_options); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1300, __pyx_L1_error)
       __pyx_v_error = __pyx_t_10;
 
-      /* "src/lxml/parser.pxi":1298
+      /* "src/lxml/parser.pxi":1299
  *             # *mlParseChunk() and things go wrong.
  *             buffer_len = 4 if py_buffer_len > 4 else <int>py_buffer_len
  *             if self._for_html:             # <<<<<<<<<<<<<<
@@ -116452,65 +123742,71 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       goto __pyx_L7;
     }
 
-    /* "src/lxml/parser.pxi":1303
+    /* "src/lxml/parser.pxi":1304
  *                     self._parse_options)
  *             else:
  *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
  *                 error = xmlparser.xmlCtxtResetPush(
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  */
+    __Pyx_TraceLine(1304,0,__PYX_ERR(2, 1304, __pyx_L1_error))
     /*else*/ {
       (void)(xmlCtxtUseOptions(__pyx_v_pctxt, __pyx_v_self->__pyx_base._parse_options));
 
-      /* "src/lxml/parser.pxi":1304
+      /* "src/lxml/parser.pxi":1305
  *             else:
  *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)
  *                 error = xmlparser.xmlCtxtResetPush(             # <<<<<<<<<<<<<<
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  *             py_buffer_len -= buffer_len
  */
+      __Pyx_TraceLine(1305,0,__PYX_ERR(2, 1305, __pyx_L1_error))
       __pyx_v_error = xmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding);
     }
     __pyx_L7:;
 
-    /* "src/lxml/parser.pxi":1306
+    /* "src/lxml/parser.pxi":1307
  *                 error = xmlparser.xmlCtxtResetPush(
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  *             py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
  *             c_data += buffer_len
  *             if error:
  */
+    __Pyx_TraceLine(1307,0,__PYX_ERR(2, 1307, __pyx_L1_error))
     __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len - __pyx_v_buffer_len);
 
-    /* "src/lxml/parser.pxi":1307
+    /* "src/lxml/parser.pxi":1308
  *                     pctxt, c_data, buffer_len, c_filename, c_encoding)
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len             # <<<<<<<<<<<<<<
  *             if error:
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(1308,0,__PYX_ERR(2, 1308, __pyx_L1_error))
     __pyx_v_c_data = (__pyx_v_c_data + __pyx_v_buffer_len);
 
-    /* "src/lxml/parser.pxi":1308
+    /* "src/lxml/parser.pxi":1309
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len
  *             if error:             # <<<<<<<<<<<<<<
  *                 raise MemoryError()
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  */
+    __Pyx_TraceLine(1309,0,__PYX_ERR(2, 1309, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_error != 0);
     if (unlikely(__pyx_t_7)) {
 
-      /* "src/lxml/parser.pxi":1309
+      /* "src/lxml/parser.pxi":1310
  *             c_data += buffer_len
  *             if error:
  *                 raise MemoryError()             # <<<<<<<<<<<<<<
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
  * 
  */
-      PyErr_NoMemory(); __PYX_ERR(2, 1309, __pyx_L1_error)
+      __Pyx_TraceLine(1310,0,__PYX_ERR(2, 1310, __pyx_L1_error))
+      PyErr_NoMemory(); __PYX_ERR(2, 1310, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":1308
+      /* "src/lxml/parser.pxi":1309
  *             py_buffer_len -= buffer_len
  *             c_data += buffer_len
  *             if error:             # <<<<<<<<<<<<<<
@@ -116519,16 +123815,17 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1310
+    /* "src/lxml/parser.pxi":1311
  *             if error:
  *                 raise MemoryError()
  *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
  * 
  *         #print pctxt.charset, 'NONE' if c_encoding is NULL else c_encoding
  */
+    __Pyx_TraceLine(1311,0,__PYX_ERR(2, 1311, __pyx_L1_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);
 
-    /* "src/lxml/parser.pxi":1287
+    /* "src/lxml/parser.pxi":1288
  *         pctxt = context._c_ctxt
  *         error = 0
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -116537,22 +123834,24 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1314
+  /* "src/lxml/parser.pxi":1315
  *         #print pctxt.charset, 'NONE' if c_encoding is NULL else c_encoding
  * 
  *         fixup_error = 0             # <<<<<<<<<<<<<<
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:
  */
+  __Pyx_TraceLine(1315,0,__PYX_ERR(2, 1315, __pyx_L1_error))
   __pyx_v_fixup_error = 0;
 
-  /* "src/lxml/parser.pxi":1315
+  /* "src/lxml/parser.pxi":1316
  * 
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:
  */
+  __Pyx_TraceLine(1316,0,__PYX_ERR(2, 1316, __pyx_L1_error))
   while (1) {
     __pyx_t_6 = ((__pyx_v_py_buffer_len > 0) != 0);
     if (__pyx_t_6) {
@@ -116571,13 +123870,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_L11_bool_binop_done:;
     if (!__pyx_t_7) break;
 
-    /* "src/lxml/parser.pxi":1316
+    /* "src/lxml/parser.pxi":1317
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if py_buffer_len > limits.INT_MAX:
  *                     buffer_len = limits.INT_MAX
  */
+    __Pyx_TraceLine(1317,0,__PYX_ERR(2, 1317, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -116586,26 +123886,28 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1317
+          /* "src/lxml/parser.pxi":1318
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
  *                     buffer_len = limits.INT_MAX
  *                 else:
  */
+          __Pyx_TraceLine(1318,1,__PYX_ERR(2, 1318, __pyx_L17_error))
           __pyx_t_7 = ((__pyx_v_py_buffer_len > INT_MAX) != 0);
           if (__pyx_t_7) {
 
-            /* "src/lxml/parser.pxi":1318
+            /* "src/lxml/parser.pxi":1319
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:
  *                     buffer_len = limits.INT_MAX             # <<<<<<<<<<<<<<
  *                 else:
  *                     buffer_len = <int>py_buffer_len
  */
+            __Pyx_TraceLine(1319,1,__PYX_ERR(2, 1319, __pyx_L17_error))
             __pyx_v_buffer_len = INT_MAX;
 
-            /* "src/lxml/parser.pxi":1317
+            /* "src/lxml/parser.pxi":1318
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:
  *                 if py_buffer_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -116615,73 +123917,80 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             goto __pyx_L19;
           }
 
-          /* "src/lxml/parser.pxi":1320
+          /* "src/lxml/parser.pxi":1321
  *                     buffer_len = limits.INT_MAX
  *                 else:
  *                     buffer_len = <int>py_buffer_len             # <<<<<<<<<<<<<<
  *                 if self._for_html:
  *                     c_node = pctxt.node  # last node where the parser stopped
  */
+          __Pyx_TraceLine(1321,1,__PYX_ERR(2, 1321, __pyx_L17_error))
           /*else*/ {
             __pyx_v_buffer_len = ((int)__pyx_v_py_buffer_len);
           }
           __pyx_L19:;
 
-          /* "src/lxml/parser.pxi":1321
+          /* "src/lxml/parser.pxi":1322
  *                 else:
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:             # <<<<<<<<<<<<<<
  *                     c_node = pctxt.node  # last node where the parser stopped
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  */
+          __Pyx_TraceLine(1322,1,__PYX_ERR(2, 1322, __pyx_L17_error))
           __pyx_t_7 = (__pyx_v_self->__pyx_base._for_html != 0);
           if (__pyx_t_7) {
 
-            /* "src/lxml/parser.pxi":1322
+            /* "src/lxml/parser.pxi":1323
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:
  *                     c_node = pctxt.node  # last node where the parser stopped             # <<<<<<<<<<<<<<
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                     # and now for the fun part: move node names to the dict
  */
+            __Pyx_TraceLine(1323,1,__PYX_ERR(2, 1323, __pyx_L17_error))
             __pyx_t_12 = __pyx_v_pctxt->node;
             __pyx_v_c_node = __pyx_t_12;
 
-            /* "src/lxml/parser.pxi":1323
+            /* "src/lxml/parser.pxi":1324
  *                 if self._for_html:
  *                     c_node = pctxt.node  # last node where the parser stopped
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:
  */
+            __Pyx_TraceLine(1324,1,__PYX_ERR(2, 1324, __pyx_L17_error))
             __pyx_v_error = htmlParseChunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
 
-            /* "src/lxml/parser.pxi":1325
+            /* "src/lxml/parser.pxi":1326
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:             # <<<<<<<<<<<<<<
  *                         fixup_error = _fixHtmlDictSubtreeNames(
  *                             pctxt.dict, pctxt.myDoc, c_node)
  */
+            __Pyx_TraceLine(1326,1,__PYX_ERR(2, 1326, __pyx_L17_error))
             __pyx_t_7 = (__pyx_v_pctxt->myDoc != 0);
             if (__pyx_t_7) {
 
-              /* "src/lxml/parser.pxi":1326
+              /* "src/lxml/parser.pxi":1327
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:
  *                         fixup_error = _fixHtmlDictSubtreeNames(             # <<<<<<<<<<<<<<
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:
  */
+              __Pyx_TraceLine(1327,1,__PYX_ERR(2, 1327, __pyx_L17_error))
               __pyx_v_fixup_error = __pyx_f_4lxml_5etree__fixHtmlDictSubtreeNames(__pyx_v_pctxt->dict, __pyx_v_pctxt->myDoc, __pyx_v_c_node);
 
-              /* "src/lxml/parser.pxi":1328
+              /* "src/lxml/parser.pxi":1329
  *                         fixup_error = _fixHtmlDictSubtreeNames(
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:             # <<<<<<<<<<<<<<
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)
  *                             pctxt.myDoc.dict = pctxt.dict
  */
+              __Pyx_TraceLine(1329,1,__PYX_ERR(2, 1329, __pyx_L17_error))
               __pyx_t_6 = (__pyx_v_pctxt->myDoc->dict != 0);
               if (__pyx_t_6) {
               } else {
@@ -116693,35 +124002,38 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
               __pyx_L23_bool_binop_done:;
               if (__pyx_t_7) {
 
-                /* "src/lxml/parser.pxi":1329
+                /* "src/lxml/parser.pxi":1330
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)             # <<<<<<<<<<<<<<
  *                             pctxt.myDoc.dict = pctxt.dict
  *                             xmlparser.xmlDictReference(pctxt.dict)
  */
+                __Pyx_TraceLine(1330,1,__PYX_ERR(2, 1330, __pyx_L17_error))
                 xmlDictFree(__pyx_v_pctxt->myDoc->dict);
 
-                /* "src/lxml/parser.pxi":1330
+                /* "src/lxml/parser.pxi":1331
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)
  *                             pctxt.myDoc.dict = pctxt.dict             # <<<<<<<<<<<<<<
  *                             xmlparser.xmlDictReference(pctxt.dict)
  *                 else:
  */
+                __Pyx_TraceLine(1331,1,__PYX_ERR(2, 1331, __pyx_L17_error))
                 __pyx_t_13 = __pyx_v_pctxt->dict;
                 __pyx_v_pctxt->myDoc->dict = __pyx_t_13;
 
-                /* "src/lxml/parser.pxi":1331
+                /* "src/lxml/parser.pxi":1332
  *                             xmlparser.xmlDictFree(pctxt.myDoc.dict)
  *                             pctxt.myDoc.dict = pctxt.dict
  *                             xmlparser.xmlDictReference(pctxt.dict)             # <<<<<<<<<<<<<<
  *                 else:
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
  */
+                __Pyx_TraceLine(1332,1,__PYX_ERR(2, 1332, __pyx_L17_error))
                 (void)(xmlDictReference(__pyx_v_pctxt->dict));
 
-                /* "src/lxml/parser.pxi":1328
+                /* "src/lxml/parser.pxi":1329
  *                         fixup_error = _fixHtmlDictSubtreeNames(
  *                             pctxt.dict, pctxt.myDoc, c_node)
  *                         if pctxt.myDoc.dict and pctxt.myDoc.dict is not pctxt.dict:             # <<<<<<<<<<<<<<
@@ -116730,7 +124042,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
               }
 
-              /* "src/lxml/parser.pxi":1325
+              /* "src/lxml/parser.pxi":1326
  *                     error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                     # and now for the fun part: move node names to the dict
  *                     if pctxt.myDoc:             # <<<<<<<<<<<<<<
@@ -116739,7 +124051,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
             }
 
-            /* "src/lxml/parser.pxi":1321
+            /* "src/lxml/parser.pxi":1322
  *                 else:
  *                     buffer_len = <int>py_buffer_len
  *                 if self._for_html:             # <<<<<<<<<<<<<<
@@ -116749,44 +124061,48 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             goto __pyx_L20;
           }
 
-          /* "src/lxml/parser.pxi":1333
+          /* "src/lxml/parser.pxi":1334
  *                             xmlparser.xmlDictReference(pctxt.dict)
  *                 else:
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
  *                 py_buffer_len -= buffer_len
  *                 c_data += buffer_len
  */
+          __Pyx_TraceLine(1334,1,__PYX_ERR(2, 1334, __pyx_L17_error))
           /*else*/ {
             __pyx_v_error = xmlParseChunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
           }
           __pyx_L20:;
 
-          /* "src/lxml/parser.pxi":1334
+          /* "src/lxml/parser.pxi":1335
  *                 else:
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                 py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
  *                 c_data += buffer_len
  * 
  */
+          __Pyx_TraceLine(1335,1,__PYX_ERR(2, 1335, __pyx_L17_error))
           __pyx_v_py_buffer_len = (__pyx_v_py_buffer_len - __pyx_v_buffer_len);
 
-          /* "src/lxml/parser.pxi":1335
+          /* "src/lxml/parser.pxi":1336
  *                     error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
  *                 py_buffer_len -= buffer_len
  *                 c_data += buffer_len             # <<<<<<<<<<<<<<
  * 
  *             if fixup_error:
  */
+          __Pyx_TraceLine(1336,1,__PYX_ERR(2, 1336, __pyx_L17_error))
           __pyx_v_c_data = (__pyx_v_c_data + __pyx_v_buffer_len);
         }
 
-        /* "src/lxml/parser.pxi":1316
+        /* "src/lxml/parser.pxi":1317
  *         fixup_error = 0
  *         while py_buffer_len > 0 and (error == 0 or recover):
  *             with nogil:             # <<<<<<<<<<<<<<
  *                 if py_buffer_len > limits.INT_MAX:
  *                     buffer_len = limits.INT_MAX
  */
+        __Pyx_TraceLine(1317,1,__PYX_ERR(2, 1317, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -116795,30 +124111,39 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             #endif
             goto __pyx_L18;
           }
+          __pyx_L17_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L18:;
         }
     }
 
-    /* "src/lxml/parser.pxi":1337
+    /* "src/lxml/parser.pxi":1338
  *                 c_data += buffer_len
  * 
  *             if fixup_error:             # <<<<<<<<<<<<<<
  *                 context.store_exception(MemoryError())
  * 
  */
+    __Pyx_TraceLine(1338,0,__PYX_ERR(2, 1338, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_fixup_error != 0);
     if (__pyx_t_7) {
 
-      /* "src/lxml/parser.pxi":1338
+      /* "src/lxml/parser.pxi":1339
  * 
  *             if fixup_error:
  *                 context.store_exception(MemoryError())             # <<<<<<<<<<<<<<
  * 
  *             if context._has_raised():
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context), __pyx_n_s_store_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1338, __pyx_L1_error)
+      __Pyx_TraceLine(1339,0,__PYX_ERR(2, 1339, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context), __pyx_n_s_store_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1339, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_MemoryError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1338, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_MemoryError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1339, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -116831,14 +124156,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1338, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1339, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_2)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
-          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1338, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1339, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -116847,20 +124172,20 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
-          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1338, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1339, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         } else
         #endif
         {
-          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1338, __pyx_L1_error)
+          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1339, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_GIVEREF(__pyx_t_3);
           PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
           __pyx_t_3 = 0;
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1338, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1339, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         }
@@ -116868,7 +124193,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "src/lxml/parser.pxi":1337
+      /* "src/lxml/parser.pxi":1338
  *                 c_data += buffer_len
  * 
  *             if fixup_error:             # <<<<<<<<<<<<<<
@@ -116877,45 +124202,49 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1340
+    /* "src/lxml/parser.pxi":1341
  *                 context.store_exception(MemoryError())
  * 
  *             if context._has_raised():             # <<<<<<<<<<<<<<
  *                 # propagate Python exceptions immediately
  *                 recover = 0
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1340, __pyx_L1_error)
+    __Pyx_TraceLine(1341,0,__PYX_ERR(2, 1341, __pyx_L1_error))
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1341, __pyx_L1_error)
     __pyx_t_6 = (__pyx_t_7 != 0);
     if (__pyx_t_6) {
 
-      /* "src/lxml/parser.pxi":1342
+      /* "src/lxml/parser.pxi":1343
  *             if context._has_raised():
  *                 # propagate Python exceptions immediately
  *                 recover = 0             # <<<<<<<<<<<<<<
  *                 error = 1
  *                 break
  */
+      __Pyx_TraceLine(1343,0,__PYX_ERR(2, 1343, __pyx_L1_error))
       __pyx_v_recover = 0;
 
-      /* "src/lxml/parser.pxi":1343
+      /* "src/lxml/parser.pxi":1344
  *                 # propagate Python exceptions immediately
  *                 recover = 0
  *                 error = 1             # <<<<<<<<<<<<<<
  *                 break
  * 
  */
+      __Pyx_TraceLine(1344,0,__PYX_ERR(2, 1344, __pyx_L1_error))
       __pyx_v_error = 1;
 
-      /* "src/lxml/parser.pxi":1344
+      /* "src/lxml/parser.pxi":1345
  *                 recover = 0
  *                 error = 1
  *                 break             # <<<<<<<<<<<<<<
  * 
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  */
+      __Pyx_TraceLine(1345,0,__PYX_ERR(2, 1345, __pyx_L1_error))
       goto __pyx_L10_break;
 
-      /* "src/lxml/parser.pxi":1340
+      /* "src/lxml/parser.pxi":1341
  *                 context.store_exception(MemoryError())
  * 
  *             if context._has_raised():             # <<<<<<<<<<<<<<
@@ -116924,13 +124253,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
     }
 
-    /* "src/lxml/parser.pxi":1346
+    /* "src/lxml/parser.pxi":1347
  *                 break
  * 
  *             if error and not pctxt.replaceEntities and not pctxt.validate:             # <<<<<<<<<<<<<<
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  */
+    __Pyx_TraceLine(1347,0,__PYX_ERR(2, 1347, __pyx_L1_error))
     __pyx_t_7 = (__pyx_v_error != 0);
     if (__pyx_t_7) {
     } else {
@@ -116948,14 +124278,15 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_L28_bool_binop_done:;
     if (__pyx_t_6) {
 
-      /* "src/lxml/parser.pxi":1348
+      /* "src/lxml/parser.pxi":1349
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1348, __pyx_L1_error)
+      __Pyx_TraceLine(1349,0,__PYX_ERR(2, 1349, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s_filter_from_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1349, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_4 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -116968,10 +124299,10 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1348, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1349, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1348, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1349, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -116979,9 +124310,9 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0;
         __pyx_t_15 = NULL;
       } else {
-        __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1348, __pyx_L1_error)
+        __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1349, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 1348, __pyx_L1_error)
+        __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(2, 1349, __pyx_L1_error)
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       for (;;) {
@@ -116989,17 +124320,17 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           if (likely(PyList_CheckExact(__pyx_t_2))) {
             if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(2, 1348, __pyx_L1_error)
+            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(2, 1349, __pyx_L1_error)
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1348, __pyx_L1_error)
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1349, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_1);
             #endif
           } else {
             if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(2, 1348, __pyx_L1_error)
+            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(2, 1349, __pyx_L1_error)
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1348, __pyx_L1_error)
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1349, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_1);
             #endif
           }
@@ -117009,7 +124340,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else __PYX_ERR(2, 1348, __pyx_L1_error)
+              else __PYX_ERR(2, 1349, __pyx_L1_error)
             }
             break;
           }
@@ -117018,24 +124349,25 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "src/lxml/parser.pxi":1349
+        /* "src/lxml/parser.pxi":1350
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                         break
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1349, __pyx_L1_error)
+        __Pyx_TraceLine(1350,0,__PYX_ERR(2, 1350, __pyx_L1_error))
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1350, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1349, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1350, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1349, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_WAR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1350, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1349, __pyx_L1_error)
+        __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1350, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1349, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1350, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         if (__pyx_t_7) {
         } else {
@@ -117043,47 +124375,50 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
           goto __pyx_L34_bool_binop_done;
         }
 
-        /* "src/lxml/parser.pxi":1350
+        /* "src/lxml/parser.pxi":1351
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
  *                         break
  *                 else:
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1350, __pyx_L1_error)
+        __Pyx_TraceLine(1351,0,__PYX_ERR(2, 1351, __pyx_L1_error))
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1351, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1350, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1351, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1350, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERR_UNDECLARED_ENTITY); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1351, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1350, __pyx_L1_error)
+        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1351, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1350, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1351, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_6 = __pyx_t_7;
         __pyx_L34_bool_binop_done:;
 
-        /* "src/lxml/parser.pxi":1349
+        /* "src/lxml/parser.pxi":1350
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                         break
  */
+        __Pyx_TraceLine(1350,0,__PYX_ERR(2, 1350, __pyx_L1_error))
         if (__pyx_t_6) {
 
-          /* "src/lxml/parser.pxi":1351
+          /* "src/lxml/parser.pxi":1352
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  *                         break             # <<<<<<<<<<<<<<
  *                 else:
  *                     error = 0
  */
+          __Pyx_TraceLine(1352,0,__PYX_ERR(2, 1352, __pyx_L1_error))
           goto __pyx_L32_break;
 
-          /* "src/lxml/parser.pxi":1349
+          /* "src/lxml/parser.pxi":1350
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
@@ -117092,37 +124427,40 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
         }
 
-        /* "src/lxml/parser.pxi":1348
+        /* "src/lxml/parser.pxi":1349
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
+        __Pyx_TraceLine(1349,0,__PYX_ERR(2, 1349, __pyx_L1_error))
       }
       /*else*/ {
 
-        /* "src/lxml/parser.pxi":1353
+        /* "src/lxml/parser.pxi":1354
  *                         break
  *                 else:
  *                     error = 0             # <<<<<<<<<<<<<<
  * 
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():
  */
+        __Pyx_TraceLine(1354,0,__PYX_ERR(2, 1354, __pyx_L1_error))
         __pyx_v_error = 0;
       }
 
-      /* "src/lxml/parser.pxi":1348
+      /* "src/lxml/parser.pxi":1349
  *             if error and not pctxt.replaceEntities and not pctxt.validate:
  *                 # in this mode, we ignore errors about undefined entities
  *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
  *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
  *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
  */
+      __Pyx_TraceLine(1349,0,__PYX_ERR(2, 1349, __pyx_L1_error))
       __pyx_L32_break:;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "src/lxml/parser.pxi":1346
+      /* "src/lxml/parser.pxi":1347
  *                 break
  * 
  *             if error and not pctxt.replaceEntities and not pctxt.validate:             # <<<<<<<<<<<<<<
@@ -117133,13 +124471,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   }
   __pyx_L10_break:;
 
-  /* "src/lxml/parser.pxi":1355
+  /* "src/lxml/parser.pxi":1356
  *                     error = 0
  * 
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():             # <<<<<<<<<<<<<<
  *             # propagate Python exceptions immediately
  *             recover = 0
  */
+  __Pyx_TraceLine(1356,0,__PYX_ERR(2, 1356, __pyx_L1_error))
   __pyx_t_7 = ((!(__pyx_v_pctxt->wellFormed != 0)) != 0);
   if (__pyx_t_7) {
   } else {
@@ -117152,31 +124491,33 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
     __pyx_t_6 = __pyx_t_7;
     goto __pyx_L38_bool_binop_done;
   }
-  __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1355, __pyx_L1_error)
+  __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 1356, __pyx_L1_error)
   __pyx_t_16 = (__pyx_t_7 != 0);
   __pyx_t_6 = __pyx_t_16;
   __pyx_L38_bool_binop_done:;
   if (__pyx_t_6) {
 
-    /* "src/lxml/parser.pxi":1357
+    /* "src/lxml/parser.pxi":1358
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():
  *             # propagate Python exceptions immediately
  *             recover = 0             # <<<<<<<<<<<<<<
  *             error = 1
  * 
  */
+    __Pyx_TraceLine(1358,0,__PYX_ERR(2, 1358, __pyx_L1_error))
     __pyx_v_recover = 0;
 
-    /* "src/lxml/parser.pxi":1358
+    /* "src/lxml/parser.pxi":1359
  *             # propagate Python exceptions immediately
  *             recover = 0
  *             error = 1             # <<<<<<<<<<<<<<
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):
  */
+    __Pyx_TraceLine(1359,0,__PYX_ERR(2, 1359, __pyx_L1_error))
     __pyx_v_error = 1;
 
-    /* "src/lxml/parser.pxi":1355
+    /* "src/lxml/parser.pxi":1356
  *                     error = 0
  * 
  *         if not pctxt.wellFormed and pctxt.disableSAX and context._has_raised():             # <<<<<<<<<<<<<<
@@ -117185,13 +124526,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1360
+  /* "src/lxml/parser.pxi":1361
  *             error = 1
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):             # <<<<<<<<<<<<<<
  *             self._feed_parser_running = 0
  *             try:
  */
+  __Pyx_TraceLine(1361,0,__PYX_ERR(2, 1361, __pyx_L1_error))
   __pyx_t_16 = (__pyx_v_fixup_error != 0);
   if (!__pyx_t_16) {
   } else {
@@ -117215,46 +124557,50 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __pyx_L42_bool_binop_done:;
   if (__pyx_t_6) {
 
-    /* "src/lxml/parser.pxi":1361
+    /* "src/lxml/parser.pxi":1362
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):
  *             self._feed_parser_running = 0             # <<<<<<<<<<<<<<
  *             try:
  *                 context._handleParseResult(self, pctxt.myDoc, None)
  */
+    __Pyx_TraceLine(1362,0,__PYX_ERR(2, 1362, __pyx_L1_error))
     __pyx_v_self->_feed_parser_running = 0;
 
-    /* "src/lxml/parser.pxi":1362
+    /* "src/lxml/parser.pxi":1363
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):
  *             self._feed_parser_running = 0
  *             try:             # <<<<<<<<<<<<<<
  *                 context._handleParseResult(self, pctxt.myDoc, None)
  *             finally:
  */
+    __Pyx_TraceLine(1363,0,__PYX_ERR(2, 1363, __pyx_L47_error))
     /*try:*/ {
 
-      /* "src/lxml/parser.pxi":1363
+      /* "src/lxml/parser.pxi":1364
  *             self._feed_parser_running = 0
  *             try:
  *                 context._handleParseResult(self, pctxt.myDoc, None)             # <<<<<<<<<<<<<<
  *             finally:
  *                 context.cleanup()
  */
-      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1363, __pyx_L47_error)
+      __Pyx_TraceLine(1364,0,__PYX_ERR(2, 1364, __pyx_L47_error))
+      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1364, __pyx_L47_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
 
-    /* "src/lxml/parser.pxi":1365
+    /* "src/lxml/parser.pxi":1366
  *                 context._handleParseResult(self, pctxt.myDoc, None)
  *             finally:
  *                 context.cleanup()             # <<<<<<<<<<<<<<
  * 
  *     cpdef close(self):
  */
+    __Pyx_TraceLine(1366,0,__PYX_ERR(2, 1366, __pyx_L1_error))
     /*finally:*/ {
       /*normal exit:*/{
-        __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1365, __pyx_L1_error)
+        __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 1366, __pyx_L1_error)
         goto __pyx_L48;
       }
       __pyx_L47_error:;
@@ -117277,7 +124623,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __Pyx_XGOTREF(__pyx_t_24);
         __pyx_t_10 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
         {
-          __pyx_t_25 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(2, 1365, __pyx_L50_error)
+          __pyx_t_25 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(2, 1366, __pyx_L50_error)
         }
         if (PY_MAJOR_VERSION >= 3) {
           __Pyx_XGIVEREF(__pyx_t_22);
@@ -117308,7 +124654,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       __pyx_L48:;
     }
 
-    /* "src/lxml/parser.pxi":1360
+    /* "src/lxml/parser.pxi":1361
  *             error = 1
  * 
  *         if fixup_error or not recover and (error or not pctxt.wellFormed):             # <<<<<<<<<<<<<<
@@ -117317,7 +124663,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/parser.pxi":1241
+  /* "src/lxml/parser.pxi":1242
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
@@ -117340,6 +124686,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_entry);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -117361,11 +124708,14 @@ static PyObject *__pyx_pw_4lxml_5etree_11_FeedParser_1feed(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_5etree__FeedParser *__pyx_v_self, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__239)
   __Pyx_RefNannySetupContext("feed", 0);
+  __Pyx_TraceCall("feed (wrapper)", __pyx_f[2], 1242, 0, __PYX_ERR(2, 1242, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_feed(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1241, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_feed(__pyx_v_self, __pyx_v_data, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1242, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -117378,11 +124728,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1367
+/* "src/lxml/parser.pxi":1368
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -117396,6 +124747,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   xmlParserCtxt *__pyx_v_pctxt;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -117416,12 +124768,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   PyObject *__pyx_t_17 = NULL;
   PyObject *__pyx_t_18 = NULL;
   int __pyx_t_19;
+  __Pyx_TraceFrameInit(__pyx_codeobj__240)
   __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_TraceCall("close", __pyx_f[2], 1368, 0, __PYX_ERR(2, 1368, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1367, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1368, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_4lxml_5etree_11_FeedParser_3close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -117437,10 +124791,10 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1367, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1368, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1367, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1368, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -117452,43 +124806,47 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1378
+  /* "src/lxml/parser.pxi":1379
  *         parser interface, all other usage is undefined.
  *         """
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
  *             raise XMLSyntaxError(u"no element found",
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,
  */
+  __Pyx_TraceLine(1379,0,__PYX_ERR(2, 1379, __pyx_L1_error))
   __pyx_t_5 = ((!(__pyx_v_self->_feed_parser_running != 0)) != 0);
   if (unlikely(__pyx_t_5)) {
 
-    /* "src/lxml/parser.pxi":1379
+    /* "src/lxml/parser.pxi":1380
  *         """
  *         if not self._feed_parser_running:
  *             raise XMLSyntaxError(u"no element found",             # <<<<<<<<<<<<<<
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,
  *                                  self._filename)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1379, __pyx_L1_error)
+    __Pyx_TraceLine(1380,0,__PYX_ERR(2, 1380, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XMLSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1380, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "src/lxml/parser.pxi":1380
+    /* "src/lxml/parser.pxi":1381
  *         if not self._feed_parser_running:
  *             raise XMLSyntaxError(u"no element found",
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,             # <<<<<<<<<<<<<<
  *                                  self._filename)
  * 
  */
-    __pyx_t_3 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1380, __pyx_L1_error)
+    __Pyx_TraceLine(1381,0,__PYX_ERR(2, 1381, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyInt_From_xmlParserErrors(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1381, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
 
-    /* "src/lxml/parser.pxi":1381
+    /* "src/lxml/parser.pxi":1382
  *             raise XMLSyntaxError(u"no element found",
  *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0,
  *                                  self._filename)             # <<<<<<<<<<<<<<
  * 
  *         context = self._getPushParserContext()
  */
+    __Pyx_TraceLine(1382,0,__PYX_ERR(2, 1382, __pyx_L1_error))
     __pyx_t_4 = NULL;
     __pyx_t_6 = 0;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -117504,7 +124862,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_kp_u_no_element_found, __pyx_t_3, __pyx_int_0, __pyx_int_0, __pyx_v_self->__pyx_base._filename};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1379, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1380, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -117513,14 +124871,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
       PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_kp_u_no_element_found, __pyx_t_3, __pyx_int_0, __pyx_int_0, __pyx_v_self->__pyx_base._filename};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1379, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1380, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else
     #endif
     {
-      __pyx_t_7 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1379, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 1380, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -117540,16 +124898,16 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
       __Pyx_GIVEREF(__pyx_v_self->__pyx_base._filename);
       PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, __pyx_v_self->__pyx_base._filename);
       __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1379, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1380, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(2, 1379, __pyx_L1_error)
+    __PYX_ERR(2, 1380, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1378
+    /* "src/lxml/parser.pxi":1379
  *         parser interface, all other usage is undefined.
  *         """
  *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
@@ -117558,57 +124916,62 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1383
+  /* "src/lxml/parser.pxi":1384
  *                                  self._filename)
  * 
  *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
  *         pctxt = context._c_ctxt
  * 
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1383, __pyx_L1_error)
+  __Pyx_TraceLine(1384,0,__PYX_ERR(2, 1384, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1384, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parser.pxi":1384
+  /* "src/lxml/parser.pxi":1385
  * 
  *         context = self._getPushParserContext()
  *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
  * 
  *         self._feed_parser_running = 0
  */
+  __Pyx_TraceLine(1385,0,__PYX_ERR(2, 1385, __pyx_L1_error))
   __pyx_t_8 = __pyx_v_context->_c_ctxt;
   __pyx_v_pctxt = __pyx_t_8;
 
-  /* "src/lxml/parser.pxi":1386
+  /* "src/lxml/parser.pxi":1387
  *         pctxt = context._c_ctxt
  * 
  *         self._feed_parser_running = 0             # <<<<<<<<<<<<<<
  *         if self._for_html:
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
  */
+  __Pyx_TraceLine(1387,0,__PYX_ERR(2, 1387, __pyx_L1_error))
   __pyx_v_self->_feed_parser_running = 0;
 
-  /* "src/lxml/parser.pxi":1387
+  /* "src/lxml/parser.pxi":1388
  * 
  *         self._feed_parser_running = 0
  *         if self._for_html:             # <<<<<<<<<<<<<<
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
  *         else:
  */
+  __Pyx_TraceLine(1388,0,__PYX_ERR(2, 1388, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_self->__pyx_base._for_html != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1388
+    /* "src/lxml/parser.pxi":1389
  *         self._feed_parser_running = 0
  *         if self._for_html:
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
  *         else:
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  */
+    __Pyx_TraceLine(1389,0,__PYX_ERR(2, 1389, __pyx_L1_error))
     (void)(htmlParseChunk(__pyx_v_pctxt, NULL, 0, 1));
 
-    /* "src/lxml/parser.pxi":1387
+    /* "src/lxml/parser.pxi":1388
  * 
  *         self._feed_parser_running = 0
  *         if self._for_html:             # <<<<<<<<<<<<<<
@@ -117618,25 +124981,27 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L4;
   }
 
-  /* "src/lxml/parser.pxi":1390
+  /* "src/lxml/parser.pxi":1391
  *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
  *         else:
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and
  */
+  __Pyx_TraceLine(1391,0,__PYX_ERR(2, 1391, __pyx_L1_error))
   /*else*/ {
     (void)(xmlParseChunk(__pyx_v_pctxt, NULL, 0, 1));
   }
   __pyx_L4:;
 
-  /* "src/lxml/parser.pxi":1392
+  /* "src/lxml/parser.pxi":1393
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
  *                 isinstance(context, _SaxParserContext)):
  *             # apply any left-over 'end' events
  */
+  __Pyx_TraceLine(1393,0,__PYX_ERR(2, 1393, __pyx_L1_error))
   __pyx_t_9 = (__pyx_v_pctxt->recovery != 0);
   if (__pyx_t_9) {
   } else {
@@ -117650,37 +125015,40 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L6_bool_binop_done;
   }
 
-  /* "src/lxml/parser.pxi":1393
+  /* "src/lxml/parser.pxi":1394
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and
  *                 isinstance(context, _SaxParserContext)):             # <<<<<<<<<<<<<<
  *             # apply any left-over 'end' events
  *             (<_SaxParserContext>context).flushEvents()
  */
+  __Pyx_TraceLine(1394,0,__PYX_ERR(2, 1394, __pyx_L1_error))
   __pyx_t_9 = __Pyx_TypeCheck(((PyObject *)__pyx_v_context), __pyx_ptype_4lxml_5etree__SaxParserContext); 
   __pyx_t_10 = (__pyx_t_9 != 0);
   __pyx_t_5 = __pyx_t_10;
   __pyx_L6_bool_binop_done:;
 
-  /* "src/lxml/parser.pxi":1392
+  /* "src/lxml/parser.pxi":1393
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
  *                 isinstance(context, _SaxParserContext)):
  *             # apply any left-over 'end' events
  */
+  __Pyx_TraceLine(1393,0,__PYX_ERR(2, 1393, __pyx_L1_error))
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1395
+    /* "src/lxml/parser.pxi":1396
  *                 isinstance(context, _SaxParserContext)):
  *             # apply any left-over 'end' events
  *             (<_SaxParserContext>context).flushEvents()             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->flushEvents(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1395, __pyx_L1_error)
+    __Pyx_TraceLine(1396,0,__PYX_ERR(2, 1396, __pyx_L1_error))
+    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->flushEvents(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_context)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1396, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1392
+    /* "src/lxml/parser.pxi":1393
  *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
  * 
  *         if (pctxt.recovery and not pctxt.disableSAX and             # <<<<<<<<<<<<<<
@@ -117689,38 +125057,41 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1397
+  /* "src/lxml/parser.pxi":1398
  *             (<_SaxParserContext>context).flushEvents()
  * 
  *         try:             # <<<<<<<<<<<<<<
  *             result = context._handleParseResult(self, pctxt.myDoc, None)
  *         finally:
  */
+  __Pyx_TraceLine(1398,0,__PYX_ERR(2, 1398, __pyx_L10_error))
   /*try:*/ {
 
-    /* "src/lxml/parser.pxi":1398
+    /* "src/lxml/parser.pxi":1399
  * 
  *         try:
  *             result = context._handleParseResult(self, pctxt.myDoc, None)             # <<<<<<<<<<<<<<
  *         finally:
  *             context.cleanup()
  */
-    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1398, __pyx_L10_error)
+    __Pyx_TraceLine(1399,0,__PYX_ERR(2, 1399, __pyx_L10_error))
+    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1399, __pyx_L10_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
     __pyx_t_1 = 0;
   }
 
-  /* "src/lxml/parser.pxi":1400
+  /* "src/lxml/parser.pxi":1401
  *             result = context._handleParseResult(self, pctxt.myDoc, None)
  *         finally:
  *             context.cleanup()             # <<<<<<<<<<<<<<
  * 
  *         if isinstance(result, _Document):
  */
+  __Pyx_TraceLine(1401,0,__PYX_ERR(2, 1401, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1400, __pyx_L1_error)
+      __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1401, __pyx_L1_error)
       goto __pyx_L11;
     }
     __pyx_L10_error:;
@@ -117743,7 +125114,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
       __Pyx_XGOTREF(__pyx_t_18);
       __pyx_t_6 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
       {
-        __pyx_t_19 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(2, 1400, __pyx_L13_error)
+        __pyx_t_19 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(2, 1401, __pyx_L13_error)
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_16);
@@ -117774,32 +125145,34 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     __pyx_L11:;
   }
 
-  /* "src/lxml/parser.pxi":1402
+  /* "src/lxml/parser.pxi":1403
  *             context.cleanup()
  * 
  *         if isinstance(result, _Document):             # <<<<<<<<<<<<<<
  *             return (<_Document>result).getroot()
  *         else:
  */
+  __Pyx_TraceLine(1403,0,__PYX_ERR(2, 1403, __pyx_L1_error))
   __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_result, __pyx_ptype_4lxml_5etree__Document); 
   __pyx_t_10 = (__pyx_t_5 != 0);
   if (__pyx_t_10) {
 
-    /* "src/lxml/parser.pxi":1403
+    /* "src/lxml/parser.pxi":1404
  * 
  *         if isinstance(result, _Document):
  *             return (<_Document>result).getroot()             # <<<<<<<<<<<<<<
  *         else:
  *             return result
  */
+    __Pyx_TraceLine(1404,0,__PYX_ERR(2, 1404, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(((struct LxmlDocument *)__pyx_v_result)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1403, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(((struct LxmlDocument *)__pyx_v_result)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1404, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1402
+    /* "src/lxml/parser.pxi":1403
  *             context.cleanup()
  * 
  *         if isinstance(result, _Document):             # <<<<<<<<<<<<<<
@@ -117808,13 +125181,14 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1405
+  /* "src/lxml/parser.pxi":1406
  *             return (<_Document>result).getroot()
  *         else:
  *             return result             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1406,0,__PYX_ERR(2, 1406, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
@@ -117822,7 +125196,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":1367
+  /* "src/lxml/parser.pxi":1368
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -117843,6 +125217,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -117864,11 +125239,14 @@ static PyObject *__pyx_pw_4lxml_5etree_11_FeedParser_3close(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_2close(struct __pyx_obj_4lxml_5etree__FeedParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__240)
   __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_TraceCall("close (wrapper)", __pyx_f[2], 1368, 0, __PYX_ERR(2, 1368, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1367, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11_FeedParser_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1368, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -117881,11 +125259,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_2close(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1408
+/* "src/lxml/parser.pxi":1409
  * 
  * 
  * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,             # <<<<<<<<<<<<<<
@@ -117896,40 +125275,45 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_2close(struct __pyx_obj_4lx
 static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt, const char *__pyx_v_c_data, int __pyx_v_buffer_len, const char *__pyx_v_c_filename, const char *__pyx_v_c_encoding, int __pyx_v_parse_options) {
   int __pyx_v_error;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_htmlCtxtResetPush", 0);
+  __Pyx_TraceCall("_htmlCtxtResetPush", __pyx_f[2], 1409, 0, __PYX_ERR(2, 1409, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1414
+  /* "src/lxml/parser.pxi":1415
  *     cdef xmlparser.xmlParserInput* c_input_stream
  *     # libxml2 lacks an HTML push parser setup function
  *     error = xmlparser.xmlCtxtResetPush(             # <<<<<<<<<<<<<<
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:
  */
+  __Pyx_TraceLine(1415,0,__PYX_ERR(2, 1415, __pyx_L1_error))
   __pyx_v_error = xmlCtxtResetPush(__pyx_v_c_ctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_c_encoding);
 
-  /* "src/lxml/parser.pxi":1416
+  /* "src/lxml/parser.pxi":1417
  *     error = xmlparser.xmlCtxtResetPush(
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:             # <<<<<<<<<<<<<<
  *         return error
  * 
  */
+  __Pyx_TraceLine(1417,0,__PYX_ERR(2, 1417, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_error != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1417
+    /* "src/lxml/parser.pxi":1418
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:
  *         return error             # <<<<<<<<<<<<<<
  * 
  *     # fix libxml2 setup for HTML
  */
+    __Pyx_TraceLine(1418,0,__PYX_ERR(2, 1418, __pyx_L1_error))
     __pyx_r = __pyx_v_error;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1416
+    /* "src/lxml/parser.pxi":1417
  *     error = xmlparser.xmlCtxtResetPush(
  *         c_ctxt, c_data, buffer_len, c_filename, c_encoding)
  *     if error:             # <<<<<<<<<<<<<<
@@ -117938,44 +125322,48 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
   }
 
-  /* "src/lxml/parser.pxi":1420
+  /* "src/lxml/parser.pxi":1421
  * 
  *     # fix libxml2 setup for HTML
  *     c_ctxt.progressive = 1             # <<<<<<<<<<<<<<
  *     c_ctxt.html = 1
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
  */
+  __Pyx_TraceLine(1421,0,__PYX_ERR(2, 1421, __pyx_L1_error))
   __pyx_v_c_ctxt->progressive = 1;
 
-  /* "src/lxml/parser.pxi":1421
+  /* "src/lxml/parser.pxi":1422
  *     # fix libxml2 setup for HTML
  *     c_ctxt.progressive = 1
  *     c_ctxt.html = 1             # <<<<<<<<<<<<<<
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
  * 
  */
+  __Pyx_TraceLine(1422,0,__PYX_ERR(2, 1422, __pyx_L1_error))
   __pyx_v_c_ctxt->html = 1;
 
-  /* "src/lxml/parser.pxi":1422
+  /* "src/lxml/parser.pxi":1423
  *     c_ctxt.progressive = 1
  *     c_ctxt.html = 1
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)             # <<<<<<<<<<<<<<
  * 
  *     return 0
  */
+  __Pyx_TraceLine(1423,0,__PYX_ERR(2, 1423, __pyx_L1_error))
   (void)(htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_parse_options));
 
-  /* "src/lxml/parser.pxi":1424
+  /* "src/lxml/parser.pxi":1425
  *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
  * 
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1425,0,__PYX_ERR(2, 1425, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1408
+  /* "src/lxml/parser.pxi":1409
  * 
  * 
  * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,             # <<<<<<<<<<<<<<
@@ -117984,12 +125372,16 @@ static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._htmlCtxtResetPush", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1485
+/* "src/lxml/parser.pxi":1486
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -118026,7 +125418,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1486
+    /* "src/lxml/parser.pxi":1487
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
@@ -118037,7 +125429,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1487
+    /* "src/lxml/parser.pxi":1488
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, XMLSchema schema=None,             # <<<<<<<<<<<<<<
@@ -118048,7 +125440,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[6] = ((PyObject *)Py_False);
     values[7] = (PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
 
-    /* "src/lxml/parser.pxi":1488
+    /* "src/lxml/parser.pxi":1489
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, XMLSchema schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
@@ -118059,7 +125451,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[9] = ((PyObject *)Py_False);
     values[10] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1489
+    /* "src/lxml/parser.pxi":1490
  *                  ns_clean=False, recover=False, XMLSchema schema=None,
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
@@ -118070,7 +125462,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
     values[12] = ((PyObject *)Py_False);
     values[13] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1490
+    /* "src/lxml/parser.pxi":1491
  *                  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):             # <<<<<<<<<<<<<<
@@ -118096,7 +125488,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1485, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1486, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -118122,16 +125514,16 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1485, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1486, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.XMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __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(2, 1487, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) __PYX_ERR(2, 1488, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_9XMLParser___init__(((struct __pyx_obj_4lxml_5etree_XMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_attribute_defaults, __pyx_v_dtd_validation, __pyx_v_load_dtd, __pyx_v_no_network, __pyx_v_ns_clean, __pyx_v_recover, __pyx_v_schema, __pyx_v_huge_tree, __pyx_v_remove_blank_text, __pyx_v_resolve_entities, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_compact);
 
-  /* "src/lxml/parser.pxi":1485
+  /* "src/lxml/parser.pxi":1486
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -118151,6 +125543,7 @@ static int __pyx_pw_4lxml_5etree_9XMLParser_1__init__(PyObject *__pyx_v_self, Py
 static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etree_XMLParser *__pyx_v_self, PyObject *__pyx_v_encoding, PyObject *__pyx_v_attribute_defaults, PyObject *__pyx_v_dtd_validation, PyObject *__pyx_v_load_dtd, PyObject *__pyx_v_no_network, PyObject *__pyx_v_ns_clean, PyObject *__pyx_v_recover, struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema, PyObject *__pyx_v_huge_tree, PyObject *__pyx_v_remove_blank_text, PyObject *__pyx_v_resolve_entities, PyObject *__pyx_v_remove_comments, PyObject *__pyx_v_remove_pis, PyObject *__pyx_v_strip_cdata, PyObject *__pyx_v_collect_ids, PyObject *__pyx_v_target, PyObject *__pyx_v_compact) {
   int __pyx_v_parse_options;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -118161,36 +125554,40 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 1486, 0, __PYX_ERR(2, 1486, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1492
+  /* "src/lxml/parser.pxi":1493
  *                  collect_ids=True, target=None, compact=True):
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  */
+  __Pyx_TraceLine(1493,0,__PYX_ERR(2, 1493, __pyx_L1_error))
   __pyx_v_parse_options = __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS;
 
-  /* "src/lxml/parser.pxi":1493
+  /* "src/lxml/parser.pxi":1494
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1493, __pyx_L1_error)
+  __Pyx_TraceLine(1494,0,__PYX_ERR(2, 1494, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1494, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1494
+    /* "src/lxml/parser.pxi":1495
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
  *         if dtd_validation:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  */
+    __Pyx_TraceLine(1495,0,__PYX_ERR(2, 1495, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
 
-    /* "src/lxml/parser.pxi":1493
+    /* "src/lxml/parser.pxi":1494
  *         cdef int parse_options
  *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
  *         if load_dtd:             # <<<<<<<<<<<<<<
@@ -118199,26 +125596,28 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1495
+  /* "src/lxml/parser.pxi":1496
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1495, __pyx_L1_error)
+  __Pyx_TraceLine(1496,0,__PYX_ERR(2, 1496, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1496, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1496
+    /* "src/lxml/parser.pxi":1497
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \             # <<<<<<<<<<<<<<
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:
  */
+    __Pyx_TraceLine(1497,0,__PYX_ERR(2, 1497, __pyx_L1_error))
     __pyx_v_parse_options = ((__pyx_v_parse_options | XML_PARSE_DTDVALID) | XML_PARSE_DTDLOAD);
 
-    /* "src/lxml/parser.pxi":1495
+    /* "src/lxml/parser.pxi":1496
  *         if load_dtd:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if dtd_validation:             # <<<<<<<<<<<<<<
@@ -118227,46 +125626,50 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1498
+  /* "src/lxml/parser.pxi":1499
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1498, __pyx_L1_error)
+  __Pyx_TraceLine(1499,0,__PYX_ERR(2, 1499, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1499, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1499
+    /* "src/lxml/parser.pxi":1500
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR             # <<<<<<<<<<<<<<
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  */
+    __Pyx_TraceLine(1500,0,__PYX_ERR(2, 1500, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDATTR);
 
-    /* "src/lxml/parser.pxi":1500
+    /* "src/lxml/parser.pxi":1501
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:             # <<<<<<<<<<<<<<
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:
  */
+    __Pyx_TraceLine(1501,0,__PYX_ERR(2, 1501, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_schema) == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1501
+      /* "src/lxml/parser.pxi":1502
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  */
+      __Pyx_TraceLine(1502,0,__PYX_ERR(2, 1502, __pyx_L1_error))
       __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
 
-      /* "src/lxml/parser.pxi":1500
+      /* "src/lxml/parser.pxi":1501
  *         if attribute_defaults:
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
  *             if schema is None:             # <<<<<<<<<<<<<<
@@ -118275,7 +125678,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
     }
 
-    /* "src/lxml/parser.pxi":1498
+    /* "src/lxml/parser.pxi":1499
  *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
  *                             xmlparser.XML_PARSE_DTDLOAD
  *         if attribute_defaults:             # <<<<<<<<<<<<<<
@@ -118284,26 +125687,28 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1502
+  /* "src/lxml/parser.pxi":1503
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_clean); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1502, __pyx_L1_error)
+  __Pyx_TraceLine(1503,0,__PYX_ERR(2, 1503, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_clean); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1503, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1503
+    /* "src/lxml/parser.pxi":1504
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN             # <<<<<<<<<<<<<<
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  */
+    __Pyx_TraceLine(1504,0,__PYX_ERR(2, 1504, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NSCLEAN);
 
-    /* "src/lxml/parser.pxi":1502
+    /* "src/lxml/parser.pxi":1503
  *             if schema is None:
  *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
  *         if ns_clean:             # <<<<<<<<<<<<<<
@@ -118312,26 +125717,28 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1504
+  /* "src/lxml/parser.pxi":1505
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1504, __pyx_L1_error)
+  __Pyx_TraceLine(1505,0,__PYX_ERR(2, 1505, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1505, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1505
+    /* "src/lxml/parser.pxi":1506
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  */
+    __Pyx_TraceLine(1506,0,__PYX_ERR(2, 1506, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_RECOVER);
 
-    /* "src/lxml/parser.pxi":1504
+    /* "src/lxml/parser.pxi":1505
  *         if ns_clean:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
  *         if recover:             # <<<<<<<<<<<<<<
@@ -118340,26 +125747,28 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1506
+  /* "src/lxml/parser.pxi":1507
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1506, __pyx_L1_error)
+  __Pyx_TraceLine(1507,0,__PYX_ERR(2, 1507, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1507, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1507
+    /* "src/lxml/parser.pxi":1508
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  */
+    __Pyx_TraceLine(1508,0,__PYX_ERR(2, 1508, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NOBLANKS);
 
-    /* "src/lxml/parser.pxi":1506
+    /* "src/lxml/parser.pxi":1507
  *         if recover:
  *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
@@ -118368,26 +125777,28 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1508
+  /* "src/lxml/parser.pxi":1509
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1508, __pyx_L1_error)
+  __Pyx_TraceLine(1509,0,__PYX_ERR(2, 1509, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1509, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1509
+    /* "src/lxml/parser.pxi":1510
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE             # <<<<<<<<<<<<<<
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  */
+    __Pyx_TraceLine(1510,0,__PYX_ERR(2, 1510, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_HUGE);
 
-    /* "src/lxml/parser.pxi":1508
+    /* "src/lxml/parser.pxi":1509
  *         if remove_blank_text:
  *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
  *         if huge_tree:             # <<<<<<<<<<<<<<
@@ -118396,27 +125807,29 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1510
+  /* "src/lxml/parser.pxi":1511
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1510, __pyx_L1_error)
+  __Pyx_TraceLine(1511,0,__PYX_ERR(2, 1511, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1511, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1511
+    /* "src/lxml/parser.pxi":1512
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET             # <<<<<<<<<<<<<<
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  */
+    __Pyx_TraceLine(1512,0,__PYX_ERR(2, 1512, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NONET);
 
-    /* "src/lxml/parser.pxi":1510
+    /* "src/lxml/parser.pxi":1511
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  *         if not no_network:             # <<<<<<<<<<<<<<
@@ -118425,27 +125838,29 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1512
+  /* "src/lxml/parser.pxi":1513
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1512, __pyx_L1_error)
+  __Pyx_TraceLine(1513,0,__PYX_ERR(2, 1513, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1513, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1513
+    /* "src/lxml/parser.pxi":1514
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT             # <<<<<<<<<<<<<<
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  */
+    __Pyx_TraceLine(1514,0,__PYX_ERR(2, 1514, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_COMPACT);
 
-    /* "src/lxml/parser.pxi":1512
+    /* "src/lxml/parser.pxi":1513
  *         if not no_network:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
@@ -118454,27 +125869,29 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1514
+  /* "src/lxml/parser.pxi":1515
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1514, __pyx_L1_error)
+  __Pyx_TraceLine(1515,0,__PYX_ERR(2, 1515, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1515, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1515
+    /* "src/lxml/parser.pxi":1516
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT             # <<<<<<<<<<<<<<
  *         if not strip_cdata:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
  */
+    __Pyx_TraceLine(1516,0,__PYX_ERR(2, 1516, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOENT);
 
-    /* "src/lxml/parser.pxi":1514
+    /* "src/lxml/parser.pxi":1515
  *         if not compact:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
  *         if not resolve_entities:             # <<<<<<<<<<<<<<
@@ -118483,27 +125900,29 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1516
+  /* "src/lxml/parser.pxi":1517
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1516, __pyx_L1_error)
+  __Pyx_TraceLine(1517,0,__PYX_ERR(2, 1517, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1517, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1517
+    /* "src/lxml/parser.pxi":1518
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA             # <<<<<<<<<<<<<<
  * 
  *         _BaseParser.__init__(self, parse_options, 0, schema,
  */
+    __Pyx_TraceLine(1518,0,__PYX_ERR(2, 1518, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOCDATA);
 
-    /* "src/lxml/parser.pxi":1516
+    /* "src/lxml/parser.pxi":1517
  *         if not resolve_entities:
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
  *         if not strip_cdata:             # <<<<<<<<<<<<<<
@@ -118512,25 +125931,27 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/parser.pxi":1519
+  /* "src/lxml/parser.pxi":1520
  *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
  * 
  *         _BaseParser.__init__(self, parse_options, 0, schema,             # <<<<<<<<<<<<<<
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1519, __pyx_L1_error)
+  __Pyx_TraceLine(1520,0,__PYX_ERR(2, 1520, __pyx_L1_error))
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1519, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
 
-  /* "src/lxml/parser.pxi":1521
+  /* "src/lxml/parser.pxi":1522
  *         _BaseParser.__init__(self, parse_options, 0, schema,
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1522,0,__PYX_ERR(2, 1522, __pyx_L1_error))
   __pyx_t_6 = NULL;
   __pyx_t_7 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -118546,7 +125967,7 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[11] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_5, __pyx_int_0, ((PyObject *)__pyx_v_schema), __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1519, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1520, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -118555,14 +125976,14 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[11] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_5, __pyx_int_0, ((PyObject *)__pyx_v_schema), __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1519, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1520, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else
   #endif
   {
-    __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1519, __pyx_L1_error)
+    __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1520, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     if (__pyx_t_6) {
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -118597,14 +126018,14 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
     __Pyx_GIVEREF(__pyx_v_encoding);
     PyTuple_SET_ITEM(__pyx_t_8, 9+__pyx_t_7, __pyx_v_encoding);
     __pyx_t_5 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1519, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1520, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1485
+  /* "src/lxml/parser.pxi":1486
  *     apply to the default parser.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -118624,11 +126045,12 @@ static int __pyx_pf_4lxml_5etree_9XMLParser___init__(struct __pyx_obj_4lxml_5etr
   __Pyx_AddTraceback("lxml.etree.XMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1542
+/* "src/lxml/parser.pxi":1543
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -118679,7 +126101,7 @@ static int __pyx_pw_4lxml_5etree_13XMLPullParser_1__init__(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 1542, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 1543, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -118695,7 +126117,7 @@ static int __pyx_pw_4lxml_5etree_13XMLPullParser_1__init__(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1542, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1543, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("lxml.etree.XMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -118712,6 +126134,7 @@ static int __pyx_pw_4lxml_5etree_13XMLPullParser_1__init__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml_5etree_XMLPullParser *__pyx_v_self, PyObject *__pyx_v_events, PyObject *__pyx_v_tag, PyObject *__pyx_v_base_url, PyObject *__pyx_v_kwargs) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -118719,50 +126142,54 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 1543, 0, __PYX_ERR(2, 1543, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_events);
 
-  /* "src/lxml/parser.pxi":1543
+  /* "src/lxml/parser.pxi":1544
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)             # <<<<<<<<<<<<<<
  *         if events is None:
  *             events = ('end',)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1543, __pyx_L1_error)
+  __Pyx_TraceLine(1544,0,__PYX_ERR(2, 1544, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1543, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1543, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1544
+  /* "src/lxml/parser.pxi":1545
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  */
+  __Pyx_TraceLine(1545,0,__PYX_ERR(2, 1545, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_events == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1545
+    /* "src/lxml/parser.pxi":1546
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-    __Pyx_INCREF(__pyx_tuple__73);
-    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__73);
+    __Pyx_TraceLine(1546,0,__PYX_ERR(2, 1546, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_tuple__241);
+    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__241);
 
-    /* "src/lxml/parser.pxi":1544
+    /* "src/lxml/parser.pxi":1545
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -118771,29 +126198,31 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/parser.pxi":1546
+  /* "src/lxml/parser.pxi":1547
  *         if events is None:
  *             events = ('end',)
  *         self._setBaseURL(base_url)             # <<<<<<<<<<<<<<
  *         self._collectEvents(events, tag)
  * 
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1546, __pyx_L1_error)
+  __Pyx_TraceLine(1547,0,__PYX_ERR(2, 1547, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1547
+  /* "src/lxml/parser.pxi":1548
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)             # <<<<<<<<<<<<<<
  * 
  *     def read_events(self):
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1547, __pyx_L1_error)
+  __Pyx_TraceLine(1548,0,__PYX_ERR(2, 1548, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1542
+  /* "src/lxml/parser.pxi":1543
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -118812,11 +126241,12 @@ static int __pyx_pf_4lxml_5etree_13XMLPullParser___init__(struct __pyx_obj_4lxml
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_events);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1549
+/* "src/lxml/parser.pxi":1550
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -118840,27 +126270,31 @@ static PyObject *__pyx_pw_4lxml_5etree_13XMLPullParser_3read_events(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_13XMLPullParser_2read_events(struct __pyx_obj_4lxml_5etree_XMLPullParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__242)
   __Pyx_RefNannySetupContext("read_events", 0);
+  __Pyx_TraceCall("read_events", __pyx_f[2], 1550, 0, __PYX_ERR(2, 1550, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1550
+  /* "src/lxml/parser.pxi":1551
  * 
  *     def read_events(self):
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1551,0,__PYX_ERR(2, 1551, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1550, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) __PYX_ERR(2, 1550, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) __PYX_ERR(2, 1551, __pyx_L1_error)
   __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator));
   __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1549
+  /* "src/lxml/parser.pxi":1550
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -118875,11 +126309,12 @@ static PyObject *__pyx_pf_4lxml_5etree_13XMLPullParser_2read_events(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1568
+/* "src/lxml/parser.pxi":1569
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -118915,7 +126350,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1569
+    /* "src/lxml/parser.pxi":1570
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
@@ -118926,7 +126361,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1570
+    /* "src/lxml/parser.pxi":1571
  *     def __init__(self, *, encoding=None, attribute_defaults=False,
  *                  dtd_validation=False, load_dtd=False, no_network=True,
  *                  ns_clean=False, recover=False, schema=None,             # <<<<<<<<<<<<<<
@@ -118937,7 +126372,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[6] = ((PyObject *)Py_False);
     values[7] = ((PyObject *)Py_None);
 
-    /* "src/lxml/parser.pxi":1571
+    /* "src/lxml/parser.pxi":1572
  *                  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,             # <<<<<<<<<<<<<<
@@ -118948,7 +126383,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[9] = ((PyObject *)Py_False);
     values[10] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1572
+    /* "src/lxml/parser.pxi":1573
  *                  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,             # <<<<<<<<<<<<<<
@@ -118959,7 +126394,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
     values[12] = ((PyObject *)Py_True);
     values[13] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1573
+    /* "src/lxml/parser.pxi":1574
  *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):             # <<<<<<<<<<<<<<
@@ -118984,7 +126419,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1568, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1569, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -119009,7 +126444,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1568, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1569, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ETCompatXMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -119017,7 +126452,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(((struct __pyx_obj_4lxml_5etree_ETCompatXMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_attribute_defaults, __pyx_v_dtd_validation, __pyx_v_load_dtd, __pyx_v_no_network, __pyx_v_ns_clean, __pyx_v_recover, __pyx_v_schema, __pyx_v_huge_tree, __pyx_v_remove_blank_text, __pyx_v_resolve_entities, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_target, __pyx_v_compact);
 
-  /* "src/lxml/parser.pxi":1568
+  /* "src/lxml/parser.pxi":1569
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -119032,189 +126467,209 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(struct __pyx_obj_4lxml_5etree_ETCompatXMLParser *__pyx_v_self, PyObject *__pyx_v_encoding, PyObject *__pyx_v_attribute_defaults, PyObject *__pyx_v_dtd_validation, PyObject *__pyx_v_load_dtd, PyObject *__pyx_v_no_network, PyObject *__pyx_v_ns_clean, PyObject *__pyx_v_recover, PyObject *__pyx_v_schema, PyObject *__pyx_v_huge_tree, PyObject *__pyx_v_remove_blank_text, PyObject *__pyx_v_resolve_entities, PyObject *__pyx_v_remove_comments, PyObject *__pyx_v_remove_pis, PyObject *__pyx_v_strip_cdata, PyObject *__pyx_v_target, PyObject *__pyx_v_compact) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 1569, 0, __PYX_ERR(2, 1569, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1574
+  /* "src/lxml/parser.pxi":1575
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,             # <<<<<<<<<<<<<<
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1574, __pyx_L1_error)
+  __Pyx_TraceLine(1575,0,__PYX_ERR(2, 1575, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1574, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
 
-  /* "src/lxml/parser.pxi":1575
+  /* "src/lxml/parser.pxi":1576
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,
  *                            attribute_defaults=attribute_defaults,             # <<<<<<<<<<<<<<
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,
  */
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1576,0,__PYX_ERR(2, 1576, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1576
+  /* "src/lxml/parser.pxi":1577
  *         XMLParser.__init__(self,
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,             # <<<<<<<<<<<<<<
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1577,0,__PYX_ERR(2, 1577, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1577
+  /* "src/lxml/parser.pxi":1578
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,             # <<<<<<<<<<<<<<
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1578,0,__PYX_ERR(2, 1578, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1578
+  /* "src/lxml/parser.pxi":1579
  *                            dtd_validation=dtd_validation,
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,             # <<<<<<<<<<<<<<
  *                            ns_clean=ns_clean,
  *                            recover=recover,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1579,0,__PYX_ERR(2, 1579, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1579
+  /* "src/lxml/parser.pxi":1580
  *                            load_dtd=load_dtd,
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,             # <<<<<<<<<<<<<<
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ns_clean, __pyx_v_ns_clean) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1580,0,__PYX_ERR(2, 1580, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ns_clean, __pyx_v_ns_clean) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1580
+  /* "src/lxml/parser.pxi":1581
  *                            no_network=no_network,
  *                            ns_clean=ns_clean,
  *                            recover=recover,             # <<<<<<<<<<<<<<
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1581,0,__PYX_ERR(2, 1581, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1581
+  /* "src/lxml/parser.pxi":1582
  *                            ns_clean=ns_clean,
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,             # <<<<<<<<<<<<<<
  *                            huge_tree=huge_tree,
  *                            compact=compact,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1582,0,__PYX_ERR(2, 1582, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1582
+  /* "src/lxml/parser.pxi":1583
  *                            recover=recover,
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,             # <<<<<<<<<<<<<<
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1583,0,__PYX_ERR(2, 1583, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1583
+  /* "src/lxml/parser.pxi":1584
  *                            remove_blank_text=remove_blank_text,
  *                            huge_tree=huge_tree,
  *                            compact=compact,             # <<<<<<<<<<<<<<
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1584,0,__PYX_ERR(2, 1584, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1584
+  /* "src/lxml/parser.pxi":1585
  *                            huge_tree=huge_tree,
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,             # <<<<<<<<<<<<<<
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1585,0,__PYX_ERR(2, 1585, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1585
+  /* "src/lxml/parser.pxi":1586
  *                            compact=compact,
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,             # <<<<<<<<<<<<<<
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1586,0,__PYX_ERR(2, 1586, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1586
+  /* "src/lxml/parser.pxi":1587
  *                            resolve_entities=resolve_entities,
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,             # <<<<<<<<<<<<<<
  *                            strip_cdata=strip_cdata,
  *                            target=target,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1587,0,__PYX_ERR(2, 1587, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1587
+  /* "src/lxml/parser.pxi":1588
  *                            remove_comments=remove_comments,
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,             # <<<<<<<<<<<<<<
  *                            target=target,
  *                            encoding=encoding,
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1588,0,__PYX_ERR(2, 1588, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1588
+  /* "src/lxml/parser.pxi":1589
  *                            remove_pis=remove_pis,
  *                            strip_cdata=strip_cdata,
  *                            target=target,             # <<<<<<<<<<<<<<
  *                            encoding=encoding,
  *                            schema=schema)
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_v_target) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1589,0,__PYX_ERR(2, 1589, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_v_target) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1589
+  /* "src/lxml/parser.pxi":1590
  *                            strip_cdata=strip_cdata,
  *                            target=target,
  *                            encoding=encoding,             # <<<<<<<<<<<<<<
  *                            schema=schema)
  * 
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1590,0,__PYX_ERR(2, 1590, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1590
+  /* "src/lxml/parser.pxi":1591
  *                            target=target,
  *                            encoding=encoding,
  *                            schema=schema)             # <<<<<<<<<<<<<<
  * 
  * # ET 1.2 compatible name
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, __pyx_v_schema) < 0) __PYX_ERR(2, 1575, __pyx_L1_error)
+  __Pyx_TraceLine(1591,0,__PYX_ERR(2, 1591, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, __pyx_v_schema) < 0) __PYX_ERR(2, 1576, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1574
+  /* "src/lxml/parser.pxi":1575
  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
  *                  target=None, compact=True):
  *         XMLParser.__init__(self,             # <<<<<<<<<<<<<<
  *                            attribute_defaults=attribute_defaults,
  *                            dtd_validation=dtd_validation,
  */
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1574, __pyx_L1_error)
+  __Pyx_TraceLine(1575,0,__PYX_ERR(2, 1575, __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(2, 1575, __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/parser.pxi":1568
+  /* "src/lxml/parser.pxi":1569
  *     and thus ignores comments and processing instructions.
  *     """
  *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
@@ -119233,11 +126688,12 @@ static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(struct __pyx_obj_4
   __Pyx_AddTraceback("lxml.etree.ETCompatXMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1601
+/* "src/lxml/parser.pxi":1602
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -119276,7 +126732,7 @@ static PyObject *__pyx_pw_4lxml_5etree_45set_default_parser(PyObject *__pyx_self
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(2, 1601, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(2, 1602, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -119290,13 +126746,13 @@ static PyObject *__pyx_pw_4lxml_5etree_45set_default_parser(PyObject *__pyx_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1601, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1602, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.set_default_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(2, 1601, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(2, 1602, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_44set_default_parser(__pyx_self, __pyx_v_parser);
 
   /* function exit code */
@@ -119310,34 +126766,39 @@ static PyObject *__pyx_pw_4lxml_5etree_45set_default_parser(PyObject *__pyx_self
 
 static PyObject *__pyx_pf_4lxml_5etree_44set_default_parser(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__243)
   __Pyx_RefNannySetupContext("set_default_parser", 0);
+  __Pyx_TraceCall("set_default_parser", __pyx_f[2], 1602, 0, __PYX_ERR(2, 1602, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1613
+  /* "src/lxml/parser.pxi":1614
  *     parser for each thread explicitly or use a parser pool.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
  *         parser = __DEFAULT_XML_PARSER
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  */
+  __Pyx_TraceLine(1614,0,__PYX_ERR(2, 1614, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1614
+    /* "src/lxml/parser.pxi":1615
  *     """
  *     if parser is None:
  *         parser = __DEFAULT_XML_PARSER             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  */
+    __Pyx_TraceLine(1615,0,__PYX_ERR(2, 1615, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
 
-    /* "src/lxml/parser.pxi":1613
+    /* "src/lxml/parser.pxi":1614
  *     parser for each thread explicitly or use a parser pool.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -119346,16 +126807,17 @@ static PyObject *__pyx_pf_4lxml_5etree_44set_default_parser(CYTHON_UNUSED PyObje
  */
   }
 
-  /* "src/lxml/parser.pxi":1615
+  /* "src/lxml/parser.pxi":1616
  *     if parser is None:
  *         parser = __DEFAULT_XML_PARSER
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)             # <<<<<<<<<<<<<<
  * 
  * def get_default_parser():
  */
+  __Pyx_TraceLine(1616,0,__PYX_ERR(2, 1616, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1601
+  /* "src/lxml/parser.pxi":1602
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -119365,13 +126827,19 @@ static PyObject *__pyx_pf_4lxml_5etree_44set_default_parser(CYTHON_UNUSED PyObje
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.set_default_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1617
+/* "src/lxml/parser.pxi":1618
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
@@ -119396,25 +126864,29 @@ static PyObject *__pyx_pw_4lxml_5etree_47get_default_parser(PyObject *__pyx_self
 
 static PyObject *__pyx_pf_4lxml_5etree_46get_default_parser(CYTHON_UNUSED PyObject *__pyx_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__244)
   __Pyx_RefNannySetupContext("get_default_parser", 0);
+  __Pyx_TraceCall("get_default_parser", __pyx_f[2], 1618, 0, __PYX_ERR(2, 1618, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1619
+  /* "src/lxml/parser.pxi":1620
  * def get_default_parser():
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(1620,0,__PYX_ERR(2, 1620, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1619, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1620, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1617
+  /* "src/lxml/parser.pxi":1618
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
@@ -119429,11 +126901,12 @@ static PyObject *__pyx_pf_4lxml_5etree_46get_default_parser(CYTHON_UNUSED PyObje
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1668
+/* "src/lxml/parser.pxi":1669
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -119466,7 +126939,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[0] = ((PyObject *)Py_None);
     values[1] = ((PyObject *)Py_False);
 
-    /* "src/lxml/parser.pxi":1669
+    /* "src/lxml/parser.pxi":1670
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
@@ -119477,7 +126950,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1670
+    /* "src/lxml/parser.pxi":1671
  *     def __init__(self, *, encoding=None, remove_blank_text=False,
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,
  *                  no_network=True, target=None, XMLSchema schema=None,             # <<<<<<<<<<<<<<
@@ -119488,7 +126961,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[6] = ((PyObject *)Py_None);
     values[7] = (PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
 
-    /* "src/lxml/parser.pxi":1671
+    /* "src/lxml/parser.pxi":1672
  *                  remove_comments=False, remove_pis=False, strip_cdata=True,
  *                  no_network=True, target=None, XMLSchema schema=None,
  *                  recover=True, compact=True, default_doctype=True,             # <<<<<<<<<<<<<<
@@ -119499,7 +126972,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
     values[9] = ((PyObject *)Py_True);
     values[10] = ((PyObject *)Py_True);
 
-    /* "src/lxml/parser.pxi":1672
+    /* "src/lxml/parser.pxi":1673
  *                  no_network=True, target=None, XMLSchema schema=None,
  *                  recover=True, compact=True, default_doctype=True,
  *                  collect_ids=True, huge_tree=False):             # <<<<<<<<<<<<<<
@@ -119524,7 +126997,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1668, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(2, 1669, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -119546,16 +127019,16 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1668, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1669, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.HTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __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(2, 1670, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) __PYX_ERR(2, 1671, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_10HTMLParser___init__(((struct __pyx_obj_4lxml_5etree_HTMLParser *)__pyx_v_self), __pyx_v_encoding, __pyx_v_remove_blank_text, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_no_network, __pyx_v_target, __pyx_v_schema, __pyx_v_recover, __pyx_v_compact, __pyx_v_default_doctype, __pyx_v_collect_ids, __pyx_v_huge_tree);
 
-  /* "src/lxml/parser.pxi":1668
+  /* "src/lxml/parser.pxi":1669
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -119575,6 +127048,7 @@ static int __pyx_pw_4lxml_5etree_10HTMLParser_1__init__(PyObject *__pyx_v_self,
 static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5etree_HTMLParser *__pyx_v_self, PyObject *__pyx_v_encoding, PyObject *__pyx_v_remove_blank_text, PyObject *__pyx_v_remove_comments, PyObject *__pyx_v_remove_pis, PyObject *__pyx_v_strip_cdata, PyObject *__pyx_v_no_network, PyObject *__pyx_v_target, struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema, PyObject *__pyx_v_recover, PyObject *__pyx_v_compact, PyObject *__pyx_v_default_doctype, PyObject *__pyx_v_collect_ids, PyObject *__pyx_v_huge_tree) {
   int __pyx_v_parse_options;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -119585,36 +127059,40 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 1669, 0, __PYX_ERR(2, 1669, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1674
+  /* "src/lxml/parser.pxi":1675
  *                  collect_ids=True, huge_tree=False):
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  */
+  __Pyx_TraceLine(1675,0,__PYX_ERR(2, 1675, __pyx_L1_error))
   __pyx_v_parse_options = __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS;
 
-  /* "src/lxml/parser.pxi":1675
+  /* "src/lxml/parser.pxi":1676
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1675, __pyx_L1_error)
+  __Pyx_TraceLine(1676,0,__PYX_ERR(2, 1676, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1676, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1676
+    /* "src/lxml/parser.pxi":1677
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  */
+    __Pyx_TraceLine(1677,0,__PYX_ERR(2, 1677, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | HTML_PARSE_NOBLANKS);
 
-    /* "src/lxml/parser.pxi":1675
+    /* "src/lxml/parser.pxi":1676
  *         cdef int parse_options
  *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
  *         if remove_blank_text:             # <<<<<<<<<<<<<<
@@ -119623,27 +127101,29 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1677
+  /* "src/lxml/parser.pxi":1678
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1677, __pyx_L1_error)
+  __Pyx_TraceLine(1678,0,__PYX_ERR(2, 1678, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1678, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1678
+    /* "src/lxml/parser.pxi":1679
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  */
+    __Pyx_TraceLine(1679,0,__PYX_ERR(2, 1679, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_RECOVER);
 
-    /* "src/lxml/parser.pxi":1677
+    /* "src/lxml/parser.pxi":1678
  *         if remove_blank_text:
  *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
  *         if not recover:             # <<<<<<<<<<<<<<
@@ -119652,27 +127132,29 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1679
+  /* "src/lxml/parser.pxi":1680
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1679, __pyx_L1_error)
+  __Pyx_TraceLine(1680,0,__PYX_ERR(2, 1680, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1680, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1680
+    /* "src/lxml/parser.pxi":1681
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET             # <<<<<<<<<<<<<<
  *         if not compact:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  */
+    __Pyx_TraceLine(1681,0,__PYX_ERR(2, 1681, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_NONET);
 
-    /* "src/lxml/parser.pxi":1679
+    /* "src/lxml/parser.pxi":1680
  *         if not recover:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
  *         if not no_network:             # <<<<<<<<<<<<<<
@@ -119681,27 +127163,29 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1681
+  /* "src/lxml/parser.pxi":1682
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  *         if not default_doctype:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1681, __pyx_L1_error)
+  __Pyx_TraceLine(1682,0,__PYX_ERR(2, 1682, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1682, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1682
+    /* "src/lxml/parser.pxi":1683
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT             # <<<<<<<<<<<<<<
  *         if not default_doctype:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD
  */
+    __Pyx_TraceLine(1683,0,__PYX_ERR(2, 1683, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_COMPACT);
 
-    /* "src/lxml/parser.pxi":1681
+    /* "src/lxml/parser.pxi":1682
  *         if not no_network:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
  *         if not compact:             # <<<<<<<<<<<<<<
@@ -119710,27 +127194,29 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1683
+  /* "src/lxml/parser.pxi":1684
  *         if not compact:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  *         if not default_doctype:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD
  *         if huge_tree:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_default_doctype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1683, __pyx_L1_error)
+  __Pyx_TraceLine(1684,0,__PYX_ERR(2, 1684, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_default_doctype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1684, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1684
+    /* "src/lxml/parser.pxi":1685
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  *         if not default_doctype:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD             # <<<<<<<<<<<<<<
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  */
+    __Pyx_TraceLine(1685,0,__PYX_ERR(2, 1685, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_NODEFDTD);
 
-    /* "src/lxml/parser.pxi":1683
+    /* "src/lxml/parser.pxi":1684
  *         if not compact:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
  *         if not default_doctype:             # <<<<<<<<<<<<<<
@@ -119739,26 +127225,28 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1685
+  /* "src/lxml/parser.pxi":1686
  *         if not default_doctype:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD
  *         if huge_tree:             # <<<<<<<<<<<<<<
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1685, __pyx_L1_error)
+  __Pyx_TraceLine(1686,0,__PYX_ERR(2, 1686, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1686, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1686
+    /* "src/lxml/parser.pxi":1687
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD
  *         if huge_tree:
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE             # <<<<<<<<<<<<<<
  * 
  *         _BaseParser.__init__(self, parse_options, 1, schema,
  */
+    __Pyx_TraceLine(1687,0,__PYX_ERR(2, 1687, __pyx_L1_error))
     __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_HUGE);
 
-    /* "src/lxml/parser.pxi":1685
+    /* "src/lxml/parser.pxi":1686
  *         if not default_doctype:
  *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NODEFDTD
  *         if huge_tree:             # <<<<<<<<<<<<<<
@@ -119767,25 +127255,27 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/parser.pxi":1688
+  /* "src/lxml/parser.pxi":1689
  *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
  * 
  *         _BaseParser.__init__(self, parse_options, 1, schema,             # <<<<<<<<<<<<<<
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1688, __pyx_L1_error)
+  __Pyx_TraceLine(1689,0,__PYX_ERR(2, 1689, __pyx_L1_error))
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1689, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1688, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_parse_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1689, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
 
-  /* "src/lxml/parser.pxi":1690
+  /* "src/lxml/parser.pxi":1691
  *         _BaseParser.__init__(self, parse_options, 1, schema,
  *                              remove_comments, remove_pis, strip_cdata,
  *                              collect_ids, target, encoding)             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1691,0,__PYX_ERR(2, 1691, __pyx_L1_error))
   __pyx_t_6 = NULL;
   __pyx_t_7 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -119801,7 +127291,7 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[11] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_5, __pyx_int_1, ((PyObject *)__pyx_v_schema), __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1689, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -119810,14 +127300,14 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[11] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_5, __pyx_int_1, ((PyObject *)__pyx_v_schema), __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_collect_ids, __pyx_v_target, __pyx_v_encoding};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 10+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1689, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else
   #endif
   {
-    __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1688, __pyx_L1_error)
+    __pyx_t_8 = PyTuple_New(10+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1689, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     if (__pyx_t_6) {
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -119852,14 +127342,14 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
     __Pyx_GIVEREF(__pyx_v_encoding);
     PyTuple_SET_ITEM(__pyx_t_8, 9+__pyx_t_7, __pyx_v_encoding);
     __pyx_t_5 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1689, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1668
+  /* "src/lxml/parser.pxi":1669
  *     reasons.
  *     """
  *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
@@ -119879,11 +127369,12 @@ static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(struct __pyx_obj_4lxml_5e
   __Pyx_AddTraceback("lxml.etree.HTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1715
+/* "src/lxml/parser.pxi":1716
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -119934,7 +127425,7 @@ static int __pyx_pw_4lxml_5etree_14HTMLPullParser_1__init__(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 1715, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 1716, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -119950,7 +127441,7 @@ static int __pyx_pw_4lxml_5etree_14HTMLPullParser_1__init__(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1715, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1716, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("lxml.etree.HTMLPullParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -119967,6 +127458,7 @@ static int __pyx_pw_4lxml_5etree_14HTMLPullParser_1__init__(PyObject *__pyx_v_se
 
 static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxml_5etree_HTMLPullParser *__pyx_v_self, PyObject *__pyx_v_events, PyObject *__pyx_v_tag, PyObject *__pyx_v_base_url, PyObject *__pyx_v_kwargs) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -119974,50 +127466,54 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[2], 1716, 0, __PYX_ERR(2, 1716, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_events);
 
-  /* "src/lxml/parser.pxi":1716
+  /* "src/lxml/parser.pxi":1717
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)             # <<<<<<<<<<<<<<
  *         if events is None:
  *             events = ('end',)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1716, __pyx_L1_error)
+  __Pyx_TraceLine(1717,0,__PYX_ERR(2, 1717, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1717, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1716, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1717, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1716, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1717, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1717
+  /* "src/lxml/parser.pxi":1718
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  */
+  __Pyx_TraceLine(1718,0,__PYX_ERR(2, 1718, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_events == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/parser.pxi":1718
+    /* "src/lxml/parser.pxi":1719
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-    __Pyx_INCREF(__pyx_tuple__74);
-    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__74);
+    __Pyx_TraceLine(1719,0,__PYX_ERR(2, 1719, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_tuple__245);
+    __Pyx_DECREF_SET(__pyx_v_events, __pyx_tuple__245);
 
-    /* "src/lxml/parser.pxi":1717
+    /* "src/lxml/parser.pxi":1718
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:             # <<<<<<<<<<<<<<
@@ -120026,29 +127522,31 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
  */
   }
 
-  /* "src/lxml/parser.pxi":1719
+  /* "src/lxml/parser.pxi":1720
  *         if events is None:
  *             events = ('end',)
  *         self._setBaseURL(base_url)             # <<<<<<<<<<<<<<
  *         self._collectEvents(events, tag)
  * 
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1719, __pyx_L1_error)
+  __Pyx_TraceLine(1720,0,__PYX_ERR(2, 1720, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._setBaseURL(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1720, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1720
+  /* "src/lxml/parser.pxi":1721
  *             events = ('end',)
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)             # <<<<<<<<<<<<<<
  * 
  *     def read_events(self):
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1720, __pyx_L1_error)
+  __Pyx_TraceLine(1721,0,__PYX_ERR(2, 1721, __pyx_L1_error))
+  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._collectEvents(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_events, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/parser.pxi":1715
+  /* "src/lxml/parser.pxi":1716
  *     source, you can pass the ``base_url``.
  *     """
  *     def __init__(self, events=None, *, tag=None, base_url=None, **kwargs):             # <<<<<<<<<<<<<<
@@ -120067,11 +127565,12 @@ static int __pyx_pf_4lxml_5etree_14HTMLPullParser___init__(struct __pyx_obj_4lxm
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_events);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1722
+/* "src/lxml/parser.pxi":1723
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -120095,27 +127594,31 @@ static PyObject *__pyx_pw_4lxml_5etree_14HTMLPullParser_3read_events(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_14HTMLPullParser_2read_events(struct __pyx_obj_4lxml_5etree_HTMLPullParser *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__246)
   __Pyx_RefNannySetupContext("read_events", 0);
+  __Pyx_TraceCall("read_events", __pyx_f[2], 1723, 0, __PYX_ERR(2, 1723, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1723
+  /* "src/lxml/parser.pxi":1724
  * 
  *     def read_events(self):
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1724,0,__PYX_ERR(2, 1724, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1723, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_HTMLPullParser *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1724, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) __PYX_ERR(2, 1723, __pyx_L1_error)
+  if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__SaxParserContext)))) __PYX_ERR(2, 1724, __pyx_L1_error)
   __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator));
   __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_1)->events_iterator);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1722
+  /* "src/lxml/parser.pxi":1723
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
@@ -120130,11 +127633,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14HTMLPullParser_2read_events(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1730
+/* "src/lxml/parser.pxi":1731
  * ############################################################
  * 
  * cdef xmlDoc* _parseDoc(text, filename, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -120149,6 +127653,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   int __pyx_v_is_pep393_string;
   PyObject *__pyx_v_filename_utf = NULL;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -120158,33 +127663,36 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   PyObject *__pyx_t_6 = NULL;
   xmlDoc *__pyx_t_7;
   __Pyx_RefNannySetupContext("_parseDoc", 0);
+  __Pyx_TraceCall("_parseDoc", __pyx_f[2], 1731, 0, __PYX_ERR(2, 1731, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1735
+  /* "src/lxml/parser.pxi":1736
  *     cdef Py_ssize_t c_len
  *     cdef bint is_pep393_string
  *     if parser is None:             # <<<<<<<<<<<<<<
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:
  */
+  __Pyx_TraceLine(1736,0,__PYX_ERR(2, 1736, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1736
+    /* "src/lxml/parser.pxi":1737
  *     cdef bint is_pep393_string
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     if not filename:
  *         c_filename = NULL
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1736, __pyx_L1_error)
+    __Pyx_TraceLine(1737,0,__PYX_ERR(2, 1737, __pyx_L1_error))
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1735
+    /* "src/lxml/parser.pxi":1736
  *     cdef Py_ssize_t c_len
  *     cdef bint is_pep393_string
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -120193,27 +127701,29 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
   }
 
-  /* "src/lxml/parser.pxi":1737
+  /* "src/lxml/parser.pxi":1738
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:             # <<<<<<<<<<<<<<
  *         c_filename = NULL
  *     else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1737, __pyx_L1_error)
+  __Pyx_TraceLine(1738,0,__PYX_ERR(2, 1738, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 1738, __pyx_L1_error)
   __pyx_t_1 = ((!__pyx_t_2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1738
+    /* "src/lxml/parser.pxi":1739
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:
  *         c_filename = NULL             # <<<<<<<<<<<<<<
  *     else:
  *         filename_utf = _encodeFilenameUTF8(filename)
  */
+    __Pyx_TraceLine(1739,0,__PYX_ERR(2, 1739, __pyx_L1_error))
     __pyx_v_c_filename = NULL;
 
-    /* "src/lxml/parser.pxi":1737
+    /* "src/lxml/parser.pxi":1738
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     if not filename:             # <<<<<<<<<<<<<<
@@ -120223,48 +127733,52 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     goto __pyx_L4;
   }
 
-  /* "src/lxml/parser.pxi":1740
+  /* "src/lxml/parser.pxi":1741
  *         c_filename = NULL
  *     else:
  *         filename_utf = _encodeFilenameUTF8(filename)             # <<<<<<<<<<<<<<
  *         c_filename = _cstr(filename_utf)
  *     if isinstance(text, unicode):
  */
+  __Pyx_TraceLine(1741,0,__PYX_ERR(2, 1741, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1740, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1741, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_filename_utf = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1741
+    /* "src/lxml/parser.pxi":1742
  *     else:
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)             # <<<<<<<<<<<<<<
  *     if isinstance(text, unicode):
  *         is_pep393_string = (
  */
+    __Pyx_TraceLine(1742,0,__PYX_ERR(2, 1742, __pyx_L1_error))
     __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename_utf);
   }
   __pyx_L4:;
 
-  /* "src/lxml/parser.pxi":1742
+  /* "src/lxml/parser.pxi":1743
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  */
+  __Pyx_TraceLine(1743,0,__PYX_ERR(2, 1743, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_text); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1744
+    /* "src/lxml/parser.pxi":1745
  *     if isinstance(text, unicode):
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))             # <<<<<<<<<<<<<<
  *         if is_pep393_string:
  *             c_len = python.PyUnicode_GET_LENGTH(text)
  */
+    __Pyx_TraceLine(1745,0,__PYX_ERR(2, 1745, __pyx_L1_error))
     __pyx_t_1 = (CYTHON_PEP393_ENABLED != 0);
     if (__pyx_t_1) {
     } else {
@@ -120276,35 +127790,38 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_L6_bool_binop_done:;
     __pyx_v_is_pep393_string = __pyx_t_2;
 
-    /* "src/lxml/parser.pxi":1745
+    /* "src/lxml/parser.pxi":1746
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
  *             c_len = python.PyUnicode_GET_LENGTH(text)
  *             c_len *= python.PyUnicode_KIND(text)
  */
+    __Pyx_TraceLine(1746,0,__PYX_ERR(2, 1746, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_is_pep393_string != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1746
+      /* "src/lxml/parser.pxi":1747
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:
  *             c_len = python.PyUnicode_GET_LENGTH(text)             # <<<<<<<<<<<<<<
  *             c_len *= python.PyUnicode_KIND(text)
  *         else:
  */
+      __Pyx_TraceLine(1747,0,__PYX_ERR(2, 1747, __pyx_L1_error))
       __pyx_v_c_len = PyUnicode_GET_LENGTH(__pyx_v_text);
 
-      /* "src/lxml/parser.pxi":1747
+      /* "src/lxml/parser.pxi":1748
  *         if is_pep393_string:
  *             c_len = python.PyUnicode_GET_LENGTH(text)
  *             c_len *= python.PyUnicode_KIND(text)             # <<<<<<<<<<<<<<
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  */
+      __Pyx_TraceLine(1748,0,__PYX_ERR(2, 1748, __pyx_L1_error))
       __pyx_v_c_len = (__pyx_v_c_len * PyUnicode_KIND(__pyx_v_text));
 
-      /* "src/lxml/parser.pxi":1745
+      /* "src/lxml/parser.pxi":1746
  *         is_pep393_string = (
  *             python.PEP393_ENABLED and python.PyUnicode_IS_READY(text))
  *         if is_pep393_string:             # <<<<<<<<<<<<<<
@@ -120314,35 +127831,38 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
       goto __pyx_L8;
     }
 
-    /* "src/lxml/parser.pxi":1749
+    /* "src/lxml/parser.pxi":1750
  *             c_len *= python.PyUnicode_KIND(text)
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)             # <<<<<<<<<<<<<<
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  */
+    __Pyx_TraceLine(1750,0,__PYX_ERR(2, 1750, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_len = PyUnicode_GET_DATA_SIZE(__pyx_v_text);
     }
     __pyx_L8:;
 
-    /* "src/lxml/parser.pxi":1750
+    /* "src/lxml/parser.pxi":1751
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)
  */
+    __Pyx_TraceLine(1751,0,__PYX_ERR(2, 1751, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_len > INT_MAX) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1752
+      /* "src/lxml/parser.pxi":1753
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)             # <<<<<<<<<<<<<<
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  *             text = (<unicode>text).encode('utf8')
  */
+      __Pyx_TraceLine(1753,0,__PYX_ERR(2, 1753, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_4lxml_5etree_StringIO);
       __pyx_t_4 = __pyx_v_4lxml_5etree_StringIO; __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -120355,13 +127875,13 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1752, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1752, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1753, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
@@ -120369,38 +127889,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1752, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1753, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
         #endif
         {
-          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1752, __pyx_L1_error)
+          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1753, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_INCREF(__pyx_v_text);
           __Pyx_GIVEREF(__pyx_v_text);
           PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text);
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1752, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1753, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         }
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":1751
+      /* "src/lxml/parser.pxi":1752
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1751, __pyx_L1_error)
+      __Pyx_TraceLine(1752,0,__PYX_ERR(2, 1752, __pyx_L1_error))
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1752, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1750
+      /* "src/lxml/parser.pxi":1751
  *         else:
  *             c_len = python.PyUnicode_GET_DATA_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -120409,13 +127930,14 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1753
+    /* "src/lxml/parser.pxi":1754
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:             # <<<<<<<<<<<<<<
  *             text = (<unicode>text).encode('utf8')
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  */
+    __Pyx_TraceLine(1754,0,__PYX_ERR(2, 1754, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL) != 0);
     if (__pyx_t_1) {
     } else {
@@ -120427,29 +127949,31 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
     __pyx_L11_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1754
+      /* "src/lxml/parser.pxi":1755
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  *             text = (<unicode>text).encode('utf8')             # <<<<<<<<<<<<<<
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, "UTF-8")
  */
+      __Pyx_TraceLine(1755,0,__PYX_ERR(2, 1755, __pyx_L1_error))
       if (unlikely(__pyx_v_text == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
-        __PYX_ERR(2, 1754, __pyx_L1_error)
+        __PYX_ERR(2, 1755, __pyx_L1_error)
       }
-      __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_text)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1754, __pyx_L1_error)
+      __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_text)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1755, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/parser.pxi":1756
+      /* "src/lxml/parser.pxi":1757
  *             text = (<unicode>text).encode('utf8')
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, "UTF-8")             # <<<<<<<<<<<<<<
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
  *     else:
  */
+      __Pyx_TraceLine(1757,0,__PYX_ERR(2, 1757, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_4lxml_5etree_BytesIO);
       __pyx_t_4 = __pyx_v_4lxml_5etree_BytesIO; __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -120462,13 +127986,13 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1756, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1757, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1756, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1757, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
@@ -120476,38 +128000,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1756, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1757, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
         #endif
         {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1756, __pyx_L1_error)
+          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1757, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
           __Pyx_INCREF(__pyx_v_text);
           __Pyx_GIVEREF(__pyx_v_text);
           PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_text);
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1756, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1757, __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;
 
-      /* "src/lxml/parser.pxi":1755
+      /* "src/lxml/parser.pxi":1756
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:
  *             text = (<unicode>text).encode('utf8')
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 BytesIO(text), filename, "UTF-8")
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, __pyx_kp_s_UTF_8); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1755, __pyx_L1_error)
+      __Pyx_TraceLine(1756,0,__PYX_ERR(2, 1756, __pyx_L1_error))
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, __pyx_kp_s_UTF_8); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1756, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1753
+      /* "src/lxml/parser.pxi":1754
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 StringIO(text), filename, None)
  *         if _UNICODE_ENCODING is NULL and not is_pep393_string:             # <<<<<<<<<<<<<<
@@ -120516,18 +128041,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1757
+    /* "src/lxml/parser.pxi":1758
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, "UTF-8")
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)             # <<<<<<<<<<<<<<
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseUnicodeDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1757, __pyx_L1_error)
+    __Pyx_TraceLine(1758,0,__PYX_ERR(2, 1758, __pyx_L1_error))
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseUnicodeDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1758, __pyx_L1_error)
     __pyx_r = __pyx_t_7;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1742
+    /* "src/lxml/parser.pxi":1743
  *         filename_utf = _encodeFilenameUTF8(filename)
  *         c_filename = _cstr(filename_utf)
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -120536,33 +128062,36 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
   }
 
-  /* "src/lxml/parser.pxi":1759
+  /* "src/lxml/parser.pxi":1760
  *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)             # <<<<<<<<<<<<<<
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  */
+  __Pyx_TraceLine(1760,0,__PYX_ERR(2, 1760, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_len = PyBytes_GET_SIZE(__pyx_v_text);
 
-    /* "src/lxml/parser.pxi":1760
+    /* "src/lxml/parser.pxi":1761
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, None)
  */
+    __Pyx_TraceLine(1761,0,__PYX_ERR(2, 1761, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_len > INT_MAX) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/parser.pxi":1762
+      /* "src/lxml/parser.pxi":1763
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, None)             # <<<<<<<<<<<<<<
  *         c_text = _cstr(text)
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  */
+      __Pyx_TraceLine(1763,0,__PYX_ERR(2, 1763, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_4lxml_5etree_BytesIO);
       __pyx_t_4 = __pyx_v_4lxml_5etree_BytesIO; __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -120575,13 +128104,13 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1762, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1763, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1762, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1763, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
@@ -120589,38 +128118,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
           PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_text};
-          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1762, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1763, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else
         #endif
         {
-          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1762, __pyx_L1_error)
+          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1763, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_INCREF(__pyx_v_text);
           __Pyx_GIVEREF(__pyx_v_text);
           PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text);
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1762, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1763, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         }
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/parser.pxi":1761
+      /* "src/lxml/parser.pxi":1762
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:
  *             return (<_BaseParser>parser)._parseDocFromFilelike(             # <<<<<<<<<<<<<<
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1761, __pyx_L1_error)
+      __Pyx_TraceLine(1762,0,__PYX_ERR(2, 1762, __pyx_L1_error))
+      __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_3, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1762, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1760
+      /* "src/lxml/parser.pxi":1761
  *     else:
  *         c_len = python.PyBytes_GET_SIZE(text)
  *         if c_len > limits.INT_MAX:             # <<<<<<<<<<<<<<
@@ -120629,28 +128159,30 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1763
+    /* "src/lxml/parser.pxi":1764
  *             return (<_BaseParser>parser)._parseDocFromFilelike(
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)             # <<<<<<<<<<<<<<
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  * 
  */
+    __Pyx_TraceLine(1764,0,__PYX_ERR(2, 1764, __pyx_L1_error))
     __pyx_v_c_text = PyBytes_AS_STRING(__pyx_v_text);
 
-    /* "src/lxml/parser.pxi":1764
+    /* "src/lxml/parser.pxi":1765
  *                 BytesIO(text), filename, None)
  *         c_text = _cstr(text)
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  */
-    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1764, __pyx_L1_error)
+    __Pyx_TraceLine(1765,0,__PYX_ERR(2, 1765, __pyx_L1_error))
+    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1765, __pyx_L1_error)
     __pyx_r = __pyx_t_7;
     goto __pyx_L0;
   }
 
-  /* "src/lxml/parser.pxi":1730
+  /* "src/lxml/parser.pxi":1731
  * ############################################################
  * 
  * cdef xmlDoc* _parseDoc(text, filename, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -120670,11 +128202,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
   __Pyx_XDECREF(__pyx_v_filename_utf);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1766
+/* "src/lxml/parser.pxi":1767
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -120684,38 +128217,42 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *
 
 static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename8, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   xmlDoc *__pyx_t_4;
   __Pyx_RefNannySetupContext("_parseDocFromFile", 0);
+  __Pyx_TraceCall("_parseDocFromFile", __pyx_f[2], 1767, 0, __PYX_ERR(2, 1767, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1767
+  /* "src/lxml/parser.pxi":1768
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  */
+  __Pyx_TraceLine(1768,0,__PYX_ERR(2, 1768, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1768
+    /* "src/lxml/parser.pxi":1769
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1768, __pyx_L1_error)
+    __Pyx_TraceLine(1769,0,__PYX_ERR(2, 1769, __pyx_L1_error))
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1767
+    /* "src/lxml/parser.pxi":1768
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -120724,18 +128261,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
  */
   }
 
-  /* "src/lxml/parser.pxi":1769
+  /* "src/lxml/parser.pxi":1770
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFile(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), PyBytes_AS_STRING(__pyx_v_filename8)); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1769, __pyx_L1_error)
+  __Pyx_TraceLine(1770,0,__PYX_ERR(2, 1770, __pyx_L1_error))
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFile(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), PyBytes_AS_STRING(__pyx_v_filename8)); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1770, __pyx_L1_error)
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1766
+  /* "src/lxml/parser.pxi":1767
  *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
  * 
  * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
@@ -120750,11 +128288,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1771
+/* "src/lxml/parser.pxi":1772
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,             # <<<<<<<<<<<<<<
@@ -120764,38 +128303,42 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename
 
 static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_source, PyObject *__pyx_v_filename, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   xmlDoc *__pyx_t_4;
   __Pyx_RefNannySetupContext("_parseDocFromFilelike", 0);
+  __Pyx_TraceCall("_parseDocFromFilelike", __pyx_f[2], 1772, 0, __PYX_ERR(2, 1772, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "src/lxml/parser.pxi":1773
+  /* "src/lxml/parser.pxi":1774
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  */
+  __Pyx_TraceLine(1774,0,__PYX_ERR(2, 1774, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1774
+    /* "src/lxml/parser.pxi":1775
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1774, __pyx_L1_error)
+    __Pyx_TraceLine(1775,0,__PYX_ERR(2, 1775, __pyx_L1_error))
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1775, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1773
+    /* "src/lxml/parser.pxi":1774
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,
  *                                    _BaseParser parser) except NULL:
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -120804,18 +128347,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
  */
   }
 
-  /* "src/lxml/parser.pxi":1775
+  /* "src/lxml/parser.pxi":1776
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_source, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1775, __pyx_L1_error)
+  __Pyx_TraceLine(1776,0,__PYX_ERR(2, 1776, __pyx_L1_error))
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_source, __pyx_v_filename, Py_None); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1776, __pyx_L1_error)
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1771
+  /* "src/lxml/parser.pxi":1772
  *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
  * 
  * cdef xmlDoc* _parseDocFromFilelike(source, filename,             # <<<<<<<<<<<<<<
@@ -120830,11 +128374,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_parser);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1777
+/* "src/lxml/parser.pxi":1778
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -120845,39 +128390,44 @@ static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_sour
 static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   xmlDoc *__pyx_v_result;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_newXMLDoc", 0);
+  __Pyx_TraceCall("_newXMLDoc", __pyx_f[2], 1778, 0, __PYX_ERR(2, 1778, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1779
+  /* "src/lxml/parser.pxi":1780
  * cdef xmlDoc* _newXMLDoc() except NULL:
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)             # <<<<<<<<<<<<<<
  *     if result is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(1780,0,__PYX_ERR(2, 1780, __pyx_L1_error))
   __pyx_v_result = xmlNewDoc(NULL);
 
-  /* "src/lxml/parser.pxi":1780
+  /* "src/lxml/parser.pxi":1781
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
  *         raise MemoryError()
  *     if result.encoding is NULL:
  */
+  __Pyx_TraceLine(1781,0,__PYX_ERR(2, 1781, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":1781
+    /* "src/lxml/parser.pxi":1782
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 1781, __pyx_L1_error)
+    __Pyx_TraceLine(1782,0,__PYX_ERR(2, 1782, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 1782, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1780
+    /* "src/lxml/parser.pxi":1781
  *     cdef xmlDoc* result
  *     result = tree.xmlNewDoc(NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -120886,26 +128436,28 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1782
+  /* "src/lxml/parser.pxi":1783
  *     if result is NULL:
  *         raise MemoryError()
  *     if result.encoding is NULL:             # <<<<<<<<<<<<<<
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  */
+  __Pyx_TraceLine(1783,0,__PYX_ERR(2, 1783, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result->encoding == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1783
+    /* "src/lxml/parser.pxi":1784
  *         raise MemoryError()
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result
  */
+    __Pyx_TraceLine(1784,0,__PYX_ERR(2, 1784, __pyx_L1_error))
     __pyx_v_result->encoding = xmlStrdup(((unsigned char *)((unsigned char *)((char const *)"UTF-8"))));
 
-    /* "src/lxml/parser.pxi":1782
+    /* "src/lxml/parser.pxi":1783
  *     if result is NULL:
  *         raise MemoryError()
  *     if result.encoding is NULL:             # <<<<<<<<<<<<<<
@@ -120914,26 +128466,28 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1784
+  /* "src/lxml/parser.pxi":1785
  *     if result.encoding is NULL:
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
+  __Pyx_TraceLine(1785,0,__PYX_ERR(2, 1785, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1785
+  /* "src/lxml/parser.pxi":1786
  *         result.encoding = tree.xmlStrdup(<unsigned char*>"UTF-8")
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _newHTMLDoc() except NULL:
  */
+  __Pyx_TraceLine(1786,0,__PYX_ERR(2, 1786, __pyx_L1_error))
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1777
+  /* "src/lxml/parser.pxi":1778
  *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename, None)
  * 
  * cdef xmlDoc* _newXMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -120946,11 +128500,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
   __Pyx_AddTraceback("lxml.etree._newXMLDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1787
+/* "src/lxml/parser.pxi":1788
  *     return result
  * 
  * cdef xmlDoc* _newHTMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -120961,39 +128516,44 @@ static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
 static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   xmlDoc *__pyx_v_result;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_newHTMLDoc", 0);
+  __Pyx_TraceCall("_newHTMLDoc", __pyx_f[2], 1788, 0, __PYX_ERR(2, 1788, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1789
+  /* "src/lxml/parser.pxi":1790
  * cdef xmlDoc* _newHTMLDoc() except NULL:
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)             # <<<<<<<<<<<<<<
  *     if result is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(1790,0,__PYX_ERR(2, 1790, __pyx_L1_error))
   __pyx_v_result = htmlNewDoc(NULL, NULL);
 
-  /* "src/lxml/parser.pxi":1790
+  /* "src/lxml/parser.pxi":1791
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  */
+  __Pyx_TraceLine(1791,0,__PYX_ERR(2, 1791, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":1791
+    /* "src/lxml/parser.pxi":1792
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 1791, __pyx_L1_error)
+    __Pyx_TraceLine(1792,0,__PYX_ERR(2, 1792, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 1792, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1790
+    /* "src/lxml/parser.pxi":1791
  *     cdef xmlDoc* result
  *     result = tree.htmlNewDoc(NULL, NULL)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -121002,26 +128562,28 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
  */
   }
 
-  /* "src/lxml/parser.pxi":1792
+  /* "src/lxml/parser.pxi":1793
  *     if result is NULL:
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
+  __Pyx_TraceLine(1793,0,__PYX_ERR(2, 1793, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1793
+  /* "src/lxml/parser.pxi":1794
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
  */
+  __Pyx_TraceLine(1794,0,__PYX_ERR(2, 1794, __pyx_L1_error))
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1787
+  /* "src/lxml/parser.pxi":1788
  *     return result
  * 
  * cdef xmlDoc* _newHTMLDoc() except NULL:             # <<<<<<<<<<<<<<
@@ -121034,11 +128596,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
   __Pyx_AddTraceback("lxml.etree._newHTMLDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1795
+/* "src/lxml/parser.pxi":1796
  *     return result
  * 
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:             # <<<<<<<<<<<<<<
@@ -121049,27 +128612,31 @@ static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
 static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_recursive) {
   xmlDoc *__pyx_v_result;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_copyDoc", 0);
+  __Pyx_TraceCall("_copyDoc", __pyx_f[2], 1796, 0, __PYX_ERR(2, 1796, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1797
+  /* "src/lxml/parser.pxi":1798
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
  *     cdef xmlDoc* result
  *     if recursive:             # <<<<<<<<<<<<<<
  *         with nogil:
  *             result = tree.xmlCopyDoc(c_doc, recursive)
  */
+  __Pyx_TraceLine(1798,0,__PYX_ERR(2, 1798, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_recursive != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1798
+    /* "src/lxml/parser.pxi":1799
  *     cdef xmlDoc* result
  *     if recursive:
  *         with nogil:             # <<<<<<<<<<<<<<
  *             result = tree.xmlCopyDoc(c_doc, recursive)
  *     else:
  */
+    __Pyx_TraceLine(1799,0,__PYX_ERR(2, 1799, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -121078,23 +128645,25 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
         #endif
         /*try:*/ {
 
-          /* "src/lxml/parser.pxi":1799
+          /* "src/lxml/parser.pxi":1800
  *     if recursive:
  *         with nogil:
  *             result = tree.xmlCopyDoc(c_doc, recursive)             # <<<<<<<<<<<<<<
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)
  */
+          __Pyx_TraceLine(1800,1,__PYX_ERR(2, 1800, __pyx_L5_error))
           __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, __pyx_v_recursive);
         }
 
-        /* "src/lxml/parser.pxi":1798
+        /* "src/lxml/parser.pxi":1799
  *     cdef xmlDoc* result
  *     if recursive:
  *         with nogil:             # <<<<<<<<<<<<<<
  *             result = tree.xmlCopyDoc(c_doc, recursive)
  *     else:
  */
+        __Pyx_TraceLine(1799,1,__PYX_ERR(2, 1799, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -121103,11 +128672,18 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
             #endif
             goto __pyx_L6;
           }
+          __pyx_L5_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L6:;
         }
     }
 
-    /* "src/lxml/parser.pxi":1797
+    /* "src/lxml/parser.pxi":1798
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
  *     cdef xmlDoc* result
  *     if recursive:             # <<<<<<<<<<<<<<
@@ -121117,38 +128693,41 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1801
+  /* "src/lxml/parser.pxi":1802
  *             result = tree.xmlCopyDoc(c_doc, recursive)
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)             # <<<<<<<<<<<<<<
  *     if result is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(1802,0,__PYX_ERR(2, 1802, __pyx_L1_error))
   /*else*/ {
     __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, 0);
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1802
+  /* "src/lxml/parser.pxi":1803
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:             # <<<<<<<<<<<<<<
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  */
+  __Pyx_TraceLine(1803,0,__PYX_ERR(2, 1803, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":1803
+    /* "src/lxml/parser.pxi":1804
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 1803, __pyx_L1_error)
+    __Pyx_TraceLine(1804,0,__PYX_ERR(2, 1804, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 1804, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1802
+    /* "src/lxml/parser.pxi":1803
  *     else:
  *         result = tree.xmlCopyDoc(c_doc, 0)
  *     if result is NULL:             # <<<<<<<<<<<<<<
@@ -121157,26 +128736,28 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
  */
   }
 
-  /* "src/lxml/parser.pxi":1804
+  /* "src/lxml/parser.pxi":1805
  *     if result is NULL:
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
+  __Pyx_TraceLine(1805,0,__PYX_ERR(2, 1805, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1805
+  /* "src/lxml/parser.pxi":1806
  *         raise MemoryError()
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     return result             # <<<<<<<<<<<<<<
  * 
  * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:
  */
+  __Pyx_TraceLine(1806,0,__PYX_ERR(2, 1806, __pyx_L1_error))
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1795
+  /* "src/lxml/parser.pxi":1796
  *     return result
  * 
  * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:             # <<<<<<<<<<<<<<
@@ -121189,11 +128770,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_
   __Pyx_AddTraceback("lxml.etree._copyDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1807
+/* "src/lxml/parser.pxi":1808
  *     return result
  * 
  * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:             # <<<<<<<<<<<<<<
@@ -121205,36 +128787,41 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   xmlDoc *__pyx_v_result;
   xmlNode *__pyx_v_c_node;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_copyDocRoot", 0);
+  __Pyx_TraceCall("_copyDocRoot", __pyx_f[2], 1808, 0, __PYX_ERR(2, 1808, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1811
+  /* "src/lxml/parser.pxi":1812
  *     cdef xmlDoc* result
  *     cdef xmlNode* c_node
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive             # <<<<<<<<<<<<<<
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:
  */
+  __Pyx_TraceLine(1812,0,__PYX_ERR(2, 1812, __pyx_L1_error))
   __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, 0);
 
-  /* "src/lxml/parser.pxi":1812
+  /* "src/lxml/parser.pxi":1813
  *     cdef xmlNode* c_node
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  */
+  __Pyx_TraceLine(1813,0,__PYX_ERR(2, 1813, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
 
-  /* "src/lxml/parser.pxi":1813
+  /* "src/lxml/parser.pxi":1814
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:             # <<<<<<<<<<<<<<
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:
  */
+  __Pyx_TraceLine(1814,0,__PYX_ERR(2, 1814, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -121243,23 +128830,25 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
       #endif
       /*try:*/ {
 
-        /* "src/lxml/parser.pxi":1814
+        /* "src/lxml/parser.pxi":1815
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive             # <<<<<<<<<<<<<<
  *     if c_node is NULL:
  *         raise MemoryError()
  */
+        __Pyx_TraceLine(1815,1,__PYX_ERR(2, 1815, __pyx_L4_error))
         __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_new_root, __pyx_v_result, 1);
       }
 
-      /* "src/lxml/parser.pxi":1813
+      /* "src/lxml/parser.pxi":1814
  *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
  *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
  *     with nogil:             # <<<<<<<<<<<<<<
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:
  */
+      __Pyx_TraceLine(1814,1,__PYX_ERR(2, 1814, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -121268,30 +128857,39 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
           #endif
           goto __pyx_L5;
         }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L5:;
       }
   }
 
-  /* "src/lxml/parser.pxi":1815
+  /* "src/lxml/parser.pxi":1816
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(result, c_node)
  */
+  __Pyx_TraceLine(1816,0,__PYX_ERR(2, 1816, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":1816
+    /* "src/lxml/parser.pxi":1817
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 1816, __pyx_L1_error)
+    __Pyx_TraceLine(1817,0,__PYX_ERR(2, 1817, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 1817, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1815
+    /* "src/lxml/parser.pxi":1816
  *     with nogil:
  *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -121300,35 +128898,38 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
  */
   }
 
-  /* "src/lxml/parser.pxi":1817
+  /* "src/lxml/parser.pxi":1818
  *     if c_node is NULL:
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(result, c_node)             # <<<<<<<<<<<<<<
  *     _copyTail(c_new_root.next, c_node)
  *     return result
  */
+  __Pyx_TraceLine(1818,0,__PYX_ERR(2, 1818, __pyx_L1_error))
   (void)(xmlDocSetRootElement(__pyx_v_result, __pyx_v_c_node));
 
-  /* "src/lxml/parser.pxi":1818
+  /* "src/lxml/parser.pxi":1819
  *         raise MemoryError()
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_new_root->next, __pyx_v_c_node); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1818, __pyx_L1_error)
+  __Pyx_TraceLine(1819,0,__PYX_ERR(2, 1819, __pyx_L1_error))
+  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_new_root->next, __pyx_v_c_node); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1819, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1819
+  /* "src/lxml/parser.pxi":1820
  *     tree.xmlDocSetRootElement(result, c_node)
  *     _copyTail(c_new_root.next, c_node)
  *     return result             # <<<<<<<<<<<<<<
  * 
  * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:
  */
+  __Pyx_TraceLine(1820,0,__PYX_ERR(2, 1820, __pyx_L1_error))
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1807
+  /* "src/lxml/parser.pxi":1808
  *     return result
  * 
  * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:             # <<<<<<<<<<<<<<
@@ -121341,11 +128942,12 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
   __Pyx_AddTraceback("lxml.etree._copyDocRoot", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1821
+/* "src/lxml/parser.pxi":1822
  *     return result
  * 
  * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:             # <<<<<<<<<<<<<<
@@ -121356,40 +128958,45 @@ static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode
 static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xmlDoc *__pyx_v_c_doc) {
   xmlNode *__pyx_v_c_root;
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_copyNodeToDoc", 0);
+  __Pyx_TraceCall("_copyNodeToDoc", __pyx_f[2], 1822, 0, __PYX_ERR(2, 1822, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1824
+  /* "src/lxml/parser.pxi":1825
  *     u"Recursively copy the element into the document. c_doc is not modified."
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive             # <<<<<<<<<<<<<<
  *     if c_root is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(1825,0,__PYX_ERR(2, 1825, __pyx_L1_error))
   __pyx_v_c_root = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_c_doc, 1);
 
-  /* "src/lxml/parser.pxi":1825
+  /* "src/lxml/parser.pxi":1826
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:             # <<<<<<<<<<<<<<
  *         raise MemoryError()
  *     _copyTail(c_node.next, c_root)
  */
+  __Pyx_TraceLine(1826,0,__PYX_ERR(2, 1826, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_root == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/parser.pxi":1826
+    /* "src/lxml/parser.pxi":1827
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:
  *         raise MemoryError()             # <<<<<<<<<<<<<<
  *     _copyTail(c_node.next, c_root)
  *     return c_root
  */
-    PyErr_NoMemory(); __PYX_ERR(2, 1826, __pyx_L1_error)
+    __Pyx_TraceLine(1827,0,__PYX_ERR(2, 1827, __pyx_L1_error))
+    PyErr_NoMemory(); __PYX_ERR(2, 1827, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1825
+    /* "src/lxml/parser.pxi":1826
  *     cdef xmlNode* c_root
  *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
  *     if c_root is NULL:             # <<<<<<<<<<<<<<
@@ -121398,26 +129005,28 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
  */
   }
 
-  /* "src/lxml/parser.pxi":1827
+  /* "src/lxml/parser.pxi":1828
  *     if c_root is NULL:
  *         raise MemoryError()
  *     _copyTail(c_node.next, c_root)             # <<<<<<<<<<<<<<
  *     return c_root
  * 
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_node->next, __pyx_v_c_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_TraceLine(1828,0,__PYX_ERR(2, 1828, __pyx_L1_error))
+  __pyx_t_2 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_node->next, __pyx_v_c_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1828, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1828
+  /* "src/lxml/parser.pxi":1829
  *         raise MemoryError()
  *     _copyTail(c_node.next, c_root)
  *     return c_root             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(1829,0,__PYX_ERR(2, 1829, __pyx_L1_error))
   __pyx_r = __pyx_v_c_root;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1821
+  /* "src/lxml/parser.pxi":1822
  *     return result
  * 
  * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:             # <<<<<<<<<<<<<<
@@ -121430,11 +129039,12 @@ static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xml
   __Pyx_AddTraceback("lxml.etree._copyNodeToDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1835
+/* "src/lxml/parser.pxi":1836
  * ############################################################
  * 
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):             # <<<<<<<<<<<<<<
@@ -121446,6 +129056,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_v_url = NULL;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -121457,76 +129068,83 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   Py_UCS4 __pyx_t_8;
   const char *__pyx_t_9;
   __Pyx_RefNannySetupContext("_parseDocument", 0);
+  __Pyx_TraceCall("_parseDocument", __pyx_f[2], 1836, 0, __PYX_ERR(2, 1836, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_base_url);
 
-  /* "src/lxml/parser.pxi":1837
+  /* "src/lxml/parser.pxi":1838
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):
  *     cdef _Document doc
  *     if _isString(source):             # <<<<<<<<<<<<<<
  *         # parse the file directly from the filesystem
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
  */
+  __Pyx_TraceLine(1838,0,__PYX_ERR(2, 1838, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_source) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1839
+    /* "src/lxml/parser.pxi":1840
  *     if _isString(source):
  *         # parse the file directly from the filesystem
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)             # <<<<<<<<<<<<<<
  *         # fix base URL if requested
  *         if base_url is not None:
  */
-    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1839, __pyx_L1_error)
+    __Pyx_TraceLine(1840,0,__PYX_ERR(2, 1840, __pyx_L1_error))
+    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_t_2, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1839, __pyx_L1_error)
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_t_2, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/parser.pxi":1841
+    /* "src/lxml/parser.pxi":1842
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
  *         # fix base URL if requested
  *         if base_url is not None:             # <<<<<<<<<<<<<<
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:
  */
+    __Pyx_TraceLine(1842,0,__PYX_ERR(2, 1842, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_base_url != Py_None);
     __pyx_t_4 = (__pyx_t_1 != 0);
     if (__pyx_t_4) {
 
-      /* "src/lxml/parser.pxi":1842
+      /* "src/lxml/parser.pxi":1843
  *         # fix base URL if requested
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)             # <<<<<<<<<<<<<<
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  */
-      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1842, __pyx_L1_error)
+      __Pyx_TraceLine(1843,0,__PYX_ERR(2, 1843, __pyx_L1_error))
+      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1843, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_base_url, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/parser.pxi":1843
+      /* "src/lxml/parser.pxi":1844
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))
  */
+      __Pyx_TraceLine(1844,0,__PYX_ERR(2, 1844, __pyx_L1_error))
       __pyx_t_4 = ((__pyx_v_doc->_c_doc->URL != NULL) != 0);
       if (__pyx_t_4) {
 
-        /* "src/lxml/parser.pxi":1844
+        /* "src/lxml/parser.pxi":1845
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)             # <<<<<<<<<<<<<<
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))
  *         return doc
  */
+        __Pyx_TraceLine(1845,0,__PYX_ERR(2, 1845, __pyx_L1_error))
         xmlFree(((char *)__pyx_v_doc->_c_doc->URL));
 
-        /* "src/lxml/parser.pxi":1843
+        /* "src/lxml/parser.pxi":1844
  *         if base_url is not None:
  *             base_url = _encodeFilenameUTF8(base_url)
  *             if doc._c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
@@ -121535,16 +129153,17 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
       }
 
-      /* "src/lxml/parser.pxi":1845
+      /* "src/lxml/parser.pxi":1846
  *             if doc._c_doc.URL is not NULL:
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))             # <<<<<<<<<<<<<<
  *         return doc
  * 
  */
+      __Pyx_TraceLine(1846,0,__PYX_ERR(2, 1846, __pyx_L1_error))
       __pyx_v_doc->_c_doc->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_base_url));
 
-      /* "src/lxml/parser.pxi":1841
+      /* "src/lxml/parser.pxi":1842
  *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
  *         # fix base URL if requested
  *         if base_url is not None:             # <<<<<<<<<<<<<<
@@ -121553,19 +129172,20 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
     }
 
-    /* "src/lxml/parser.pxi":1846
+    /* "src/lxml/parser.pxi":1847
  *                 tree.xmlFree(<char*>doc._c_doc.URL)
  *             doc._c_doc.URL = tree.xmlStrdup(_xcstr(base_url))
  *         return doc             # <<<<<<<<<<<<<<
  * 
  *     if base_url is not None:
  */
+    __Pyx_TraceLine(1847,0,__PYX_ERR(2, 1847, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __Pyx_INCREF(((PyObject *)__pyx_v_doc));
     __pyx_r = __pyx_v_doc;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1837
+    /* "src/lxml/parser.pxi":1838
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):
  *     cdef _Document doc
  *     if _isString(source):             # <<<<<<<<<<<<<<
@@ -121574,28 +129194,30 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1848
+  /* "src/lxml/parser.pxi":1849
  *         return doc
  * 
  *     if base_url is not None:             # <<<<<<<<<<<<<<
  *         url = base_url
  *     else:
  */
+  __Pyx_TraceLine(1849,0,__PYX_ERR(2, 1849, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_base_url != Py_None);
   __pyx_t_1 = (__pyx_t_4 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1849
+    /* "src/lxml/parser.pxi":1850
  * 
  *     if base_url is not None:
  *         url = base_url             # <<<<<<<<<<<<<<
  *     else:
  *         url = _getFilenameForFile(source)
  */
+    __Pyx_TraceLine(1850,0,__PYX_ERR(2, 1850, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_base_url);
     __pyx_v_url = __pyx_v_base_url;
 
-    /* "src/lxml/parser.pxi":1848
+    /* "src/lxml/parser.pxi":1849
  *         return doc
  * 
  *     if base_url is not None:             # <<<<<<<<<<<<<<
@@ -121605,49 +129227,52 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
     goto __pyx_L6;
   }
 
-  /* "src/lxml/parser.pxi":1851
+  /* "src/lxml/parser.pxi":1852
  *         url = base_url
  *     else:
  *         url = _getFilenameForFile(source)             # <<<<<<<<<<<<<<
  * 
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  */
+  __Pyx_TraceLine(1852,0,__PYX_ERR(2, 1852, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1851, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1852, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_url = __pyx_t_3;
     __pyx_t_3 = 0;
   }
   __pyx_L6:;
 
-  /* "src/lxml/parser.pxi":1853
+  /* "src/lxml/parser.pxi":1854
  *         url = _getFilenameForFile(source)
  * 
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):             # <<<<<<<<<<<<<<
  *         # StringIO - reading from start?
  *         if source.tell() == 0:
  */
-  __pyx_t_4 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_getvalue); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1853, __pyx_L1_error)
+  __Pyx_TraceLine(1854,0,__PYX_ERR(2, 1854, __pyx_L1_error))
+  __pyx_t_4 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_getvalue); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1854, __pyx_L1_error)
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
   } else {
     __pyx_t_1 = __pyx_t_5;
     goto __pyx_L8_bool_binop_done;
   }
-  __pyx_t_5 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_tell); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 1853, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_tell); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 1854, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_5 != 0);
   __pyx_t_1 = __pyx_t_4;
   __pyx_L8_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parser.pxi":1855
+    /* "src/lxml/parser.pxi":1856
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  *         # StringIO - reading from start?
  *         if source.tell() == 0:             # <<<<<<<<<<<<<<
  *             return _parseMemoryDocument(source.getvalue(), url, parser)
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_tell); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1855, __pyx_L1_error)
+    __Pyx_TraceLine(1856,0,__PYX_ERR(2, 1856, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_tell); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1856, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -121660,29 +129285,30 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1855, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1856, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1855, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1856, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1855, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1856, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1855, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 1856, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_1) {
 
-      /* "src/lxml/parser.pxi":1856
+      /* "src/lxml/parser.pxi":1857
  *         # StringIO - reading from start?
  *         if source.tell() == 0:
  *             return _parseMemoryDocument(source.getvalue(), url, parser)             # <<<<<<<<<<<<<<
  * 
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  */
+      __Pyx_TraceLine(1857,0,__PYX_ERR(2, 1857, __pyx_L1_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1856, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1857, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -121695,21 +129321,21 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1856, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1857, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1856, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1857, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_t_2, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1856, __pyx_L1_error)
+      __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_t_2, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1857, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
       __pyx_t_3 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/parser.pxi":1855
+      /* "src/lxml/parser.pxi":1856
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
  *         # StringIO - reading from start?
  *         if source.tell() == 0:             # <<<<<<<<<<<<<<
@@ -121718,7 +129344,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
     }
 
-    /* "src/lxml/parser.pxi":1853
+    /* "src/lxml/parser.pxi":1854
  *         url = _getFilenameForFile(source)
  * 
  *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):             # <<<<<<<<<<<<<<
@@ -121727,32 +129353,34 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1859
+  /* "src/lxml/parser.pxi":1860
  * 
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):             # <<<<<<<<<<<<<<
  *         return _parseFilelikeDocument(source, url, parser)
  * 
  */
-  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_read); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1859, __pyx_L1_error)
+  __Pyx_TraceLine(1860,0,__PYX_ERR(2, 1860, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_u_read); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1860, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "src/lxml/parser.pxi":1860
+    /* "src/lxml/parser.pxi":1861
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):
  *         return _parseFilelikeDocument(source, url, parser)             # <<<<<<<<<<<<<<
  * 
  *     raise TypeError, f"cannot parse from '{python._fqtypename(source).decode('UTF-8')}'"
  */
+    __Pyx_TraceLine(1861,0,__PYX_ERR(2, 1861, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseFilelikeDocument(__pyx_v_source, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1860, __pyx_L1_error)
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseFilelikeDocument(__pyx_v_source, __pyx_v_url, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1861, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/parser.pxi":1859
+    /* "src/lxml/parser.pxi":1860
  * 
  *     # Support for file-like objects (urlgrabber.urlopen, ...)
  *     if hasattr(source, u'read'):             # <<<<<<<<<<<<<<
@@ -121761,14 +129389,15 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
  */
   }
 
-  /* "src/lxml/parser.pxi":1862
+  /* "src/lxml/parser.pxi":1863
  *         return _parseFilelikeDocument(source, url, parser)
  * 
  *     raise TypeError, f"cannot parse from '{python._fqtypename(source).decode('UTF-8')}'"             # <<<<<<<<<<<<<<
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  */
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1862, __pyx_L1_error)
+  __Pyx_TraceLine(1863,0,__PYX_ERR(2, 1863, __pyx_L1_error))
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_7 = 0;
   __pyx_t_8 = 127;
@@ -121777,7 +129406,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __Pyx_GIVEREF(__pyx_kp_u_cannot_parse_from);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_cannot_parse_from);
   __pyx_t_9 = _fqtypename(__pyx_v_source);
-  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1862, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8;
@@ -121785,18 +129414,18 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_INCREF(__pyx_kp_u__31);
+  __Pyx_INCREF(__pyx_kp_u__60);
   __pyx_t_7 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__31);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__31);
-  __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1862, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_kp_u__60);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__60);
+  __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_2, 0, 0);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __PYX_ERR(2, 1862, __pyx_L1_error)
+  __PYX_ERR(2, 1863, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1835
+  /* "src/lxml/parser.pxi":1836
  * ############################################################
  * 
  * cdef _Document _parseDocument(source, _BaseParser parser, base_url):             # <<<<<<<<<<<<<<
@@ -121816,11 +129445,12 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
   __Pyx_XDECREF(__pyx_v_url);
   __Pyx_XDECREF(__pyx_v_base_url);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1864
+/* "src/lxml/parser.pxi":1865
  *     raise TypeError, f"cannot parse from '{python._fqtypename(source).decode('UTF-8')}'"
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -121831,36 +129461,40 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_
 static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   xmlDoc *__pyx_v_c_doc;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_parseDocumentFromURL", 0);
+  __Pyx_TraceCall("_parseDocumentFromURL", __pyx_f[2], 1865, 0, __PYX_ERR(2, 1865, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1865
+  /* "src/lxml/parser.pxi":1866
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  *     c_doc = _parseDocFromFile(url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1865, __pyx_L1_error)
+  __Pyx_TraceLine(1866,0,__PYX_ERR(2, 1866, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1866, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1866
+  /* "src/lxml/parser.pxi":1867
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
  *     c_doc = _parseDocFromFile(url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  */
+  __Pyx_TraceLine(1867,0,__PYX_ERR(2, 1867, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1866, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1864
+  /* "src/lxml/parser.pxi":1865
  *     raise TypeError, f"cannot parse from '{python._fqtypename(source).decode('UTF-8')}'"
  * 
  * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -121875,11 +129509,12 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1868
+/* "src/lxml/parser.pxi":1869
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -121890,49 +129525,54 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject
 static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *__pyx_v_text, PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   xmlDoc *__pyx_v_c_doc;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   xmlDoc *__pyx_t_4;
   __Pyx_RefNannySetupContext("_parseMemoryDocument", 0);
+  __Pyx_TraceCall("_parseMemoryDocument", __pyx_f[2], 1869, 0, __PYX_ERR(2, 1869, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1869
+  /* "src/lxml/parser.pxi":1870
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
  *         if _hasEncodingDeclaration(text):
  *             raise ValueError(
  */
+  __Pyx_TraceLine(1870,0,__PYX_ERR(2, 1870, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_text); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/parser.pxi":1870
+    /* "src/lxml/parser.pxi":1871
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):             # <<<<<<<<<<<<<<
  *             raise ValueError(
  *                 u"Unicode strings with encoding declaration are not supported. "
  */
-    __pyx_t_2 = __pyx_f_4lxml_5etree__hasEncodingDeclaration(__pyx_v_text); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1870, __pyx_L1_error)
+    __Pyx_TraceLine(1871,0,__PYX_ERR(2, 1871, __pyx_L1_error))
+    __pyx_t_2 = __pyx_f_4lxml_5etree__hasEncodingDeclaration(__pyx_v_text); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 1871, __pyx_L1_error)
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "src/lxml/parser.pxi":1871
+      /* "src/lxml/parser.pxi":1872
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):
  *             raise ValueError(             # <<<<<<<<<<<<<<
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1871, __pyx_L1_error)
+      __Pyx_TraceLine(1872,0,__PYX_ERR(2, 1872, __pyx_L1_error))
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__247, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1872, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(2, 1871, __pyx_L1_error)
+      __PYX_ERR(2, 1872, __pyx_L1_error)
 
-      /* "src/lxml/parser.pxi":1870
+      /* "src/lxml/parser.pxi":1871
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):             # <<<<<<<<<<<<<<
@@ -121941,7 +129581,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
  */
     }
 
-    /* "src/lxml/parser.pxi":1869
+    /* "src/lxml/parser.pxi":1870
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
  *     if isinstance(text, unicode):             # <<<<<<<<<<<<<<
@@ -121951,28 +129591,30 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
     goto __pyx_L3;
   }
 
-  /* "src/lxml/parser.pxi":1874
+  /* "src/lxml/parser.pxi":1875
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):             # <<<<<<<<<<<<<<
  *         raise ValueError, u"can only parse strings"
  *     c_doc = _parseDoc(text, url, parser)
  */
+  __Pyx_TraceLine(1875,0,__PYX_ERR(2, 1875, __pyx_L1_error))
   __pyx_t_1 = PyBytes_Check(__pyx_v_text); 
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "src/lxml/parser.pxi":1875
+    /* "src/lxml/parser.pxi":1876
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):
  *         raise ValueError, u"can only parse strings"             # <<<<<<<<<<<<<<
  *     c_doc = _parseDoc(text, url, parser)
  *     return _documentFactory(c_doc, parser)
  */
+    __Pyx_TraceLine(1876,0,__PYX_ERR(2, 1876, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_can_only_parse_strings, 0, 0);
-    __PYX_ERR(2, 1875, __pyx_L1_error)
+    __PYX_ERR(2, 1876, __pyx_L1_error)
 
-    /* "src/lxml/parser.pxi":1874
+    /* "src/lxml/parser.pxi":1875
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  *     elif not isinstance(text, bytes):             # <<<<<<<<<<<<<<
@@ -121982,31 +129624,33 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   }
   __pyx_L3:;
 
-  /* "src/lxml/parser.pxi":1876
+  /* "src/lxml/parser.pxi":1877
  *     elif not isinstance(text, bytes):
  *         raise ValueError, u"can only parse strings"
  *     c_doc = _parseDoc(text, url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  * 
  */
-  __pyx_t_4 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_text, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1876, __pyx_L1_error)
+  __Pyx_TraceLine(1877,0,__PYX_ERR(2, 1877, __pyx_L1_error))
+  __pyx_t_4 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_text, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1877, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_4;
 
-  /* "src/lxml/parser.pxi":1877
+  /* "src/lxml/parser.pxi":1878
  *         raise ValueError, u"can only parse strings"
  *     c_doc = _parseDoc(text, url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  */
+  __Pyx_TraceLine(1878,0,__PYX_ERR(2, 1878, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1877, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1868
+  /* "src/lxml/parser.pxi":1869
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -122021,11 +129665,12 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":1879
+/* "src/lxml/parser.pxi":1880
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -122036,33 +129681,37 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *
 static struct LxmlDocument *__pyx_f_4lxml_5etree__parseFilelikeDocument(PyObject *__pyx_v_source, PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   xmlDoc *__pyx_v_c_doc;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_parseFilelikeDocument", 0);
+  __Pyx_TraceCall("_parseFilelikeDocument", __pyx_f[2], 1880, 0, __PYX_ERR(2, 1880, __pyx_L1_error));
 
-  /* "src/lxml/parser.pxi":1880
+  /* "src/lxml/parser.pxi":1881
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  *     c_doc = _parseDocFromFilelike(source, url, parser)             # <<<<<<<<<<<<<<
  *     return _documentFactory(c_doc, parser)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_source, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1880, __pyx_L1_error)
+  __Pyx_TraceLine(1881,0,__PYX_ERR(2, 1881, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_source, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(2, 1881, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_1;
 
-  /* "src/lxml/parser.pxi":1881
+  /* "src/lxml/parser.pxi":1882
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
  *     c_doc = _parseDocFromFilelike(source, url, parser)
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(1882,0,__PYX_ERR(2, 1882, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1881, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1882, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1879
+  /* "src/lxml/parser.pxi":1880
  *     return _documentFactory(c_doc, parser)
  * 
  * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -122077,6 +129726,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__parseFilelikeDocument(PyObject
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122093,6 +129743,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
   int __pyx_v_event_filter;
   PyObject *__pyx_v_event = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -122103,6 +129754,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
   Py_UCS4 __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_buildParseEventFilter", 0);
+  __Pyx_TraceCall("_buildParseEventFilter", __pyx_f[11], 20, 0, __PYX_ERR(11, 20, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":22
  * cdef int _buildParseEventFilter(events) except -1:
@@ -122111,6 +129763,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *     for event in events:
  *         if event == 'start':
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(11, 22, __pyx_L1_error))
   __pyx_v_event_filter = 0;
 
   /* "src/lxml/saxparser.pxi":23
@@ -122120,6 +129773,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         if event == 'start':
  *             event_filter |= PARSE_EVENT_FILTER_START
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(11, 23, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_events)) || PyTuple_CheckExact(__pyx_v_events)) {
     __pyx_t_1 = __pyx_v_events; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -122169,6 +129823,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_START
  *         elif event == 'end':
  */
+    __Pyx_TraceLine(24,0,__PYX_ERR(11, 24, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_start, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 24, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -122179,6 +129834,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         elif event == 'end':
  *             event_filter |= PARSE_EVENT_FILTER_END
  */
+      __Pyx_TraceLine(25,0,__PYX_ERR(11, 25, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START);
 
       /* "src/lxml/saxparser.pxi":24
@@ -122198,6 +129854,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_END
  *         elif event == 'start-ns':
  */
+    __Pyx_TraceLine(26,0,__PYX_ERR(11, 26, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_end, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 26, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -122208,6 +129865,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         elif event == 'start-ns':
  *             event_filter |= PARSE_EVENT_FILTER_START_NS
  */
+      __Pyx_TraceLine(27,0,__PYX_ERR(11, 27, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END);
 
       /* "src/lxml/saxparser.pxi":26
@@ -122227,6 +129885,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_START_NS
  *         elif event == 'end-ns':
  */
+    __Pyx_TraceLine(28,0,__PYX_ERR(11, 28, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_kp_s_start_ns, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 28, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -122237,6 +129896,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         elif event == 'end-ns':
  *             event_filter |= PARSE_EVENT_FILTER_END_NS
  */
+      __Pyx_TraceLine(29,0,__PYX_ERR(11, 29, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS);
 
       /* "src/lxml/saxparser.pxi":28
@@ -122256,6 +129916,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_END_NS
  *         elif event == 'comment':
  */
+    __Pyx_TraceLine(30,0,__PYX_ERR(11, 30, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_kp_s_end_ns, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 30, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -122266,6 +129927,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         elif event == 'comment':
  *             event_filter |= PARSE_EVENT_FILTER_COMMENT
  */
+      __Pyx_TraceLine(31,0,__PYX_ERR(11, 31, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS);
 
       /* "src/lxml/saxparser.pxi":30
@@ -122285,6 +129947,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_COMMENT
  *         elif event == 'pi':
  */
+    __Pyx_TraceLine(32,0,__PYX_ERR(11, 32, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_comment, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 32, __pyx_L1_error)
     if (__pyx_t_5) {
 
@@ -122295,6 +129958,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         elif event == 'pi':
  *             event_filter |= PARSE_EVENT_FILTER_PI
  */
+      __Pyx_TraceLine(33,0,__PYX_ERR(11, 33, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_COMMENT);
 
       /* "src/lxml/saxparser.pxi":32
@@ -122314,6 +129978,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *             event_filter |= PARSE_EVENT_FILTER_PI
  *         else:
  */
+    __Pyx_TraceLine(34,0,__PYX_ERR(11, 34, __pyx_L1_error))
     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_pi, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(11, 34, __pyx_L1_error)
     if (likely(__pyx_t_5)) {
 
@@ -122324,6 +129989,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         else:
  *             raise ValueError, f"invalid event name '{event}'"
  */
+      __Pyx_TraceLine(35,0,__PYX_ERR(11, 35, __pyx_L1_error))
       __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_PI);
 
       /* "src/lxml/saxparser.pxi":34
@@ -122343,6 +130009,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *     return event_filter
  * 
  */
+    __Pyx_TraceLine(37,0,__PYX_ERR(11, 37, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 37, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -122359,10 +130026,10 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
       __Pyx_GIVEREF(__pyx_t_8);
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
       __pyx_t_8 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
+      __Pyx_INCREF(__pyx_kp_u__60);
       __pyx_t_6 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__31);
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__60);
       __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 37, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -122379,6 +130046,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  *         if event == 'start':
  *             event_filter |= PARSE_EVENT_FILTER_START
  */
+    __Pyx_TraceLine(23,0,__PYX_ERR(11, 23, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -122389,6 +130057,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
  * 
  * 
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(11, 38, __pyx_L1_error))
   __pyx_r = __pyx_v_event_filter;
   goto __pyx_L0;
 
@@ -122409,6 +130078,7 @@ static int __pyx_f_4lxml_5etree__buildParseEventFilter(PyObject *__pyx_v_events)
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_event);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122439,8 +130109,10 @@ static int __pyx_pw_4lxml_5etree_16_SaxParserTarget_1__cinit__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[11], 43, 0, __PYX_ERR(11, 43, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":44
  *     cdef int _sax_event_filter
@@ -122449,6 +130121,7 @@ static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(struct __pyx_obj_4
  * 
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(11, 44, __pyx_L1_error))
   __pyx_v_self->_sax_event_filter = 0;
 
   /* "src/lxml/saxparser.pxi":43
@@ -122461,6 +130134,12 @@ static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(struct __pyx_obj_4
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122475,8 +130154,10 @@ static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(struct __pyx_obj_4
 
 static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_tag, CYTHON_UNUSED PyObject *__pyx_v_attrib, CYTHON_UNUSED PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxStart", 0);
+  __Pyx_TraceCall("_handleSaxStart", __pyx_f[11], 46, 0, __PYX_ERR(11, 46, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":47
  * 
@@ -122485,6 +130166,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart(CYTHON_
  *     cdef _handleSaxEnd(self, tag):
  *         return None
  */
+  __Pyx_TraceLine(47,0,__PYX_ERR(11, 47, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -122498,8 +130180,12 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart(CYTHON_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxStart", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122514,8 +130200,10 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart(CYTHON_
 
 static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxEnd", 0);
+  __Pyx_TraceCall("_handleSaxEnd", __pyx_f[11], 48, 0, __PYX_ERR(11, 48, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":49
  *         return None
@@ -122524,6 +130212,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd(CYTHON_UN
  *     cdef int _handleSaxData(self, data) except -1:
  *         return 0
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(11, 49, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -122537,8 +130226,12 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd(CYTHON_UN
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxEnd", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122553,8 +130246,10 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd(CYTHON_UN
 
 static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_data) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxData", 0);
+  __Pyx_TraceCall("_handleSaxData", __pyx_f[11], 50, 0, __PYX_ERR(11, 50, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":51
  *         return None
@@ -122563,6 +130258,7 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData(CYTHON_UNUSED
  *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
  *         return 0
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(11, 51, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -122575,7 +130271,11 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData(CYTHON_UNUSED
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxData", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122590,8 +130290,10 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData(CYTHON_UNUSED
 
 static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_root_tag, CYTHON_UNUSED PyObject *__pyx_v_public_id, CYTHON_UNUSED PyObject *__pyx_v_system_id) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxDoctype", 0);
+  __Pyx_TraceCall("_handleSaxDoctype", __pyx_f[11], 52, 0, __PYX_ERR(11, 52, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":53
  *         return 0
@@ -122600,6 +130302,7 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype(CYTHON_UNUS
  *     cdef _handleSaxPi(self, target, data):
  *         return None
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(11, 53, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -122612,7 +130315,11 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype(CYTHON_UNUS
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxDoctype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122627,8 +130334,10 @@ static int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype(CYTHON_UNUS
 
 static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_target, CYTHON_UNUSED PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxPi", 0);
+  __Pyx_TraceCall("_handleSaxPi", __pyx_f[11], 54, 0, __PYX_ERR(11, 54, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":55
  *         return 0
@@ -122637,6 +130346,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi(CYTHON_UNU
  *     cdef _handleSaxComment(self, comment):
  *         return None
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(11, 55, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -122650,8 +130360,12 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi(CYTHON_UNU
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxPi", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -122666,8 +130380,10 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi(CYTHON_UNU
 
 static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_comment) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_handleSaxComment", 0);
+  __Pyx_TraceCall("_handleSaxComment", __pyx_f[11], 56, 0, __PYX_ERR(11, 56, __pyx_L1_error));
 
   /* "src/lxml/saxparser.pxi":57
  *         return None
@@ -122676,6 +130392,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment(CYTHO
  * 
  * 
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(11, 57, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -122689,13 +130406,17 @@ static PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment(CYTHO
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._SaxParserTarget._handleSaxComment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":88
+/* "src/lxml/saxparser.pxi":89
  *     cdef _MultiTagMatcher _matcher
  * 
  *     def __cinit__(self, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -122729,7 +130450,7 @@ static int __pyx_pw_4lxml_5etree_17_SaxParserContext_1__cinit__(PyObject *__pyx_
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(11, 88, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(11, 89, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -122740,13 +130461,13 @@ static int __pyx_pw_4lxml_5etree_17_SaxParserContext_1__cinit__(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 88, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 89, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._SaxParserContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(11, 88, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(11, 89, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_self), __pyx_v_parser);
 
   /* function exit code */
@@ -122760,18 +130481,21 @@ static int __pyx_pw_4lxml_5etree_17_SaxParserContext_1__cinit__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[11], 89, 0, __PYX_ERR(11, 89, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":89
+  /* "src/lxml/saxparser.pxi":90
  * 
  *     def __cinit__(self, _BaseParser parser):
  *         self._ns_stack = []             # <<<<<<<<<<<<<<
  *         self._node_stack = []
  *         self._parser = parser
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 89, __pyx_L1_error)
+  __Pyx_TraceLine(90,0,__PYX_ERR(11, 90, __pyx_L1_error))
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_ns_stack);
@@ -122779,14 +130503,15 @@ static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_
   __pyx_v_self->_ns_stack = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":90
+  /* "src/lxml/saxparser.pxi":91
  *     def __cinit__(self, _BaseParser parser):
  *         self._ns_stack = []
  *         self._node_stack = []             # <<<<<<<<<<<<<<
  *         self._parser = parser
  *         self.events_iterator = _ParseEventsIterator()
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 90, __pyx_L1_error)
+  __Pyx_TraceLine(91,0,__PYX_ERR(11, 91, __pyx_L1_error))
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_node_stack);
@@ -122794,27 +130519,29 @@ static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_
   __pyx_v_self->_node_stack = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":91
+  /* "src/lxml/saxparser.pxi":92
  *         self._ns_stack = []
  *         self._node_stack = []
  *         self._parser = parser             # <<<<<<<<<<<<<<
  *         self.events_iterator = _ParseEventsIterator()
  * 
  */
+  __Pyx_TraceLine(92,0,__PYX_ERR(11, 92, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
   __Pyx_GOTREF(__pyx_v_self->_parser);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_parser));
   __pyx_v_self->_parser = __pyx_v_parser;
 
-  /* "src/lxml/saxparser.pxi":92
+  /* "src/lxml/saxparser.pxi":93
  *         self._node_stack = []
  *         self._parser = parser
  *         self.events_iterator = _ParseEventsIterator()             # <<<<<<<<<<<<<<
  * 
  *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):
  */
-  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ParseEventsIterator)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 92, __pyx_L1_error)
+  __Pyx_TraceLine(93,0,__PYX_ERR(11, 93, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ParseEventsIterator)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->events_iterator);
@@ -122822,7 +130549,7 @@ static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_
   __pyx_v_self->events_iterator = ((struct __pyx_obj_4lxml_5etree__ParseEventsIterator *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":88
+  /* "src/lxml/saxparser.pxi":89
  *     cdef _MultiTagMatcher _matcher
  * 
  *     def __cinit__(self, _BaseParser parser):             # <<<<<<<<<<<<<<
@@ -122838,11 +130565,12 @@ static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree._SaxParserContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":94
+/* "src/lxml/saxparser.pxi":95
  *         self.events_iterator = _ParseEventsIterator()
  * 
  *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):             # <<<<<<<<<<<<<<
@@ -122851,23 +130579,26 @@ static int __pyx_pf_4lxml_5etree_17_SaxParserContext___cinit__(struct __pyx_obj_
  */
 
 static void __pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_target) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_setSaxParserTarget", 0);
+  __Pyx_TraceCall("_setSaxParserTarget", __pyx_f[11], 95, 0, __PYX_ERR(11, 95, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":95
+  /* "src/lxml/saxparser.pxi":96
  * 
  *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):
  *         self._target = target             # <<<<<<<<<<<<<<
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(11, 96, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_target));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_target));
   __Pyx_GOTREF(__pyx_v_self->_target);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_target));
   __pyx_v_self->_target = __pyx_v_target;
 
-  /* "src/lxml/saxparser.pxi":94
+  /* "src/lxml/saxparser.pxi":95
  *         self.events_iterator = _ParseEventsIterator()
  * 
  *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):             # <<<<<<<<<<<<<<
@@ -122876,10 +130607,15 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget(struct
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._SaxParserContext._setSaxParserTarget", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/saxparser.pxi":97
+/* "src/lxml/saxparser.pxi":98
  *         self._target = target
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -122888,41 +130624,46 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget(struct
  */
 
 static void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_initParserContext", 0);
+  __Pyx_TraceCall("_initParserContext", __pyx_f[11], 98, 0, __PYX_ERR(11, 98, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":98
+  /* "src/lxml/saxparser.pxi":99
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         _ParserContext._initParserContext(self, c_ctxt)             # <<<<<<<<<<<<<<
  *         if self._target is not None:
  *             self._connectTarget(c_ctxt)
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(11, 99, __pyx_L1_error))
   __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self), __pyx_v_c_ctxt);
 
-  /* "src/lxml/saxparser.pxi":99
+  /* "src/lxml/saxparser.pxi":100
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         _ParserContext._initParserContext(self, c_ctxt)
  *         if self._target is not None:             # <<<<<<<<<<<<<<
  *             self._connectTarget(c_ctxt)
  *         elif self._event_filter:
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(11, 100, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_target) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":100
+    /* "src/lxml/saxparser.pxi":101
  *         _ParserContext._initParserContext(self, c_ctxt)
  *         if self._target is not None:
  *             self._connectTarget(c_ctxt)             # <<<<<<<<<<<<<<
  *         elif self._event_filter:
  *             self._connectEvents(c_ctxt)
  */
+    __Pyx_TraceLine(101,0,__PYX_ERR(11, 101, __pyx_L1_error))
     ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_connectTarget(__pyx_v_self, __pyx_v_c_ctxt);
 
-    /* "src/lxml/saxparser.pxi":99
+    /* "src/lxml/saxparser.pxi":100
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         _ParserContext._initParserContext(self, c_ctxt)
  *         if self._target is not None:             # <<<<<<<<<<<<<<
@@ -122932,26 +130673,28 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct _
     goto __pyx_L3;
   }
 
-  /* "src/lxml/saxparser.pxi":101
+  /* "src/lxml/saxparser.pxi":102
  *         if self._target is not None:
  *             self._connectTarget(c_ctxt)
  *         elif self._event_filter:             # <<<<<<<<<<<<<<
  *             self._connectEvents(c_ctxt)
  * 
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(11, 102, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_event_filter != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":102
+    /* "src/lxml/saxparser.pxi":103
  *             self._connectTarget(c_ctxt)
  *         elif self._event_filter:
  *             self._connectEvents(c_ctxt)             # <<<<<<<<<<<<<<
  * 
  *     cdef void _connectTarget(self, xmlparser.xmlParserCtxt* c_ctxt):
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(11, 103, __pyx_L1_error))
     ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_connectEvents(__pyx_v_self, __pyx_v_c_ctxt);
 
-    /* "src/lxml/saxparser.pxi":101
+    /* "src/lxml/saxparser.pxi":102
  *         if self._target is not None:
  *             self._connectTarget(c_ctxt)
  *         elif self._event_filter:             # <<<<<<<<<<<<<<
@@ -122961,7 +130704,7 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct _
   }
   __pyx_L3:;
 
-  /* "src/lxml/saxparser.pxi":97
+  /* "src/lxml/saxparser.pxi":98
  *         self._target = target
  * 
  *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -122970,10 +130713,15 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct _
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._SaxParserContext._initParserContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/saxparser.pxi":104
+/* "src/lxml/saxparser.pxi":105
  *             self._connectEvents(c_ctxt)
  * 
  *     cdef void _connectTarget(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -122983,72 +130731,80 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct _
 
 static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
   xmlSAXHandler *__pyx_v_sax;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlSAXHandler *__pyx_t_1;
   int __pyx_t_2;
   internalSubsetSAXFunc __pyx_t_3;
   __Pyx_RefNannySetupContext("_connectTarget", 0);
+  __Pyx_TraceCall("_connectTarget", __pyx_f[11], 105, 0, __PYX_ERR(11, 105, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":106
+  /* "src/lxml/saxparser.pxi":107
  *     cdef void _connectTarget(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         """wrap original SAX2 callbacks to call into parser target"""
  *         sax = c_ctxt.sax             # <<<<<<<<<<<<<<
  *         self._origSaxStart = sax.startElementNs = NULL
  *         self._origSaxStartNoNs = sax.startElement = NULL
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(11, 107, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_ctxt->sax;
   __pyx_v_sax = __pyx_t_1;
 
-  /* "src/lxml/saxparser.pxi":107
+  /* "src/lxml/saxparser.pxi":108
  *         """wrap original SAX2 callbacks to call into parser target"""
  *         sax = c_ctxt.sax
  *         self._origSaxStart = sax.startElementNs = NULL             # <<<<<<<<<<<<<<
  *         self._origSaxStartNoNs = sax.startElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_START:
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(11, 108, __pyx_L1_error))
   __pyx_v_self->_origSaxStart = NULL;
   __pyx_v_sax->startElementNs = NULL;
 
-  /* "src/lxml/saxparser.pxi":108
+  /* "src/lxml/saxparser.pxi":109
  *         sax = c_ctxt.sax
  *         self._origSaxStart = sax.startElementNs = NULL
  *         self._origSaxStartNoNs = sax.startElement = NULL             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_START:
  *             # intercept => overwrite orig callback
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(11, 109, __pyx_L1_error))
   __pyx_v_self->_origSaxStartNoNs = NULL;
   __pyx_v_sax->startElement = NULL;
 
-  /* "src/lxml/saxparser.pxi":109
+  /* "src/lxml/saxparser.pxi":110
  *         self._origSaxStart = sax.startElementNs = NULL
  *         self._origSaxStartNoNs = sax.startElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_START:             # <<<<<<<<<<<<<<
  *             # intercept => overwrite orig callback
  *             # FIXME: also intercept on when collecting END events
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(11, 110, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_START) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":112
+    /* "src/lxml/saxparser.pxi":113
  *             # intercept => overwrite orig callback
  *             # FIXME: also intercept on when collecting END events
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
  *                 sax.startElementNs = _handleSaxTargetStart
  *             sax.startElement = _handleSaxTargetStartNoNs
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(11, 113, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_sax->initialized == XML_SAX2_MAGIC) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/saxparser.pxi":113
+      /* "src/lxml/saxparser.pxi":114
  *             # FIXME: also intercept on when collecting END events
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  *                 sax.startElementNs = _handleSaxTargetStart             # <<<<<<<<<<<<<<
  *             sax.startElement = _handleSaxTargetStartNoNs
  * 
  */
+      __Pyx_TraceLine(114,0,__PYX_ERR(11, 114, __pyx_L1_error))
       __pyx_v_sax->startElementNs = __pyx_f_4lxml_5etree__handleSaxTargetStart;
 
-      /* "src/lxml/saxparser.pxi":112
+      /* "src/lxml/saxparser.pxi":113
  *             # intercept => overwrite orig callback
  *             # FIXME: also intercept on when collecting END events
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
@@ -123057,16 +130813,17 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
     }
 
-    /* "src/lxml/saxparser.pxi":114
+    /* "src/lxml/saxparser.pxi":115
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  *                 sax.startElementNs = _handleSaxTargetStart
  *             sax.startElement = _handleSaxTargetStartNoNs             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxEnd = sax.endElementNs = NULL
  */
+    __Pyx_TraceLine(115,0,__PYX_ERR(11, 115, __pyx_L1_error))
     __pyx_v_sax->startElement = __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs;
 
-    /* "src/lxml/saxparser.pxi":109
+    /* "src/lxml/saxparser.pxi":110
  *         self._origSaxStart = sax.startElementNs = NULL
  *         self._origSaxStartNoNs = sax.startElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_START:             # <<<<<<<<<<<<<<
@@ -123075,56 +130832,61 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":116
+  /* "src/lxml/saxparser.pxi":117
  *             sax.startElement = _handleSaxTargetStartNoNs
  * 
  *         self._origSaxEnd = sax.endElementNs = NULL             # <<<<<<<<<<<<<<
  *         self._origSaxEndNoNs = sax.endElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_END:
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(11, 117, __pyx_L1_error))
   __pyx_v_self->_origSaxEnd = NULL;
   __pyx_v_sax->endElementNs = NULL;
 
-  /* "src/lxml/saxparser.pxi":117
+  /* "src/lxml/saxparser.pxi":118
  * 
  *         self._origSaxEnd = sax.endElementNs = NULL
  *         self._origSaxEndNoNs = sax.endElement = NULL             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_END:
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(11, 118, __pyx_L1_error))
   __pyx_v_self->_origSaxEndNoNs = NULL;
   __pyx_v_sax->endElement = NULL;
 
-  /* "src/lxml/saxparser.pxi":118
+  /* "src/lxml/saxparser.pxi":119
  *         self._origSaxEnd = sax.endElementNs = NULL
  *         self._origSaxEndNoNs = sax.endElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_END:             # <<<<<<<<<<<<<<
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  *                 sax.endElementNs = _handleSaxEnd
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(11, 119, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_END) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":119
+    /* "src/lxml/saxparser.pxi":120
  *         self._origSaxEndNoNs = sax.endElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_END:
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
  *                 sax.endElementNs = _handleSaxEnd
  *             sax.endElement = _handleSaxEndNoNs
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(11, 120, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_sax->initialized == XML_SAX2_MAGIC) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/saxparser.pxi":120
+      /* "src/lxml/saxparser.pxi":121
  *         if self._target._sax_event_filter & SAX_EVENT_END:
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  *                 sax.endElementNs = _handleSaxEnd             # <<<<<<<<<<<<<<
  *             sax.endElement = _handleSaxEndNoNs
  * 
  */
+      __Pyx_TraceLine(121,0,__PYX_ERR(11, 121, __pyx_L1_error))
       __pyx_v_sax->endElementNs = __pyx_f_4lxml_5etree__handleSaxEnd;
 
-      /* "src/lxml/saxparser.pxi":119
+      /* "src/lxml/saxparser.pxi":120
  *         self._origSaxEndNoNs = sax.endElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_END:
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
@@ -123133,16 +130895,17 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
     }
 
-    /* "src/lxml/saxparser.pxi":121
+    /* "src/lxml/saxparser.pxi":122
  *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
  *                 sax.endElementNs = _handleSaxEnd
  *             sax.endElement = _handleSaxEndNoNs             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxData = sax.characters = sax.cdataBlock = NULL
  */
+    __Pyx_TraceLine(122,0,__PYX_ERR(11, 122, __pyx_L1_error))
     __pyx_v_sax->endElement = __pyx_f_4lxml_5etree__handleSaxEndNoNs;
 
-    /* "src/lxml/saxparser.pxi":118
+    /* "src/lxml/saxparser.pxi":119
  *         self._origSaxEnd = sax.endElementNs = NULL
  *         self._origSaxEndNoNs = sax.endElement = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_END:             # <<<<<<<<<<<<<<
@@ -123151,38 +130914,41 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":123
+  /* "src/lxml/saxparser.pxi":124
  *             sax.endElement = _handleSaxEndNoNs
  * 
  *         self._origSaxData = sax.characters = sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_DATA:
  *             sax.characters = sax.cdataBlock = _handleSaxData
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(11, 124, __pyx_L1_error))
   __pyx_v_self->_origSaxData = NULL;
   __pyx_v_sax->characters = NULL;
   __pyx_v_sax->cdataBlock = NULL;
 
-  /* "src/lxml/saxparser.pxi":124
+  /* "src/lxml/saxparser.pxi":125
  * 
  *         self._origSaxData = sax.characters = sax.cdataBlock = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_DATA:             # <<<<<<<<<<<<<<
  *             sax.characters = sax.cdataBlock = _handleSaxData
  * 
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(11, 125, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_DATA) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":125
+    /* "src/lxml/saxparser.pxi":126
  *         self._origSaxData = sax.characters = sax.cdataBlock = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_DATA:
  *             sax.characters = sax.cdataBlock = _handleSaxData             # <<<<<<<<<<<<<<
  * 
  *         # doctype propagation is always required for entity replacement
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(11, 126, __pyx_L1_error))
     __pyx_v_sax->characters = __pyx_f_4lxml_5etree__handleSaxData;
     __pyx_v_sax->cdataBlock = __pyx_f_4lxml_5etree__handleSaxData;
 
-    /* "src/lxml/saxparser.pxi":124
+    /* "src/lxml/saxparser.pxi":125
  * 
  *         self._origSaxData = sax.characters = sax.cdataBlock = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_DATA:             # <<<<<<<<<<<<<<
@@ -123191,36 +130957,39 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":128
+  /* "src/lxml/saxparser.pxi":129
  * 
  *         # doctype propagation is always required for entity replacement
  *         self._origSaxDoctype = sax.internalSubset             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:
  *             sax.internalSubset = _handleSaxTargetDoctype
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(11, 129, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_sax->internalSubset;
   __pyx_v_self->_origSaxDoctype = __pyx_t_3;
 
-  /* "src/lxml/saxparser.pxi":129
+  /* "src/lxml/saxparser.pxi":130
  *         # doctype propagation is always required for entity replacement
  *         self._origSaxDoctype = sax.internalSubset
  *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:             # <<<<<<<<<<<<<<
  *             sax.internalSubset = _handleSaxTargetDoctype
  * 
  */
+  __Pyx_TraceLine(130,0,__PYX_ERR(11, 130, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_DOCTYPE) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":130
+    /* "src/lxml/saxparser.pxi":131
  *         self._origSaxDoctype = sax.internalSubset
  *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:
  *             sax.internalSubset = _handleSaxTargetDoctype             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxPI = sax.processingInstruction = NULL
  */
+    __Pyx_TraceLine(131,0,__PYX_ERR(11, 131, __pyx_L1_error))
     __pyx_v_sax->internalSubset = __pyx_f_4lxml_5etree__handleSaxTargetDoctype;
 
-    /* "src/lxml/saxparser.pxi":129
+    /* "src/lxml/saxparser.pxi":130
  *         # doctype propagation is always required for entity replacement
  *         self._origSaxDoctype = sax.internalSubset
  *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:             # <<<<<<<<<<<<<<
@@ -123229,36 +130998,39 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":132
+  /* "src/lxml/saxparser.pxi":133
  *             sax.internalSubset = _handleSaxTargetDoctype
  * 
  *         self._origSaxPI = sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_PI:
  *             sax.processingInstruction = _handleSaxPI
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(11, 133, __pyx_L1_error))
   __pyx_v_self->_origSaxPI = NULL;
   __pyx_v_sax->processingInstruction = NULL;
 
-  /* "src/lxml/saxparser.pxi":133
+  /* "src/lxml/saxparser.pxi":134
  * 
  *         self._origSaxPI = sax.processingInstruction = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_PI:             # <<<<<<<<<<<<<<
  *             sax.processingInstruction = _handleSaxPI
  * 
  */
+  __Pyx_TraceLine(134,0,__PYX_ERR(11, 134, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_PI) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":134
+    /* "src/lxml/saxparser.pxi":135
  *         self._origSaxPI = sax.processingInstruction = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_PI:
  *             sax.processingInstruction = _handleSaxPI             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxComment = sax.comment = NULL
  */
+    __Pyx_TraceLine(135,0,__PYX_ERR(11, 135, __pyx_L1_error))
     __pyx_v_sax->processingInstruction = __pyx_f_4lxml_5etree__handleSaxPI;
 
-    /* "src/lxml/saxparser.pxi":133
+    /* "src/lxml/saxparser.pxi":134
  * 
  *         self._origSaxPI = sax.processingInstruction = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_PI:             # <<<<<<<<<<<<<<
@@ -123267,36 +131039,39 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":136
+  /* "src/lxml/saxparser.pxi":137
  *             sax.processingInstruction = _handleSaxPI
  * 
  *         self._origSaxComment = sax.comment = NULL             # <<<<<<<<<<<<<<
  *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:
  *             sax.comment = _handleSaxTargetComment
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(11, 137, __pyx_L1_error))
   __pyx_v_self->_origSaxComment = NULL;
   __pyx_v_sax->comment = NULL;
 
-  /* "src/lxml/saxparser.pxi":137
+  /* "src/lxml/saxparser.pxi":138
  * 
  *         self._origSaxComment = sax.comment = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:             # <<<<<<<<<<<<<<
  *             sax.comment = _handleSaxTargetComment
  * 
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(11, 138, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":138
+    /* "src/lxml/saxparser.pxi":139
  *         self._origSaxComment = sax.comment = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:
  *             sax.comment = _handleSaxTargetComment             # <<<<<<<<<<<<<<
  * 
  *         # enforce entity replacement
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(11, 139, __pyx_L1_error))
     __pyx_v_sax->comment = __pyx_f_4lxml_5etree__handleSaxTargetComment;
 
-    /* "src/lxml/saxparser.pxi":137
+    /* "src/lxml/saxparser.pxi":138
  * 
  *         self._origSaxComment = sax.comment = NULL
  *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:             # <<<<<<<<<<<<<<
@@ -123305,25 +131080,27 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":141
+  /* "src/lxml/saxparser.pxi":142
  * 
  *         # enforce entity replacement
  *         sax.reference = NULL             # <<<<<<<<<<<<<<
  *         c_ctxt.replaceEntities = 1
  * 
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(11, 142, __pyx_L1_error))
   __pyx_v_sax->reference = NULL;
 
-  /* "src/lxml/saxparser.pxi":142
+  /* "src/lxml/saxparser.pxi":143
  *         # enforce entity replacement
  *         sax.reference = NULL
  *         c_ctxt.replaceEntities = 1             # <<<<<<<<<<<<<<
  * 
  *     cdef void _connectEvents(self, xmlparser.xmlParserCtxt* c_ctxt):
  */
+  __Pyx_TraceLine(143,0,__PYX_ERR(11, 143, __pyx_L1_error))
   __pyx_v_c_ctxt->replaceEntities = 1;
 
-  /* "src/lxml/saxparser.pxi":104
+  /* "src/lxml/saxparser.pxi":105
  *             self._connectEvents(c_ctxt)
  * 
  *     cdef void _connectTarget(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -123332,10 +131109,15 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._SaxParserContext._connectTarget", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/saxparser.pxi":144
+/* "src/lxml/saxparser.pxi":145
  *         c_ctxt.replaceEntities = 1
  * 
  *     cdef void _connectEvents(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -123345,6 +131127,7 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectTarget(struct __pyx
 
 static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
   xmlSAXHandler *__pyx_v_sax;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlSAXHandler *__pyx_t_1;
   startDocumentSAXFunc __pyx_t_2;
@@ -123357,63 +131140,70 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
   commentSAXFunc __pyx_t_9;
   processingInstructionSAXFunc __pyx_t_10;
   __Pyx_RefNannySetupContext("_connectEvents", 0);
+  __Pyx_TraceCall("_connectEvents", __pyx_f[11], 145, 0, __PYX_ERR(11, 145, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":146
+  /* "src/lxml/saxparser.pxi":147
  *     cdef void _connectEvents(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         """wrap original SAX2 callbacks to collect parse events"""
  *         sax = c_ctxt.sax             # <<<<<<<<<<<<<<
  *         self._origSaxStartDocument = sax.startDocument
  *         sax.startDocument = _handleSaxStartDocument
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(11, 147, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_ctxt->sax;
   __pyx_v_sax = __pyx_t_1;
 
-  /* "src/lxml/saxparser.pxi":147
+  /* "src/lxml/saxparser.pxi":148
  *         """wrap original SAX2 callbacks to collect parse events"""
  *         sax = c_ctxt.sax
  *         self._origSaxStartDocument = sax.startDocument             # <<<<<<<<<<<<<<
  *         sax.startDocument = _handleSaxStartDocument
  *         self._origSaxStart = sax.startElementNs
  */
+  __Pyx_TraceLine(148,0,__PYX_ERR(11, 148, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_sax->startDocument;
   __pyx_v_self->_origSaxStartDocument = __pyx_t_2;
 
-  /* "src/lxml/saxparser.pxi":148
+  /* "src/lxml/saxparser.pxi":149
  *         sax = c_ctxt.sax
  *         self._origSaxStartDocument = sax.startDocument
  *         sax.startDocument = _handleSaxStartDocument             # <<<<<<<<<<<<<<
  *         self._origSaxStart = sax.startElementNs
  *         self._origSaxStartNoNs = sax.startElement
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(11, 149, __pyx_L1_error))
   __pyx_v_sax->startDocument = __pyx_f_4lxml_5etree__handleSaxStartDocument;
 
-  /* "src/lxml/saxparser.pxi":149
+  /* "src/lxml/saxparser.pxi":150
  *         self._origSaxStartDocument = sax.startDocument
  *         sax.startDocument = _handleSaxStartDocument
  *         self._origSaxStart = sax.startElementNs             # <<<<<<<<<<<<<<
  *         self._origSaxStartNoNs = sax.startElement
  *         # only override start event handler if needed
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(11, 150, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_sax->startElementNs;
   __pyx_v_self->_origSaxStart = __pyx_t_3;
 
-  /* "src/lxml/saxparser.pxi":150
+  /* "src/lxml/saxparser.pxi":151
  *         sax.startDocument = _handleSaxStartDocument
  *         self._origSaxStart = sax.startElementNs
  *         self._origSaxStartNoNs = sax.startElement             # <<<<<<<<<<<<<<
  *         # only override start event handler if needed
  *         if self._event_filter == 0 or \
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(11, 151, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_sax->startElement;
   __pyx_v_self->_origSaxStartNoNs = __pyx_t_4;
 
-  /* "src/lxml/saxparser.pxi":152
+  /* "src/lxml/saxparser.pxi":153
  *         self._origSaxStartNoNs = sax.startElement
  *         # only override start event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
  *                self._event_filter & (PARSE_EVENT_FILTER_START |
  *                                      PARSE_EVENT_FILTER_END |
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(11, 153, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_event_filter == 0) != 0);
   if (!__pyx_t_6) {
   } else {
@@ -123421,45 +131211,49 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/saxparser.pxi":153
+  /* "src/lxml/saxparser.pxi":154
  *         # only override start event handler if needed
  *         if self._event_filter == 0 or \
  *                self._event_filter & (PARSE_EVENT_FILTER_START |             # <<<<<<<<<<<<<<
  *                                      PARSE_EVENT_FILTER_END |
  *                                      PARSE_EVENT_FILTER_START_NS |
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(11, 154, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_event_filter & (((__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END) | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS) | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS)) != 0);
   __pyx_t_5 = __pyx_t_6;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/saxparser.pxi":152
+  /* "src/lxml/saxparser.pxi":153
  *         self._origSaxStartNoNs = sax.startElement
  *         # only override start event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
  *                self._event_filter & (PARSE_EVENT_FILTER_START |
  *                                      PARSE_EVENT_FILTER_END |
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(11, 153, __pyx_L1_error))
   if (__pyx_t_5) {
 
-    /* "src/lxml/saxparser.pxi":157
+    /* "src/lxml/saxparser.pxi":158
  *                                      PARSE_EVENT_FILTER_START_NS |
  *                                      PARSE_EVENT_FILTER_END_NS):
  *             sax.startElementNs = <xmlparser.startElementNsSAX2Func>_handleSaxStart             # <<<<<<<<<<<<<<
  *             sax.startElement = <xmlparser.startElementSAXFunc>_handleSaxStartNoNs
  * 
  */
+    __Pyx_TraceLine(158,0,__PYX_ERR(11, 158, __pyx_L1_error))
     __pyx_v_sax->startElementNs = ((startElementNsSAX2Func)__pyx_f_4lxml_5etree__handleSaxStart);
 
-    /* "src/lxml/saxparser.pxi":158
+    /* "src/lxml/saxparser.pxi":159
  *                                      PARSE_EVENT_FILTER_END_NS):
  *             sax.startElementNs = <xmlparser.startElementNsSAX2Func>_handleSaxStart
  *             sax.startElement = <xmlparser.startElementSAXFunc>_handleSaxStartNoNs             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxEnd = sax.endElementNs
  */
+    __Pyx_TraceLine(159,0,__PYX_ERR(11, 159, __pyx_L1_error))
     __pyx_v_sax->startElement = ((startElementSAXFunc)__pyx_f_4lxml_5etree__handleSaxStartNoNs);
 
-    /* "src/lxml/saxparser.pxi":152
+    /* "src/lxml/saxparser.pxi":153
  *         self._origSaxStartNoNs = sax.startElement
  *         # only override start event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
@@ -123468,33 +131262,36 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":160
+  /* "src/lxml/saxparser.pxi":161
  *             sax.startElement = <xmlparser.startElementSAXFunc>_handleSaxStartNoNs
  * 
  *         self._origSaxEnd = sax.endElementNs             # <<<<<<<<<<<<<<
  *         self._origSaxEndNoNs = sax.endElement
  *         # only override end event handler if needed
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(11, 161, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_sax->endElementNs;
   __pyx_v_self->_origSaxEnd = __pyx_t_7;
 
-  /* "src/lxml/saxparser.pxi":161
+  /* "src/lxml/saxparser.pxi":162
  * 
  *         self._origSaxEnd = sax.endElementNs
  *         self._origSaxEndNoNs = sax.endElement             # <<<<<<<<<<<<<<
  *         # only override end event handler if needed
  *         if self._event_filter == 0 or \
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(11, 162, __pyx_L1_error))
   __pyx_t_8 = __pyx_v_sax->endElement;
   __pyx_v_self->_origSaxEndNoNs = __pyx_t_8;
 
-  /* "src/lxml/saxparser.pxi":163
+  /* "src/lxml/saxparser.pxi":164
  *         self._origSaxEndNoNs = sax.endElement
  *         # only override end event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
  *                self._event_filter & (PARSE_EVENT_FILTER_END |
  *                                      PARSE_EVENT_FILTER_END_NS):
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(11, 164, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_event_filter == 0) != 0);
   if (!__pyx_t_6) {
   } else {
@@ -123502,45 +131299,49 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
     goto __pyx_L7_bool_binop_done;
   }
 
-  /* "src/lxml/saxparser.pxi":164
+  /* "src/lxml/saxparser.pxi":165
  *         # only override end event handler if needed
  *         if self._event_filter == 0 or \
  *                self._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
  *                                      PARSE_EVENT_FILTER_END_NS):
  *             sax.endElementNs = <xmlparser.endElementNsSAX2Func>_handleSaxEnd
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(11, 165, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS)) != 0);
   __pyx_t_5 = __pyx_t_6;
   __pyx_L7_bool_binop_done:;
 
-  /* "src/lxml/saxparser.pxi":163
+  /* "src/lxml/saxparser.pxi":164
  *         self._origSaxEndNoNs = sax.endElement
  *         # only override end event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
  *                self._event_filter & (PARSE_EVENT_FILTER_END |
  *                                      PARSE_EVENT_FILTER_END_NS):
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(11, 164, __pyx_L1_error))
   if (__pyx_t_5) {
 
-    /* "src/lxml/saxparser.pxi":166
+    /* "src/lxml/saxparser.pxi":167
  *                self._event_filter & (PARSE_EVENT_FILTER_END |
  *                                      PARSE_EVENT_FILTER_END_NS):
  *             sax.endElementNs = <xmlparser.endElementNsSAX2Func>_handleSaxEnd             # <<<<<<<<<<<<<<
  *             sax.endElement = <xmlparser.endElementSAXFunc>_handleSaxEndNoNs
  * 
  */
+    __Pyx_TraceLine(167,0,__PYX_ERR(11, 167, __pyx_L1_error))
     __pyx_v_sax->endElementNs = ((endElementNsSAX2Func)__pyx_f_4lxml_5etree__handleSaxEnd);
 
-    /* "src/lxml/saxparser.pxi":167
+    /* "src/lxml/saxparser.pxi":168
  *                                      PARSE_EVENT_FILTER_END_NS):
  *             sax.endElementNs = <xmlparser.endElementNsSAX2Func>_handleSaxEnd
  *             sax.endElement = <xmlparser.endElementSAXFunc>_handleSaxEndNoNs             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxComment = sax.comment
  */
+    __Pyx_TraceLine(168,0,__PYX_ERR(11, 168, __pyx_L1_error))
     __pyx_v_sax->endElement = ((endElementSAXFunc)__pyx_f_4lxml_5etree__handleSaxEndNoNs);
 
-    /* "src/lxml/saxparser.pxi":163
+    /* "src/lxml/saxparser.pxi":164
  *         self._origSaxEndNoNs = sax.endElement
  *         # only override end event handler if needed
  *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
@@ -123549,36 +131350,39 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":169
+  /* "src/lxml/saxparser.pxi":170
  *             sax.endElement = <xmlparser.endElementSAXFunc>_handleSaxEndNoNs
  * 
  *         self._origSaxComment = sax.comment             # <<<<<<<<<<<<<<
  *         if self._event_filter & PARSE_EVENT_FILTER_COMMENT:
  *             sax.comment = <xmlparser.commentSAXFunc>_handleSaxComment
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(11, 170, __pyx_L1_error))
   __pyx_t_9 = __pyx_v_sax->comment;
   __pyx_v_self->_origSaxComment = __pyx_t_9;
 
-  /* "src/lxml/saxparser.pxi":170
+  /* "src/lxml/saxparser.pxi":171
  * 
  *         self._origSaxComment = sax.comment
  *         if self._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
  *             sax.comment = <xmlparser.commentSAXFunc>_handleSaxComment
  * 
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(11, 171, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_COMMENT) != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/saxparser.pxi":171
+    /* "src/lxml/saxparser.pxi":172
  *         self._origSaxComment = sax.comment
  *         if self._event_filter & PARSE_EVENT_FILTER_COMMENT:
  *             sax.comment = <xmlparser.commentSAXFunc>_handleSaxComment             # <<<<<<<<<<<<<<
  * 
  *         self._origSaxPI = sax.processingInstruction
  */
+    __Pyx_TraceLine(172,0,__PYX_ERR(11, 172, __pyx_L1_error))
     __pyx_v_sax->comment = ((commentSAXFunc)__pyx_f_4lxml_5etree__handleSaxComment);
 
-    /* "src/lxml/saxparser.pxi":170
+    /* "src/lxml/saxparser.pxi":171
  * 
  *         self._origSaxComment = sax.comment
  *         if self._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
@@ -123587,36 +131391,39 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":173
+  /* "src/lxml/saxparser.pxi":174
  *             sax.comment = <xmlparser.commentSAXFunc>_handleSaxComment
  * 
  *         self._origSaxPI = sax.processingInstruction             # <<<<<<<<<<<<<<
  *         if self._event_filter & PARSE_EVENT_FILTER_PI:
  *             sax.processingInstruction = <xmlparser.processingInstructionSAXFunc>_handleSaxPIEvent
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(11, 174, __pyx_L1_error))
   __pyx_t_10 = __pyx_v_sax->processingInstruction;
   __pyx_v_self->_origSaxPI = __pyx_t_10;
 
-  /* "src/lxml/saxparser.pxi":174
+  /* "src/lxml/saxparser.pxi":175
  * 
  *         self._origSaxPI = sax.processingInstruction
  *         if self._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
  *             sax.processingInstruction = <xmlparser.processingInstructionSAXFunc>_handleSaxPIEvent
  * 
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(11, 175, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_PI) != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/saxparser.pxi":175
+    /* "src/lxml/saxparser.pxi":176
  *         self._origSaxPI = sax.processingInstruction
  *         if self._event_filter & PARSE_EVENT_FILTER_PI:
  *             sax.processingInstruction = <xmlparser.processingInstructionSAXFunc>_handleSaxPIEvent             # <<<<<<<<<<<<<<
  * 
  *     cdef _setEventFilter(self, events, tag):
  */
+    __Pyx_TraceLine(176,0,__PYX_ERR(11, 176, __pyx_L1_error))
     __pyx_v_sax->processingInstruction = ((processingInstructionSAXFunc)__pyx_f_4lxml_5etree__handleSaxPIEvent);
 
-    /* "src/lxml/saxparser.pxi":174
+    /* "src/lxml/saxparser.pxi":175
  * 
  *         self._origSaxPI = sax.processingInstruction
  *         if self._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
@@ -123625,7 +131432,7 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":144
+  /* "src/lxml/saxparser.pxi":145
  *         c_ctxt.replaceEntities = 1
  * 
  *     cdef void _connectEvents(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -123634,10 +131441,15 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._SaxParserContext._connectEvents", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/saxparser.pxi":177
+/* "src/lxml/saxparser.pxi":178
  *             sax.processingInstruction = <xmlparser.processingInstructionSAXFunc>_handleSaxPIEvent
  * 
  *     cdef _setEventFilter(self, events, tag):             # <<<<<<<<<<<<<<
@@ -123647,6 +131459,7 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__connectEvents(struct __pyx
 
 static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, PyObject *__pyx_v_events, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -123655,24 +131468,27 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_setEventFilter", 0);
+  __Pyx_TraceCall("_setEventFilter", __pyx_f[11], 178, 0, __PYX_ERR(11, 178, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":178
+  /* "src/lxml/saxparser.pxi":179
  * 
  *     cdef _setEventFilter(self, events, tag):
  *         self._event_filter = _buildParseEventFilter(events)             # <<<<<<<<<<<<<<
  *         if not self._event_filter or tag is None or tag == '*':
  *             self._matcher = None
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 178, __pyx_L1_error)
+  __Pyx_TraceLine(179,0,__PYX_ERR(11, 179, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 179, __pyx_L1_error)
   __pyx_v_self->_event_filter = __pyx_t_1;
 
-  /* "src/lxml/saxparser.pxi":179
+  /* "src/lxml/saxparser.pxi":180
  *     cdef _setEventFilter(self, events, tag):
  *         self._event_filter = _buildParseEventFilter(events)
  *         if not self._event_filter or tag is None or tag == '*':             # <<<<<<<<<<<<<<
  *             self._matcher = None
  *         else:
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(11, 180, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_self->_event_filter != 0)) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -123686,25 +131502,26 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__53, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(11, 179, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__160, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(11, 180, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":180
+    /* "src/lxml/saxparser.pxi":181
  *         self._event_filter = _buildParseEventFilter(events)
  *         if not self._event_filter or tag is None or tag == '*':
  *             self._matcher = None             # <<<<<<<<<<<<<<
  *         else:
  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(11, 181, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_matcher);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_matcher));
     __pyx_v_self->_matcher = ((struct __pyx_obj_4lxml_5etree__MultiTagMatcher *)Py_None);
 
-    /* "src/lxml/saxparser.pxi":179
+    /* "src/lxml/saxparser.pxi":180
  *     cdef _setEventFilter(self, events, tag):
  *         self._event_filter = _buildParseEventFilter(events)
  *         if not self._event_filter or tag is None or tag == '*':             # <<<<<<<<<<<<<<
@@ -123714,20 +131531,21 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
     goto __pyx_L3;
   }
 
-  /* "src/lxml/saxparser.pxi":182
+  /* "src/lxml/saxparser.pxi":183
  *             self._matcher = None
  *         else:
  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)             # <<<<<<<<<<<<<<
  * 
  *     cdef int startDocument(self, xmlDoc* c_doc) except -1:
  */
+  __Pyx_TraceLine(183,0,__PYX_ERR(11, 183, __pyx_L1_error))
   /*else*/ {
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 182, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_tag);
-    __pyx_t_6 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_5, NULL)); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 182, __pyx_L1_error)
+    __pyx_t_6 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_5, NULL)); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 183, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_6));
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
@@ -123738,7 +131556,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
   }
   __pyx_L3:;
 
-  /* "src/lxml/saxparser.pxi":177
+  /* "src/lxml/saxparser.pxi":178
  *             sax.processingInstruction = <xmlparser.processingInstructionSAXFunc>_handleSaxPIEvent
  * 
  *     cdef _setEventFilter(self, events, tag):             # <<<<<<<<<<<<<<
@@ -123756,11 +131574,12 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":184
+/* "src/lxml/saxparser.pxi":185
  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  * 
  *     cdef int startDocument(self, xmlDoc* c_doc) except -1:             # <<<<<<<<<<<<<<
@@ -123770,6 +131589,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_SaxParserContext__setEventFilter(struct
 
 static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlDoc *__pyx_v_c_doc) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -123786,26 +131606,29 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_o
   int __pyx_t_13;
   struct __pyx_opt_args_4lxml_5etree_16_MultiTagMatcher_cacheTags __pyx_t_14;
   __Pyx_RefNannySetupContext("startDocument", 0);
+  __Pyx_TraceCall("startDocument", __pyx_f[11], 185, 0, __PYX_ERR(11, 185, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":185
+  /* "src/lxml/saxparser.pxi":186
  * 
  *     cdef int startDocument(self, xmlDoc* c_doc) except -1:
  *         try:             # <<<<<<<<<<<<<<
  *             self._doc = _documentFactory(c_doc, self._parser)
  *         finally:
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(11, 186, __pyx_L4_error))
   /*try:*/ {
 
-    /* "src/lxml/saxparser.pxi":186
+    /* "src/lxml/saxparser.pxi":187
  *     cdef int startDocument(self, xmlDoc* c_doc) except -1:
  *         try:
  *             self._doc = _documentFactory(c_doc, self._parser)             # <<<<<<<<<<<<<<
  *         finally:
  *             self._parser = None  # clear circular reference ASAP
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(11, 187, __pyx_L4_error))
     __pyx_t_1 = ((PyObject *)__pyx_v_self->_parser);
     __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 186, __pyx_L4_error)
+    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 187, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_GIVEREF(__pyx_t_2);
@@ -123815,13 +131638,14 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_o
     __pyx_t_2 = 0;
   }
 
-  /* "src/lxml/saxparser.pxi":188
+  /* "src/lxml/saxparser.pxi":189
  *             self._doc = _documentFactory(c_doc, self._parser)
  *         finally:
  *             self._parser = None  # clear circular reference ASAP             # <<<<<<<<<<<<<<
  *         if self._matcher is not None:
  *             self._matcher.cacheTags(self._doc, True) # force entry in libxml2 dict
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(11, 189, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __Pyx_INCREF(Py_None);
@@ -123871,32 +131695,34 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_o
     __pyx_L5:;
   }
 
-  /* "src/lxml/saxparser.pxi":189
+  /* "src/lxml/saxparser.pxi":190
  *         finally:
  *             self._parser = None  # clear circular reference ASAP
  *         if self._matcher is not None:             # <<<<<<<<<<<<<<
  *             self._matcher.cacheTags(self._doc, True) # force entry in libxml2 dict
  *         return 0
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(11, 190, __pyx_L1_error))
   __pyx_t_12 = (((PyObject *)__pyx_v_self->_matcher) != Py_None);
   __pyx_t_13 = (__pyx_t_12 != 0);
   if (__pyx_t_13) {
 
-    /* "src/lxml/saxparser.pxi":190
+    /* "src/lxml/saxparser.pxi":191
  *             self._parser = None  # clear circular reference ASAP
  *         if self._matcher is not None:
  *             self._matcher.cacheTags(self._doc, True) # force entry in libxml2 dict             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(11, 191, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base._doc);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_t_14.__pyx_n = 1;
     __pyx_t_14.force_into_dict = 1;
-    __pyx_t_4 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_2), &__pyx_t_14); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(11, 190, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_2), &__pyx_t_14); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(11, 191, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "src/lxml/saxparser.pxi":189
+    /* "src/lxml/saxparser.pxi":190
  *         finally:
  *             self._parser = None  # clear circular reference ASAP
  *         if self._matcher is not None:             # <<<<<<<<<<<<<<
@@ -123905,17 +131731,18 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_o
  */
   }
 
-  /* "src/lxml/saxparser.pxi":191
+  /* "src/lxml/saxparser.pxi":192
  *         if self._matcher is not None:
  *             self._matcher.cacheTags(self._doc, True) # force entry in libxml2 dict
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(11, 192, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":184
+  /* "src/lxml/saxparser.pxi":185
  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  * 
  *     cdef int startDocument(self, xmlDoc* c_doc) except -1:             # <<<<<<<<<<<<<<
@@ -123930,11 +131757,12 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_startDocument(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree._SaxParserContext.startDocument", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":193
+/* "src/lxml/saxparser.pxi":194
  *         return 0
  * 
  *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
@@ -123946,6 +131774,7 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
   struct LxmlElement *__pyx_v_root = 0;
   struct LxmlElement *__pyx_v_node = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -123954,38 +131783,42 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("pushEvent", 0);
+  __Pyx_TraceCall("pushEvent", __pyx_f[11], 194, 0, __PYX_ERR(11, 194, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":195
+  /* "src/lxml/saxparser.pxi":196
  *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:
  *         cdef _Element root
  *         if self._root is None:             # <<<<<<<<<<<<<<
  *             root = self._doc.getroot()
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(11, 196, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_root) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":196
+    /* "src/lxml/saxparser.pxi":197
  *         cdef _Element root
  *         if self._root is None:
  *             root = self._doc.getroot()             # <<<<<<<<<<<<<<
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
  *                 self._root = root
  */
-    __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_self->__pyx_base._doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 196, __pyx_L1_error)
+    __Pyx_TraceLine(197,0,__PYX_ERR(11, 197, __pyx_L1_error))
+    __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_self->__pyx_base._doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 197, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 196, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 197, __pyx_L1_error)
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/saxparser.pxi":197
+    /* "src/lxml/saxparser.pxi":198
  *         if self._root is None:
  *             root = self._doc.getroot()
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
  *                 self._root = root
  *         node = _elementFactory(self._doc, c_node)
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(11, 198, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_root) != Py_None);
     __pyx_t_4 = (__pyx_t_1 != 0);
     if (__pyx_t_4) {
@@ -123998,20 +131831,21 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
     __pyx_L5_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "src/lxml/saxparser.pxi":198
+      /* "src/lxml/saxparser.pxi":199
  *             root = self._doc.getroot()
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
  *                 self._root = root             # <<<<<<<<<<<<<<
  *         node = _elementFactory(self._doc, c_node)
  *         self.events_iterator._events.append( (event, node) )
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(11, 199, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_root));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
       __Pyx_GOTREF(__pyx_v_self->_root);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_root));
       __pyx_v_self->_root = __pyx_v_root;
 
-      /* "src/lxml/saxparser.pxi":197
+      /* "src/lxml/saxparser.pxi":198
  *         if self._root is None:
  *             root = self._doc.getroot()
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -124020,7 +131854,7 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
  */
     }
 
-    /* "src/lxml/saxparser.pxi":195
+    /* "src/lxml/saxparser.pxi":196
  *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:
  *         cdef _Element root
  *         if self._root is None:             # <<<<<<<<<<<<<<
@@ -124029,33 +131863,35 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
  */
   }
 
-  /* "src/lxml/saxparser.pxi":199
+  /* "src/lxml/saxparser.pxi":200
  *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
  *                 self._root = root
  *         node = _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
  *         self.events_iterator._events.append( (event, node) )
  *         return 0
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(11, 200, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base._doc);
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 199, __pyx_L1_error)
+  __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 200, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_node = ((struct LxmlElement *)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "src/lxml/saxparser.pxi":200
+  /* "src/lxml/saxparser.pxi":201
  *                 self._root = root
  *         node = _elementFactory(self._doc, c_node)
  *         self.events_iterator._events.append( (event, node) )             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(11, 201, __pyx_L1_error))
   if (unlikely(__pyx_v_self->events_iterator->_events == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-    __PYX_ERR(11, 200, __pyx_L1_error)
+    __PYX_ERR(11, 201, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 200, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 201, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_event);
   __Pyx_GIVEREF(__pyx_v_event);
@@ -124063,20 +131899,21 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
   PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_node));
-  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->events_iterator->_events, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 200, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->events_iterator->_events, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 201, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "src/lxml/saxparser.pxi":201
+  /* "src/lxml/saxparser.pxi":202
  *         node = _elementFactory(self._doc, c_node)
  *         self.events_iterator._events.append( (event, node) )
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef int flushEvents(self) except -1:
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(11, 202, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":193
+  /* "src/lxml/saxparser.pxi":194
  *         return 0
  * 
  *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
@@ -124093,11 +131930,12 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_root);
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":203
+/* "src/lxml/saxparser.pxi":204
  *         return 0
  * 
  *     cdef int flushEvents(self) except -1:             # <<<<<<<<<<<<<<
@@ -124108,6 +131946,7 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_pushEvent(struct __pyx_obj_4
 static int __pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self) {
   PyObject *__pyx_v_events = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -124115,48 +131954,52 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents(struct __pyx_obj
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("flushEvents", 0);
+  __Pyx_TraceCall("flushEvents", __pyx_f[11], 204, 0, __PYX_ERR(11, 204, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":204
+  /* "src/lxml/saxparser.pxi":205
  * 
  *     cdef int flushEvents(self) except -1:
  *         events = self.events_iterator._events             # <<<<<<<<<<<<<<
  *         while self._node_stack:
  *             events.append( ('end', self._node_stack.pop()) )
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(11, 205, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->events_iterator->_events;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_events = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":205
+  /* "src/lxml/saxparser.pxi":206
  *     cdef int flushEvents(self) except -1:
  *         events = self.events_iterator._events
  *         while self._node_stack:             # <<<<<<<<<<<<<<
  *             events.append( ('end', self._node_stack.pop()) )
  *             _pushSaxNsEndEvents(self)
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(11, 206, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = (__pyx_v_self->_node_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_node_stack) != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/saxparser.pxi":206
+    /* "src/lxml/saxparser.pxi":207
  *         events = self.events_iterator._events
  *         while self._node_stack:
  *             events.append( ('end', self._node_stack.pop()) )             # <<<<<<<<<<<<<<
  *             _pushSaxNsEndEvents(self)
  *         while self._ns_stack:
  */
+    __Pyx_TraceLine(207,0,__PYX_ERR(11, 207, __pyx_L1_error))
     if (unlikely(__pyx_v_events == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-      __PYX_ERR(11, 206, __pyx_L1_error)
+      __PYX_ERR(11, 207, __pyx_L1_error)
     }
     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
-      __PYX_ERR(11, 206, __pyx_L1_error)
+      __PYX_ERR(11, 207, __pyx_L1_error)
     }
-    __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_node_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 206, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_node_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 207, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 206, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 207, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_n_s_end);
     __Pyx_GIVEREF(__pyx_n_s_end);
@@ -124164,41 +132007,44 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents(struct __pyx_obj
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_events, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(11, 206, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_events, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(11, 207, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/saxparser.pxi":207
+    /* "src/lxml/saxparser.pxi":208
  *         while self._node_stack:
  *             events.append( ('end', self._node_stack.pop()) )
  *             _pushSaxNsEndEvents(self)             # <<<<<<<<<<<<<<
  *         while self._ns_stack:
  *             _pushSaxNsEndEvents(self)
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 207, __pyx_L1_error)
+    __Pyx_TraceLine(208,0,__PYX_ERR(11, 208, __pyx_L1_error))
+    __pyx_t_5 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 208, __pyx_L1_error)
   }
 
-  /* "src/lxml/saxparser.pxi":208
+  /* "src/lxml/saxparser.pxi":209
  *             events.append( ('end', self._node_stack.pop()) )
  *             _pushSaxNsEndEvents(self)
  *         while self._ns_stack:             # <<<<<<<<<<<<<<
  *             _pushSaxNsEndEvents(self)
  * 
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(11, 209, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = (__pyx_v_self->_ns_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_ns_stack) != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/saxparser.pxi":209
+    /* "src/lxml/saxparser.pxi":210
  *             _pushSaxNsEndEvents(self)
  *         while self._ns_stack:
  *             _pushSaxNsEndEvents(self)             # <<<<<<<<<<<<<<
  * 
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 209, __pyx_L1_error)
+    __Pyx_TraceLine(210,0,__PYX_ERR(11, 210, __pyx_L1_error))
+    __pyx_t_5 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 210, __pyx_L1_error)
   }
 
-  /* "src/lxml/saxparser.pxi":203
+  /* "src/lxml/saxparser.pxi":204
  *         return 0
  * 
  *     cdef int flushEvents(self) except -1:             # <<<<<<<<<<<<<<
@@ -124216,11 +132062,12 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents(struct __pyx_obj
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_events);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":211
+/* "src/lxml/saxparser.pxi":212
  *             _pushSaxNsEndEvents(self)
  * 
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -124229,30 +132076,34 @@ static int __pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents(struct __pyx_obj
  */
 
 static void __pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_handleSaxException", 0);
+  __Pyx_TraceCall("_handleSaxException", __pyx_f[11], 212, 0, __PYX_ERR(11, 212, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":212
+  /* "src/lxml/saxparser.pxi":213
  * 
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
  *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
  *         # stop parsing immediately
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(11, 213, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->errNo == XML_ERR_OK) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":213
+    /* "src/lxml/saxparser.pxi":214
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:
  *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
  *         # stop parsing immediately
  *         c_ctxt.wellFormed = 0
  */
+    __Pyx_TraceLine(214,0,__PYX_ERR(11, 214, __pyx_L1_error))
     __pyx_v_c_ctxt->errNo = XML_ERR_INTERNAL_ERROR;
 
-    /* "src/lxml/saxparser.pxi":212
+    /* "src/lxml/saxparser.pxi":213
  * 
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
  *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
@@ -124261,43 +132112,47 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException(struct
  */
   }
 
-  /* "src/lxml/saxparser.pxi":215
+  /* "src/lxml/saxparser.pxi":216
  *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
  *         # stop parsing immediately
  *         c_ctxt.wellFormed = 0             # <<<<<<<<<<<<<<
  *         c_ctxt.disableSAX = 1
  *         c_ctxt.instate = xmlparser.XML_PARSER_EOF
  */
+  __Pyx_TraceLine(216,0,__PYX_ERR(11, 216, __pyx_L1_error))
   __pyx_v_c_ctxt->wellFormed = 0;
 
-  /* "src/lxml/saxparser.pxi":216
+  /* "src/lxml/saxparser.pxi":217
  *         # stop parsing immediately
  *         c_ctxt.wellFormed = 0
  *         c_ctxt.disableSAX = 1             # <<<<<<<<<<<<<<
  *         c_ctxt.instate = xmlparser.XML_PARSER_EOF
  *         self._store_raised()
  */
+  __Pyx_TraceLine(217,0,__PYX_ERR(11, 217, __pyx_L1_error))
   __pyx_v_c_ctxt->disableSAX = 1;
 
-  /* "src/lxml/saxparser.pxi":217
+  /* "src/lxml/saxparser.pxi":218
  *         c_ctxt.wellFormed = 0
  *         c_ctxt.disableSAX = 1
  *         c_ctxt.instate = xmlparser.XML_PARSER_EOF             # <<<<<<<<<<<<<<
  *         self._store_raised()
  * 
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(11, 218, __pyx_L1_error))
   __pyx_v_c_ctxt->instate = XML_PARSER_EOF;
 
-  /* "src/lxml/saxparser.pxi":218
+  /* "src/lxml/saxparser.pxi":219
  *         c_ctxt.disableSAX = 1
  *         c_ctxt.instate = xmlparser.XML_PARSER_EOF
  *         self._store_raised()             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(219,0,__PYX_ERR(11, 219, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));
 
-  /* "src/lxml/saxparser.pxi":211
+  /* "src/lxml/saxparser.pxi":212
  *             _pushSaxNsEndEvents(self)
  * 
  *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -124306,10 +132161,15 @@ static void __pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException(struct
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._SaxParserContext._handleSaxException", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/saxparser.pxi":228
+/* "src/lxml/saxparser.pxi":229
  *     cdef int _event_index
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -124335,18 +132195,21 @@ static int __pyx_pw_4lxml_5etree_20_ParseEventsIterator_1__cinit__(PyObject *__p
 
 static int __pyx_pf_4lxml_5etree_20_ParseEventsIterator___cinit__(struct __pyx_obj_4lxml_5etree__ParseEventsIterator *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[11], 229, 0, __PYX_ERR(11, 229, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":229
+  /* "src/lxml/saxparser.pxi":230
  * 
  *     def __cinit__(self):
  *         self._events = []             # <<<<<<<<<<<<<<
  *         self._event_index = 0
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 229, __pyx_L1_error)
+  __Pyx_TraceLine(230,0,__PYX_ERR(11, 230, __pyx_L1_error))
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 230, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_events);
@@ -124354,16 +132217,17 @@ static int __pyx_pf_4lxml_5etree_20_ParseEventsIterator___cinit__(struct __pyx_o
   __pyx_v_self->_events = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":230
+  /* "src/lxml/saxparser.pxi":231
  *     def __cinit__(self):
  *         self._events = []
  *         self._event_index = 0             # <<<<<<<<<<<<<<
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(231,0,__PYX_ERR(11, 231, __pyx_L1_error))
   __pyx_v_self->_event_index = 0;
 
-  /* "src/lxml/saxparser.pxi":228
+  /* "src/lxml/saxparser.pxi":229
  *     cdef int _event_index
  * 
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -124379,11 +132243,12 @@ static int __pyx_pf_4lxml_5etree_20_ParseEventsIterator___cinit__(struct __pyx_o
   __Pyx_AddTraceback("lxml.etree._ParseEventsIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":232
+/* "src/lxml/saxparser.pxi":233
  *         self._event_index = 0
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -124406,22 +132271,25 @@ static PyObject *__pyx_pw_4lxml_5etree_20_ParseEventsIterator_3__iter__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_2__iter__(struct __pyx_obj_4lxml_5etree__ParseEventsIterator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[11], 233, 0, __PYX_ERR(11, 233, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":233
+  /* "src/lxml/saxparser.pxi":234
  * 
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(234,0,__PYX_ERR(11, 234, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":232
+  /* "src/lxml/saxparser.pxi":233
  *         self._event_index = 0
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -124430,13 +132298,17 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_2__iter__(struct _
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ParseEventsIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":235
+/* "src/lxml/saxparser.pxi":236
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -124462,6 +132334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
   PyObject *__pyx_v_events = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -124469,36 +132342,40 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
   int __pyx_t_4;
   Py_ssize_t __pyx_t_5;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[11], 236, 0, __PYX_ERR(11, 236, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":236
+  /* "src/lxml/saxparser.pxi":237
  * 
  *     def __next__(self):
  *         cdef int event_index = self._event_index             # <<<<<<<<<<<<<<
  *         events = self._events
  *         if event_index >= 2**10 or event_index * 2 >= len(events):
  */
+  __Pyx_TraceLine(237,0,__PYX_ERR(11, 237, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_event_index;
   __pyx_v_event_index = __pyx_t_1;
 
-  /* "src/lxml/saxparser.pxi":237
+  /* "src/lxml/saxparser.pxi":238
  *     def __next__(self):
  *         cdef int event_index = self._event_index
  *         events = self._events             # <<<<<<<<<<<<<<
  *         if event_index >= 2**10 or event_index * 2 >= len(events):
  *             if event_index:
  */
+  __Pyx_TraceLine(238,0,__PYX_ERR(11, 238, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_events;
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_events = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/saxparser.pxi":238
+  /* "src/lxml/saxparser.pxi":239
  *         cdef int event_index = self._event_index
  *         events = self._events
  *         if event_index >= 2**10 or event_index * 2 >= len(events):             # <<<<<<<<<<<<<<
  *             if event_index:
  *                 # clean up from time to time
  */
+  __Pyx_TraceLine(239,0,__PYX_ERR(11, 239, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_event_index >= 0x400) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -124507,48 +132384,51 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
   }
   if (unlikely(__pyx_v_events == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(11, 238, __pyx_L1_error)
+    __PYX_ERR(11, 239, __pyx_L1_error)
   }
-  __pyx_t_5 = PyList_GET_SIZE(__pyx_v_events); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(11, 238, __pyx_L1_error)
+  __pyx_t_5 = PyList_GET_SIZE(__pyx_v_events); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(11, 239, __pyx_L1_error)
   __pyx_t_4 = (((__pyx_v_event_index * 2) >= __pyx_t_5) != 0);
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "src/lxml/saxparser.pxi":239
+    /* "src/lxml/saxparser.pxi":240
  *         events = self._events
  *         if event_index >= 2**10 or event_index * 2 >= len(events):
  *             if event_index:             # <<<<<<<<<<<<<<
  *                 # clean up from time to time
  *                 del events[:event_index]
  */
+    __Pyx_TraceLine(240,0,__PYX_ERR(11, 240, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_event_index != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/saxparser.pxi":241
+      /* "src/lxml/saxparser.pxi":242
  *             if event_index:
  *                 # clean up from time to time
  *                 del events[:event_index]             # <<<<<<<<<<<<<<
  *                 self._event_index = event_index = 0
  *             if event_index >= len(events):
  */
+      __Pyx_TraceLine(242,0,__PYX_ERR(11, 242, __pyx_L1_error))
       if (unlikely(__pyx_v_events == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        __PYX_ERR(11, 241, __pyx_L1_error)
+        __PYX_ERR(11, 242, __pyx_L1_error)
       }
-      if (__Pyx_PyObject_DelSlice(__pyx_v_events, 0, __pyx_v_event_index, NULL, NULL, NULL, 0, 1, 1) < 0) __PYX_ERR(11, 241, __pyx_L1_error)
+      if (__Pyx_PyObject_DelSlice(__pyx_v_events, 0, __pyx_v_event_index, NULL, NULL, NULL, 0, 1, 1) < 0) __PYX_ERR(11, 242, __pyx_L1_error)
 
-      /* "src/lxml/saxparser.pxi":242
+      /* "src/lxml/saxparser.pxi":243
  *                 # clean up from time to time
  *                 del events[:event_index]
  *                 self._event_index = event_index = 0             # <<<<<<<<<<<<<<
  *             if event_index >= len(events):
  *                 raise StopIteration
  */
+      __Pyx_TraceLine(243,0,__PYX_ERR(11, 243, __pyx_L1_error))
       __pyx_v_self->_event_index = 0;
       __pyx_v_event_index = 0;
 
-      /* "src/lxml/saxparser.pxi":239
+      /* "src/lxml/saxparser.pxi":240
  *         events = self._events
  *         if event_index >= 2**10 or event_index * 2 >= len(events):
  *             if event_index:             # <<<<<<<<<<<<<<
@@ -124557,32 +132437,34 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
  */
     }
 
-    /* "src/lxml/saxparser.pxi":243
+    /* "src/lxml/saxparser.pxi":244
  *                 del events[:event_index]
  *                 self._event_index = event_index = 0
  *             if event_index >= len(events):             # <<<<<<<<<<<<<<
  *                 raise StopIteration
  *         item = events[event_index]
  */
+    __Pyx_TraceLine(244,0,__PYX_ERR(11, 244, __pyx_L1_error))
     if (unlikely(__pyx_v_events == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(11, 243, __pyx_L1_error)
+      __PYX_ERR(11, 244, __pyx_L1_error)
     }
-    __pyx_t_5 = PyList_GET_SIZE(__pyx_v_events); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(11, 243, __pyx_L1_error)
+    __pyx_t_5 = PyList_GET_SIZE(__pyx_v_events); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(11, 244, __pyx_L1_error)
     __pyx_t_3 = ((__pyx_v_event_index >= __pyx_t_5) != 0);
     if (unlikely(__pyx_t_3)) {
 
-      /* "src/lxml/saxparser.pxi":244
+      /* "src/lxml/saxparser.pxi":245
  *                 self._event_index = event_index = 0
  *             if event_index >= len(events):
  *                 raise StopIteration             # <<<<<<<<<<<<<<
  *         item = events[event_index]
  *         self._event_index = event_index + 1
  */
+      __Pyx_TraceLine(245,0,__PYX_ERR(11, 245, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-      __PYX_ERR(11, 244, __pyx_L1_error)
+      __PYX_ERR(11, 245, __pyx_L1_error)
 
-      /* "src/lxml/saxparser.pxi":243
+      /* "src/lxml/saxparser.pxi":244
  *                 del events[:event_index]
  *                 self._event_index = event_index = 0
  *             if event_index >= len(events):             # <<<<<<<<<<<<<<
@@ -124591,7 +132473,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
  */
     }
 
-    /* "src/lxml/saxparser.pxi":238
+    /* "src/lxml/saxparser.pxi":239
  *         cdef int event_index = self._event_index
  *         events = self._events
  *         if event_index >= 2**10 or event_index * 2 >= len(events):             # <<<<<<<<<<<<<<
@@ -124600,44 +132482,47 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
  */
   }
 
-  /* "src/lxml/saxparser.pxi":245
+  /* "src/lxml/saxparser.pxi":246
  *             if event_index >= len(events):
  *                 raise StopIteration
  *         item = events[event_index]             # <<<<<<<<<<<<<<
  *         self._event_index = event_index + 1
  *         return item
  */
+  __Pyx_TraceLine(246,0,__PYX_ERR(11, 246, __pyx_L1_error))
   if (unlikely(__pyx_v_events == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(11, 245, __pyx_L1_error)
+    __PYX_ERR(11, 246, __pyx_L1_error)
   }
-  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_events, __pyx_v_event_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 245, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_events, __pyx_v_event_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 246, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_item = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "src/lxml/saxparser.pxi":246
+  /* "src/lxml/saxparser.pxi":247
  *                 raise StopIteration
  *         item = events[event_index]
  *         self._event_index = event_index + 1             # <<<<<<<<<<<<<<
  *         return item
  * 
  */
+  __Pyx_TraceLine(247,0,__PYX_ERR(11, 247, __pyx_L1_error))
   __pyx_v_self->_event_index = (__pyx_v_event_index + 1);
 
-  /* "src/lxml/saxparser.pxi":247
+  /* "src/lxml/saxparser.pxi":248
  *         item = events[event_index]
  *         self._event_index = event_index + 1
  *         return item             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(11, 248, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_item);
   __pyx_r = __pyx_v_item;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":235
+  /* "src/lxml/saxparser.pxi":236
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -124654,11 +132539,12 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ParseEventsIterator_4__next__(struct _
   __Pyx_XDECREF(__pyx_v_events);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":250
+/* "src/lxml/saxparser.pxi":251
  * 
  * 
  * cdef int _appendNsEvents(_SaxParserContext context, int c_nb_namespaces,             # <<<<<<<<<<<<<<
@@ -124670,6 +132556,7 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
   CYTHON_UNUSED int __pyx_v_i;
   PyObject *__pyx_v_ns_tuple = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -124679,47 +132566,52 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_appendNsEvents", 0);
+  __Pyx_TraceCall("_appendNsEvents", __pyx_f[11], 251, 0, __PYX_ERR(11, 251, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":253
+  /* "src/lxml/saxparser.pxi":254
  *                          const_xmlChar** c_namespaces) except -1:
  *     cdef int i
  *     for i in xrange(c_nb_namespaces):             # <<<<<<<<<<<<<<
  *         ns_tuple = (funicodeOrEmpty(c_namespaces[0]),
  *                     funicode(c_namespaces[1]))
  */
+  __Pyx_TraceLine(254,0,__PYX_ERR(11, 254, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_nb_namespaces;
   __pyx_t_2 = __pyx_t_1;
   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
     __pyx_v_i = __pyx_t_3;
 
-    /* "src/lxml/saxparser.pxi":254
+    /* "src/lxml/saxparser.pxi":255
  *     cdef int i
  *     for i in xrange(c_nb_namespaces):
  *         ns_tuple = (funicodeOrEmpty(c_namespaces[0]),             # <<<<<<<<<<<<<<
  *                     funicode(c_namespaces[1]))
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree_funicodeOrEmpty((__pyx_v_c_namespaces[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 254, __pyx_L1_error)
+    __Pyx_TraceLine(255,0,__PYX_ERR(11, 255, __pyx_L1_error))
+    __pyx_t_4 = __pyx_f_4lxml_5etree_funicodeOrEmpty((__pyx_v_c_namespaces[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 255, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
 
-    /* "src/lxml/saxparser.pxi":255
+    /* "src/lxml/saxparser.pxi":256
  *     for i in xrange(c_nb_namespaces):
  *         ns_tuple = (funicodeOrEmpty(c_namespaces[0]),
  *                     funicode(c_namespaces[1]))             # <<<<<<<<<<<<<<
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )
  *         c_namespaces += 2
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 255, __pyx_L1_error)
+    __Pyx_TraceLine(256,0,__PYX_ERR(11, 256, __pyx_L1_error))
+    __pyx_t_5 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 256, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
 
-    /* "src/lxml/saxparser.pxi":254
+    /* "src/lxml/saxparser.pxi":255
  *     cdef int i
  *     for i in xrange(c_nb_namespaces):
  *         ns_tuple = (funicodeOrEmpty(c_namespaces[0]),             # <<<<<<<<<<<<<<
  *                     funicode(c_namespaces[1]))
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )
  */
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 254, __pyx_L1_error)
+    __Pyx_TraceLine(255,0,__PYX_ERR(11, 255, __pyx_L1_error))
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 255, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
@@ -124730,18 +132622,19 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
     __Pyx_XDECREF_SET(__pyx_v_ns_tuple, ((PyObject*)__pyx_t_6));
     __pyx_t_6 = 0;
 
-    /* "src/lxml/saxparser.pxi":256
+    /* "src/lxml/saxparser.pxi":257
  *         ns_tuple = (funicodeOrEmpty(c_namespaces[0]),
  *                     funicode(c_namespaces[1]))
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )             # <<<<<<<<<<<<<<
  *         c_namespaces += 2
  *     return 0
  */
+    __Pyx_TraceLine(257,0,__PYX_ERR(11, 257, __pyx_L1_error))
     if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-      __PYX_ERR(11, 256, __pyx_L1_error)
+      __PYX_ERR(11, 257, __pyx_L1_error)
     }
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 256, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 257, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_kp_s_start_ns);
     __Pyx_GIVEREF(__pyx_kp_s_start_ns);
@@ -124749,30 +132642,32 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
     __Pyx_INCREF(__pyx_v_ns_tuple);
     __Pyx_GIVEREF(__pyx_v_ns_tuple);
     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ns_tuple);
-    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 256, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 257, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/saxparser.pxi":257
+    /* "src/lxml/saxparser.pxi":258
  *                     funicode(c_namespaces[1]))
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )
  *         c_namespaces += 2             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+    __Pyx_TraceLine(258,0,__PYX_ERR(11, 258, __pyx_L1_error))
     __pyx_v_c_namespaces = (__pyx_v_c_namespaces + 2);
   }
 
-  /* "src/lxml/saxparser.pxi":258
+  /* "src/lxml/saxparser.pxi":259
  *         context.events_iterator._events.append( ("start-ns", ns_tuple) )
  *         c_namespaces += 2
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(11, 259, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":250
+  /* "src/lxml/saxparser.pxi":251
  * 
  * 
  * cdef int _appendNsEvents(_SaxParserContext context, int c_nb_namespaces,             # <<<<<<<<<<<<<<
@@ -124789,11 +132684,12 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns_tuple);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":261
+/* "src/lxml/saxparser.pxi":262
  * 
  * 
  * cdef void _handleSaxStart(             # <<<<<<<<<<<<<<
@@ -124804,6 +132700,7 @@ static int __pyx_f_4lxml_5etree__appendNsEvents(struct __pyx_obj_4lxml_5etree__S
 static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlChar *__pyx_v_c_localname, const xmlChar *__pyx_v_c_prefix, const xmlChar *__pyx_v_c_namespace, int __pyx_v_c_nb_namespaces, const xmlChar **__pyx_v_c_namespaces, int __pyx_v_c_nb_attributes, int __pyx_v_c_nb_defaulted, const xmlChar **__pyx_v_c_attributes) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -124822,23 +132719,26 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxStart", 0);
+  __Pyx_TraceCall("_handleSaxStart", __pyx_f[11], 262, 0, __PYX_ERR(11, 262, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":269
+  /* "src/lxml/saxparser.pxi":270
  *     cdef int i
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(11, 270, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":270
+  /* "src/lxml/saxparser.pxi":271
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(271,0,__PYX_ERR(11, 271, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -124850,16 +132750,17 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":271
+    /* "src/lxml/saxparser.pxi":272
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(272,0,__PYX_ERR(11, 272, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":270
+    /* "src/lxml/saxparser.pxi":271
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -124868,25 +132769,27 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
   }
 
-  /* "src/lxml/saxparser.pxi":272
+  /* "src/lxml/saxparser.pxi":273
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         if (c_nb_namespaces and
  */
+  __Pyx_TraceLine(273,0,__PYX_ERR(11, 273, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":273
+  /* "src/lxml/saxparser.pxi":274
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  */
+  __Pyx_TraceLine(274,0,__PYX_ERR(11, 274, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -124897,13 +132800,14 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":274
+        /* "src/lxml/saxparser.pxi":275
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  */
+        __Pyx_TraceLine(275,0,__PYX_ERR(11, 275, __pyx_L9_error))
         __pyx_t_2 = (__pyx_v_c_nb_namespaces != 0);
         if (__pyx_t_2) {
         } else {
@@ -124911,36 +132815,39 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
           goto __pyx_L16_bool_binop_done;
         }
 
-        /* "src/lxml/saxparser.pxi":275
+        /* "src/lxml/saxparser.pxi":276
  *     try:
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):             # <<<<<<<<<<<<<<
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,
  */
+        __Pyx_TraceLine(276,0,__PYX_ERR(11, 276, __pyx_L9_error))
         __pyx_t_2 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS) != 0);
         __pyx_t_1 = __pyx_t_2;
         __pyx_L16_bool_binop_done:;
 
-        /* "src/lxml/saxparser.pxi":274
+        /* "src/lxml/saxparser.pxi":275
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  */
+        __Pyx_TraceLine(275,0,__PYX_ERR(11, 275, __pyx_L9_error))
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":276
+          /* "src/lxml/saxparser.pxi":277
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)             # <<<<<<<<<<<<<<
  *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,
  *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
  */
-          __pyx_t_7 = __pyx_f_4lxml_5etree__appendNsEvents(__pyx_v_context, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 276, __pyx_L9_error)
+          __Pyx_TraceLine(277,0,__PYX_ERR(11, 277, __pyx_L9_error))
+          __pyx_t_7 = __pyx_f_4lxml_5etree__appendNsEvents(__pyx_v_context, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 277, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":274
+          /* "src/lxml/saxparser.pxi":275
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
@@ -124949,35 +132856,38 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
         }
 
-        /* "src/lxml/saxparser.pxi":277
+        /* "src/lxml/saxparser.pxi":278
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,             # <<<<<<<<<<<<<<
  *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
  *                               c_nb_defaulted, c_attributes)
  */
+        __Pyx_TraceLine(278,0,__PYX_ERR(11, 278, __pyx_L9_error))
         __pyx_v_context->_origSaxStart(__pyx_v_c_ctxt, __pyx_v_c_localname, __pyx_v_c_prefix, __pyx_v_c_namespace, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces, __pyx_v_c_nb_attributes, __pyx_v_c_nb_defaulted, __pyx_v_c_attributes);
 
-        /* "src/lxml/saxparser.pxi":280
+        /* "src/lxml/saxparser.pxi":281
  *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
  *                               c_nb_defaulted, c_attributes)
  *         if c_ctxt.html:             # <<<<<<<<<<<<<<
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  * 
  */
+        __Pyx_TraceLine(281,0,__PYX_ERR(11, 281, __pyx_L9_error))
         __pyx_t_1 = (__pyx_v_c_ctxt->html != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":281
+          /* "src/lxml/saxparser.pxi":282
  *                               c_nb_defaulted, c_attributes)
  *         if c_ctxt.html:
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)             # <<<<<<<<<<<<<<
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  */
+          __Pyx_TraceLine(282,0,__PYX_ERR(11, 282, __pyx_L9_error))
           (void)(__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_ctxt->dict, __pyx_v_c_ctxt->node));
 
-          /* "src/lxml/saxparser.pxi":280
+          /* "src/lxml/saxparser.pxi":281
  *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
  *                               c_nb_defaulted, c_attributes)
  *         if c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -124986,33 +132896,35 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
         }
 
-        /* "src/lxml/saxparser.pxi":283
+        /* "src/lxml/saxparser.pxi":284
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  */
+        __Pyx_TraceLine(284,0,__PYX_ERR(11, 284, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":284
+          /* "src/lxml/saxparser.pxi":285
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)             # <<<<<<<<<<<<<<
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  */
+          __Pyx_TraceLine(285,0,__PYX_ERR(11, 285, __pyx_L9_error))
           if (unlikely(__pyx_v_context->_ns_stack == Py_None)) {
             PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-            __PYX_ERR(11, 284, __pyx_L9_error)
+            __PYX_ERR(11, 285, __pyx_L9_error)
           }
-          __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_c_nb_namespaces); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 284, __pyx_L9_error)
+          __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_c_nb_namespaces); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 285, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_context->_ns_stack, __pyx_t_3); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 284, __pyx_L9_error)
+          __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_context->_ns_stack, __pyx_t_3); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 285, __pyx_L9_error)
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-          /* "src/lxml/saxparser.pxi":283
+          /* "src/lxml/saxparser.pxi":284
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
@@ -125021,26 +132933,28 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
         }
 
-        /* "src/lxml/saxparser.pxi":285
+        /* "src/lxml/saxparser.pxi":286
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,
  */
+        __Pyx_TraceLine(286,0,__PYX_ERR(11, 286, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":287
+          /* "src/lxml/saxparser.pxi":288
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,             # <<<<<<<<<<<<<<
  *                                c_localname, None)
  *     except:
  */
-          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, __pyx_v_c_namespace, __pyx_v_c_localname, Py_None); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 287, __pyx_L9_error)
+          __Pyx_TraceLine(288,0,__PYX_ERR(11, 288, __pyx_L9_error))
+          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, __pyx_v_c_namespace, __pyx_v_c_localname, Py_None); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 288, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":285
+          /* "src/lxml/saxparser.pxi":286
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
@@ -125049,7 +132963,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
         }
 
-        /* "src/lxml/saxparser.pxi":273
+        /* "src/lxml/saxparser.pxi":274
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -125064,27 +132978,29 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
       __pyx_L9_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":289
+      /* "src/lxml/saxparser.pxi":290
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,
  *                                c_localname, None)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(290,0,__PYX_ERR(11, 290, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxStart", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(11, 289, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(11, 290, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GOTREF(__pyx_t_10);
 
-        /* "src/lxml/saxparser.pxi":290
+        /* "src/lxml/saxparser.pxi":291
  *                                c_localname, None)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(291,0,__PYX_ERR(11, 291, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -125093,7 +133009,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":273
+      /* "src/lxml/saxparser.pxi":274
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -125114,13 +133030,14 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
     }
   }
 
-  /* "src/lxml/saxparser.pxi":292
+  /* "src/lxml/saxparser.pxi":293
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(11, 293, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -125159,7 +133076,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
     }
   }
 
-  /* "src/lxml/saxparser.pxi":261
+  /* "src/lxml/saxparser.pxi":262
  * 
  * 
  * cdef void _handleSaxStart(             # <<<<<<<<<<<<<<
@@ -125168,15 +133085,21 @@ static void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, const xmlCh
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxStart", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":295
+/* "src/lxml/saxparser.pxi":296
  * 
  * 
  * cdef void _handleSaxTargetStart(             # <<<<<<<<<<<<<<
@@ -125195,6 +133118,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
   PyObject *__pyx_v_nsmap = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_v_element = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -125215,23 +133139,26 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxTargetStart", 0);
+  __Pyx_TraceCall("_handleSaxTargetStart", __pyx_f[11], 296, 0, __PYX_ERR(11, 296, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":303
+  /* "src/lxml/saxparser.pxi":304
  *     cdef int i
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(11, 304, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":304
+  /* "src/lxml/saxparser.pxi":305
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(305,0,__PYX_ERR(11, 305, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -125243,16 +133170,17 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":305
+    /* "src/lxml/saxparser.pxi":306
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(306,0,__PYX_ERR(11, 306, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":304
+    /* "src/lxml/saxparser.pxi":305
  *     cdef size_t c_len
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -125261,25 +133189,27 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
   }
 
-  /* "src/lxml/saxparser.pxi":306
+  /* "src/lxml/saxparser.pxi":307
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         if (c_nb_namespaces and
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(11, 307, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":307
+  /* "src/lxml/saxparser.pxi":308
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(11, 308, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -125290,13 +133220,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":308
+        /* "src/lxml/saxparser.pxi":309
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  */
+        __Pyx_TraceLine(309,0,__PYX_ERR(11, 309, __pyx_L9_error))
         __pyx_t_2 = (__pyx_v_c_nb_namespaces != 0);
         if (__pyx_t_2) {
         } else {
@@ -125304,36 +133235,39 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
           goto __pyx_L16_bool_binop_done;
         }
 
-        /* "src/lxml/saxparser.pxi":309
+        /* "src/lxml/saxparser.pxi":310
  *     try:
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):             # <<<<<<<<<<<<<<
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  *         if c_nb_defaulted > 0:
  */
+        __Pyx_TraceLine(310,0,__PYX_ERR(11, 310, __pyx_L9_error))
         __pyx_t_2 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS) != 0);
         __pyx_t_1 = __pyx_t_2;
         __pyx_L16_bool_binop_done:;
 
-        /* "src/lxml/saxparser.pxi":308
+        /* "src/lxml/saxparser.pxi":309
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  */
+        __Pyx_TraceLine(309,0,__PYX_ERR(11, 309, __pyx_L9_error))
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":310
+          /* "src/lxml/saxparser.pxi":311
  *         if (c_nb_namespaces and
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)             # <<<<<<<<<<<<<<
  *         if c_nb_defaulted > 0:
  *             # only add default attributes if we asked for them
  */
-          __pyx_t_7 = __pyx_f_4lxml_5etree__appendNsEvents(__pyx_v_context, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 310, __pyx_L9_error)
+          __Pyx_TraceLine(311,0,__PYX_ERR(11, 311, __pyx_L9_error))
+          __pyx_t_7 = __pyx_f_4lxml_5etree__appendNsEvents(__pyx_v_context, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 311, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":308
+          /* "src/lxml/saxparser.pxi":309
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if (c_nb_namespaces and             # <<<<<<<<<<<<<<
@@ -125342,36 +133276,39 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
         }
 
-        /* "src/lxml/saxparser.pxi":311
+        /* "src/lxml/saxparser.pxi":312
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  *         if c_nb_defaulted > 0:             # <<<<<<<<<<<<<<
  *             # only add default attributes if we asked for them
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
  */
+        __Pyx_TraceLine(312,0,__PYX_ERR(11, 312, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_c_nb_defaulted > 0) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":313
+          /* "src/lxml/saxparser.pxi":314
  *         if c_nb_defaulted > 0:
  *             # only add default attributes if we asked for them
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:             # <<<<<<<<<<<<<<
  *                 c_nb_attributes -= c_nb_defaulted
  *         if c_nb_attributes == 0:
  */
+          __Pyx_TraceLine(314,0,__PYX_ERR(11, 314, __pyx_L9_error))
           __pyx_t_1 = (((__pyx_v_c_ctxt->loadsubset & XML_COMPLETE_ATTRS) == 0) != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/saxparser.pxi":314
+            /* "src/lxml/saxparser.pxi":315
  *             # only add default attributes if we asked for them
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
  *                 c_nb_attributes -= c_nb_defaulted             # <<<<<<<<<<<<<<
  *         if c_nb_attributes == 0:
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  */
+            __Pyx_TraceLine(315,0,__PYX_ERR(11, 315, __pyx_L9_error))
             __pyx_v_c_nb_attributes = (__pyx_v_c_nb_attributes - __pyx_v_c_nb_defaulted);
 
-            /* "src/lxml/saxparser.pxi":313
+            /* "src/lxml/saxparser.pxi":314
  *         if c_nb_defaulted > 0:
  *             # only add default attributes if we asked for them
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:             # <<<<<<<<<<<<<<
@@ -125380,7 +133317,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
           }
 
-          /* "src/lxml/saxparser.pxi":311
+          /* "src/lxml/saxparser.pxi":312
  *                 context._event_filter & PARSE_EVENT_FILTER_START_NS):
  *             _appendNsEvents(context, c_nb_namespaces, c_namespaces)
  *         if c_nb_defaulted > 0:             # <<<<<<<<<<<<<<
@@ -125389,27 +133326,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
         }
 
-        /* "src/lxml/saxparser.pxi":315
+        /* "src/lxml/saxparser.pxi":316
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
  *                 c_nb_attributes -= c_nb_defaulted
  *         if c_nb_attributes == 0:             # <<<<<<<<<<<<<<
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  *         else:
  */
+        __Pyx_TraceLine(316,0,__PYX_ERR(11, 316, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_c_nb_attributes == 0) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":316
+          /* "src/lxml/saxparser.pxi":317
  *                 c_nb_attributes -= c_nb_defaulted
  *         if c_nb_attributes == 0:
  *             attrib = IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
  *         else:
  *             attrib = {}
  */
+          __Pyx_TraceLine(317,0,__PYX_ERR(11, 317, __pyx_L9_error))
           __Pyx_INCREF(__pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
           __pyx_v_attrib = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
 
-          /* "src/lxml/saxparser.pxi":315
+          /* "src/lxml/saxparser.pxi":316
  *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
  *                 c_nb_attributes -= c_nb_defaulted
  *         if c_nb_attributes == 0:             # <<<<<<<<<<<<<<
@@ -125419,64 +133358,69 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
           goto __pyx_L20;
         }
 
-        /* "src/lxml/saxparser.pxi":318
+        /* "src/lxml/saxparser.pxi":319
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  *         else:
  *             attrib = {}             # <<<<<<<<<<<<<<
  *             for i in xrange(c_nb_attributes):
  *                 name = _namespacedNameFromNsName(
  */
+        __Pyx_TraceLine(319,0,__PYX_ERR(11, 319, __pyx_L9_error))
         /*else*/ {
-          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 318, __pyx_L9_error)
+          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 319, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
           __pyx_v_attrib = __pyx_t_3;
           __pyx_t_3 = 0;
 
-          /* "src/lxml/saxparser.pxi":319
+          /* "src/lxml/saxparser.pxi":320
  *         else:
  *             attrib = {}
  *             for i in xrange(c_nb_attributes):             # <<<<<<<<<<<<<<
  *                 name = _namespacedNameFromNsName(
  *                     c_attributes[2], c_attributes[0])
  */
+          __Pyx_TraceLine(320,0,__PYX_ERR(11, 320, __pyx_L9_error))
           __pyx_t_7 = __pyx_v_c_nb_attributes;
           __pyx_t_8 = __pyx_t_7;
           for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
             __pyx_v_i = __pyx_t_9;
 
-            /* "src/lxml/saxparser.pxi":320
+            /* "src/lxml/saxparser.pxi":321
  *             attrib = {}
  *             for i in xrange(c_nb_attributes):
  *                 name = _namespacedNameFromNsName(             # <<<<<<<<<<<<<<
  *                     c_attributes[2], c_attributes[0])
  *                 if c_attributes[3] is NULL:
  */
-            __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName((__pyx_v_c_attributes[2]), (__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 320, __pyx_L9_error)
+            __Pyx_TraceLine(321,0,__PYX_ERR(11, 321, __pyx_L9_error))
+            __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName((__pyx_v_c_attributes[2]), (__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 321, __pyx_L9_error)
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
             __pyx_t_3 = 0;
 
-            /* "src/lxml/saxparser.pxi":322
+            /* "src/lxml/saxparser.pxi":323
  *                 name = _namespacedNameFromNsName(
  *                     c_attributes[2], c_attributes[0])
  *                 if c_attributes[3] is NULL:             # <<<<<<<<<<<<<<
  *                     value = ''
  *                 else:
  */
+            __Pyx_TraceLine(323,0,__PYX_ERR(11, 323, __pyx_L9_error))
             __pyx_t_1 = (((__pyx_v_c_attributes[3]) == NULL) != 0);
             if (__pyx_t_1) {
 
-              /* "src/lxml/saxparser.pxi":323
+              /* "src/lxml/saxparser.pxi":324
  *                     c_attributes[2], c_attributes[0])
  *                 if c_attributes[3] is NULL:
  *                     value = ''             # <<<<<<<<<<<<<<
  *                 else:
  *                     c_len = c_attributes[4] - c_attributes[3]
  */
-              __Pyx_INCREF(__pyx_kp_s__16);
-              __Pyx_XDECREF_SET(__pyx_v_value, __pyx_kp_s__16);
+              __Pyx_TraceLine(324,0,__PYX_ERR(11, 324, __pyx_L9_error))
+              __Pyx_INCREF(__pyx_kp_s__23);
+              __Pyx_XDECREF_SET(__pyx_v_value, __pyx_kp_s__23);
 
-              /* "src/lxml/saxparser.pxi":322
+              /* "src/lxml/saxparser.pxi":323
  *                 name = _namespacedNameFromNsName(
  *                     c_attributes[2], c_attributes[0])
  *                 if c_attributes[3] is NULL:             # <<<<<<<<<<<<<<
@@ -125486,72 +133430,78 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
               goto __pyx_L23;
             }
 
-            /* "src/lxml/saxparser.pxi":325
+            /* "src/lxml/saxparser.pxi":326
  *                     value = ''
  *                 else:
  *                     c_len = c_attributes[4] - c_attributes[3]             # <<<<<<<<<<<<<<
  *                     value = c_attributes[3][:c_len].decode('utf8')
  *                 attrib[name] = value
  */
+            __Pyx_TraceLine(326,0,__PYX_ERR(11, 326, __pyx_L9_error))
             /*else*/ {
               __pyx_v_c_len = ((__pyx_v_c_attributes[4]) - (__pyx_v_c_attributes[3]));
 
-              /* "src/lxml/saxparser.pxi":326
+              /* "src/lxml/saxparser.pxi":327
  *                 else:
  *                     c_len = c_attributes[4] - c_attributes[3]
  *                     value = c_attributes[3][:c_len].decode('utf8')             # <<<<<<<<<<<<<<
  *                 attrib[name] = value
  *                 c_attributes += 5
  */
-              __pyx_t_3 = __Pyx_decode_c_string(((char const *)(__pyx_v_c_attributes[3])), 0, __pyx_v_c_len, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 326, __pyx_L9_error)
+              __Pyx_TraceLine(327,0,__PYX_ERR(11, 327, __pyx_L9_error))
+              __pyx_t_3 = __Pyx_decode_c_string(((char const *)(__pyx_v_c_attributes[3])), 0, __pyx_v_c_len, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 327, __pyx_L9_error)
               __Pyx_GOTREF(__pyx_t_3);
               __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_3);
               __pyx_t_3 = 0;
             }
             __pyx_L23:;
 
-            /* "src/lxml/saxparser.pxi":327
+            /* "src/lxml/saxparser.pxi":328
  *                     c_len = c_attributes[4] - c_attributes[3]
  *                     value = c_attributes[3][:c_len].decode('utf8')
  *                 attrib[name] = value             # <<<<<<<<<<<<<<
  *                 c_attributes += 5
  *         if c_nb_namespaces == 0:
  */
-            if (unlikely(PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_v_value) < 0)) __PYX_ERR(11, 327, __pyx_L9_error)
+            __Pyx_TraceLine(328,0,__PYX_ERR(11, 328, __pyx_L9_error))
+            if (unlikely(PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_v_value) < 0)) __PYX_ERR(11, 328, __pyx_L9_error)
 
-            /* "src/lxml/saxparser.pxi":328
+            /* "src/lxml/saxparser.pxi":329
  *                     value = c_attributes[3][:c_len].decode('utf8')
  *                 attrib[name] = value
  *                 c_attributes += 5             # <<<<<<<<<<<<<<
  *         if c_nb_namespaces == 0:
  *             nsmap = IMMUTABLE_EMPTY_MAPPING
  */
+            __Pyx_TraceLine(329,0,__PYX_ERR(11, 329, __pyx_L9_error))
             __pyx_v_c_attributes = (__pyx_v_c_attributes + 5);
           }
         }
         __pyx_L20:;
 
-        /* "src/lxml/saxparser.pxi":329
+        /* "src/lxml/saxparser.pxi":330
  *                 attrib[name] = value
  *                 c_attributes += 5
  *         if c_nb_namespaces == 0:             # <<<<<<<<<<<<<<
  *             nsmap = IMMUTABLE_EMPTY_MAPPING
  *         else:
  */
+        __Pyx_TraceLine(330,0,__PYX_ERR(11, 330, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_c_nb_namespaces == 0) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":330
+          /* "src/lxml/saxparser.pxi":331
  *                 c_attributes += 5
  *         if c_nb_namespaces == 0:
  *             nsmap = IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
  *         else:
  *             nsmap = {}
  */
+          __Pyx_TraceLine(331,0,__PYX_ERR(11, 331, __pyx_L9_error))
           __Pyx_INCREF(__pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
           __pyx_v_nsmap = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
 
-          /* "src/lxml/saxparser.pxi":329
+          /* "src/lxml/saxparser.pxi":330
  *                 attrib[name] = value
  *                 c_attributes += 5
  *         if c_nb_namespaces == 0:             # <<<<<<<<<<<<<<
@@ -125561,117 +133511,126 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
           goto __pyx_L24;
         }
 
-        /* "src/lxml/saxparser.pxi":332
+        /* "src/lxml/saxparser.pxi":333
  *             nsmap = IMMUTABLE_EMPTY_MAPPING
  *         else:
  *             nsmap = {}             # <<<<<<<<<<<<<<
  *             for i in xrange(c_nb_namespaces):
  *                 prefix = funicodeOrNone(c_namespaces[0])
  */
+        __Pyx_TraceLine(333,0,__PYX_ERR(11, 333, __pyx_L9_error))
         /*else*/ {
-          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 332, __pyx_L9_error)
+          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 333, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
           __pyx_v_nsmap = __pyx_t_3;
           __pyx_t_3 = 0;
 
-          /* "src/lxml/saxparser.pxi":333
+          /* "src/lxml/saxparser.pxi":334
  *         else:
  *             nsmap = {}
  *             for i in xrange(c_nb_namespaces):             # <<<<<<<<<<<<<<
  *                 prefix = funicodeOrNone(c_namespaces[0])
  *                 nsmap[prefix] = funicode(c_namespaces[1])
  */
+          __Pyx_TraceLine(334,0,__PYX_ERR(11, 334, __pyx_L9_error))
           __pyx_t_7 = __pyx_v_c_nb_namespaces;
           __pyx_t_8 = __pyx_t_7;
           for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
             __pyx_v_i = __pyx_t_9;
 
-            /* "src/lxml/saxparser.pxi":334
+            /* "src/lxml/saxparser.pxi":335
  *             nsmap = {}
  *             for i in xrange(c_nb_namespaces):
  *                 prefix = funicodeOrNone(c_namespaces[0])             # <<<<<<<<<<<<<<
  *                 nsmap[prefix] = funicode(c_namespaces[1])
  *                 c_namespaces += 2
  */
-            __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone((__pyx_v_c_namespaces[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 334, __pyx_L9_error)
+            __Pyx_TraceLine(335,0,__PYX_ERR(11, 335, __pyx_L9_error))
+            __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone((__pyx_v_c_namespaces[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 335, __pyx_L9_error)
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_3);
             __pyx_t_3 = 0;
 
-            /* "src/lxml/saxparser.pxi":335
+            /* "src/lxml/saxparser.pxi":336
  *             for i in xrange(c_nb_namespaces):
  *                 prefix = funicodeOrNone(c_namespaces[0])
  *                 nsmap[prefix] = funicode(c_namespaces[1])             # <<<<<<<<<<<<<<
  *                 c_namespaces += 2
  *         element = _callTargetSaxStart(
  */
-            __pyx_t_3 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 335, __pyx_L9_error)
+            __Pyx_TraceLine(336,0,__PYX_ERR(11, 336, __pyx_L9_error))
+            __pyx_t_3 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 336, __pyx_L9_error)
             __Pyx_GOTREF(__pyx_t_3);
-            if (unlikely(PyObject_SetItem(__pyx_v_nsmap, __pyx_v_prefix, __pyx_t_3) < 0)) __PYX_ERR(11, 335, __pyx_L9_error)
+            if (unlikely(PyObject_SetItem(__pyx_v_nsmap, __pyx_v_prefix, __pyx_t_3) < 0)) __PYX_ERR(11, 336, __pyx_L9_error)
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-            /* "src/lxml/saxparser.pxi":336
+            /* "src/lxml/saxparser.pxi":337
  *                 prefix = funicodeOrNone(c_namespaces[0])
  *                 nsmap[prefix] = funicode(c_namespaces[1])
  *                 c_namespaces += 2             # <<<<<<<<<<<<<<
  *         element = _callTargetSaxStart(
  *             context, c_ctxt,
  */
+            __Pyx_TraceLine(337,0,__PYX_ERR(11, 337, __pyx_L9_error))
             __pyx_v_c_namespaces = (__pyx_v_c_namespaces + 2);
           }
         }
         __pyx_L24:;
 
-        /* "src/lxml/saxparser.pxi":339
+        /* "src/lxml/saxparser.pxi":340
  *         element = _callTargetSaxStart(
  *             context, c_ctxt,
  *             _namespacedNameFromNsName(c_namespace, c_localname),             # <<<<<<<<<<<<<<
  *             attrib, nsmap)
  * 
  */
-        __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 339, __pyx_L9_error)
+        __Pyx_TraceLine(340,0,__PYX_ERR(11, 340, __pyx_L9_error))
+        __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 340, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":337
+        /* "src/lxml/saxparser.pxi":338
  *                 nsmap[prefix] = funicode(c_namespaces[1])
  *                 c_namespaces += 2
  *         element = _callTargetSaxStart(             # <<<<<<<<<<<<<<
  *             context, c_ctxt,
  *             _namespacedNameFromNsName(c_namespace, c_localname),
  */
-        __pyx_t_10 = __pyx_f_4lxml_5etree__callTargetSaxStart(__pyx_v_context, __pyx_v_c_ctxt, __pyx_t_3, __pyx_v_attrib, __pyx_v_nsmap); if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 337, __pyx_L9_error)
+        __Pyx_TraceLine(338,0,__PYX_ERR(11, 338, __pyx_L9_error))
+        __pyx_t_10 = __pyx_f_4lxml_5etree__callTargetSaxStart(__pyx_v_context, __pyx_v_c_ctxt, __pyx_t_3, __pyx_v_attrib, __pyx_v_nsmap); if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 338, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_v_element = __pyx_t_10;
         __pyx_t_10 = 0;
 
-        /* "src/lxml/saxparser.pxi":342
+        /* "src/lxml/saxparser.pxi":343
  *             attrib, nsmap)
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  */
+        __Pyx_TraceLine(343,0,__PYX_ERR(11, 343, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":343
+          /* "src/lxml/saxparser.pxi":344
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)             # <<<<<<<<<<<<<<
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  */
+          __Pyx_TraceLine(344,0,__PYX_ERR(11, 344, __pyx_L9_error))
           if (unlikely(__pyx_v_context->_ns_stack == Py_None)) {
             PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-            __PYX_ERR(11, 343, __pyx_L9_error)
+            __PYX_ERR(11, 344, __pyx_L9_error)
           }
-          __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_c_nb_namespaces); if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 343, __pyx_L9_error)
+          __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_c_nb_namespaces); if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 344, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_context->_ns_stack, __pyx_t_10); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(11, 343, __pyx_L9_error)
+          __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_context->_ns_stack, __pyx_t_10); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(11, 344, __pyx_L9_error)
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-          /* "src/lxml/saxparser.pxi":342
+          /* "src/lxml/saxparser.pxi":343
  *             attrib, nsmap)
  * 
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
@@ -125680,26 +133639,28 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
         }
 
-        /* "src/lxml/saxparser.pxi":344
+        /* "src/lxml/saxparser.pxi":345
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,
  */
+        __Pyx_TraceLine(345,0,__PYX_ERR(11, 345, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":346
+          /* "src/lxml/saxparser.pxi":347
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,             # <<<<<<<<<<<<<<
  *                                c_localname, element)
  *     except:
  */
-          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, __pyx_v_c_namespace, __pyx_v_c_localname, __pyx_v_element); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 346, __pyx_L9_error)
+          __Pyx_TraceLine(347,0,__PYX_ERR(11, 347, __pyx_L9_error))
+          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, __pyx_v_c_namespace, __pyx_v_c_localname, __pyx_v_element); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 347, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":344
+          /* "src/lxml/saxparser.pxi":345
  *         if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             context._ns_stack.append(c_nb_namespaces)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
@@ -125708,7 +133669,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
         }
 
-        /* "src/lxml/saxparser.pxi":307
+        /* "src/lxml/saxparser.pxi":308
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -125724,27 +133685,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-      /* "src/lxml/saxparser.pxi":348
+      /* "src/lxml/saxparser.pxi":349
  *             _pushSaxStartEvent(context, c_ctxt, c_namespace,
  *                                c_localname, element)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(349,0,__PYX_ERR(11, 349, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxTargetStart", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_3, &__pyx_t_12) < 0) __PYX_ERR(11, 348, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_3, &__pyx_t_12) < 0) __PYX_ERR(11, 349, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_12);
 
-        /* "src/lxml/saxparser.pxi":349
+        /* "src/lxml/saxparser.pxi":350
  *                                c_localname, element)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(350,0,__PYX_ERR(11, 350, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -125753,7 +133716,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":307
+      /* "src/lxml/saxparser.pxi":308
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -125774,13 +133737,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
     }
   }
 
-  /* "src/lxml/saxparser.pxi":351
+  /* "src/lxml/saxparser.pxi":352
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(352,0,__PYX_ERR(11, 352, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -125819,7 +133783,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
     }
   }
 
-  /* "src/lxml/saxparser.pxi":295
+  /* "src/lxml/saxparser.pxi":296
  * 
  * 
  * cdef void _handleSaxTargetStart(             # <<<<<<<<<<<<<<
@@ -125828,6 +133792,11 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxTargetStart", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_attrib);
@@ -125836,13 +133805,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
   __Pyx_XDECREF(__pyx_v_nsmap);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XDECREF(__pyx_v_element);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":354
+/* "src/lxml/saxparser.pxi":355
  * 
  * 
  * cdef void _handleSaxStartNoNs(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -125853,6 +133823,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStart(void *__pyx_v_ctxt, const
 static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const xmlChar *__pyx_v_c_name, const xmlChar **__pyx_v_c_attributes) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -125870,23 +133841,26 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxStartNoNs", 0);
+  __Pyx_TraceCall("_handleSaxStartNoNs", __pyx_f[11], 355, 0, __PYX_ERR(11, 355, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":356
+  /* "src/lxml/saxparser.pxi":357
  * cdef void _handleSaxStartNoNs(void* ctxt, const_xmlChar* c_name,
  *                               const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(357,0,__PYX_ERR(11, 357, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":357
+  /* "src/lxml/saxparser.pxi":358
  *                               const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(11, 358, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -125898,16 +133872,17 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":358
+    /* "src/lxml/saxparser.pxi":359
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(359,0,__PYX_ERR(11, 359, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":357
+    /* "src/lxml/saxparser.pxi":358
  *                               const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -125916,25 +133891,27 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
  */
   }
 
-  /* "src/lxml/saxparser.pxi":359
+  /* "src/lxml/saxparser.pxi":360
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(11, 360, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":360
+  /* "src/lxml/saxparser.pxi":361
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
  *         if c_ctxt.html:
  */
+  __Pyx_TraceLine(361,0,__PYX_ERR(11, 361, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -125945,35 +133922,38 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":361
+        /* "src/lxml/saxparser.pxi":362
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)             # <<<<<<<<<<<<<<
  *         if c_ctxt.html:
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  */
+        __Pyx_TraceLine(362,0,__PYX_ERR(11, 362, __pyx_L9_error))
         __pyx_v_context->_origSaxStartNoNs(__pyx_v_c_ctxt, __pyx_v_c_name, __pyx_v_c_attributes);
 
-        /* "src/lxml/saxparser.pxi":362
+        /* "src/lxml/saxparser.pxi":363
  *     try:
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
  *         if c_ctxt.html:             # <<<<<<<<<<<<<<
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  */
+        __Pyx_TraceLine(363,0,__PYX_ERR(11, 363, __pyx_L9_error))
         __pyx_t_1 = (__pyx_v_c_ctxt->html != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":363
+          /* "src/lxml/saxparser.pxi":364
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
  *         if c_ctxt.html:
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)             # <<<<<<<<<<<<<<
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  */
+          __Pyx_TraceLine(364,0,__PYX_ERR(11, 364, __pyx_L9_error))
           (void)(__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_ctxt->dict, __pyx_v_c_ctxt->node));
 
-          /* "src/lxml/saxparser.pxi":362
+          /* "src/lxml/saxparser.pxi":363
  *     try:
  *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
  *         if c_ctxt.html:             # <<<<<<<<<<<<<<
@@ -125982,26 +133962,28 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
  */
         }
 
-        /* "src/lxml/saxparser.pxi":364
+        /* "src/lxml/saxparser.pxi":365
  *         if c_ctxt.html:
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, None)
  */
+        __Pyx_TraceLine(365,0,__PYX_ERR(11, 365, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":366
+          /* "src/lxml/saxparser.pxi":367
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, None)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, NULL, __pyx_v_c_name, Py_None); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 366, __pyx_L9_error)
+          __Pyx_TraceLine(367,0,__PYX_ERR(11, 367, __pyx_L9_error))
+          __pyx_t_7 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, NULL, __pyx_v_c_name, Py_None); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 367, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":364
+          /* "src/lxml/saxparser.pxi":365
  *         if c_ctxt.html:
  *             _fixHtmlDictNodeNames(c_ctxt.dict, c_ctxt.node)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
@@ -126010,7 +133992,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
  */
         }
 
-        /* "src/lxml/saxparser.pxi":360
+        /* "src/lxml/saxparser.pxi":361
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -126025,27 +134007,29 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
       __pyx_L9_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":367
+      /* "src/lxml/saxparser.pxi":368
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, None)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(368,0,__PYX_ERR(11, 368, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxStartNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 367, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 368, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":368
+        /* "src/lxml/saxparser.pxi":369
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, None)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(369,0,__PYX_ERR(11, 369, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -126054,7 +134038,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":360
+      /* "src/lxml/saxparser.pxi":361
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -126075,13 +134059,14 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
     }
   }
 
-  /* "src/lxml/saxparser.pxi":370
+  /* "src/lxml/saxparser.pxi":371
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(371,0,__PYX_ERR(11, 371, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -126120,7 +134105,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
     }
   }
 
-  /* "src/lxml/saxparser.pxi":354
+  /* "src/lxml/saxparser.pxi":355
  * 
  * 
  * cdef void _handleSaxStartNoNs(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -126129,15 +134114,21 @@ static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, const x
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxStartNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":373
+/* "src/lxml/saxparser.pxi":374
  * 
  * 
  * cdef void _handleSaxTargetStartNoNs(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -126151,6 +134142,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
   PyObject *__pyx_v_attrib = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_element = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -126168,23 +134160,26 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxTargetStartNoNs", 0);
+  __Pyx_TraceCall("_handleSaxTargetStartNoNs", __pyx_f[11], 374, 0, __PYX_ERR(11, 374, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":375
+  /* "src/lxml/saxparser.pxi":376
  * cdef void _handleSaxTargetStartNoNs(void* ctxt, const_xmlChar* c_name,
  *                                     const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(376,0,__PYX_ERR(11, 376, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":376
+  /* "src/lxml/saxparser.pxi":377
  *                                     const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(377,0,__PYX_ERR(11, 377, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -126196,16 +134191,17 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":377
+    /* "src/lxml/saxparser.pxi":378
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(378,0,__PYX_ERR(11, 378, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":376
+    /* "src/lxml/saxparser.pxi":377
  *                                     const_xmlChar** c_attributes) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -126214,25 +134210,27 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
  */
   }
 
-  /* "src/lxml/saxparser.pxi":378
+  /* "src/lxml/saxparser.pxi":379
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         if c_attributes is NULL:
  */
+  __Pyx_TraceLine(379,0,__PYX_ERR(11, 379, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":379
+  /* "src/lxml/saxparser.pxi":380
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         if c_attributes is NULL:
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  */
+  __Pyx_TraceLine(380,0,__PYX_ERR(11, 380, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -126243,27 +134241,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":380
+        /* "src/lxml/saxparser.pxi":381
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if c_attributes is NULL:             # <<<<<<<<<<<<<<
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  *         else:
  */
+        __Pyx_TraceLine(381,0,__PYX_ERR(11, 381, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_c_attributes == NULL) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":381
+          /* "src/lxml/saxparser.pxi":382
  *     try:
  *         if c_attributes is NULL:
  *             attrib = IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
  *         else:
  *             attrib = {}
  */
+          __Pyx_TraceLine(382,0,__PYX_ERR(11, 382, __pyx_L9_error))
           __Pyx_INCREF(__pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
           __pyx_v_attrib = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
 
-          /* "src/lxml/saxparser.pxi":380
+          /* "src/lxml/saxparser.pxi":381
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if c_attributes is NULL:             # <<<<<<<<<<<<<<
@@ -126273,120 +134273,130 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
           goto __pyx_L15;
         }
 
-        /* "src/lxml/saxparser.pxi":383
+        /* "src/lxml/saxparser.pxi":384
  *             attrib = IMMUTABLE_EMPTY_MAPPING
  *         else:
  *             attrib = {}             # <<<<<<<<<<<<<<
  *             while c_attributes[0] is not NULL:
  *                 name = funicode(c_attributes[0])
  */
+        __Pyx_TraceLine(384,0,__PYX_ERR(11, 384, __pyx_L9_error))
         /*else*/ {
-          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 383, __pyx_L9_error)
+          __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 384, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
           __pyx_v_attrib = __pyx_t_3;
           __pyx_t_3 = 0;
 
-          /* "src/lxml/saxparser.pxi":384
+          /* "src/lxml/saxparser.pxi":385
  *         else:
  *             attrib = {}
  *             while c_attributes[0] is not NULL:             # <<<<<<<<<<<<<<
  *                 name = funicode(c_attributes[0])
  *                 attrib[name] = funicodeOrEmpty(c_attributes[1])
  */
+          __Pyx_TraceLine(385,0,__PYX_ERR(11, 385, __pyx_L9_error))
           while (1) {
             __pyx_t_1 = (((__pyx_v_c_attributes[0]) != NULL) != 0);
             if (!__pyx_t_1) break;
 
-            /* "src/lxml/saxparser.pxi":385
+            /* "src/lxml/saxparser.pxi":386
  *             attrib = {}
  *             while c_attributes[0] is not NULL:
  *                 name = funicode(c_attributes[0])             # <<<<<<<<<<<<<<
  *                 attrib[name] = funicodeOrEmpty(c_attributes[1])
  *                 c_attributes += 2
  */
-            __pyx_t_3 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 385, __pyx_L9_error)
+            __Pyx_TraceLine(386,0,__PYX_ERR(11, 386, __pyx_L9_error))
+            __pyx_t_3 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 386, __pyx_L9_error)
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
             __pyx_t_3 = 0;
 
-            /* "src/lxml/saxparser.pxi":386
+            /* "src/lxml/saxparser.pxi":387
  *             while c_attributes[0] is not NULL:
  *                 name = funicode(c_attributes[0])
  *                 attrib[name] = funicodeOrEmpty(c_attributes[1])             # <<<<<<<<<<<<<<
  *                 c_attributes += 2
  *         element = _callTargetSaxStart(
  */
-            __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty((__pyx_v_c_attributes[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 386, __pyx_L9_error)
+            __Pyx_TraceLine(387,0,__PYX_ERR(11, 387, __pyx_L9_error))
+            __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty((__pyx_v_c_attributes[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 387, __pyx_L9_error)
             __Pyx_GOTREF(__pyx_t_3);
-            if (unlikely(PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_t_3) < 0)) __PYX_ERR(11, 386, __pyx_L9_error)
+            if (unlikely(PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_t_3) < 0)) __PYX_ERR(11, 387, __pyx_L9_error)
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-            /* "src/lxml/saxparser.pxi":387
+            /* "src/lxml/saxparser.pxi":388
  *                 name = funicode(c_attributes[0])
  *                 attrib[name] = funicodeOrEmpty(c_attributes[1])
  *                 c_attributes += 2             # <<<<<<<<<<<<<<
  *         element = _callTargetSaxStart(
  *             context, c_ctxt, funicode(c_name),
  */
+            __Pyx_TraceLine(388,0,__PYX_ERR(11, 388, __pyx_L9_error))
             __pyx_v_c_attributes = (__pyx_v_c_attributes + 2);
           }
         }
         __pyx_L15:;
 
-        /* "src/lxml/saxparser.pxi":389
+        /* "src/lxml/saxparser.pxi":390
  *                 c_attributes += 2
  *         element = _callTargetSaxStart(
  *             context, c_ctxt, funicode(c_name),             # <<<<<<<<<<<<<<
  *             attrib, IMMUTABLE_EMPTY_MAPPING)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  */
-        __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 389, __pyx_L9_error)
+        __Pyx_TraceLine(390,0,__PYX_ERR(11, 390, __pyx_L9_error))
+        __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 390, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":390
+        /* "src/lxml/saxparser.pxi":391
  *         element = _callTargetSaxStart(
  *             context, c_ctxt, funicode(c_name),
  *             attrib, IMMUTABLE_EMPTY_MAPPING)             # <<<<<<<<<<<<<<
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  */
+        __Pyx_TraceLine(391,0,__PYX_ERR(11, 391, __pyx_L9_error))
         __pyx_t_7 = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
         __Pyx_INCREF(__pyx_t_7);
 
-        /* "src/lxml/saxparser.pxi":388
+        /* "src/lxml/saxparser.pxi":389
  *                 attrib[name] = funicodeOrEmpty(c_attributes[1])
  *                 c_attributes += 2
  *         element = _callTargetSaxStart(             # <<<<<<<<<<<<<<
  *             context, c_ctxt, funicode(c_name),
  *             attrib, IMMUTABLE_EMPTY_MAPPING)
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree__callTargetSaxStart(__pyx_v_context, __pyx_v_c_ctxt, __pyx_t_3, __pyx_v_attrib, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 388, __pyx_L9_error)
+        __Pyx_TraceLine(389,0,__PYX_ERR(11, 389, __pyx_L9_error))
+        __pyx_t_8 = __pyx_f_4lxml_5etree__callTargetSaxStart(__pyx_v_context, __pyx_v_c_ctxt, __pyx_t_3, __pyx_v_attrib, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 389, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_v_element = __pyx_t_8;
         __pyx_t_8 = 0;
 
-        /* "src/lxml/saxparser.pxi":391
+        /* "src/lxml/saxparser.pxi":392
  *             context, c_ctxt, funicode(c_name),
  *             attrib, IMMUTABLE_EMPTY_MAPPING)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, element)
  */
+        __Pyx_TraceLine(392,0,__PYX_ERR(11, 392, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":393
+          /* "src/lxml/saxparser.pxi":394
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, element)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-          __pyx_t_9 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, NULL, __pyx_v_c_name, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 393, __pyx_L9_error)
+          __Pyx_TraceLine(394,0,__PYX_ERR(11, 394, __pyx_L9_error))
+          __pyx_t_9 = __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt, NULL, __pyx_v_c_name, __pyx_v_element); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 394, __pyx_L9_error)
 
-          /* "src/lxml/saxparser.pxi":391
+          /* "src/lxml/saxparser.pxi":392
  *             context, c_ctxt, funicode(c_name),
  *             attrib, IMMUTABLE_EMPTY_MAPPING)
  *         if context._event_filter & (PARSE_EVENT_FILTER_END |             # <<<<<<<<<<<<<<
@@ -126395,7 +134405,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
  */
         }
 
-        /* "src/lxml/saxparser.pxi":379
+        /* "src/lxml/saxparser.pxi":380
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -126412,27 +134422,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "src/lxml/saxparser.pxi":394
+      /* "src/lxml/saxparser.pxi":395
  *                                     PARSE_EVENT_FILTER_START):
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, element)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(395,0,__PYX_ERR(11, 395, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxTargetStartNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 394, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 395, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":395
+        /* "src/lxml/saxparser.pxi":396
  *             _pushSaxStartEvent(context, c_ctxt, NULL, c_name, element)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(396,0,__PYX_ERR(11, 396, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -126441,7 +134453,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":379
+      /* "src/lxml/saxparser.pxi":380
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -126462,13 +134474,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
     }
   }
 
-  /* "src/lxml/saxparser.pxi":397
+  /* "src/lxml/saxparser.pxi":398
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(398,0,__PYX_ERR(11, 398, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -126507,7 +134520,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
     }
   }
 
-  /* "src/lxml/saxparser.pxi":373
+  /* "src/lxml/saxparser.pxi":374
  * 
  * 
  * cdef void _handleSaxTargetStartNoNs(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -126516,18 +134529,24 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxTargetStartNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_attrib);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_element);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":400
+/* "src/lxml/saxparser.pxi":401
  * 
  * 
  * cdef _callTargetSaxStart(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -126538,6 +134557,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetStartNoNs(void *__pyx_v_ctxt, c
 static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context, xmlParserCtxt *__pyx_v_c_ctxt, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -126545,26 +134565,29 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
   int __pyx_t_4;
   unsigned short __pyx_t_5;
   __Pyx_RefNannySetupContext("_callTargetSaxStart", 0);
+  __Pyx_TraceCall("_callTargetSaxStart", __pyx_f[11], 401, 0, __PYX_ERR(11, 401, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":403
+  /* "src/lxml/saxparser.pxi":404
  *                          xmlparser.xmlParserCtxt* c_ctxt,
  *                          tag, attrib, nsmap):
  *     element = context._target._handleSaxStart(tag, attrib, nsmap)             # <<<<<<<<<<<<<<
  *     if element is not None and c_ctxt.input is not NULL:
  *         if isinstance(element, _Element):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxStart(__pyx_v_context->_target, __pyx_v_tag, __pyx_v_attrib, __pyx_v_nsmap); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 403, __pyx_L1_error)
+  __Pyx_TraceLine(404,0,__PYX_ERR(11, 404, __pyx_L1_error))
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxStart(__pyx_v_context->_target, __pyx_v_tag, __pyx_v_attrib, __pyx_v_nsmap); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 404, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":404
+  /* "src/lxml/saxparser.pxi":405
  *                          tag, attrib, nsmap):
  *     element = context._target._handleSaxStart(tag, attrib, nsmap)
  *     if element is not None and c_ctxt.input is not NULL:             # <<<<<<<<<<<<<<
  *         if isinstance(element, _Element):
  *             (<_Element>element)._c_node.line = (
  */
+  __Pyx_TraceLine(405,0,__PYX_ERR(11, 405, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_element != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -126577,48 +134600,52 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":405
+    /* "src/lxml/saxparser.pxi":406
  *     element = context._target._handleSaxStart(tag, attrib, nsmap)
  *     if element is not None and c_ctxt.input is not NULL:
  *         if isinstance(element, _Element):             # <<<<<<<<<<<<<<
  *             (<_Element>element)._c_node.line = (
  *                 <unsigned short>c_ctxt.input.line
  */
+    __Pyx_TraceLine(406,0,__PYX_ERR(11, 406, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
 
-      /* "src/lxml/saxparser.pxi":408
+      /* "src/lxml/saxparser.pxi":409
  *             (<_Element>element)._c_node.line = (
  *                 <unsigned short>c_ctxt.input.line
  *                 if c_ctxt.input.line < 65535 else 65535)             # <<<<<<<<<<<<<<
  *     return element
  * 
  */
+      __Pyx_TraceLine(409,0,__PYX_ERR(11, 409, __pyx_L1_error))
       if (((__pyx_v_c_ctxt->input->line < 0xFFFF) != 0)) {
 
-        /* "src/lxml/saxparser.pxi":407
+        /* "src/lxml/saxparser.pxi":408
  *         if isinstance(element, _Element):
  *             (<_Element>element)._c_node.line = (
  *                 <unsigned short>c_ctxt.input.line             # <<<<<<<<<<<<<<
  *                 if c_ctxt.input.line < 65535 else 65535)
  *     return element
  */
+        __Pyx_TraceLine(408,0,__PYX_ERR(11, 408, __pyx_L1_error))
         __pyx_t_5 = ((unsigned short)__pyx_v_c_ctxt->input->line);
       } else {
         __pyx_t_5 = 0xFFFF;
       }
 
-      /* "src/lxml/saxparser.pxi":406
+      /* "src/lxml/saxparser.pxi":407
  *     if element is not None and c_ctxt.input is not NULL:
  *         if isinstance(element, _Element):
  *             (<_Element>element)._c_node.line = (             # <<<<<<<<<<<<<<
  *                 <unsigned short>c_ctxt.input.line
  *                 if c_ctxt.input.line < 65535 else 65535)
  */
+      __Pyx_TraceLine(407,0,__PYX_ERR(11, 407, __pyx_L1_error))
       ((struct LxmlElement *)__pyx_v_element)->_c_node->line = __pyx_t_5;
 
-      /* "src/lxml/saxparser.pxi":405
+      /* "src/lxml/saxparser.pxi":406
  *     element = context._target._handleSaxStart(tag, attrib, nsmap)
  *     if element is not None and c_ctxt.input is not NULL:
  *         if isinstance(element, _Element):             # <<<<<<<<<<<<<<
@@ -126627,7 +134654,7 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
  */
     }
 
-    /* "src/lxml/saxparser.pxi":404
+    /* "src/lxml/saxparser.pxi":405
  *                          tag, attrib, nsmap):
  *     element = context._target._handleSaxStart(tag, attrib, nsmap)
  *     if element is not None and c_ctxt.input is not NULL:             # <<<<<<<<<<<<<<
@@ -126636,19 +134663,20 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":409
+  /* "src/lxml/saxparser.pxi":410
  *                 <unsigned short>c_ctxt.input.line
  *                 if c_ctxt.input.line < 65535 else 65535)
  *     return element             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(410,0,__PYX_ERR(11, 410, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_element);
   __pyx_r = __pyx_v_element;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":400
+  /* "src/lxml/saxparser.pxi":401
  * 
  * 
  * cdef _callTargetSaxStart(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -126664,11 +134692,12 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":412
+/* "src/lxml/saxparser.pxi":413
  * 
  * 
  * cdef int _pushSaxStartEvent(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -126678,6 +134707,7 @@ static PyObject *__pyx_f_4lxml_5etree__callTargetSaxStart(struct __pyx_obj_4lxml
 
 static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context, xmlParserCtxt *__pyx_v_c_ctxt, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name, PyObject *__pyx_v_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -126686,15 +134716,17 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_pushSaxStartEvent", 0);
+  __Pyx_TraceCall("_pushSaxStartEvent", __pyx_f[11], 413, 0, __PYX_ERR(11, 413, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_node);
 
-  /* "src/lxml/saxparser.pxi":416
+  /* "src/lxml/saxparser.pxi":417
  *                             const_xmlChar* c_href,
  *                             const_xmlChar* c_name, node) except -1:
  *     if (context._matcher is None or             # <<<<<<<<<<<<<<
  *             context._matcher.matchesNsTag(c_href, c_name)):
  *         if node is None and context._target is None:
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(11, 417, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_context->_matcher) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -126703,33 +134735,36 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/saxparser.pxi":417
+  /* "src/lxml/saxparser.pxi":418
  *                             const_xmlChar* c_name, node) except -1:
  *     if (context._matcher is None or
  *             context._matcher.matchesNsTag(c_href, c_name)):             # <<<<<<<<<<<<<<
  *         if node is None and context._target is None:
  *             assert context._doc is not None
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(11, 418, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(__pyx_v_context->_matcher, __pyx_v_c_href, __pyx_v_c_name) != 0);
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/saxparser.pxi":416
+  /* "src/lxml/saxparser.pxi":417
  *                             const_xmlChar* c_href,
  *                             const_xmlChar* c_name, node) except -1:
  *     if (context._matcher is None or             # <<<<<<<<<<<<<<
  *             context._matcher.matchesNsTag(c_href, c_name)):
  *         if node is None and context._target is None:
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(11, 417, __pyx_L1_error))
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":418
+    /* "src/lxml/saxparser.pxi":419
  *     if (context._matcher is None or
  *             context._matcher.matchesNsTag(c_href, c_name)):
  *         if node is None and context._target is None:             # <<<<<<<<<<<<<<
  *             assert context._doc is not None
  *             node = _elementFactory(context._doc, c_ctxt.node)
  */
+    __Pyx_TraceLine(419,0,__PYX_ERR(11, 419, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_node == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -126743,39 +134778,41 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
     __pyx_L7_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/saxparser.pxi":419
+      /* "src/lxml/saxparser.pxi":420
  *             context._matcher.matchesNsTag(c_href, c_name)):
  *         if node is None and context._target is None:
  *             assert context._doc is not None             # <<<<<<<<<<<<<<
  *             node = _elementFactory(context._doc, c_ctxt.node)
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  */
+      __Pyx_TraceLine(420,0,__PYX_ERR(11, 420, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_1 = (((PyObject *)__pyx_v_context->__pyx_base._doc) != Py_None);
         if (unlikely(!(__pyx_t_1 != 0))) {
           PyErr_SetNone(PyExc_AssertionError);
-          __PYX_ERR(11, 419, __pyx_L1_error)
+          __PYX_ERR(11, 420, __pyx_L1_error)
         }
       }
       #endif
 
-      /* "src/lxml/saxparser.pxi":420
+      /* "src/lxml/saxparser.pxi":421
  *         if node is None and context._target is None:
  *             assert context._doc is not None
  *             node = _elementFactory(context._doc, c_ctxt.node)             # <<<<<<<<<<<<<<
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  *             context.events_iterator._events.append(('start', node))
  */
+      __Pyx_TraceLine(421,0,__PYX_ERR(11, 421, __pyx_L1_error))
       __pyx_t_4 = ((PyObject *)__pyx_v_context->__pyx_base._doc);
       __Pyx_INCREF(__pyx_t_4);
-      __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_ctxt->node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 420, __pyx_L1_error)
+      __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_ctxt->node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 421, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_node, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/saxparser.pxi":418
+      /* "src/lxml/saxparser.pxi":419
  *     if (context._matcher is None or
  *             context._matcher.matchesNsTag(c_href, c_name)):
  *         if node is None and context._target is None:             # <<<<<<<<<<<<<<
@@ -126784,28 +134821,30 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
  */
     }
 
-    /* "src/lxml/saxparser.pxi":421
+    /* "src/lxml/saxparser.pxi":422
  *             assert context._doc is not None
  *             node = _elementFactory(context._doc, c_ctxt.node)
  *         if context._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
  *             context.events_iterator._events.append(('start', node))
  *         if (context._target is None and
  */
+    __Pyx_TraceLine(422,0,__PYX_ERR(11, 422, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/saxparser.pxi":422
+      /* "src/lxml/saxparser.pxi":423
  *             node = _elementFactory(context._doc, c_ctxt.node)
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  *             context.events_iterator._events.append(('start', node))             # <<<<<<<<<<<<<<
  *         if (context._target is None and
  *                 context._event_filter & PARSE_EVENT_FILTER_END):
  */
+      __Pyx_TraceLine(423,0,__PYX_ERR(11, 423, __pyx_L1_error))
       if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(11, 422, __pyx_L1_error)
+        __PYX_ERR(11, 423, __pyx_L1_error)
       }
-      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 422, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 423, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_n_s_start);
       __Pyx_GIVEREF(__pyx_n_s_start);
@@ -126813,10 +134852,10 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
       __Pyx_INCREF(__pyx_v_node);
       __Pyx_GIVEREF(__pyx_v_node);
       PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_node);
-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 422, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 423, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/saxparser.pxi":421
+      /* "src/lxml/saxparser.pxi":422
  *             assert context._doc is not None
  *             node = _elementFactory(context._doc, c_ctxt.node)
  *         if context._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
@@ -126825,13 +134864,14 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
  */
     }
 
-    /* "src/lxml/saxparser.pxi":423
+    /* "src/lxml/saxparser.pxi":424
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  *             context.events_iterator._events.append(('start', node))
  *         if (context._target is None and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_END):
  *             context._node_stack.append(node)
  */
+    __Pyx_TraceLine(424,0,__PYX_ERR(11, 424, __pyx_L1_error))
     __pyx_t_3 = (((PyObject *)__pyx_v_context->_target) == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -126840,40 +134880,43 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
       goto __pyx_L11_bool_binop_done;
     }
 
-    /* "src/lxml/saxparser.pxi":424
+    /* "src/lxml/saxparser.pxi":425
  *             context.events_iterator._events.append(('start', node))
  *         if (context._target is None and
  *                 context._event_filter & PARSE_EVENT_FILTER_END):             # <<<<<<<<<<<<<<
  *             context._node_stack.append(node)
  *     return 0
  */
+    __Pyx_TraceLine(425,0,__PYX_ERR(11, 425, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END) != 0);
     __pyx_t_1 = __pyx_t_2;
     __pyx_L11_bool_binop_done:;
 
-    /* "src/lxml/saxparser.pxi":423
+    /* "src/lxml/saxparser.pxi":424
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  *             context.events_iterator._events.append(('start', node))
  *         if (context._target is None and             # <<<<<<<<<<<<<<
  *                 context._event_filter & PARSE_EVENT_FILTER_END):
  *             context._node_stack.append(node)
  */
+    __Pyx_TraceLine(424,0,__PYX_ERR(11, 424, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/saxparser.pxi":425
+      /* "src/lxml/saxparser.pxi":426
  *         if (context._target is None and
  *                 context._event_filter & PARSE_EVENT_FILTER_END):
  *             context._node_stack.append(node)             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+      __Pyx_TraceLine(426,0,__PYX_ERR(11, 426, __pyx_L1_error))
       if (unlikely(__pyx_v_context->_node_stack == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(11, 425, __pyx_L1_error)
+        __PYX_ERR(11, 426, __pyx_L1_error)
       }
-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->_node_stack, __pyx_v_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 425, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->_node_stack, __pyx_v_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 426, __pyx_L1_error)
 
-      /* "src/lxml/saxparser.pxi":423
+      /* "src/lxml/saxparser.pxi":424
  *         if context._event_filter & PARSE_EVENT_FILTER_START:
  *             context.events_iterator._events.append(('start', node))
  *         if (context._target is None and             # <<<<<<<<<<<<<<
@@ -126882,7 +134925,7 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
  */
     }
 
-    /* "src/lxml/saxparser.pxi":416
+    /* "src/lxml/saxparser.pxi":417
  *                             const_xmlChar* c_href,
  *                             const_xmlChar* c_name, node) except -1:
  *     if (context._matcher is None or             # <<<<<<<<<<<<<<
@@ -126891,17 +134934,18 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
  */
   }
 
-  /* "src/lxml/saxparser.pxi":426
+  /* "src/lxml/saxparser.pxi":427
  *                 context._event_filter & PARSE_EVENT_FILTER_END):
  *             context._node_stack.append(node)
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(427,0,__PYX_ERR(11, 427, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":412
+  /* "src/lxml/saxparser.pxi":413
  * 
  * 
  * cdef int _pushSaxStartEvent(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -126917,11 +134961,12 @@ static int __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_node);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":429
+/* "src/lxml/saxparser.pxi":430
  * 
  * 
  * cdef void _handleSaxEnd(void* ctxt, const_xmlChar* c_localname,             # <<<<<<<<<<<<<<
@@ -126933,6 +134978,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   PyObject *__pyx_v_node = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -126950,23 +134996,26 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxEnd", 0);
+  __Pyx_TraceCall("_handleSaxEnd", __pyx_f[11], 430, 0, __PYX_ERR(11, 430, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":432
+  /* "src/lxml/saxparser.pxi":433
  *                         const_xmlChar* c_prefix,
  *                         const_xmlChar* c_namespace) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(11, 433, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":433
+  /* "src/lxml/saxparser.pxi":434
  *                         const_xmlChar* c_namespace) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(434,0,__PYX_ERR(11, 434, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -126978,16 +135027,17 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":434
+    /* "src/lxml/saxparser.pxi":435
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(435,0,__PYX_ERR(11, 435, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":433
+    /* "src/lxml/saxparser.pxi":434
  *                         const_xmlChar* c_namespace) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -126996,25 +135046,27 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
  */
   }
 
-  /* "src/lxml/saxparser.pxi":435
+  /* "src/lxml/saxparser.pxi":436
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         if context._target is not None:
  */
+  __Pyx_TraceLine(436,0,__PYX_ERR(11, 436, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":436
+  /* "src/lxml/saxparser.pxi":437
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         if context._target is not None:
  *             node = context._target._handleSaxEnd(
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(11, 437, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -127025,41 +135077,44 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":437
+        /* "src/lxml/saxparser.pxi":438
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if context._target is not None:             # <<<<<<<<<<<<<<
  *             node = context._target._handleSaxEnd(
  *                 _namespacedNameFromNsName(c_namespace, c_localname))
  */
+        __Pyx_TraceLine(438,0,__PYX_ERR(11, 438, __pyx_L9_error))
         __pyx_t_1 = (((PyObject *)__pyx_v_context->_target) != Py_None);
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/saxparser.pxi":439
+          /* "src/lxml/saxparser.pxi":440
  *         if context._target is not None:
  *             node = context._target._handleSaxEnd(
  *                 _namespacedNameFromNsName(c_namespace, c_localname))             # <<<<<<<<<<<<<<
  *         else:
  *             context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
  */
-          __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 439, __pyx_L9_error)
+          __Pyx_TraceLine(440,0,__PYX_ERR(11, 440, __pyx_L9_error))
+          __pyx_t_3 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 440, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
 
-          /* "src/lxml/saxparser.pxi":438
+          /* "src/lxml/saxparser.pxi":439
  *     try:
  *         if context._target is not None:
  *             node = context._target._handleSaxEnd(             # <<<<<<<<<<<<<<
  *                 _namespacedNameFromNsName(c_namespace, c_localname))
  *         else:
  */
-          __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 438, __pyx_L9_error)
+          __Pyx_TraceLine(439,0,__PYX_ERR(11, 439, __pyx_L9_error))
+          __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 439, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_node = __pyx_t_7;
           __pyx_t_7 = 0;
 
-          /* "src/lxml/saxparser.pxi":437
+          /* "src/lxml/saxparser.pxi":438
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if context._target is not None:             # <<<<<<<<<<<<<<
@@ -127069,47 +135124,51 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
           goto __pyx_L15;
         }
 
-        /* "src/lxml/saxparser.pxi":441
+        /* "src/lxml/saxparser.pxi":442
  *                 _namespacedNameFromNsName(c_namespace, c_localname))
  *         else:
  *             context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)             # <<<<<<<<<<<<<<
  *             node = None
  *         _pushSaxEndEvent(context, c_namespace, c_localname, node)
  */
+        __Pyx_TraceLine(442,0,__PYX_ERR(11, 442, __pyx_L9_error))
         /*else*/ {
           __pyx_v_context->_origSaxEnd(__pyx_v_c_ctxt, __pyx_v_c_localname, __pyx_v_c_prefix, __pyx_v_c_namespace);
 
-          /* "src/lxml/saxparser.pxi":442
+          /* "src/lxml/saxparser.pxi":443
  *         else:
  *             context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
  *             node = None             # <<<<<<<<<<<<<<
  *         _pushSaxEndEvent(context, c_namespace, c_localname, node)
  *         _pushSaxNsEndEvents(context)
  */
+          __Pyx_TraceLine(443,0,__PYX_ERR(11, 443, __pyx_L9_error))
           __Pyx_INCREF(Py_None);
           __pyx_v_node = Py_None;
         }
         __pyx_L15:;
 
-        /* "src/lxml/saxparser.pxi":443
+        /* "src/lxml/saxparser.pxi":444
  *             context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
  *             node = None
  *         _pushSaxEndEvent(context, c_namespace, c_localname, node)             # <<<<<<<<<<<<<<
  *         _pushSaxNsEndEvents(context)
  *     except:
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, __pyx_v_c_namespace, __pyx_v_c_localname, __pyx_v_node); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 443, __pyx_L9_error)
+        __Pyx_TraceLine(444,0,__PYX_ERR(11, 444, __pyx_L9_error))
+        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, __pyx_v_c_namespace, __pyx_v_c_localname, __pyx_v_node); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 444, __pyx_L9_error)
 
-        /* "src/lxml/saxparser.pxi":444
+        /* "src/lxml/saxparser.pxi":445
  *             node = None
  *         _pushSaxEndEvent(context, c_namespace, c_localname, node)
  *         _pushSaxNsEndEvents(context)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 444, __pyx_L9_error)
+        __Pyx_TraceLine(445,0,__PYX_ERR(11, 445, __pyx_L9_error))
+        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxNsEndEvents(__pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 445, __pyx_L9_error)
 
-        /* "src/lxml/saxparser.pxi":436
+        /* "src/lxml/saxparser.pxi":437
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127125,27 +135184,29 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "src/lxml/saxparser.pxi":445
+      /* "src/lxml/saxparser.pxi":446
  *         _pushSaxEndEvent(context, c_namespace, c_localname, node)
  *         _pushSaxNsEndEvents(context)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(446,0,__PYX_ERR(11, 446, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxEnd", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 445, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 446, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":446
+        /* "src/lxml/saxparser.pxi":447
  *         _pushSaxNsEndEvents(context)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(447,0,__PYX_ERR(11, 447, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -127154,7 +135215,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":436
+      /* "src/lxml/saxparser.pxi":437
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127175,13 +135236,14 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
     }
   }
 
-  /* "src/lxml/saxparser.pxi":448
+  /* "src/lxml/saxparser.pxi":449
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(11, 449, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -127220,7 +135282,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
     }
   }
 
-  /* "src/lxml/saxparser.pxi":429
+  /* "src/lxml/saxparser.pxi":430
  * 
  * 
  * cdef void _handleSaxEnd(void* ctxt, const_xmlChar* c_localname,             # <<<<<<<<<<<<<<
@@ -127229,16 +135291,22 @@ static void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, const xmlChar
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxEnd", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_node);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":451
+/* "src/lxml/saxparser.pxi":452
  * 
  * 
  * cdef void _handleSaxEndNoNs(void* ctxt, const_xmlChar* c_name) with gil:             # <<<<<<<<<<<<<<
@@ -127250,6 +135318,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   PyObject *__pyx_v_node = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -127267,23 +135336,26 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxEndNoNs", 0);
+  __Pyx_TraceCall("_handleSaxEndNoNs", __pyx_f[11], 452, 0, __PYX_ERR(11, 452, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":452
+  /* "src/lxml/saxparser.pxi":453
  * 
  * cdef void _handleSaxEndNoNs(void* ctxt, const_xmlChar* c_name) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(11, 453, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":453
+  /* "src/lxml/saxparser.pxi":454
  * cdef void _handleSaxEndNoNs(void* ctxt, const_xmlChar* c_name) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(11, 454, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -127295,16 +135367,17 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":454
+    /* "src/lxml/saxparser.pxi":455
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(455,0,__PYX_ERR(11, 455, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":453
+    /* "src/lxml/saxparser.pxi":454
  * cdef void _handleSaxEndNoNs(void* ctxt, const_xmlChar* c_name) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -127313,25 +135386,27 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":455
+  /* "src/lxml/saxparser.pxi":456
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         if context._target is not None:
  */
+  __Pyx_TraceLine(456,0,__PYX_ERR(11, 456, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":456
+  /* "src/lxml/saxparser.pxi":457
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         if context._target is not None:
  *             node = context._target._handleSaxEnd(funicode(c_name))
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(11, 457, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -127342,33 +135417,35 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":457
+        /* "src/lxml/saxparser.pxi":458
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if context._target is not None:             # <<<<<<<<<<<<<<
  *             node = context._target._handleSaxEnd(funicode(c_name))
  *         else:
  */
+        __Pyx_TraceLine(458,0,__PYX_ERR(11, 458, __pyx_L9_error))
         __pyx_t_1 = (((PyObject *)__pyx_v_context->_target) != Py_None);
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "src/lxml/saxparser.pxi":458
+          /* "src/lxml/saxparser.pxi":459
  *     try:
  *         if context._target is not None:
  *             node = context._target._handleSaxEnd(funicode(c_name))             # <<<<<<<<<<<<<<
  *         else:
  *             context._origSaxEndNoNs(c_ctxt, c_name)
  */
-          __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 458, __pyx_L9_error)
+          __Pyx_TraceLine(459,0,__PYX_ERR(11, 459, __pyx_L9_error))
+          __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 459, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 458, __pyx_L9_error)
+          __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 459, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_node = __pyx_t_7;
           __pyx_t_7 = 0;
 
-          /* "src/lxml/saxparser.pxi":457
+          /* "src/lxml/saxparser.pxi":458
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         if context._target is not None:             # <<<<<<<<<<<<<<
@@ -127378,38 +135455,41 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
           goto __pyx_L15;
         }
 
-        /* "src/lxml/saxparser.pxi":460
+        /* "src/lxml/saxparser.pxi":461
  *             node = context._target._handleSaxEnd(funicode(c_name))
  *         else:
  *             context._origSaxEndNoNs(c_ctxt, c_name)             # <<<<<<<<<<<<<<
  *             node = None
  *         _pushSaxEndEvent(context, NULL, c_name, node)
  */
+        __Pyx_TraceLine(461,0,__PYX_ERR(11, 461, __pyx_L9_error))
         /*else*/ {
           __pyx_v_context->_origSaxEndNoNs(__pyx_v_c_ctxt, __pyx_v_c_name);
 
-          /* "src/lxml/saxparser.pxi":461
+          /* "src/lxml/saxparser.pxi":462
  *         else:
  *             context._origSaxEndNoNs(c_ctxt, c_name)
  *             node = None             # <<<<<<<<<<<<<<
  *         _pushSaxEndEvent(context, NULL, c_name, node)
  *     except:
  */
+          __Pyx_TraceLine(462,0,__PYX_ERR(11, 462, __pyx_L9_error))
           __Pyx_INCREF(Py_None);
           __pyx_v_node = Py_None;
         }
         __pyx_L15:;
 
-        /* "src/lxml/saxparser.pxi":462
+        /* "src/lxml/saxparser.pxi":463
  *             context._origSaxEndNoNs(c_ctxt, c_name)
  *             node = None
  *         _pushSaxEndEvent(context, NULL, c_name, node)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, NULL, __pyx_v_c_name, __pyx_v_node); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 462, __pyx_L9_error)
+        __Pyx_TraceLine(463,0,__PYX_ERR(11, 463, __pyx_L9_error))
+        __pyx_t_8 = __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, NULL, __pyx_v_c_name, __pyx_v_node); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 463, __pyx_L9_error)
 
-        /* "src/lxml/saxparser.pxi":456
+        /* "src/lxml/saxparser.pxi":457
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127425,27 +135505,29 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "src/lxml/saxparser.pxi":463
+      /* "src/lxml/saxparser.pxi":464
  *             node = None
  *         _pushSaxEndEvent(context, NULL, c_name, node)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(464,0,__PYX_ERR(11, 464, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxEndNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 463, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 464, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":464
+        /* "src/lxml/saxparser.pxi":465
  *         _pushSaxEndEvent(context, NULL, c_name, node)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(465,0,__PYX_ERR(11, 465, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -127454,7 +135536,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":456
+      /* "src/lxml/saxparser.pxi":457
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127475,13 +135557,14 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":466
+  /* "src/lxml/saxparser.pxi":467
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(11, 467, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -127520,7 +135603,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":451
+  /* "src/lxml/saxparser.pxi":452
  * 
  * 
  * cdef void _handleSaxEndNoNs(void* ctxt, const_xmlChar* c_name) with gil:             # <<<<<<<<<<<<<<
@@ -127529,16 +135612,22 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxEndNoNs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_node);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":472
+/* "src/lxml/saxparser.pxi":473
  * 
  * 
  * cdef int _pushSaxNsEndEvents(_SaxParserContext context) except -1:             # <<<<<<<<<<<<<<
@@ -127549,6 +135638,7 @@ static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, const xml
 static int __pyx_f_4lxml_5etree__pushSaxNsEndEvents(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context) {
   CYTHON_UNUSED int __pyx_v_i;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -127557,54 +135647,58 @@ static int __pyx_f_4lxml_5etree__pushSaxNsEndEvents(struct __pyx_obj_4lxml_5etre
   int __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_pushSaxNsEndEvents", 0);
+  __Pyx_TraceCall("_pushSaxNsEndEvents", __pyx_f[11], 473, 0, __PYX_ERR(11, 473, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":474
+  /* "src/lxml/saxparser.pxi":475
  * cdef int _pushSaxNsEndEvents(_SaxParserContext context) except -1:
  *     cdef int i
  *     if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
  *         for i in range(context._ns_stack.pop()):
  *             context.events_iterator._events.append(NS_END_EVENT)
  */
+  __Pyx_TraceLine(475,0,__PYX_ERR(11, 475, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":475
+    /* "src/lxml/saxparser.pxi":476
  *     cdef int i
  *     if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *         for i in range(context._ns_stack.pop()):             # <<<<<<<<<<<<<<
  *             context.events_iterator._events.append(NS_END_EVENT)
  *     return 0
  */
+    __Pyx_TraceLine(476,0,__PYX_ERR(11, 476, __pyx_L1_error))
     if (unlikely(__pyx_v_context->_ns_stack == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
-      __PYX_ERR(11, 475, __pyx_L1_error)
+      __PYX_ERR(11, 476, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_context->_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 475, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_context->_ns_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 476, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 475, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 476, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_4 = __pyx_t_3;
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
       __pyx_v_i = __pyx_t_5;
 
-      /* "src/lxml/saxparser.pxi":476
+      /* "src/lxml/saxparser.pxi":477
  *     if context._event_filter & PARSE_EVENT_FILTER_END_NS:
  *         for i in range(context._ns_stack.pop()):
  *             context.events_iterator._events.append(NS_END_EVENT)             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+      __Pyx_TraceLine(477,0,__PYX_ERR(11, 477, __pyx_L1_error))
       if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(11, 476, __pyx_L1_error)
+        __PYX_ERR(11, 477, __pyx_L1_error)
       }
       __pyx_t_2 = __pyx_v_4lxml_5etree_NS_END_EVENT;
       __Pyx_INCREF(__pyx_t_2);
-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 476, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(11, 477, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
 
-    /* "src/lxml/saxparser.pxi":474
+    /* "src/lxml/saxparser.pxi":475
  * cdef int _pushSaxNsEndEvents(_SaxParserContext context) except -1:
  *     cdef int i
  *     if context._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
@@ -127613,17 +135707,18 @@ static int __pyx_f_4lxml_5etree__pushSaxNsEndEvents(struct __pyx_obj_4lxml_5etre
  */
   }
 
-  /* "src/lxml/saxparser.pxi":477
+  /* "src/lxml/saxparser.pxi":478
  *         for i in range(context._ns_stack.pop()):
  *             context.events_iterator._events.append(NS_END_EVENT)
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(478,0,__PYX_ERR(11, 478, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":472
+  /* "src/lxml/saxparser.pxi":473
  * 
  * 
  * cdef int _pushSaxNsEndEvents(_SaxParserContext context) except -1:             # <<<<<<<<<<<<<<
@@ -127637,11 +135732,12 @@ static int __pyx_f_4lxml_5etree__pushSaxNsEndEvents(struct __pyx_obj_4lxml_5etre
   __Pyx_AddTraceback("lxml.etree._pushSaxNsEndEvents", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":480
+/* "src/lxml/saxparser.pxi":481
  * 
  * 
  * cdef int _pushSaxEndEvent(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -127651,6 +135747,7 @@ static int __pyx_f_4lxml_5etree__pushSaxNsEndEvents(struct __pyx_obj_4lxml_5etre
 
 static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name, PyObject *__pyx_v_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -127658,25 +135755,28 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_pushSaxEndEvent", 0);
+  __Pyx_TraceCall("_pushSaxEndEvent", __pyx_f[11], 481, 0, __PYX_ERR(11, 481, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_node);
 
-  /* "src/lxml/saxparser.pxi":483
+  /* "src/lxml/saxparser.pxi":484
  *                           const_xmlChar* c_href,
  *                           const_xmlChar* c_name, node) except -1:
  *     if context._event_filter & PARSE_EVENT_FILTER_END:             # <<<<<<<<<<<<<<
  *         if (context._matcher is None or
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(11, 484, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":484
+    /* "src/lxml/saxparser.pxi":485
  *                           const_xmlChar* c_name, node) except -1:
  *     if context._event_filter & PARSE_EVENT_FILTER_END:
  *         if (context._matcher is None or             # <<<<<<<<<<<<<<
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  *             if context._target is None:
  */
+    __Pyx_TraceLine(485,0,__PYX_ERR(11, 485, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_context->_matcher) == Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (!__pyx_t_3) {
@@ -127685,54 +135785,58 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
       goto __pyx_L5_bool_binop_done;
     }
 
-    /* "src/lxml/saxparser.pxi":485
+    /* "src/lxml/saxparser.pxi":486
  *     if context._event_filter & PARSE_EVENT_FILTER_END:
  *         if (context._matcher is None or
  *                 context._matcher.matchesNsTag(c_href, c_name)):             # <<<<<<<<<<<<<<
  *             if context._target is None:
  *                 node = context._node_stack.pop()
  */
+    __Pyx_TraceLine(486,0,__PYX_ERR(11, 486, __pyx_L1_error))
     __pyx_t_3 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(__pyx_v_context->_matcher, __pyx_v_c_href, __pyx_v_c_name) != 0);
     __pyx_t_1 = __pyx_t_3;
     __pyx_L5_bool_binop_done:;
 
-    /* "src/lxml/saxparser.pxi":484
+    /* "src/lxml/saxparser.pxi":485
  *                           const_xmlChar* c_name, node) except -1:
  *     if context._event_filter & PARSE_EVENT_FILTER_END:
  *         if (context._matcher is None or             # <<<<<<<<<<<<<<
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  *             if context._target is None:
  */
+    __Pyx_TraceLine(485,0,__PYX_ERR(11, 485, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/saxparser.pxi":486
+      /* "src/lxml/saxparser.pxi":487
  *         if (context._matcher is None or
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  *             if context._target is None:             # <<<<<<<<<<<<<<
  *                 node = context._node_stack.pop()
  *             context.events_iterator._events.append(('end', node))
  */
+      __Pyx_TraceLine(487,0,__PYX_ERR(11, 487, __pyx_L1_error))
       __pyx_t_1 = (((PyObject *)__pyx_v_context->_target) == Py_None);
       __pyx_t_3 = (__pyx_t_1 != 0);
       if (__pyx_t_3) {
 
-        /* "src/lxml/saxparser.pxi":487
+        /* "src/lxml/saxparser.pxi":488
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  *             if context._target is None:
  *                 node = context._node_stack.pop()             # <<<<<<<<<<<<<<
  *             context.events_iterator._events.append(('end', node))
  *     return 0
  */
+        __Pyx_TraceLine(488,0,__PYX_ERR(11, 488, __pyx_L1_error))
         if (unlikely(__pyx_v_context->_node_stack == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
-          __PYX_ERR(11, 487, __pyx_L1_error)
+          __PYX_ERR(11, 488, __pyx_L1_error)
         }
-        __pyx_t_4 = __Pyx_PyList_Pop(__pyx_v_context->_node_stack); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 487, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyList_Pop(__pyx_v_context->_node_stack); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 488, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_node, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "src/lxml/saxparser.pxi":486
+        /* "src/lxml/saxparser.pxi":487
  *         if (context._matcher is None or
  *                 context._matcher.matchesNsTag(c_href, c_name)):
  *             if context._target is None:             # <<<<<<<<<<<<<<
@@ -127741,18 +135845,19 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
  */
       }
 
-      /* "src/lxml/saxparser.pxi":488
+      /* "src/lxml/saxparser.pxi":489
  *             if context._target is None:
  *                 node = context._node_stack.pop()
  *             context.events_iterator._events.append(('end', node))             # <<<<<<<<<<<<<<
  *     return 0
  * 
  */
+      __Pyx_TraceLine(489,0,__PYX_ERR(11, 489, __pyx_L1_error))
       if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(11, 488, __pyx_L1_error)
+        __PYX_ERR(11, 489, __pyx_L1_error)
       }
-      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 488, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 489, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_n_s_end);
       __Pyx_GIVEREF(__pyx_n_s_end);
@@ -127760,10 +135865,10 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
       __Pyx_INCREF(__pyx_v_node);
       __Pyx_GIVEREF(__pyx_v_node);
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_node);
-      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 488, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 489, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "src/lxml/saxparser.pxi":484
+      /* "src/lxml/saxparser.pxi":485
  *                           const_xmlChar* c_name, node) except -1:
  *     if context._event_filter & PARSE_EVENT_FILTER_END:
  *         if (context._matcher is None or             # <<<<<<<<<<<<<<
@@ -127772,7 +135877,7 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
  */
     }
 
-    /* "src/lxml/saxparser.pxi":483
+    /* "src/lxml/saxparser.pxi":484
  *                           const_xmlChar* c_href,
  *                           const_xmlChar* c_name, node) except -1:
  *     if context._event_filter & PARSE_EVENT_FILTER_END:             # <<<<<<<<<<<<<<
@@ -127781,17 +135886,18 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
  */
   }
 
-  /* "src/lxml/saxparser.pxi":489
+  /* "src/lxml/saxparser.pxi":490
  *                 node = context._node_stack.pop()
  *             context.events_iterator._events.append(('end', node))
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(490,0,__PYX_ERR(11, 490, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":480
+  /* "src/lxml/saxparser.pxi":481
  * 
  * 
  * cdef int _pushSaxEndEvent(_SaxParserContext context,             # <<<<<<<<<<<<<<
@@ -127806,11 +135912,12 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_node);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":492
+/* "src/lxml/saxparser.pxi":493
  * 
  * 
  * cdef void _handleSaxData(void* ctxt, const_xmlChar* c_data, int data_len) with gil:             # <<<<<<<<<<<<<<
@@ -127821,6 +135928,7 @@ static int __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__
 static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlChar *__pyx_v_c_data, int __pyx_v_data_len) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -127838,23 +135946,26 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxData", 0);
+  __Pyx_TraceCall("_handleSaxData", __pyx_f[11], 493, 0, __PYX_ERR(11, 493, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":494
+  /* "src/lxml/saxparser.pxi":495
  * cdef void _handleSaxData(void* ctxt, const_xmlChar* c_data, int data_len) with gil:
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(495,0,__PYX_ERR(11, 495, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":495
+  /* "src/lxml/saxparser.pxi":496
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(11, 496, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -127866,16 +135977,17 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":496
+    /* "src/lxml/saxparser.pxi":497
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(497,0,__PYX_ERR(11, 497, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":495
+    /* "src/lxml/saxparser.pxi":496
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -127884,25 +135996,27 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
  */
   }
 
-  /* "src/lxml/saxparser.pxi":497
+  /* "src/lxml/saxparser.pxi":498
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         context._target._handleSaxData(
  */
+  __Pyx_TraceLine(498,0,__PYX_ERR(11, 498, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":498
+  /* "src/lxml/saxparser.pxi":499
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         context._target._handleSaxData(
  *             c_data[:data_len].decode('utf8'))
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(11, 499, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -127913,27 +136027,29 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":500
+        /* "src/lxml/saxparser.pxi":501
  *     try:
  *         context._target._handleSaxData(
  *             c_data[:data_len].decode('utf8'))             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_3 = __Pyx_decode_c_string(((char const *)__pyx_v_c_data), 0, __pyx_v_data_len, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 500, __pyx_L9_error)
+        __Pyx_TraceLine(501,0,__PYX_ERR(11, 501, __pyx_L9_error))
+        __pyx_t_3 = __Pyx_decode_c_string(((char const *)__pyx_v_c_data), 0, __pyx_v_data_len, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 501, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":499
+        /* "src/lxml/saxparser.pxi":500
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         context._target._handleSaxData(             # <<<<<<<<<<<<<<
  *             c_data[:data_len].decode('utf8'))
  *     except:
  */
-        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxData(__pyx_v_context->_target, __pyx_t_3); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 499, __pyx_L9_error)
+        __Pyx_TraceLine(500,0,__PYX_ERR(11, 500, __pyx_L9_error))
+        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxData(__pyx_v_context->_target, __pyx_t_3); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 500, __pyx_L9_error)
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-        /* "src/lxml/saxparser.pxi":498
+        /* "src/lxml/saxparser.pxi":499
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127948,27 +136064,29 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
       __pyx_L9_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":501
+      /* "src/lxml/saxparser.pxi":502
  *         context._target._handleSaxData(
  *             c_data[:data_len].decode('utf8'))
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(502,0,__PYX_ERR(11, 502, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxData", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 501, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 502, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":502
+        /* "src/lxml/saxparser.pxi":503
  *             c_data[:data_len].decode('utf8'))
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(503,0,__PYX_ERR(11, 503, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -127977,7 +136095,7 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":498
+      /* "src/lxml/saxparser.pxi":499
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -127998,13 +136116,14 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
     }
   }
 
-  /* "src/lxml/saxparser.pxi":504
+  /* "src/lxml/saxparser.pxi":505
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(11, 505, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -128043,7 +136162,7 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
     }
   }
 
-  /* "src/lxml/saxparser.pxi":492
+  /* "src/lxml/saxparser.pxi":493
  * 
  * 
  * cdef void _handleSaxData(void* ctxt, const_xmlChar* c_data, int data_len) with gil:             # <<<<<<<<<<<<<<
@@ -128052,15 +136171,21 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxData", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":507
+/* "src/lxml/saxparser.pxi":508
  * 
  * 
  * cdef void _handleSaxTargetDoctype(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -128071,6 +136196,7 @@ static void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, const xmlCha
 static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, const xmlChar *__pyx_v_c_name, const xmlChar *__pyx_v_c_public, const xmlChar *__pyx_v_c_system) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -128088,23 +136214,26 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxTargetDoctype", 0);
+  __Pyx_TraceCall("_handleSaxTargetDoctype", __pyx_f[11], 508, 0, __PYX_ERR(11, 508, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":511
+  /* "src/lxml/saxparser.pxi":512
  *                                   const_xmlChar* c_system) with gil:
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(512,0,__PYX_ERR(11, 512, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":512
+  /* "src/lxml/saxparser.pxi":513
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(513,0,__PYX_ERR(11, 513, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -128116,16 +136245,17 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":513
+    /* "src/lxml/saxparser.pxi":514
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(514,0,__PYX_ERR(11, 514, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":512
+    /* "src/lxml/saxparser.pxi":513
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -128134,25 +136264,27 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
  */
   }
 
-  /* "src/lxml/saxparser.pxi":514
+  /* "src/lxml/saxparser.pxi":515
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         context._target._handleSaxDoctype(
  */
+  __Pyx_TraceLine(515,0,__PYX_ERR(11, 515, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":515
+  /* "src/lxml/saxparser.pxi":516
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         context._target._handleSaxDoctype(
  *             funicodeOrNone(c_name),
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(11, 516, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -128163,49 +136295,53 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":517
+        /* "src/lxml/saxparser.pxi":518
  *     try:
  *         context._target._handleSaxDoctype(
  *             funicodeOrNone(c_name),             # <<<<<<<<<<<<<<
  *             funicodeOrNone(c_public),
  *             funicodeOrNone(c_system))
  */
-        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 517, __pyx_L9_error)
+        __Pyx_TraceLine(518,0,__PYX_ERR(11, 518, __pyx_L9_error))
+        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 518, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":518
+        /* "src/lxml/saxparser.pxi":519
  *         context._target._handleSaxDoctype(
  *             funicodeOrNone(c_name),
  *             funicodeOrNone(c_public),             # <<<<<<<<<<<<<<
  *             funicodeOrNone(c_system))
  *     except:
  */
-        __pyx_t_7 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_public); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 518, __pyx_L9_error)
+        __Pyx_TraceLine(519,0,__PYX_ERR(11, 519, __pyx_L9_error))
+        __pyx_t_7 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_public); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 519, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_7);
 
-        /* "src/lxml/saxparser.pxi":519
+        /* "src/lxml/saxparser.pxi":520
  *             funicodeOrNone(c_name),
  *             funicodeOrNone(c_public),
  *             funicodeOrNone(c_system))             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_system); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 519, __pyx_L9_error)
+        __Pyx_TraceLine(520,0,__PYX_ERR(11, 520, __pyx_L9_error))
+        __pyx_t_8 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_system); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 520, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_8);
 
-        /* "src/lxml/saxparser.pxi":516
+        /* "src/lxml/saxparser.pxi":517
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         context._target._handleSaxDoctype(             # <<<<<<<<<<<<<<
  *             funicodeOrNone(c_name),
  *             funicodeOrNone(c_public),
  */
-        __pyx_t_9 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxDoctype(__pyx_v_context->_target, __pyx_t_3, __pyx_t_7, __pyx_t_8); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 516, __pyx_L9_error)
+        __Pyx_TraceLine(517,0,__PYX_ERR(11, 517, __pyx_L9_error))
+        __pyx_t_9 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxDoctype(__pyx_v_context->_target, __pyx_t_3, __pyx_t_7, __pyx_t_8); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 517, __pyx_L9_error)
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-        /* "src/lxml/saxparser.pxi":515
+        /* "src/lxml/saxparser.pxi":516
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -128222,27 +136358,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "src/lxml/saxparser.pxi":520
+      /* "src/lxml/saxparser.pxi":521
  *             funicodeOrNone(c_public),
  *             funicodeOrNone(c_system))
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(521,0,__PYX_ERR(11, 521, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxTargetDoctype", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 520, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 521, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":521
+        /* "src/lxml/saxparser.pxi":522
  *             funicodeOrNone(c_system))
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(522,0,__PYX_ERR(11, 522, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -128251,7 +136389,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":515
+      /* "src/lxml/saxparser.pxi":516
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -128272,13 +136410,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
     }
   }
 
-  /* "src/lxml/saxparser.pxi":523
+  /* "src/lxml/saxparser.pxi":524
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(11, 524, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -128317,7 +136456,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
     }
   }
 
-  /* "src/lxml/saxparser.pxi":507
+  /* "src/lxml/saxparser.pxi":508
  * 
  * 
  * cdef void _handleSaxTargetDoctype(void* ctxt, const_xmlChar* c_name,             # <<<<<<<<<<<<<<
@@ -128326,15 +136465,21 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetDoctype(void *__pyx_v_ctxt, con
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxTargetDoctype", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":526
+/* "src/lxml/saxparser.pxi":527
  * 
  * 
  * cdef void _handleSaxStartDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -128346,6 +136491,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   xmlDoc *__pyx_v_c_doc;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -128364,23 +136510,26 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxStartDocument", 0);
+  __Pyx_TraceCall("_handleSaxStartDocument", __pyx_f[11], 527, 0, __PYX_ERR(11, 527, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":527
+  /* "src/lxml/saxparser.pxi":528
  * 
  * cdef void _handleSaxStartDocument(void* ctxt) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(528,0,__PYX_ERR(11, 528, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":528
+  /* "src/lxml/saxparser.pxi":529
  * cdef void _handleSaxStartDocument(void* ctxt) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(529,0,__PYX_ERR(11, 529, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -128392,16 +136541,17 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":529
+    /* "src/lxml/saxparser.pxi":530
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxStartDocument(ctxt)
  */
+    __Pyx_TraceLine(530,0,__PYX_ERR(11, 530, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":528
+    /* "src/lxml/saxparser.pxi":529
  * cdef void _handleSaxStartDocument(void* ctxt) with gil:
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -128410,44 +136560,48 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
  */
   }
 
-  /* "src/lxml/saxparser.pxi":530
+  /* "src/lxml/saxparser.pxi":531
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     context._origSaxStartDocument(ctxt)
  *     c_doc = c_ctxt.myDoc
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(11, 531, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":531
+  /* "src/lxml/saxparser.pxi":532
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxStartDocument(ctxt)             # <<<<<<<<<<<<<<
  *     c_doc = c_ctxt.myDoc
  *     try:
  */
+  __Pyx_TraceLine(532,0,__PYX_ERR(11, 532, __pyx_L1_error))
   __pyx_v_context->_origSaxStartDocument(__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":532
+  /* "src/lxml/saxparser.pxi":533
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxStartDocument(ctxt)
  *     c_doc = c_ctxt.myDoc             # <<<<<<<<<<<<<<
  *     try:
  *         context.startDocument(c_doc)
  */
+  __Pyx_TraceLine(533,0,__PYX_ERR(11, 533, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_ctxt->myDoc;
   __pyx_v_c_doc = __pyx_t_4;
 
-  /* "src/lxml/saxparser.pxi":533
+  /* "src/lxml/saxparser.pxi":534
  *     context._origSaxStartDocument(ctxt)
  *     c_doc = c_ctxt.myDoc
  *     try:             # <<<<<<<<<<<<<<
  *         context.startDocument(c_doc)
  *     except:
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(11, 534, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -128458,16 +136612,17 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
       __Pyx_XGOTREF(__pyx_t_7);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":534
+        /* "src/lxml/saxparser.pxi":535
  *     c_doc = c_ctxt.myDoc
  *     try:
  *         context.startDocument(c_doc)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->startDocument(__pyx_v_context, __pyx_v_c_doc); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 534, __pyx_L9_error)
+        __Pyx_TraceLine(535,0,__PYX_ERR(11, 535, __pyx_L9_error))
+        __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->startDocument(__pyx_v_context, __pyx_v_c_doc); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 535, __pyx_L9_error)
 
-        /* "src/lxml/saxparser.pxi":533
+        /* "src/lxml/saxparser.pxi":534
  *     context._origSaxStartDocument(ctxt)
  *     c_doc = c_ctxt.myDoc
  *     try:             # <<<<<<<<<<<<<<
@@ -128482,27 +136637,29 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
       __pyx_L9_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":535
+      /* "src/lxml/saxparser.pxi":536
  *     try:
  *         context.startDocument(c_doc)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(536,0,__PYX_ERR(11, 536, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxStartDocument", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(11, 535, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(11, 536, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GOTREF(__pyx_t_10);
 
-        /* "src/lxml/saxparser.pxi":536
+        /* "src/lxml/saxparser.pxi":537
  *         context.startDocument(c_doc)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(537,0,__PYX_ERR(11, 537, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -128511,7 +136668,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":533
+      /* "src/lxml/saxparser.pxi":534
  *     context._origSaxStartDocument(ctxt)
  *     c_doc = c_ctxt.myDoc
  *     try:             # <<<<<<<<<<<<<<
@@ -128532,13 +136689,14 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
     }
   }
 
-  /* "src/lxml/saxparser.pxi":538
+  /* "src/lxml/saxparser.pxi":539
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(539,0,__PYX_ERR(11, 539, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -128577,7 +136735,7 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
     }
   }
 
-  /* "src/lxml/saxparser.pxi":526
+  /* "src/lxml/saxparser.pxi":527
  * 
  * 
  * cdef void _handleSaxStartDocument(void* ctxt) with gil:             # <<<<<<<<<<<<<<
@@ -128586,15 +136744,21 @@ static void __pyx_f_4lxml_5etree__handleSaxStartDocument(void *__pyx_v_ctxt) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxStartDocument", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":541
+/* "src/lxml/saxparser.pxi":542
  * 
  * 
  * cdef void _handleSaxPI(void* ctxt, const_xmlChar* c_target,             # <<<<<<<<<<<<<<
@@ -128606,6 +136770,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   PyObject *__pyx_v_pi = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -128623,23 +136788,26 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxPI", 0);
+  __Pyx_TraceCall("_handleSaxPI", __pyx_f[11], 542, 0, __PYX_ERR(11, 542, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":544
+  /* "src/lxml/saxparser.pxi":545
  *                        const_xmlChar* c_data) with gil:
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(545,0,__PYX_ERR(11, 545, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":545
+  /* "src/lxml/saxparser.pxi":546
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(546,0,__PYX_ERR(11, 546, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -128651,16 +136819,17 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":546
+    /* "src/lxml/saxparser.pxi":547
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(547,0,__PYX_ERR(11, 547, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":545
+    /* "src/lxml/saxparser.pxi":546
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -128669,25 +136838,27 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
  */
   }
 
-  /* "src/lxml/saxparser.pxi":547
+  /* "src/lxml/saxparser.pxi":548
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         pi = context._target._handleSaxPi(
  */
+  __Pyx_TraceLine(548,0,__PYX_ERR(11, 548, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":548
+  /* "src/lxml/saxparser.pxi":549
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         pi = context._target._handleSaxPi(
  *             funicodeOrNone(c_target),
  */
+  __Pyx_TraceLine(549,0,__PYX_ERR(11, 549, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -128698,62 +136869,67 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":550
+        /* "src/lxml/saxparser.pxi":551
  *     try:
  *         pi = context._target._handleSaxPi(
  *             funicodeOrNone(c_target),             # <<<<<<<<<<<<<<
  *             funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:
  */
-        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 550, __pyx_L9_error)
+        __Pyx_TraceLine(551,0,__PYX_ERR(11, 551, __pyx_L9_error))
+        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 551, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":551
+        /* "src/lxml/saxparser.pxi":552
  *         pi = context._target._handleSaxPi(
  *             funicodeOrNone(c_target),
  *             funicodeOrEmpty(c_data))             # <<<<<<<<<<<<<<
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:
  *             context.events_iterator._events.append(('pi', pi))
  */
-        __pyx_t_7 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 551, __pyx_L9_error)
+        __Pyx_TraceLine(552,0,__PYX_ERR(11, 552, __pyx_L9_error))
+        __pyx_t_7 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 552, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_7);
 
-        /* "src/lxml/saxparser.pxi":549
+        /* "src/lxml/saxparser.pxi":550
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         pi = context._target._handleSaxPi(             # <<<<<<<<<<<<<<
  *             funicodeOrNone(c_target),
  *             funicodeOrEmpty(c_data))
  */
-        __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxPi(__pyx_v_context->_target, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 549, __pyx_L9_error)
+        __Pyx_TraceLine(550,0,__PYX_ERR(11, 550, __pyx_L9_error))
+        __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxPi(__pyx_v_context->_target, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 550, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_v_pi = __pyx_t_8;
         __pyx_t_8 = 0;
 
-        /* "src/lxml/saxparser.pxi":552
+        /* "src/lxml/saxparser.pxi":553
  *             funicodeOrNone(c_target),
  *             funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
  *             context.events_iterator._events.append(('pi', pi))
  *     except:
  */
+        __Pyx_TraceLine(553,0,__PYX_ERR(11, 553, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_PI) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":553
+          /* "src/lxml/saxparser.pxi":554
  *             funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:
  *             context.events_iterator._events.append(('pi', pi))             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
+          __Pyx_TraceLine(554,0,__PYX_ERR(11, 554, __pyx_L9_error))
           if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
             PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-            __PYX_ERR(11, 553, __pyx_L9_error)
+            __PYX_ERR(11, 554, __pyx_L9_error)
           }
-          __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 553, __pyx_L9_error)
+          __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 554, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_INCREF(__pyx_n_s_pi);
           __Pyx_GIVEREF(__pyx_n_s_pi);
@@ -128761,10 +136937,10 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
           __Pyx_INCREF(__pyx_v_pi);
           __Pyx_GIVEREF(__pyx_v_pi);
           PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_pi);
-          __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_8); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 553, __pyx_L9_error)
+          __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_8); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(11, 554, __pyx_L9_error)
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-          /* "src/lxml/saxparser.pxi":552
+          /* "src/lxml/saxparser.pxi":553
  *             funicodeOrNone(c_target),
  *             funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
@@ -128773,7 +136949,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
  */
         }
 
-        /* "src/lxml/saxparser.pxi":548
+        /* "src/lxml/saxparser.pxi":549
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -128790,27 +136966,29 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "src/lxml/saxparser.pxi":554
+      /* "src/lxml/saxparser.pxi":555
  *         if context._event_filter & PARSE_EVENT_FILTER_PI:
  *             context.events_iterator._events.append(('pi', pi))
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(555,0,__PYX_ERR(11, 555, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 554, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(11, 555, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
 
-        /* "src/lxml/saxparser.pxi":555
+        /* "src/lxml/saxparser.pxi":556
  *             context.events_iterator._events.append(('pi', pi))
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(556,0,__PYX_ERR(11, 556, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -128819,7 +136997,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":548
+      /* "src/lxml/saxparser.pxi":549
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -128840,13 +137018,14 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
     }
   }
 
-  /* "src/lxml/saxparser.pxi":557
+  /* "src/lxml/saxparser.pxi":558
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(558,0,__PYX_ERR(11, 558, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -128885,7 +137064,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
     }
   }
 
-  /* "src/lxml/saxparser.pxi":541
+  /* "src/lxml/saxparser.pxi":542
  * 
  * 
  * cdef void _handleSaxPI(void* ctxt, const_xmlChar* c_target,             # <<<<<<<<<<<<<<
@@ -128894,16 +137073,22 @@ static void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, const xmlChar
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxPI", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_pi);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":560
+/* "src/lxml/saxparser.pxi":561
  * 
  * 
  * cdef void _handleSaxPIEvent(void* ctxt, const_xmlChar* target,             # <<<<<<<<<<<<<<
@@ -128915,6 +137100,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   xmlNode *__pyx_v_c_node;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -128932,23 +137118,26 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxPIEvent", 0);
+  __Pyx_TraceCall("_handleSaxPIEvent", __pyx_f[11], 561, 0, __PYX_ERR(11, 561, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":563
+  /* "src/lxml/saxparser.pxi":564
  *                             const_xmlChar* data) with gil:
  *     # can only be called when collecting pi events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(564,0,__PYX_ERR(11, 564, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":564
+  /* "src/lxml/saxparser.pxi":565
  *     # can only be called when collecting pi events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(565,0,__PYX_ERR(11, 565, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -128960,16 +137149,17 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":565
+    /* "src/lxml/saxparser.pxi":566
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxPI(ctxt, target, data)
  */
+    __Pyx_TraceLine(566,0,__PYX_ERR(11, 566, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":564
+    /* "src/lxml/saxparser.pxi":565
  *     # can only be called when collecting pi events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -128978,56 +137168,61 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":566
+  /* "src/lxml/saxparser.pxi":567
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     context._origSaxPI(ctxt, target, data)
  *     c_node = _findLastEventNode(c_ctxt)
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(11, 567, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":567
+  /* "src/lxml/saxparser.pxi":568
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxPI(ctxt, target, data)             # <<<<<<<<<<<<<<
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:
  */
+  __Pyx_TraceLine(568,0,__PYX_ERR(11, 568, __pyx_L1_error))
   __pyx_v_context->_origSaxPI(__pyx_v_ctxt, __pyx_v_target, __pyx_v_data);
 
-  /* "src/lxml/saxparser.pxi":568
+  /* "src/lxml/saxparser.pxi":569
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxPI(ctxt, target, data)
  *     c_node = _findLastEventNode(c_ctxt)             # <<<<<<<<<<<<<<
  *     if c_node is NULL:
  *         return
  */
+  __Pyx_TraceLine(569,0,__PYX_ERR(11, 569, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__findLastEventNode(__pyx_v_c_ctxt);
 
-  /* "src/lxml/saxparser.pxi":569
+  /* "src/lxml/saxparser.pxi":570
  *     context._origSaxPI(ctxt, target, data)
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
  *         return
  *     try:
  */
+  __Pyx_TraceLine(570,0,__PYX_ERR(11, 570, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":570
+    /* "src/lxml/saxparser.pxi":571
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:
  *         return             # <<<<<<<<<<<<<<
  *     try:
  *         context.pushEvent('pi', c_node)
  */
+    __Pyx_TraceLine(571,0,__PYX_ERR(11, 571, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":569
+    /* "src/lxml/saxparser.pxi":570
  *     context._origSaxPI(ctxt, target, data)
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -129036,13 +137231,14 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":571
+  /* "src/lxml/saxparser.pxi":572
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
  *         context.pushEvent('pi', c_node)
  *     except:
  */
+  __Pyx_TraceLine(572,0,__PYX_ERR(11, 572, __pyx_L8_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -129053,16 +137249,17 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":572
+        /* "src/lxml/saxparser.pxi":573
  *         return
  *     try:
  *         context.pushEvent('pi', c_node)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->pushEvent(__pyx_v_context, __pyx_n_s_pi, __pyx_v_c_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 572, __pyx_L10_error)
+        __Pyx_TraceLine(573,0,__PYX_ERR(11, 573, __pyx_L10_error))
+        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->pushEvent(__pyx_v_context, __pyx_n_s_pi, __pyx_v_c_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 573, __pyx_L10_error)
 
-        /* "src/lxml/saxparser.pxi":571
+        /* "src/lxml/saxparser.pxi":572
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
@@ -129077,27 +137274,29 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
       __pyx_L10_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":573
+      /* "src/lxml/saxparser.pxi":574
  *     try:
  *         context.pushEvent('pi', c_node)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(574,0,__PYX_ERR(11, 574, __pyx_L12_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxPIEvent", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 573, __pyx_L12_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 574, __pyx_L12_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":574
+        /* "src/lxml/saxparser.pxi":575
  *         context.pushEvent('pi', c_node)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(575,0,__PYX_ERR(11, 575, __pyx_L12_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -129106,7 +137305,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
       }
       __pyx_L12_except_error:;
 
-      /* "src/lxml/saxparser.pxi":571
+      /* "src/lxml/saxparser.pxi":572
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
@@ -129127,13 +137326,14 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":576
+  /* "src/lxml/saxparser.pxi":577
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(577,0,__PYX_ERR(11, 577, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -129172,7 +137372,7 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":560
+  /* "src/lxml/saxparser.pxi":561
  * 
  * 
  * cdef void _handleSaxPIEvent(void* ctxt, const_xmlChar* target,             # <<<<<<<<<<<<<<
@@ -129181,15 +137381,21 @@ static void __pyx_f_4lxml_5etree__handleSaxPIEvent(void *__pyx_v_ctxt, const xml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxPIEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":579
+/* "src/lxml/saxparser.pxi":580
  * 
  * 
  * cdef void _handleSaxTargetComment(void* ctxt, const_xmlChar* c_data) with gil:             # <<<<<<<<<<<<<<
@@ -129201,6 +137407,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   PyObject *__pyx_v_comment = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -129218,23 +137425,26 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxTargetComment", 0);
+  __Pyx_TraceCall("_handleSaxTargetComment", __pyx_f[11], 580, 0, __PYX_ERR(11, 580, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":581
+  /* "src/lxml/saxparser.pxi":582
  * cdef void _handleSaxTargetComment(void* ctxt, const_xmlChar* c_data) with gil:
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(582,0,__PYX_ERR(11, 582, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":582
+  /* "src/lxml/saxparser.pxi":583
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(583,0,__PYX_ERR(11, 583, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -129246,16 +137456,17 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":583
+    /* "src/lxml/saxparser.pxi":584
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  */
+    __Pyx_TraceLine(584,0,__PYX_ERR(11, 584, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":582
+    /* "src/lxml/saxparser.pxi":583
  *     # can only be called if parsing with a target
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -129264,25 +137475,27 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
  */
   }
 
-  /* "src/lxml/saxparser.pxi":584
+  /* "src/lxml/saxparser.pxi":585
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     try:
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))
  */
+  __Pyx_TraceLine(585,0,__PYX_ERR(11, 585, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":585
+  /* "src/lxml/saxparser.pxi":586
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:
  */
+  __Pyx_TraceLine(586,0,__PYX_ERR(11, 586, __pyx_L7_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -129293,43 +137506,46 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":586
+        /* "src/lxml/saxparser.pxi":587
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))             # <<<<<<<<<<<<<<
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:
  *             context.events_iterator._events.append(('comment', comment))
  */
-        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 586, __pyx_L9_error)
+        __Pyx_TraceLine(587,0,__PYX_ERR(11, 587, __pyx_L9_error))
+        __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 587, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxComment(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 586, __pyx_L9_error)
+        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxComment(__pyx_v_context->_target, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 587, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_v_comment = __pyx_t_7;
         __pyx_t_7 = 0;
 
-        /* "src/lxml/saxparser.pxi":587
+        /* "src/lxml/saxparser.pxi":588
  *     try:
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
  *             context.events_iterator._events.append(('comment', comment))
  *     except:
  */
+        __Pyx_TraceLine(588,0,__PYX_ERR(11, 588, __pyx_L9_error))
         __pyx_t_1 = ((__pyx_v_context->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_COMMENT) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/saxparser.pxi":588
+          /* "src/lxml/saxparser.pxi":589
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:
  *             context.events_iterator._events.append(('comment', comment))             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
+          __Pyx_TraceLine(589,0,__PYX_ERR(11, 589, __pyx_L9_error))
           if (unlikely(__pyx_v_context->events_iterator->_events == Py_None)) {
             PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-            __PYX_ERR(11, 588, __pyx_L9_error)
+            __PYX_ERR(11, 589, __pyx_L9_error)
           }
-          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 588, __pyx_L9_error)
+          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 589, __pyx_L9_error)
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_n_s_comment);
           __Pyx_GIVEREF(__pyx_n_s_comment);
@@ -129337,10 +137553,10 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
           __Pyx_INCREF(__pyx_v_comment);
           __Pyx_GIVEREF(__pyx_v_comment);
           PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_comment);
-          __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_7); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 588, __pyx_L9_error)
+          __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_context->events_iterator->_events, __pyx_t_7); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 589, __pyx_L9_error)
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-          /* "src/lxml/saxparser.pxi":587
+          /* "src/lxml/saxparser.pxi":588
  *     try:
  *         comment = context._target._handleSaxComment(funicodeOrEmpty(c_data))
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
@@ -129349,7 +137565,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
  */
         }
 
-        /* "src/lxml/saxparser.pxi":585
+        /* "src/lxml/saxparser.pxi":586
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -129365,27 +137581,29 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "src/lxml/saxparser.pxi":589
+      /* "src/lxml/saxparser.pxi":590
  *         if context._event_filter & PARSE_EVENT_FILTER_COMMENT:
  *             context.events_iterator._events.append(('comment', comment))
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(590,0,__PYX_ERR(11, 590, __pyx_L11_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxTargetComment", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 589, __pyx_L11_except_error)
+        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(11, 590, __pyx_L11_except_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":590
+        /* "src/lxml/saxparser.pxi":591
  *             context.events_iterator._events.append(('comment', comment))
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(591,0,__PYX_ERR(11, 591, __pyx_L11_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -129394,7 +137612,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
       }
       __pyx_L11_except_error:;
 
-      /* "src/lxml/saxparser.pxi":585
+      /* "src/lxml/saxparser.pxi":586
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     try:             # <<<<<<<<<<<<<<
@@ -129415,13 +137633,14 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
     }
   }
 
-  /* "src/lxml/saxparser.pxi":592
+  /* "src/lxml/saxparser.pxi":593
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(593,0,__PYX_ERR(11, 593, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -129460,7 +137679,7 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
     }
   }
 
-  /* "src/lxml/saxparser.pxi":579
+  /* "src/lxml/saxparser.pxi":580
  * 
  * 
  * cdef void _handleSaxTargetComment(void* ctxt, const_xmlChar* c_data) with gil:             # <<<<<<<<<<<<<<
@@ -129469,16 +137688,22 @@ static void __pyx_f_4lxml_5etree__handleSaxTargetComment(void *__pyx_v_ctxt, con
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxTargetComment", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_comment);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":595
+/* "src/lxml/saxparser.pxi":596
  * 
  * 
  * cdef void _handleSaxComment(void* ctxt, const_xmlChar* text) with gil:             # <<<<<<<<<<<<<<
@@ -129490,6 +137715,7 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
   xmlParserCtxt *__pyx_v_c_ctxt;
   struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context = NULL;
   xmlNode *__pyx_v_c_node;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -129507,23 +137733,26 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_handleSaxComment", 0);
+  __Pyx_TraceCall("_handleSaxComment", __pyx_f[11], 596, 0, __PYX_ERR(11, 596, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":597
+  /* "src/lxml/saxparser.pxi":598
  * cdef void _handleSaxComment(void* ctxt, const_xmlChar* text) with gil:
  *     # can only be called when collecting comment events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  */
+  __Pyx_TraceLine(598,0,__PYX_ERR(11, 598, __pyx_L1_error))
   __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);
 
-  /* "src/lxml/saxparser.pxi":598
+  /* "src/lxml/saxparser.pxi":599
  *     # can only be called when collecting comment events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  */
+  __Pyx_TraceLine(599,0,__PYX_ERR(11, 599, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_ctxt->_private == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -129535,16 +137764,17 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":599
+    /* "src/lxml/saxparser.pxi":600
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return             # <<<<<<<<<<<<<<
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxComment(ctxt, text)
  */
+    __Pyx_TraceLine(600,0,__PYX_ERR(11, 600, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":598
+    /* "src/lxml/saxparser.pxi":599
  *     # can only be called when collecting comment events
  *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
@@ -129553,56 +137783,61 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":600
+  /* "src/lxml/saxparser.pxi":601
  *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
  *         return
  *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
  *     context._origSaxComment(ctxt, text)
  *     c_node = _findLastEventNode(c_ctxt)
  */
+  __Pyx_TraceLine(601,0,__PYX_ERR(11, 601, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_c_ctxt->_private);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/saxparser.pxi":601
+  /* "src/lxml/saxparser.pxi":602
  *         return
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxComment(ctxt, text)             # <<<<<<<<<<<<<<
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:
  */
+  __Pyx_TraceLine(602,0,__PYX_ERR(11, 602, __pyx_L1_error))
   __pyx_v_context->_origSaxComment(__pyx_v_ctxt, __pyx_v_text);
 
-  /* "src/lxml/saxparser.pxi":602
+  /* "src/lxml/saxparser.pxi":603
  *     context = <_SaxParserContext>c_ctxt._private
  *     context._origSaxComment(ctxt, text)
  *     c_node = _findLastEventNode(c_ctxt)             # <<<<<<<<<<<<<<
  *     if c_node is NULL:
  *         return
  */
+  __Pyx_TraceLine(603,0,__PYX_ERR(11, 603, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_5etree__findLastEventNode(__pyx_v_c_ctxt);
 
-  /* "src/lxml/saxparser.pxi":603
+  /* "src/lxml/saxparser.pxi":604
  *     context._origSaxComment(ctxt, text)
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
  *         return
  *     try:
  */
+  __Pyx_TraceLine(604,0,__PYX_ERR(11, 604, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":604
+    /* "src/lxml/saxparser.pxi":605
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:
  *         return             # <<<<<<<<<<<<<<
  *     try:
  *         context.pushEvent('comment', c_node)
  */
+    __Pyx_TraceLine(605,0,__PYX_ERR(11, 605, __pyx_L1_error))
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":603
+    /* "src/lxml/saxparser.pxi":604
  *     context._origSaxComment(ctxt, text)
  *     c_node = _findLastEventNode(c_ctxt)
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -129611,13 +137846,14 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
  */
   }
 
-  /* "src/lxml/saxparser.pxi":605
+  /* "src/lxml/saxparser.pxi":606
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
  *         context.pushEvent('comment', c_node)
  *     except:
  */
+  __Pyx_TraceLine(606,0,__PYX_ERR(11, 606, __pyx_L8_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -129628,16 +137864,17 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "src/lxml/saxparser.pxi":606
+        /* "src/lxml/saxparser.pxi":607
  *         return
  *     try:
  *         context.pushEvent('comment', c_node)             # <<<<<<<<<<<<<<
  *     except:
  *         context._handleSaxException(c_ctxt)
  */
-        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->pushEvent(__pyx_v_context, __pyx_n_s_comment, __pyx_v_c_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 606, __pyx_L10_error)
+        __Pyx_TraceLine(607,0,__PYX_ERR(11, 607, __pyx_L10_error))
+        __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->pushEvent(__pyx_v_context, __pyx_n_s_comment, __pyx_v_c_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(11, 607, __pyx_L10_error)
 
-        /* "src/lxml/saxparser.pxi":605
+        /* "src/lxml/saxparser.pxi":606
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
@@ -129652,27 +137889,29 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
       __pyx_L10_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "src/lxml/saxparser.pxi":607
+      /* "src/lxml/saxparser.pxi":608
  *     try:
  *         context.pushEvent('comment', c_node)
  *     except:             # <<<<<<<<<<<<<<
  *         context._handleSaxException(c_ctxt)
  *     finally:
  */
+      __Pyx_TraceLine(608,0,__PYX_ERR(11, 608, __pyx_L12_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._handleSaxComment", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 607, __pyx_L12_except_error)
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(11, 608, __pyx_L12_except_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_9);
 
-        /* "src/lxml/saxparser.pxi":608
+        /* "src/lxml/saxparser.pxi":609
  *         context.pushEvent('comment', c_node)
  *     except:
  *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(609,0,__PYX_ERR(11, 609, __pyx_L12_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -129681,7 +137920,7 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
       }
       __pyx_L12_except_error:;
 
-      /* "src/lxml/saxparser.pxi":605
+      /* "src/lxml/saxparser.pxi":606
  *     if c_node is NULL:
  *         return
  *     try:             # <<<<<<<<<<<<<<
@@ -129702,13 +137941,14 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":610
+  /* "src/lxml/saxparser.pxi":611
  *         context._handleSaxException(c_ctxt)
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(611,0,__PYX_ERR(11, 611, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -129747,7 +137987,7 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
     }
   }
 
-  /* "src/lxml/saxparser.pxi":595
+  /* "src/lxml/saxparser.pxi":596
  * 
  * 
  * cdef void _handleSaxComment(void* ctxt, const_xmlChar* text) with gil:             # <<<<<<<<<<<<<<
@@ -129756,15 +137996,21 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._handleSaxComment", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   #endif
 }
 
-/* "src/lxml/saxparser.pxi":613
+/* "src/lxml/saxparser.pxi":614
  * 
  * 
  * cdef inline xmlNode* _findLastEventNode(xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -129774,31 +138020,35 @@ static void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, const xml
 
 static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserCtxt *__pyx_v_c_ctxt) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_findLastEventNode", 0);
+  __Pyx_TraceCall("_findLastEventNode", __pyx_f[11], 614, 0, __PYX_ERR(11, 614, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":615
+  /* "src/lxml/saxparser.pxi":616
  * cdef inline xmlNode* _findLastEventNode(xmlparser.xmlParserCtxt* c_ctxt):
  *     # this mimics what libxml2 creates for comments/PIs
  *     if c_ctxt.inSubset == 1:             # <<<<<<<<<<<<<<
  *         return c_ctxt.myDoc.intSubset.last
  *     elif c_ctxt.inSubset == 2:
  */
+  __Pyx_TraceLine(616,0,__PYX_ERR(11, 616, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->inSubset == 1) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":616
+    /* "src/lxml/saxparser.pxi":617
  *     # this mimics what libxml2 creates for comments/PIs
  *     if c_ctxt.inSubset == 1:
  *         return c_ctxt.myDoc.intSubset.last             # <<<<<<<<<<<<<<
  *     elif c_ctxt.inSubset == 2:
  *         return c_ctxt.myDoc.extSubset.last
  */
+    __Pyx_TraceLine(617,0,__PYX_ERR(11, 617, __pyx_L1_error))
     __pyx_r = __pyx_v_c_ctxt->myDoc->intSubset->last;
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":615
+    /* "src/lxml/saxparser.pxi":616
  * cdef inline xmlNode* _findLastEventNode(xmlparser.xmlParserCtxt* c_ctxt):
  *     # this mimics what libxml2 creates for comments/PIs
  *     if c_ctxt.inSubset == 1:             # <<<<<<<<<<<<<<
@@ -129807,27 +138057,29 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserC
  */
   }
 
-  /* "src/lxml/saxparser.pxi":617
+  /* "src/lxml/saxparser.pxi":618
  *     if c_ctxt.inSubset == 1:
  *         return c_ctxt.myDoc.intSubset.last
  *     elif c_ctxt.inSubset == 2:             # <<<<<<<<<<<<<<
  *         return c_ctxt.myDoc.extSubset.last
  *     elif c_ctxt.node is NULL:
  */
+  __Pyx_TraceLine(618,0,__PYX_ERR(11, 618, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->inSubset == 2) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":618
+    /* "src/lxml/saxparser.pxi":619
  *         return c_ctxt.myDoc.intSubset.last
  *     elif c_ctxt.inSubset == 2:
  *         return c_ctxt.myDoc.extSubset.last             # <<<<<<<<<<<<<<
  *     elif c_ctxt.node is NULL:
  *         return c_ctxt.myDoc.last
  */
+    __Pyx_TraceLine(619,0,__PYX_ERR(11, 619, __pyx_L1_error))
     __pyx_r = __pyx_v_c_ctxt->myDoc->extSubset->last;
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":617
+    /* "src/lxml/saxparser.pxi":618
  *     if c_ctxt.inSubset == 1:
  *         return c_ctxt.myDoc.intSubset.last
  *     elif c_ctxt.inSubset == 2:             # <<<<<<<<<<<<<<
@@ -129836,27 +138088,29 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserC
  */
   }
 
-  /* "src/lxml/saxparser.pxi":619
+  /* "src/lxml/saxparser.pxi":620
  *     elif c_ctxt.inSubset == 2:
  *         return c_ctxt.myDoc.extSubset.last
  *     elif c_ctxt.node is NULL:             # <<<<<<<<<<<<<<
  *         return c_ctxt.myDoc.last
  *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(620,0,__PYX_ERR(11, 620, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->node == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":620
+    /* "src/lxml/saxparser.pxi":621
  *         return c_ctxt.myDoc.extSubset.last
  *     elif c_ctxt.node is NULL:
  *         return c_ctxt.myDoc.last             # <<<<<<<<<<<<<<
  *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
  *         return c_ctxt.node.last
  */
+    __Pyx_TraceLine(621,0,__PYX_ERR(11, 621, __pyx_L1_error))
     __pyx_r = __pyx_v_c_ctxt->myDoc->last;
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":619
+    /* "src/lxml/saxparser.pxi":620
  *     elif c_ctxt.inSubset == 2:
  *         return c_ctxt.myDoc.extSubset.last
  *     elif c_ctxt.node is NULL:             # <<<<<<<<<<<<<<
@@ -129865,27 +138119,29 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserC
  */
   }
 
-  /* "src/lxml/saxparser.pxi":621
+  /* "src/lxml/saxparser.pxi":622
  *     elif c_ctxt.node is NULL:
  *         return c_ctxt.myDoc.last
  *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
  *         return c_ctxt.node.last
  *     else:
  */
+  __Pyx_TraceLine(622,0,__PYX_ERR(11, 622, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":622
+    /* "src/lxml/saxparser.pxi":623
  *         return c_ctxt.myDoc.last
  *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
  *         return c_ctxt.node.last             # <<<<<<<<<<<<<<
  *     else:
  *         return c_ctxt.node.next
  */
+    __Pyx_TraceLine(623,0,__PYX_ERR(11, 623, __pyx_L1_error))
     __pyx_r = __pyx_v_c_ctxt->node->last;
     goto __pyx_L0;
 
-    /* "src/lxml/saxparser.pxi":621
+    /* "src/lxml/saxparser.pxi":622
  *     elif c_ctxt.node is NULL:
  *         return c_ctxt.myDoc.last
  *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -129894,19 +138150,20 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserC
  */
   }
 
-  /* "src/lxml/saxparser.pxi":624
+  /* "src/lxml/saxparser.pxi":625
  *         return c_ctxt.node.last
  *     else:
  *         return c_ctxt.node.next             # <<<<<<<<<<<<<<
  * 
  * 
  */
+  __Pyx_TraceLine(625,0,__PYX_ERR(11, 625, __pyx_L1_error))
   /*else*/ {
     __pyx_r = __pyx_v_c_ctxt->node->next;
     goto __pyx_L0;
   }
 
-  /* "src/lxml/saxparser.pxi":613
+  /* "src/lxml/saxparser.pxi":614
  * 
  * 
  * cdef inline xmlNode* _findLastEventNode(xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
@@ -129915,12 +138172,16 @@ static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findLastEventNode(xmlParserC
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._findLastEventNode", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":645
+/* "src/lxml/saxparser.pxi":646
  *     cdef bint _in_tail
  * 
  *     def __init__(self, *, element_factory=None, parser=None):             # <<<<<<<<<<<<<<
@@ -129957,7 +138218,7 @@ static int __pyx_pw_4lxml_5etree_11TreeBuilder_1__init__(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(11, 645, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(11, 646, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -129968,7 +138229,7 @@ static int __pyx_pw_4lxml_5etree_11TreeBuilder_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 645, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 646, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.TreeBuilder.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -129983,27 +138244,31 @@ static int __pyx_pw_4lxml_5etree_11TreeBuilder_1__init__(PyObject *__pyx_v_self,
 
 static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_element_factory, PyObject *__pyx_v_parser) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[11], 646, 0, __PYX_ERR(11, 646, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":646
+  /* "src/lxml/saxparser.pxi":647
  * 
  *     def __init__(self, *, element_factory=None, parser=None):
  *         self._sax_event_filter = \             # <<<<<<<<<<<<<<
  *             SAX_EVENT_START | SAX_EVENT_END | SAX_EVENT_DATA | \
  *             SAX_EVENT_PI | SAX_EVENT_COMMENT
  */
+  __Pyx_TraceLine(647,0,__PYX_ERR(11, 647, __pyx_L1_error))
   __pyx_v_self->__pyx_base._sax_event_filter = ((((__pyx_e_4lxml_5etree_SAX_EVENT_START | __pyx_e_4lxml_5etree_SAX_EVENT_END) | __pyx_e_4lxml_5etree_SAX_EVENT_DATA) | __pyx_e_4lxml_5etree_SAX_EVENT_PI) | __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);
 
-  /* "src/lxml/saxparser.pxi":649
+  /* "src/lxml/saxparser.pxi":650
  *             SAX_EVENT_START | SAX_EVENT_END | SAX_EVENT_DATA | \
  *             SAX_EVENT_PI | SAX_EVENT_COMMENT
  *         self._data = [] # data collector             # <<<<<<<<<<<<<<
  *         self._element_stack = [] # element stack
  *         self._element_stack_pop = self._element_stack.pop
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 649, __pyx_L1_error)
+  __Pyx_TraceLine(650,0,__PYX_ERR(11, 650, __pyx_L1_error))
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 650, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_data);
@@ -130011,14 +138276,15 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_data = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":650
+  /* "src/lxml/saxparser.pxi":651
  *             SAX_EVENT_PI | SAX_EVENT_COMMENT
  *         self._data = [] # data collector
  *         self._element_stack = [] # element stack             # <<<<<<<<<<<<<<
  *         self._element_stack_pop = self._element_stack.pop
  *         self._last = None # last element
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 650, __pyx_L1_error)
+  __Pyx_TraceLine(651,0,__PYX_ERR(11, 651, __pyx_L1_error))
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 651, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_element_stack);
@@ -130026,14 +138292,15 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_element_stack = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":651
+  /* "src/lxml/saxparser.pxi":652
  *         self._data = [] # data collector
  *         self._element_stack = [] # element stack
  *         self._element_stack_pop = self._element_stack.pop             # <<<<<<<<<<<<<<
  *         self._last = None # last element
  *         self._in_tail = 0 # true if we're after an end tag
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_element_stack, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 651, __pyx_L1_error)
+  __Pyx_TraceLine(652,0,__PYX_ERR(11, 652, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_element_stack, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 652, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_element_stack_pop);
@@ -130041,49 +138308,53 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_element_stack_pop = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":652
+  /* "src/lxml/saxparser.pxi":653
  *         self._element_stack = [] # element stack
  *         self._element_stack_pop = self._element_stack.pop
  *         self._last = None # last element             # <<<<<<<<<<<<<<
  *         self._in_tail = 0 # true if we're after an end tag
  *         self._factory = element_factory
  */
+  __Pyx_TraceLine(653,0,__PYX_ERR(11, 653, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_last);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
   __pyx_v_self->_last = ((struct LxmlElement *)Py_None);
 
-  /* "src/lxml/saxparser.pxi":653
+  /* "src/lxml/saxparser.pxi":654
  *         self._element_stack_pop = self._element_stack.pop
  *         self._last = None # last element
  *         self._in_tail = 0 # true if we're after an end tag             # <<<<<<<<<<<<<<
  *         self._factory = element_factory
  *         self._parser = parser
  */
+  __Pyx_TraceLine(654,0,__PYX_ERR(11, 654, __pyx_L1_error))
   __pyx_v_self->_in_tail = 0;
 
-  /* "src/lxml/saxparser.pxi":654
+  /* "src/lxml/saxparser.pxi":655
  *         self._last = None # last element
  *         self._in_tail = 0 # true if we're after an end tag
  *         self._factory = element_factory             # <<<<<<<<<<<<<<
  *         self._parser = parser
  * 
  */
+  __Pyx_TraceLine(655,0,__PYX_ERR(11, 655, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_element_factory);
   __Pyx_GIVEREF(__pyx_v_element_factory);
   __Pyx_GOTREF(__pyx_v_self->_factory);
   __Pyx_DECREF(__pyx_v_self->_factory);
   __pyx_v_self->_factory = __pyx_v_element_factory;
 
-  /* "src/lxml/saxparser.pxi":655
+  /* "src/lxml/saxparser.pxi":656
  *         self._in_tail = 0 # true if we're after an end tag
  *         self._factory = element_factory
  *         self._parser = parser             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(11, 655, __pyx_L1_error)
+  __Pyx_TraceLine(656,0,__PYX_ERR(11, 656, __pyx_L1_error))
+  if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(11, 656, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_parser;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -130092,7 +138363,7 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":645
+  /* "src/lxml/saxparser.pxi":646
  *     cdef bint _in_tail
  * 
  *     def __init__(self, *, element_factory=None, parser=None):             # <<<<<<<<<<<<<<
@@ -130108,11 +138379,12 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
   __Pyx_AddTraceback("lxml.etree.TreeBuilder.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":658
+/* "src/lxml/saxparser.pxi":659
  * 
  *     @cython.final
  *     cdef int _flush(self) except -1:             # <<<<<<<<<<<<<<
@@ -130123,89 +138395,97 @@ static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(struct __pyx_obj_4lxml_5
 static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self) {
   PyObject *__pyx_v_text = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_flush", 0);
+  __Pyx_TraceCall("_flush", __pyx_f[11], 659, 0, __PYX_ERR(11, 659, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":659
+  /* "src/lxml/saxparser.pxi":660
  *     @cython.final
  *     cdef int _flush(self) except -1:
  *         if self._data:             # <<<<<<<<<<<<<<
  *             if self._last is not None:
  *                 text = u"".join(self._data)
  */
+  __Pyx_TraceLine(660,0,__PYX_ERR(11, 660, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_data != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_data) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/saxparser.pxi":660
+    /* "src/lxml/saxparser.pxi":661
  *     cdef int _flush(self) except -1:
  *         if self._data:
  *             if self._last is not None:             # <<<<<<<<<<<<<<
  *                 text = u"".join(self._data)
  *                 if self._in_tail:
  */
+    __Pyx_TraceLine(661,0,__PYX_ERR(11, 661, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_last) != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/saxparser.pxi":661
+      /* "src/lxml/saxparser.pxi":662
  *         if self._data:
  *             if self._last is not None:
  *                 text = u"".join(self._data)             # <<<<<<<<<<<<<<
  *                 if self._in_tail:
  *                     assert self._last.tail is None, u"internal error (tail)"
  */
+      __Pyx_TraceLine(662,0,__PYX_ERR(11, 662, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_self->_data;
       __Pyx_INCREF(__pyx_t_3);
-      __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__16, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 661, __pyx_L1_error)
+      __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__23, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 662, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_v_text = ((PyObject*)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/saxparser.pxi":662
+      /* "src/lxml/saxparser.pxi":663
  *             if self._last is not None:
  *                 text = u"".join(self._data)
  *                 if self._in_tail:             # <<<<<<<<<<<<<<
  *                     assert self._last.tail is None, u"internal error (tail)"
  *                     self._last.tail = text
  */
+      __Pyx_TraceLine(663,0,__PYX_ERR(11, 663, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_self->_in_tail != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/saxparser.pxi":663
+        /* "src/lxml/saxparser.pxi":664
  *                 text = u"".join(self._data)
  *                 if self._in_tail:
  *                     assert self._last.tail is None, u"internal error (tail)"             # <<<<<<<<<<<<<<
  *                     self._last.tail = text
  *                 else:
  */
+        __Pyx_TraceLine(664,0,__PYX_ERR(11, 664, __pyx_L1_error))
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
-          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 663, __pyx_L1_error)
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 664, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_t_2 = (__pyx_t_4 == Py_None);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           if (unlikely(!(__pyx_t_2 != 0))) {
             PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_internal_error_tail);
-            __PYX_ERR(11, 663, __pyx_L1_error)
+            __PYX_ERR(11, 664, __pyx_L1_error)
           }
         }
         #endif
 
-        /* "src/lxml/saxparser.pxi":664
+        /* "src/lxml/saxparser.pxi":665
  *                 if self._in_tail:
  *                     assert self._last.tail is None, u"internal error (tail)"
  *                     self._last.tail = text             # <<<<<<<<<<<<<<
  *                 else:
  *                     assert self._last.text is None, u"internal error (text)"
  */
-        if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tail, __pyx_v_text) < 0) __PYX_ERR(11, 664, __pyx_L1_error)
+        __Pyx_TraceLine(665,0,__PYX_ERR(11, 665, __pyx_L1_error))
+        if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tail, __pyx_v_text) < 0) __PYX_ERR(11, 665, __pyx_L1_error)
 
-        /* "src/lxml/saxparser.pxi":662
+        /* "src/lxml/saxparser.pxi":663
  *             if self._last is not None:
  *                 text = u"".join(self._data)
  *                 if self._in_tail:             # <<<<<<<<<<<<<<
@@ -130215,39 +138495,41 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etr
         goto __pyx_L5;
       }
 
-      /* "src/lxml/saxparser.pxi":666
+      /* "src/lxml/saxparser.pxi":667
  *                     self._last.tail = text
  *                 else:
  *                     assert self._last.text is None, u"internal error (text)"             # <<<<<<<<<<<<<<
  *                     self._last.text = text
  *             del self._data[:]
  */
+      __Pyx_TraceLine(667,0,__PYX_ERR(11, 667, __pyx_L1_error))
       /*else*/ {
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
-          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 666, __pyx_L1_error)
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 667, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_t_2 = (__pyx_t_4 == Py_None);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           if (unlikely(!(__pyx_t_2 != 0))) {
             PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_internal_error_text);
-            __PYX_ERR(11, 666, __pyx_L1_error)
+            __PYX_ERR(11, 667, __pyx_L1_error)
           }
         }
         #endif
 
-        /* "src/lxml/saxparser.pxi":667
+        /* "src/lxml/saxparser.pxi":668
  *                 else:
  *                     assert self._last.text is None, u"internal error (text)"
  *                     self._last.text = text             # <<<<<<<<<<<<<<
  *             del self._data[:]
  *         return 0
  */
-        if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_text, __pyx_v_text) < 0) __PYX_ERR(11, 667, __pyx_L1_error)
+        __Pyx_TraceLine(668,0,__PYX_ERR(11, 668, __pyx_L1_error))
+        if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_text, __pyx_v_text) < 0) __PYX_ERR(11, 668, __pyx_L1_error)
       }
       __pyx_L5:;
 
-      /* "src/lxml/saxparser.pxi":660
+      /* "src/lxml/saxparser.pxi":661
  *     cdef int _flush(self) except -1:
  *         if self._data:
  *             if self._last is not None:             # <<<<<<<<<<<<<<
@@ -130256,20 +138538,21 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etr
  */
     }
 
-    /* "src/lxml/saxparser.pxi":668
+    /* "src/lxml/saxparser.pxi":669
  *                     assert self._last.text is None, u"internal error (text)"
  *                     self._last.text = text
  *             del self._data[:]             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(11, 669, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_data == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(11, 668, __pyx_L1_error)
+      __PYX_ERR(11, 669, __pyx_L1_error)
     }
-    if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(11, 668, __pyx_L1_error)
+    if (__Pyx_PyObject_DelSlice(__pyx_v_self->_data, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(11, 669, __pyx_L1_error)
 
-    /* "src/lxml/saxparser.pxi":659
+    /* "src/lxml/saxparser.pxi":660
  *     @cython.final
  *     cdef int _flush(self) except -1:
  *         if self._data:             # <<<<<<<<<<<<<<
@@ -130278,17 +138561,18 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "src/lxml/saxparser.pxi":669
+  /* "src/lxml/saxparser.pxi":670
  *                     self._last.text = text
  *             del self._data[:]
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     # internal SAX event handlers
  */
+  __Pyx_TraceLine(670,0,__PYX_ERR(11, 670, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":658
+  /* "src/lxml/saxparser.pxi":659
  * 
  *     @cython.final
  *     cdef int _flush(self) except -1:             # <<<<<<<<<<<<<<
@@ -130304,11 +138588,12 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etr
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_text);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":674
+/* "src/lxml/saxparser.pxi":675
  * 
  *     @cython.final
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -130318,6 +138603,7 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etr
 
 static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -130328,34 +138614,38 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_handleSaxStart", 0);
+  __Pyx_TraceCall("_handleSaxStart", __pyx_f[11], 675, 0, __PYX_ERR(11, 675, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":675
+  /* "src/lxml/saxparser.pxi":676
  *     @cython.final
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):
  *         self._flush()             # <<<<<<<<<<<<<<
  *         if self._factory is not None:
  *             self._last = self._factory(tag, attrib)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 675, __pyx_L1_error)
+  __Pyx_TraceLine(676,0,__PYX_ERR(11, 676, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 676, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":676
+  /* "src/lxml/saxparser.pxi":677
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):
  *         self._flush()
  *         if self._factory is not None:             # <<<<<<<<<<<<<<
  *             self._last = self._factory(tag, attrib)
  *             if self._element_stack:
  */
+  __Pyx_TraceLine(677,0,__PYX_ERR(11, 677, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_factory != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/saxparser.pxi":677
+    /* "src/lxml/saxparser.pxi":678
  *         self._flush()
  *         if self._factory is not None:
  *             self._last = self._factory(tag, attrib)             # <<<<<<<<<<<<<<
  *             if self._element_stack:
  *                 _appendChild(self._element_stack[-1], self._last)
  */
+    __Pyx_TraceLine(678,0,__PYX_ERR(11, 678, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_self->_factory);
     __pyx_t_5 = __pyx_v_self->_factory; __pyx_t_6 = NULL;
     __pyx_t_1 = 0;
@@ -130372,7 +138662,7 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_5)) {
       PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_tag, __pyx_v_attrib};
-      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 677, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 678, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_4);
     } else
@@ -130380,13 +138670,13 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
       PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_tag, __pyx_v_attrib};
-      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 677, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 678, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_4);
     } else
     #endif
     {
-      __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 677, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 678, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_6) {
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -130397,49 +138687,51 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
       __Pyx_INCREF(__pyx_v_attrib);
       __Pyx_GIVEREF(__pyx_v_attrib);
       PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_v_attrib);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 677, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 678, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 677, __pyx_L1_error)
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 678, __pyx_L1_error)
     __Pyx_GIVEREF(__pyx_t_4);
     __Pyx_GOTREF(__pyx_v_self->_last);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
     __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/saxparser.pxi":678
+    /* "src/lxml/saxparser.pxi":679
  *         if self._factory is not None:
  *             self._last = self._factory(tag, attrib)
  *             if self._element_stack:             # <<<<<<<<<<<<<<
  *                 _appendChild(self._element_stack[-1], self._last)
  *         elif self._element_stack:
  */
+    __Pyx_TraceLine(679,0,__PYX_ERR(11, 679, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/saxparser.pxi":679
+      /* "src/lxml/saxparser.pxi":680
  *             self._last = self._factory(tag, attrib)
  *             if self._element_stack:
  *                 _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
  *         elif self._element_stack:
  *             self._last = _makeSubElement(
  */
+      __Pyx_TraceLine(680,0,__PYX_ERR(11, 680, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        __PYX_ERR(11, 679, __pyx_L1_error)
+        __PYX_ERR(11, 680, __pyx_L1_error)
       }
-      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 679, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 680, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 679, __pyx_L1_error)
+      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 680, __pyx_L1_error)
       __pyx_t_5 = ((PyObject *)__pyx_v_self->_last);
       __Pyx_INCREF(__pyx_t_5);
-      __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_4), ((struct LxmlElement *)__pyx_t_5)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 679, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_4), ((struct LxmlElement *)__pyx_t_5)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 680, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/saxparser.pxi":678
+      /* "src/lxml/saxparser.pxi":679
  *         if self._factory is not None:
  *             self._last = self._factory(tag, attrib)
  *             if self._element_stack:             # <<<<<<<<<<<<<<
@@ -130448,7 +138740,7 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
  */
     }
 
-    /* "src/lxml/saxparser.pxi":676
+    /* "src/lxml/saxparser.pxi":677
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):
  *         self._flush()
  *         if self._factory is not None:             # <<<<<<<<<<<<<<
@@ -130458,39 +138750,42 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "src/lxml/saxparser.pxi":680
+  /* "src/lxml/saxparser.pxi":681
  *             if self._element_stack:
  *                 _appendChild(self._element_stack[-1], self._last)
  *         elif self._element_stack:             # <<<<<<<<<<<<<<
  *             self._last = _makeSubElement(
  *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
  */
+  __Pyx_TraceLine(681,0,__PYX_ERR(11, 681, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/saxparser.pxi":682
+    /* "src/lxml/saxparser.pxi":683
  *         elif self._element_stack:
  *             self._last = _makeSubElement(
  *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)             # <<<<<<<<<<<<<<
  *         else:
  *             self._last = _makeElement(
  */
+    __Pyx_TraceLine(683,0,__PYX_ERR(11, 683, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(11, 682, __pyx_L1_error)
+      __PYX_ERR(11, 683, __pyx_L1_error)
     }
-    __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 682, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 683, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 682, __pyx_L1_error)
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 683, __pyx_L1_error)
 
-    /* "src/lxml/saxparser.pxi":681
+    /* "src/lxml/saxparser.pxi":682
  *                 _appendChild(self._element_stack[-1], self._last)
  *         elif self._element_stack:
  *             self._last = _makeSubElement(             # <<<<<<<<<<<<<<
  *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
  *         else:
  */
-    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(((struct LxmlElement *)__pyx_t_5), __pyx_v_tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 681, __pyx_L1_error)
+    __Pyx_TraceLine(682,0,__PYX_ERR(11, 682, __pyx_L1_error))
+    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(((struct LxmlElement *)__pyx_t_5), __pyx_v_tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 682, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GIVEREF(__pyx_t_4);
@@ -130499,7 +138794,7 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
     __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/saxparser.pxi":680
+    /* "src/lxml/saxparser.pxi":681
  *             if self._element_stack:
  *                 _appendChild(self._element_stack[-1], self._last)
  *         elif self._element_stack:             # <<<<<<<<<<<<<<
@@ -130509,33 +138804,36 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "src/lxml/saxparser.pxi":684
+  /* "src/lxml/saxparser.pxi":685
  *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
  *         else:
  *             self._last = _makeElement(             # <<<<<<<<<<<<<<
  *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
  *         self._element_stack.append(self._last)
  */
+  __Pyx_TraceLine(685,0,__PYX_ERR(11, 685, __pyx_L1_error))
   /*else*/ {
 
-    /* "src/lxml/saxparser.pxi":685
+    /* "src/lxml/saxparser.pxi":686
  *         else:
  *             self._last = _makeElement(
  *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)             # <<<<<<<<<<<<<<
  *         self._element_stack.append(self._last)
  *         self._in_tail = 0
  */
+    __Pyx_TraceLine(686,0,__PYX_ERR(11, 686, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_self->_parser);
     __Pyx_INCREF(__pyx_t_4);
 
-    /* "src/lxml/saxparser.pxi":684
+    /* "src/lxml/saxparser.pxi":685
  *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
  *         else:
  *             self._last = _makeElement(             # <<<<<<<<<<<<<<
  *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
  *         self._element_stack.append(self._last)
  */
-    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v_tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_4), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 684, __pyx_L1_error)
+    __Pyx_TraceLine(685,0,__PYX_ERR(11, 685, __pyx_L1_error))
+    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v_tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_4), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 685, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GIVEREF(__pyx_t_5);
@@ -130546,44 +138844,47 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
   }
   __pyx_L3:;
 
-  /* "src/lxml/saxparser.pxi":686
+  /* "src/lxml/saxparser.pxi":687
  *             self._last = _makeElement(
  *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
  *         self._element_stack.append(self._last)             # <<<<<<<<<<<<<<
  *         self._in_tail = 0
  *         return self._last
  */
+  __Pyx_TraceLine(687,0,__PYX_ERR(11, 687, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-    __PYX_ERR(11, 686, __pyx_L1_error)
+    __PYX_ERR(11, 687, __pyx_L1_error)
   }
   __pyx_t_5 = ((PyObject *)__pyx_v_self->_last);
   __Pyx_INCREF(__pyx_t_5);
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_element_stack, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 686, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_element_stack, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(11, 687, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "src/lxml/saxparser.pxi":687
+  /* "src/lxml/saxparser.pxi":688
  *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
  *         self._element_stack.append(self._last)
  *         self._in_tail = 0             # <<<<<<<<<<<<<<
  *         return self._last
  * 
  */
+  __Pyx_TraceLine(688,0,__PYX_ERR(11, 688, __pyx_L1_error))
   __pyx_v_self->_in_tail = 0;
 
-  /* "src/lxml/saxparser.pxi":688
+  /* "src/lxml/saxparser.pxi":689
  *         self._element_stack.append(self._last)
  *         self._in_tail = 0
  *         return self._last             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(689,0,__PYX_ERR(11, 689, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
   __pyx_r = ((PyObject *)__pyx_v_self->_last);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":674
+  /* "src/lxml/saxparser.pxi":675
  * 
  *     @cython.final
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -130601,11 +138902,12 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":691
+/* "src/lxml/saxparser.pxi":692
  * 
  *     @cython.final
  *     cdef _handleSaxEnd(self, tag):             # <<<<<<<<<<<<<<
@@ -130615,29 +138917,33 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx
 
 static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxEnd", 0);
+  __Pyx_TraceCall("_handleSaxEnd", __pyx_f[11], 692, 0, __PYX_ERR(11, 692, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":692
+  /* "src/lxml/saxparser.pxi":693
  *     @cython.final
  *     cdef _handleSaxEnd(self, tag):
  *         self._flush()             # <<<<<<<<<<<<<<
  *         self._last = self._element_stack_pop()
  *         self._in_tail = 1
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 692, __pyx_L1_error)
+  __Pyx_TraceLine(693,0,__PYX_ERR(11, 693, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 693, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":693
+  /* "src/lxml/saxparser.pxi":694
  *     cdef _handleSaxEnd(self, tag):
  *         self._flush()
  *         self._last = self._element_stack_pop()             # <<<<<<<<<<<<<<
  *         self._in_tail = 1
  *         return self._last
  */
+  __Pyx_TraceLine(694,0,__PYX_ERR(11, 694, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_self->_element_stack_pop);
   __pyx_t_3 = __pyx_v_self->_element_stack_pop; __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -130650,42 +138956,44 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_o
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 693, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 694, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 693, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 694, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 693, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 694, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->_last);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
   __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/saxparser.pxi":694
+  /* "src/lxml/saxparser.pxi":695
  *         self._flush()
  *         self._last = self._element_stack_pop()
  *         self._in_tail = 1             # <<<<<<<<<<<<<<
  *         return self._last
  * 
  */
+  __Pyx_TraceLine(695,0,__PYX_ERR(11, 695, __pyx_L1_error))
   __pyx_v_self->_in_tail = 1;
 
-  /* "src/lxml/saxparser.pxi":695
+  /* "src/lxml/saxparser.pxi":696
  *         self._last = self._element_stack_pop()
  *         self._in_tail = 1
  *         return self._last             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(696,0,__PYX_ERR(11, 696, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
   __pyx_r = ((PyObject *)__pyx_v_self->_last);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":691
+  /* "src/lxml/saxparser.pxi":692
  * 
  *     @cython.final
  *     cdef _handleSaxEnd(self, tag):             # <<<<<<<<<<<<<<
@@ -130702,11 +139010,12 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_o
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":698
+/* "src/lxml/saxparser.pxi":699
  * 
  *     @cython.final
  *     cdef int _handleSaxData(self, data) except -1:             # <<<<<<<<<<<<<<
@@ -130716,24 +139025,27 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_o
 
 static int __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_data) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_handleSaxData", 0);
+  __Pyx_TraceCall("_handleSaxData", __pyx_f[11], 699, 0, __PYX_ERR(11, 699, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":699
+  /* "src/lxml/saxparser.pxi":700
  *     @cython.final
  *     cdef int _handleSaxData(self, data) except -1:
  *         self._data.append(data)             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(700,0,__PYX_ERR(11, 700, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_data == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-    __PYX_ERR(11, 699, __pyx_L1_error)
+    __PYX_ERR(11, 700, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 699, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_data, __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 700, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":698
+  /* "src/lxml/saxparser.pxi":699
  * 
  *     @cython.final
  *     cdef int _handleSaxData(self, data) except -1:             # <<<<<<<<<<<<<<
@@ -130748,11 +139060,12 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(struct __pyx_obj_4l
   __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxData", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":702
+/* "src/lxml/saxparser.pxi":703
  * 
  *     @cython.final
  *     cdef _handleSaxPi(self, target, data):             # <<<<<<<<<<<<<<
@@ -130762,6 +139075,7 @@ static int __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(struct __pyx_obj_4l
 
 static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -130770,24 +139084,27 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_handleSaxPi", 0);
+  __Pyx_TraceCall("_handleSaxPi", __pyx_f[11], 703, 0, __PYX_ERR(11, 703, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":703
+  /* "src/lxml/saxparser.pxi":704
  *     @cython.final
  *     cdef _handleSaxPi(self, target, data):
  *         self._flush()             # <<<<<<<<<<<<<<
  *         self._last = ProcessingInstruction(target, data)
  *         if self._element_stack:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 703, __pyx_L1_error)
+  __Pyx_TraceLine(704,0,__PYX_ERR(11, 704, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 704, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":704
+  /* "src/lxml/saxparser.pxi":705
  *     cdef _handleSaxPi(self, target, data):
  *         self._flush()
  *         self._last = ProcessingInstruction(target, data)             # <<<<<<<<<<<<<<
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 704, __pyx_L1_error)
+  __Pyx_TraceLine(705,0,__PYX_ERR(11, 705, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 705, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
@@ -130804,7 +139121,7 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_target, __pyx_v_data};
-    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 704, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 705, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
@@ -130812,13 +139129,13 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_target, __pyx_v_data};
-    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 704, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 2+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 705, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
   #endif
   {
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 704, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 705, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -130829,49 +139146,51 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
     __Pyx_INCREF(__pyx_v_data);
     __Pyx_GIVEREF(__pyx_v_data);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_1, __pyx_v_data);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 704, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 705, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 704, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 705, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->_last);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
   __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/saxparser.pxi":705
+  /* "src/lxml/saxparser.pxi":706
  *         self._flush()
  *         self._last = ProcessingInstruction(target, data)
  *         if self._element_stack:             # <<<<<<<<<<<<<<
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1
  */
+  __Pyx_TraceLine(706,0,__PYX_ERR(11, 706, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   if (__pyx_t_6) {
 
-    /* "src/lxml/saxparser.pxi":706
+    /* "src/lxml/saxparser.pxi":707
  *         self._last = ProcessingInstruction(target, data)
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
  *         self._in_tail = 1
  *         return self._last
  */
+    __Pyx_TraceLine(707,0,__PYX_ERR(11, 707, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(11, 706, __pyx_L1_error)
+      __PYX_ERR(11, 707, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 706, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 707, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 706, __pyx_L1_error)
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 707, __pyx_L1_error)
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_last);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_2), ((struct LxmlElement *)__pyx_t_3)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 706, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_2), ((struct LxmlElement *)__pyx_t_3)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 707, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/saxparser.pxi":705
+    /* "src/lxml/saxparser.pxi":706
  *         self._flush()
  *         self._last = ProcessingInstruction(target, data)
  *         if self._element_stack:             # <<<<<<<<<<<<<<
@@ -130880,28 +139199,30 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
  */
   }
 
-  /* "src/lxml/saxparser.pxi":707
+  /* "src/lxml/saxparser.pxi":708
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1             # <<<<<<<<<<<<<<
  *         return self._last
  * 
  */
+  __Pyx_TraceLine(708,0,__PYX_ERR(11, 708, __pyx_L1_error))
   __pyx_v_self->_in_tail = 1;
 
-  /* "src/lxml/saxparser.pxi":708
+  /* "src/lxml/saxparser.pxi":709
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1
  *         return self._last             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(709,0,__PYX_ERR(11, 709, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
   __pyx_r = ((PyObject *)__pyx_v_self->_last);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":702
+  /* "src/lxml/saxparser.pxi":703
  * 
  *     @cython.final
  *     cdef _handleSaxPi(self, target, data):             # <<<<<<<<<<<<<<
@@ -130919,11 +139240,12 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":711
+/* "src/lxml/saxparser.pxi":712
  * 
  *     @cython.final
  *     cdef _handleSaxComment(self, comment):             # <<<<<<<<<<<<<<
@@ -130933,6 +139255,7 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_ob
 
 static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_comment) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -130941,24 +139264,27 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __p
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_handleSaxComment", 0);
+  __Pyx_TraceCall("_handleSaxComment", __pyx_f[11], 712, 0, __PYX_ERR(11, 712, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":712
+  /* "src/lxml/saxparser.pxi":713
  *     @cython.final
  *     cdef _handleSaxComment(self, comment):
  *         self._flush()             # <<<<<<<<<<<<<<
  *         self._last = Comment(comment)
  *         if self._element_stack:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 712, __pyx_L1_error)
+  __Pyx_TraceLine(713,0,__PYX_ERR(11, 713, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__flush(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 713, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":713
+  /* "src/lxml/saxparser.pxi":714
  *     cdef _handleSaxComment(self, comment):
  *         self._flush()
  *         self._last = Comment(comment)             # <<<<<<<<<<<<<<
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 713, __pyx_L1_error)
+  __Pyx_TraceLine(714,0,__PYX_ERR(11, 714, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Comment); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 714, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -130971,13 +139297,13 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __p
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_comment); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 713, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_comment); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 714, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
   } else {
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_3)) {
       PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_comment};
-      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 713, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 714, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_2);
     } else
@@ -130985,62 +139311,64 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __p
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
       PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_comment};
-      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 713, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 714, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_2);
     } else
     #endif
     {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 713, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 714, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_comment);
       __Pyx_GIVEREF(__pyx_v_comment);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_comment);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 713, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 714, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 713, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 714, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->_last);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
   __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/saxparser.pxi":714
+  /* "src/lxml/saxparser.pxi":715
  *         self._flush()
  *         self._last = Comment(comment)
  *         if self._element_stack:             # <<<<<<<<<<<<<<
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(11, 715, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   if (__pyx_t_6) {
 
-    /* "src/lxml/saxparser.pxi":715
+    /* "src/lxml/saxparser.pxi":716
  *         self._last = Comment(comment)
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
  *         self._in_tail = 1
  *         return self._last
  */
+    __Pyx_TraceLine(716,0,__PYX_ERR(11, 716, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(11, 715, __pyx_L1_error)
+      __PYX_ERR(11, 716, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 715, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 716, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 715, __pyx_L1_error)
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(11, 716, __pyx_L1_error)
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_last);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_2), ((struct LxmlElement *)__pyx_t_3)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 715, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_2), ((struct LxmlElement *)__pyx_t_3)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 716, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/saxparser.pxi":714
+    /* "src/lxml/saxparser.pxi":715
  *         self._flush()
  *         self._last = Comment(comment)
  *         if self._element_stack:             # <<<<<<<<<<<<<<
@@ -131049,28 +139377,30 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __p
  */
   }
 
-  /* "src/lxml/saxparser.pxi":716
+  /* "src/lxml/saxparser.pxi":717
  *         if self._element_stack:
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1             # <<<<<<<<<<<<<<
  *         return self._last
  * 
  */
+  __Pyx_TraceLine(717,0,__PYX_ERR(11, 717, __pyx_L1_error))
   __pyx_v_self->_in_tail = 1;
 
-  /* "src/lxml/saxparser.pxi":717
+  /* "src/lxml/saxparser.pxi":718
  *             _appendChild(self._element_stack[-1], self._last)
  *         self._in_tail = 1
  *         return self._last             # <<<<<<<<<<<<<<
  * 
  *     # Python level event handlers
  */
+  __Pyx_TraceLine(718,0,__PYX_ERR(11, 718, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
   __pyx_r = ((PyObject *)__pyx_v_self->_last);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":711
+  /* "src/lxml/saxparser.pxi":712
  * 
  *     @cython.final
  *     cdef _handleSaxComment(self, comment):             # <<<<<<<<<<<<<<
@@ -131088,11 +139418,12 @@ static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":721
+/* "src/lxml/saxparser.pxi":722
  *     # Python level event handlers
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -131117,57 +139448,63 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_3close(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_2close(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__248)
   __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_TraceCall("close", __pyx_f[11], 722, 0, __PYX_ERR(11, 722, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":727
+  /* "src/lxml/saxparser.pxi":728
  *         element.
  *         """
  *         assert not self._element_stack, u"missing end tags"             # <<<<<<<<<<<<<<
  *         assert self._last is not None, u"missing toplevel element"
  *         return self._last
  */
+  __Pyx_TraceLine(728,0,__PYX_ERR(11, 728, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
     if (unlikely(!((!__pyx_t_1) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_missing_end_tags);
-      __PYX_ERR(11, 727, __pyx_L1_error)
+      __PYX_ERR(11, 728, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "src/lxml/saxparser.pxi":728
+  /* "src/lxml/saxparser.pxi":729
  *         """
  *         assert not self._element_stack, u"missing end tags"
  *         assert self._last is not None, u"missing toplevel element"             # <<<<<<<<<<<<<<
  *         return self._last
  * 
  */
+  __Pyx_TraceLine(729,0,__PYX_ERR(11, 729, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_last) != Py_None);
     if (unlikely(!(__pyx_t_1 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_missing_toplevel_element);
-      __PYX_ERR(11, 728, __pyx_L1_error)
+      __PYX_ERR(11, 729, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "src/lxml/saxparser.pxi":729
+  /* "src/lxml/saxparser.pxi":730
  *         assert not self._element_stack, u"missing end tags"
  *         assert self._last is not None, u"missing toplevel element"
  *         return self._last             # <<<<<<<<<<<<<<
  * 
  *     def data(self, data):
  */
+  __Pyx_TraceLine(730,0,__PYX_ERR(11, 730, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
   __pyx_r = ((PyObject *)__pyx_v_self->_last);
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":721
+  /* "src/lxml/saxparser.pxi":722
  *     # Python level event handlers
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -131181,11 +139518,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_2close(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":731
+/* "src/lxml/saxparser.pxi":732
  *         return self._last
  * 
  *     def data(self, data):             # <<<<<<<<<<<<<<
@@ -131210,20 +139548,24 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_5data(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_4data(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__249)
   __Pyx_RefNannySetupContext("data", 0);
+  __Pyx_TraceCall("data", __pyx_f[11], 732, 0, __PYX_ERR(11, 732, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":737
+  /* "src/lxml/saxparser.pxi":738
  *         8-bit string containing ASCII text, or a Unicode string.
  *         """
  *         self._handleSaxData(data)             # <<<<<<<<<<<<<<
  * 
  *     def start(self, tag, attrs, nsmap=None):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 737, __pyx_L1_error)
+  __Pyx_TraceLine(738,0,__PYX_ERR(11, 738, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(11, 738, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":731
+  /* "src/lxml/saxparser.pxi":732
  *         return self._last
  * 
  *     def data(self, data):             # <<<<<<<<<<<<<<
@@ -131239,11 +139581,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_4data(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":739
+/* "src/lxml/saxparser.pxi":740
  *         self._handleSaxData(data)
  * 
  *     def start(self, tag, attrs, nsmap=None):             # <<<<<<<<<<<<<<
@@ -131288,7 +139631,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_7start(PyObject *__pyx_v_se
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attrs)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, 1); __PYX_ERR(11, 739, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, 1); __PYX_ERR(11, 740, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
@@ -131298,7 +139641,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_7start(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start") < 0)) __PYX_ERR(11, 739, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start") < 0)) __PYX_ERR(11, 740, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -131316,7 +139659,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_7start(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 739, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 740, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.TreeBuilder.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -131331,35 +139674,40 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_7start(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_6start(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrs, PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__250)
   __Pyx_RefNannySetupContext("start", 0);
+  __Pyx_TraceCall("start", __pyx_f[11], 740, 0, __PYX_ERR(11, 740, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_nsmap);
 
-  /* "src/lxml/saxparser.pxi":744
+  /* "src/lxml/saxparser.pxi":745
  *         Opens a new element.
  *         """
  *         if nsmap is None:             # <<<<<<<<<<<<<<
  *             nsmap = IMMUTABLE_EMPTY_MAPPING
  *         return self._handleSaxStart(tag, attrs, nsmap)
  */
+  __Pyx_TraceLine(745,0,__PYX_ERR(11, 745, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_nsmap == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/saxparser.pxi":745
+    /* "src/lxml/saxparser.pxi":746
  *         """
  *         if nsmap is None:
  *             nsmap = IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
  *         return self._handleSaxStart(tag, attrs, nsmap)
  * 
  */
+    __Pyx_TraceLine(746,0,__PYX_ERR(11, 746, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING);
 
-    /* "src/lxml/saxparser.pxi":744
+    /* "src/lxml/saxparser.pxi":745
  *         Opens a new element.
  *         """
  *         if nsmap is None:             # <<<<<<<<<<<<<<
@@ -131368,21 +139716,22 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_6start(struct __pyx_obj_4lx
  */
   }
 
-  /* "src/lxml/saxparser.pxi":746
+  /* "src/lxml/saxparser.pxi":747
  *         if nsmap is None:
  *             nsmap = IMMUTABLE_EMPTY_MAPPING
  *         return self._handleSaxStart(tag, attrs, nsmap)             # <<<<<<<<<<<<<<
  * 
  *     def end(self, tag):
  */
+  __Pyx_TraceLine(747,0,__PYX_ERR(11, 747, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag, __pyx_v_attrs, __pyx_v_nsmap); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 746, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag, __pyx_v_attrs, __pyx_v_nsmap); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 747, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":739
+  /* "src/lxml/saxparser.pxi":740
  *         self._handleSaxData(data)
  * 
  *     def start(self, tag, attrs, nsmap=None):             # <<<<<<<<<<<<<<
@@ -131398,11 +139747,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_6start(struct __pyx_obj_4lx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_nsmap);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":748
+/* "src/lxml/saxparser.pxi":749
  *         return self._handleSaxStart(tag, attrs, nsmap)
  * 
  *     def end(self, tag):             # <<<<<<<<<<<<<<
@@ -131428,6 +139778,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_9end(PyObject *__pyx_v_self
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_8end(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -131435,45 +139786,50 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_8end(struct __pyx_obj_4lxml
   Py_ssize_t __pyx_t_4;
   Py_UCS4 __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__251)
   __Pyx_RefNannySetupContext("end", 0);
+  __Pyx_TraceCall("end", __pyx_f[11], 749, 0, __PYX_ERR(11, 749, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":753
+  /* "src/lxml/saxparser.pxi":754
  *         Closes the current element.
  *         """
  *         element = self._handleSaxEnd(tag)             # <<<<<<<<<<<<<<
  *         assert self._last.tag == tag,\
  *             f"end tag mismatch (expected {self._last.tag}, got {tag})"
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 753, __pyx_L1_error)
+  __Pyx_TraceLine(754,0,__PYX_ERR(11, 754, __pyx_L1_error))
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 754, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/saxparser.pxi":754
+  /* "src/lxml/saxparser.pxi":755
  *         """
  *         element = self._handleSaxEnd(tag)
  *         assert self._last.tag == tag,\             # <<<<<<<<<<<<<<
  *             f"end tag mismatch (expected {self._last.tag}, got {tag})"
  *         return element
  */
+  __Pyx_TraceLine(755,0,__PYX_ERR(11, 755, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 754, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 755, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_tag, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 754, __pyx_L1_error)
+    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_tag, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 755, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(11, 754, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(11, 755, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (unlikely(!__pyx_t_3)) {
 
-      /* "src/lxml/saxparser.pxi":755
+      /* "src/lxml/saxparser.pxi":756
  *         element = self._handleSaxEnd(tag)
  *         assert self._last.tag == tag,\
  *             f"end tag mismatch (expected {self._last.tag}, got {tag})"             # <<<<<<<<<<<<<<
  *         return element
  * 
  */
-      __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 755, __pyx_L1_error)
+      __Pyx_TraceLine(756,0,__PYX_ERR(11, 756, __pyx_L1_error))
+      __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 756, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_4 = 0;
       __pyx_t_5 = 127;
@@ -131481,9 +139837,9 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_8end(struct __pyx_obj_4lxml
       __pyx_t_4 += 27;
       __Pyx_GIVEREF(__pyx_kp_u_end_tag_mismatch_expected);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_end_tag_mismatch_expected);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 755, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_last), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 756, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 755, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 756, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
@@ -131495,40 +139851,41 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_8end(struct __pyx_obj_4lxml
       __pyx_t_4 += 6;
       __Pyx_GIVEREF(__pyx_kp_u_got);
       PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_got);
-      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 755, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 756, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
       __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_6);
       __pyx_t_6 = 0;
-      __Pyx_INCREF(__pyx_kp_u__76);
+      __Pyx_INCREF(__pyx_kp_u__252);
       __pyx_t_4 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__76);
-      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__76);
-      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 755, __pyx_L1_error)
+      __Pyx_GIVEREF(__pyx_kp_u__252);
+      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__252);
+      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 756, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       PyErr_SetObject(PyExc_AssertionError, __pyx_t_6);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __PYX_ERR(11, 754, __pyx_L1_error)
+      __PYX_ERR(11, 755, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "src/lxml/saxparser.pxi":756
+  /* "src/lxml/saxparser.pxi":757
  *         assert self._last.tag == tag,\
  *             f"end tag mismatch (expected {self._last.tag}, got {tag})"
  *         return element             # <<<<<<<<<<<<<<
  * 
  *     def pi(self, target, data):
  */
+  __Pyx_TraceLine(757,0,__PYX_ERR(11, 757, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_element);
   __pyx_r = __pyx_v_element;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":748
+  /* "src/lxml/saxparser.pxi":749
  *         return self._handleSaxStart(tag, attrs, nsmap)
  * 
  *     def end(self, tag):             # <<<<<<<<<<<<<<
@@ -131546,11 +139903,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_8end(struct __pyx_obj_4lxml
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":758
+/* "src/lxml/saxparser.pxi":759
  *         return element
  * 
  *     def pi(self, target, data):             # <<<<<<<<<<<<<<
@@ -131591,11 +139949,11 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_11pi(PyObject *__pyx_v_self
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, 1); __PYX_ERR(11, 758, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, 1); __PYX_ERR(11, 759, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pi") < 0)) __PYX_ERR(11, 758, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pi") < 0)) __PYX_ERR(11, 759, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -131608,7 +139966,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_11pi(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 758, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 759, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.TreeBuilder.pi", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -131623,25 +139981,29 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_11pi(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_10pi(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__253)
   __Pyx_RefNannySetupContext("pi", 0);
+  __Pyx_TraceCall("pi", __pyx_f[11], 759, 0, __PYX_ERR(11, 759, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":761
+  /* "src/lxml/saxparser.pxi":762
  *         u"""pi(self, target, data)
  *         """
  *         return self._handleSaxPi(target, data)             # <<<<<<<<<<<<<<
  * 
  *     def comment(self, comment):
  */
+  __Pyx_TraceLine(762,0,__PYX_ERR(11, 762, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_target, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 761, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_target, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":758
+  /* "src/lxml/saxparser.pxi":759
  *         return element
  * 
  *     def pi(self, target, data):             # <<<<<<<<<<<<<<
@@ -131656,11 +140018,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_10pi(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/saxparser.pxi":763
+/* "src/lxml/saxparser.pxi":764
  *         return self._handleSaxPi(target, data)
  * 
  *     def comment(self, comment):             # <<<<<<<<<<<<<<
@@ -131685,23 +140048,27 @@ static PyObject *__pyx_pw_4lxml_5etree_11TreeBuilder_13comment(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_12comment(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_comment) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__254)
   __Pyx_RefNannySetupContext("comment", 0);
+  __Pyx_TraceCall("comment", __pyx_f[11], 764, 0, __PYX_ERR(11, 764, __pyx_L1_error));
 
-  /* "src/lxml/saxparser.pxi":766
+  /* "src/lxml/saxparser.pxi":767
  *         u"""comment(self, comment)
  *         """
  *         return self._handleSaxComment(comment)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(767,0,__PYX_ERR(11, 767, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 766, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 767, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/saxparser.pxi":763
+  /* "src/lxml/saxparser.pxi":764
  *         return self._handleSaxPi(target, data)
  * 
  *     def comment(self, comment):             # <<<<<<<<<<<<<<
@@ -131716,6 +140083,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_12comment(struct __pyx_obj_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -131792,8 +140160,11 @@ static PyObject *__pyx_pw_4lxml_5etree_19_TargetParserResult_1__init__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_19_TargetParserResult___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_result) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__255)
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[12], 14, 0, __PYX_ERR(12, 14, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":15
  *     # machinery towards the API level functions
@@ -131802,6 +140173,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_TargetParserResult___init__(CYTHON_UNU
  * 
  * 
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(12, 15, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_result, __pyx_v_result) < 0) __PYX_ERR(12, 15, __pyx_L1_error)
 
   /* "src/lxml/parsertarget.pxi":14
@@ -131820,6 +140192,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_TargetParserResult___init__(CYTHON_UNU
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -131886,6 +140259,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
   int __pyx_v_event_filter;
   PyObject *__pyx_v_arguments = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -131903,6 +140277,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
   int __pyx_t_14;
   int __pyx_t_15;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[12], 29, 0, __PYX_ERR(12, 29, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":31
  *     def __cinit__(self, target):
@@ -131911,6 +140286,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         self._start_takes_nsmap = 0
  *         try:
  */
+  __Pyx_TraceLine(31,0,__PYX_ERR(12, 31, __pyx_L1_error))
   __pyx_v_event_filter = 0;
 
   /* "src/lxml/parsertarget.pxi":32
@@ -131920,6 +140296,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         try:
  *             self._target_start = target.start
  */
+  __Pyx_TraceLine(32,0,__PYX_ERR(12, 32, __pyx_L1_error))
   __pyx_v_self->_start_takes_nsmap = 0;
 
   /* "src/lxml/parsertarget.pxi":33
@@ -131929,6 +140306,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_start = target.start
  *             if self._target_start is not None:
  */
+  __Pyx_TraceLine(33,0,__PYX_ERR(12, 33, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -131945,6 +140323,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_start is not None:
  *                 event_filter |= SAX_EVENT_START
  */
+      __Pyx_TraceLine(34,0,__PYX_ERR(12, 34, __pyx_L3_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 34, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -131960,6 +140339,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_START
  *         except AttributeError:
  */
+      __Pyx_TraceLine(35,0,__PYX_ERR(12, 35, __pyx_L3_error))
       __pyx_t_5 = (__pyx_v_self->_target_start != Py_None);
       __pyx_t_6 = (__pyx_t_5 != 0);
       if (__pyx_t_6) {
@@ -131971,6 +140351,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(36,0,__PYX_ERR(12, 36, __pyx_L3_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_START);
 
         /* "src/lxml/parsertarget.pxi":35
@@ -131998,6 +140379,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 arguments = inspect_getargspec(self._target_start)
  *                 if len(arguments[0]) > 3 or arguments[1] is not None:
  */
+    __Pyx_TraceLine(40,0,__PYX_ERR(12, 40, __pyx_L5_except_error))
     /*else:*/ {
       {
         __Pyx_PyThreadState_declare
@@ -132015,6 +140397,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 if len(arguments[0]) > 3 or arguments[1] is not None:
  *                     self._start_takes_nsmap = 1
  */
+          __Pyx_TraceLine(41,0,__PYX_ERR(12, 41, __pyx_L10_error))
           __Pyx_INCREF(__pyx_v_4lxml_5etree_inspect_getargspec);
           __pyx_t_10 = __pyx_v_4lxml_5etree_inspect_getargspec; __pyx_t_11 = NULL;
           if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
@@ -132069,6 +140452,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                     self._start_takes_nsmap = 1
  *             except TypeError:
  */
+          __Pyx_TraceLine(42,0,__PYX_ERR(12, 42, __pyx_L10_error))
           __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_arguments, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 42, __pyx_L10_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_t_13 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(12, 42, __pyx_L10_error)
@@ -132095,6 +140479,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             except TypeError:
  *                 pass
  */
+            __Pyx_TraceLine(43,0,__PYX_ERR(12, 43, __pyx_L10_error))
             __pyx_v_self->_start_takes_nsmap = 1;
 
             /* "src/lxml/parsertarget.pxi":42
@@ -132131,6 +140516,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 pass
  *         try:
  */
+        __Pyx_TraceLine(44,0,__PYX_ERR(12, 44, __pyx_L12_except_error))
         __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
         if (__pyx_t_15) {
           __Pyx_ErrRestore(0,0,0);
@@ -132173,6 +140559,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         else:
  */
+    __Pyx_TraceLine(37,0,__PYX_ERR(12, 37, __pyx_L5_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132208,6 +140595,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_end = target.end
  *             if self._target_end is not None:
  */
+  __Pyx_TraceLine(46,0,__PYX_ERR(12, 46, __pyx_L19_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -132224,6 +140612,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_end is not None:
  *                 event_filter |= SAX_EVENT_END
  */
+      __Pyx_TraceLine(47,0,__PYX_ERR(12, 47, __pyx_L19_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_end); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 47, __pyx_L19_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -132239,6 +140628,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_END
  *         except AttributeError:
  */
+      __Pyx_TraceLine(48,0,__PYX_ERR(12, 48, __pyx_L19_error))
       __pyx_t_6 = (__pyx_v_self->_target_end != Py_None);
       __pyx_t_14 = (__pyx_t_6 != 0);
       if (__pyx_t_14) {
@@ -132250,6 +140640,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(49,0,__PYX_ERR(12, 49, __pyx_L19_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_END);
 
         /* "src/lxml/parsertarget.pxi":48
@@ -132286,6 +140677,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         try:
  */
+    __Pyx_TraceLine(50,0,__PYX_ERR(12, 50, __pyx_L21_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132321,6 +140713,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_data = target.data
  *             if self._target_data is not None:
  */
+  __Pyx_TraceLine(52,0,__PYX_ERR(12, 52, __pyx_L26_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -132337,6 +140730,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_data is not None:
  *                 event_filter |= SAX_EVENT_DATA
  */
+      __Pyx_TraceLine(53,0,__PYX_ERR(12, 53, __pyx_L26_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 53, __pyx_L26_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -132352,6 +140746,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_DATA
  *         except AttributeError:
  */
+      __Pyx_TraceLine(54,0,__PYX_ERR(12, 54, __pyx_L26_error))
       __pyx_t_14 = (__pyx_v_self->_target_data != Py_None);
       __pyx_t_6 = (__pyx_t_14 != 0);
       if (__pyx_t_6) {
@@ -132363,6 +140758,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(55,0,__PYX_ERR(12, 55, __pyx_L26_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_DATA);
 
         /* "src/lxml/parsertarget.pxi":54
@@ -132399,6 +140795,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         try:
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(12, 56, __pyx_L28_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132434,6 +140831,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_doctype = target.doctype
  *             if self._target_doctype is not None:
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(12, 58, __pyx_L33_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -132450,6 +140848,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_doctype is not None:
  *                 event_filter |= SAX_EVENT_DOCTYPE
  */
+      __Pyx_TraceLine(59,0,__PYX_ERR(12, 59, __pyx_L33_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 59, __pyx_L33_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -132465,6 +140864,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_DOCTYPE
  *         except AttributeError:
  */
+      __Pyx_TraceLine(60,0,__PYX_ERR(12, 60, __pyx_L33_error))
       __pyx_t_6 = (__pyx_v_self->_target_doctype != Py_None);
       __pyx_t_14 = (__pyx_t_6 != 0);
       if (__pyx_t_14) {
@@ -132476,6 +140876,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(61,0,__PYX_ERR(12, 61, __pyx_L33_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_DOCTYPE);
 
         /* "src/lxml/parsertarget.pxi":60
@@ -132512,6 +140913,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         try:
  */
+    __Pyx_TraceLine(62,0,__PYX_ERR(12, 62, __pyx_L35_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132547,6 +140949,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_pi = target.pi
  *             if self._target_pi is not None:
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(12, 64, __pyx_L40_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -132563,6 +140966,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_pi is not None:
  *                 event_filter |= SAX_EVENT_PI
  */
+      __Pyx_TraceLine(65,0,__PYX_ERR(12, 65, __pyx_L40_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_pi); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 65, __pyx_L40_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -132578,6 +140982,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_PI
  *         except AttributeError:
  */
+      __Pyx_TraceLine(66,0,__PYX_ERR(12, 66, __pyx_L40_error))
       __pyx_t_14 = (__pyx_v_self->_target_pi != Py_None);
       __pyx_t_6 = (__pyx_t_14 != 0);
       if (__pyx_t_6) {
@@ -132589,6 +140994,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(67,0,__PYX_ERR(12, 67, __pyx_L40_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_PI);
 
         /* "src/lxml/parsertarget.pxi":66
@@ -132625,6 +141031,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         try:
  */
+    __Pyx_TraceLine(68,0,__PYX_ERR(12, 68, __pyx_L42_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132660,6 +141067,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             self._target_comment = target.comment
  *             if self._target_comment is not None:
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(12, 70, __pyx_L47_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -132676,6 +141084,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             if self._target_comment is not None:
  *                 event_filter |= SAX_EVENT_COMMENT
  */
+      __Pyx_TraceLine(71,0,__PYX_ERR(12, 71, __pyx_L47_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_comment); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 71, __pyx_L47_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
@@ -132691,6 +141100,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *                 event_filter |= SAX_EVENT_COMMENT
  *         except AttributeError:
  */
+      __Pyx_TraceLine(72,0,__PYX_ERR(12, 72, __pyx_L47_error))
       __pyx_t_6 = (__pyx_v_self->_target_comment != Py_None);
       __pyx_t_14 = (__pyx_t_6 != 0);
       if (__pyx_t_14) {
@@ -132702,6 +141112,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *         except AttributeError:
  *             pass
  */
+        __Pyx_TraceLine(73,0,__PYX_ERR(12, 73, __pyx_L47_error))
         __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);
 
         /* "src/lxml/parsertarget.pxi":72
@@ -132738,6 +141149,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  *             pass
  *         self._sax_event_filter = event_filter
  */
+    __Pyx_TraceLine(74,0,__PYX_ERR(12, 74, __pyx_L49_except_error))
     __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_15) {
       __Pyx_ErrRestore(0,0,0);
@@ -132773,6 +141185,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
  * 
  *     cdef _handleSaxStart(self, tag, attrib, nsmap):
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(12, 76, __pyx_L1_error))
   __pyx_v_self->__pyx_base._sax_event_filter = __pyx_v_event_filter;
 
   /* "src/lxml/parsertarget.pxi":29
@@ -132795,6 +141208,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_arguments);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -132809,6 +141223,7 @@ static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___cinit__(struct __pyx
 
 static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -132817,6 +141232,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxStart", 0);
+  __Pyx_TraceCall("_handleSaxStart", __pyx_f[12], 78, 0, __PYX_ERR(12, 78, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":79
  * 
@@ -132825,6 +141241,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
  *             return self._target_start(tag, attrib, nsmap)
  *         else:
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(12, 79, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_start_takes_nsmap != 0);
   if (__pyx_t_1) {
 
@@ -132835,6 +141252,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
  *         else:
  *             return self._target_start(tag, attrib)
  */
+    __Pyx_TraceLine(80,0,__PYX_ERR(12, 80, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_target_start);
     __pyx_t_3 = __pyx_v_self->_target_start; __pyx_t_4 = NULL;
@@ -132905,6 +141323,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
  * 
  *     cdef _handleSaxEnd(self, tag):
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(12, 82, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_target_start);
@@ -132976,6 +141395,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -132990,12 +141410,14 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(s
 
 static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxEnd", 0);
+  __Pyx_TraceCall("_handleSaxEnd", __pyx_f[12], 84, 0, __PYX_ERR(12, 84, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":85
  * 
@@ -133004,6 +141426,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd(str
  * 
  *     cdef int _handleSaxData(self, data) except -1:
  */
+  __Pyx_TraceLine(85,0,__PYX_ERR(12, 85, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_target_end);
   __pyx_t_2 = __pyx_v_self->_target_end; __pyx_t_3 = NULL;
@@ -133071,6 +141494,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd(str
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -133085,12 +141509,14 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd(str
 
 static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_data) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxData", 0);
+  __Pyx_TraceCall("_handleSaxData", __pyx_f[12], 87, 0, __PYX_ERR(12, 87, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":88
  * 
@@ -133099,6 +141525,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData(struct _
  * 
  *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(12, 88, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_self->_target_data);
   __pyx_t_2 = __pyx_v_self->_target_data; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -133164,6 +141591,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData(struct _
   __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxData", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -133178,6 +141606,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData(struct _
 
 static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_root_tag, PyObject *__pyx_v_public_id, PyObject *__pyx_v_system_id) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -133185,6 +141614,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struc
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxDoctype", 0);
+  __Pyx_TraceCall("_handleSaxDoctype", __pyx_f[12], 90, 0, __PYX_ERR(12, 90, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":91
  * 
@@ -133193,6 +141623,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struc
  * 
  *     cdef _handleSaxPi(self, target, data):
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(12, 91, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_self->_target_doctype);
   __pyx_t_2 = __pyx_v_self->_target_doctype; __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
@@ -133263,6 +141694,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struc
   __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxDoctype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -133277,6 +141709,7 @@ static int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struc
 
 static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -133284,6 +141717,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(stru
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxPi", 0);
+  __Pyx_TraceCall("_handleSaxPi", __pyx_f[12], 93, 0, __PYX_ERR(12, 93, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":94
  * 
@@ -133292,6 +141726,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(stru
  * 
  *     cdef _handleSaxComment(self, comment):
  */
+  __Pyx_TraceLine(94,0,__PYX_ERR(12, 94, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_target_pi);
   __pyx_t_2 = __pyx_v_self->_target_pi; __pyx_t_3 = NULL;
@@ -133361,6 +141796,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(stru
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -133375,12 +141811,14 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(stru
 
 static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_comment) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_handleSaxComment", 0);
+  __Pyx_TraceCall("_handleSaxComment", __pyx_f[12], 96, 0, __PYX_ERR(12, 96, __pyx_L1_error));
 
   /* "src/lxml/parsertarget.pxi":97
  * 
@@ -133389,6 +141827,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment
  * 
  * 
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(12, 97, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_target_comment);
   __pyx_t_2 = __pyx_v_self->_target_comment; __pyx_t_3 = NULL;
@@ -133456,11 +141895,12 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parsertarget.pxi":106
+/* "src/lxml/parsertarget.pxi":107
  *     """
  *     cdef object _python_target
  *     cdef int _setTarget(self, target) except -1:             # <<<<<<<<<<<<<<
@@ -133470,34 +141910,38 @@ static PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment
 
 static int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, PyObject *__pyx_v_target) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_setTarget", 0);
+  __Pyx_TraceCall("_setTarget", __pyx_f[12], 107, 0, __PYX_ERR(12, 107, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_target);
 
-  /* "src/lxml/parsertarget.pxi":107
+  /* "src/lxml/parsertarget.pxi":108
  *     cdef object _python_target
  *     cdef int _setTarget(self, target) except -1:
  *         self._python_target = target             # <<<<<<<<<<<<<<
  *         if not isinstance(target, _SaxParserTarget) or \
  *                 hasattr(target, u'__dict__'):
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(12, 108, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_target);
   __Pyx_GIVEREF(__pyx_v_target);
   __Pyx_GOTREF(__pyx_v_self->_python_target);
   __Pyx_DECREF(__pyx_v_self->_python_target);
   __pyx_v_self->_python_target = __pyx_v_target;
 
-  /* "src/lxml/parsertarget.pxi":108
+  /* "src/lxml/parsertarget.pxi":109
  *     cdef int _setTarget(self, target) except -1:
  *         self._python_target = target
  *         if not isinstance(target, _SaxParserTarget) or \             # <<<<<<<<<<<<<<
  *                 hasattr(target, u'__dict__'):
  *             target = _PythonSaxParserTarget(target)
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(12, 109, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_target, __pyx_ptype_4lxml_5etree__SaxParserTarget); 
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (!__pyx_t_3) {
@@ -133506,40 +141950,43 @@ static int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_o
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/parsertarget.pxi":109
+  /* "src/lxml/parsertarget.pxi":110
  *         self._python_target = target
  *         if not isinstance(target, _SaxParserTarget) or \
  *                 hasattr(target, u'__dict__'):             # <<<<<<<<<<<<<<
  *             target = _PythonSaxParserTarget(target)
  *         self._setSaxParserTarget(target)
  */
-  __pyx_t_3 = __Pyx_HasAttr(__pyx_v_target, __pyx_n_u_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(12, 109, __pyx_L1_error)
+  __Pyx_TraceLine(110,0,__PYX_ERR(12, 110, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_HasAttr(__pyx_v_target, __pyx_n_u_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(12, 110, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_3 != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/parsertarget.pxi":108
+  /* "src/lxml/parsertarget.pxi":109
  *     cdef int _setTarget(self, target) except -1:
  *         self._python_target = target
  *         if not isinstance(target, _SaxParserTarget) or \             # <<<<<<<<<<<<<<
  *                 hasattr(target, u'__dict__'):
  *             target = _PythonSaxParserTarget(target)
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(12, 109, __pyx_L1_error))
   if (__pyx_t_1) {
 
-    /* "src/lxml/parsertarget.pxi":110
+    /* "src/lxml/parsertarget.pxi":111
  *         if not isinstance(target, _SaxParserTarget) or \
  *                 hasattr(target, u'__dict__'):
  *             target = _PythonSaxParserTarget(target)             # <<<<<<<<<<<<<<
  *         self._setSaxParserTarget(target)
  *         return 0
  */
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__PythonSaxParserTarget), __pyx_v_target); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 110, __pyx_L1_error)
+    __Pyx_TraceLine(111,0,__PYX_ERR(12, 111, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__PythonSaxParserTarget), __pyx_v_target); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 111, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_target, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/parsertarget.pxi":108
+    /* "src/lxml/parsertarget.pxi":109
  *     cdef int _setTarget(self, target) except -1:
  *         self._python_target = target
  *         if not isinstance(target, _SaxParserTarget) or \             # <<<<<<<<<<<<<<
@@ -133548,27 +141995,29 @@ static int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_o
  */
   }
 
-  /* "src/lxml/parsertarget.pxi":111
+  /* "src/lxml/parsertarget.pxi":112
  *                 hasattr(target, u'__dict__'):
  *             target = _PythonSaxParserTarget(target)
  *         self._setSaxParserTarget(target)             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
-  if (!(likely(((__pyx_v_target) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_target, __pyx_ptype_4lxml_5etree__SaxParserTarget))))) __PYX_ERR(12, 111, __pyx_L1_error)
+  __Pyx_TraceLine(112,0,__PYX_ERR(12, 112, __pyx_L1_error))
+  if (!(likely(((__pyx_v_target) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_target, __pyx_ptype_4lxml_5etree__SaxParserTarget))))) __PYX_ERR(12, 112, __pyx_L1_error)
   ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._setSaxParserTarget(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_target));
 
-  /* "src/lxml/parsertarget.pxi":112
+  /* "src/lxml/parsertarget.pxi":113
  *             target = _PythonSaxParserTarget(target)
  *         self._setSaxParserTarget(target)
  *         return 0             # <<<<<<<<<<<<<<
  * 
  *     cdef _ParserContext _copy(self):
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(12, 113, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parsertarget.pxi":106
+  /* "src/lxml/parsertarget.pxi":107
  *     """
  *     cdef object _python_target
  *     cdef int _setTarget(self, target) except -1:             # <<<<<<<<<<<<<<
@@ -133583,11 +142032,12 @@ static int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_o
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_target);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parsertarget.pxi":114
+/* "src/lxml/parsertarget.pxi":115
  *         return 0
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -133598,49 +142048,54 @@ static int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_o
 static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_20_TargetParserContext__copy(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[12], 115, 0, __PYX_ERR(12, 115, __pyx_L1_error));
 
-  /* "src/lxml/parsertarget.pxi":116
+  /* "src/lxml/parsertarget.pxi":117
  *     cdef _ParserContext _copy(self):
  *         cdef _TargetParserContext context
  *         context = _ParserContext._copy(self)             # <<<<<<<<<<<<<<
  *         context._setTarget(self._python_target)
  *         return context
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_14_ParserContext__copy(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 116, __pyx_L1_error)
+  __Pyx_TraceLine(117,0,__PYX_ERR(12, 117, __pyx_L1_error))
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_14_ParserContext__copy(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 117, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__TargetParserContext))))) __PYX_ERR(12, 116, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__TargetParserContext))))) __PYX_ERR(12, 117, __pyx_L1_error)
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/parsertarget.pxi":117
+  /* "src/lxml/parsertarget.pxi":118
  *         cdef _TargetParserContext context
  *         context = _ParserContext._copy(self)
  *         context._setTarget(self._python_target)             # <<<<<<<<<<<<<<
  *         return context
  * 
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(12, 118, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_python_target;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(__pyx_v_context, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 117, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(__pyx_v_context, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 118, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/parsertarget.pxi":118
+  /* "src/lxml/parsertarget.pxi":119
  *         context = _ParserContext._copy(self)
  *         context._setTarget(self._python_target)
  *         return context             # <<<<<<<<<<<<<<
  * 
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(12, 119, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_context);
   goto __pyx_L0;
 
-  /* "src/lxml/parsertarget.pxi":114
+  /* "src/lxml/parsertarget.pxi":115
  *         return 0
  * 
  *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
@@ -133656,11 +142111,12 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_20_Tar
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parsertarget.pxi":120
+/* "src/lxml/parsertarget.pxi":121
  *         return context
  * 
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):             # <<<<<<<<<<<<<<
@@ -133669,28 +142125,32 @@ static struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_20_Tar
  */
 
 static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, xmlDoc *__pyx_v_result) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_cleanupTargetParserContext", 0);
+  __Pyx_TraceCall("_cleanupTargetParserContext", __pyx_f[12], 121, 0, __PYX_ERR(12, 121, __pyx_L1_error));
 
-  /* "src/lxml/parsertarget.pxi":121
+  /* "src/lxml/parsertarget.pxi":122
  * 
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  *         if self._c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
  *             if self._c_ctxt.myDoc is not result and \
  *                     self._c_ctxt.myDoc._private is NULL:
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(12, 122, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/parsertarget.pxi":122
+    /* "src/lxml/parsertarget.pxi":123
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  *         if self._c_ctxt.myDoc is not NULL:
  *             if self._c_ctxt.myDoc is not result and \             # <<<<<<<<<<<<<<
  *                     self._c_ctxt.myDoc._private is NULL:
  *                 # no _Document proxy => orphen
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(12, 123, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc != __pyx_v_result) != 0);
     if (__pyx_t_2) {
     } else {
@@ -133698,36 +142158,39 @@ static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserCont
       goto __pyx_L5_bool_binop_done;
     }
 
-    /* "src/lxml/parsertarget.pxi":123
+    /* "src/lxml/parsertarget.pxi":124
  *         if self._c_ctxt.myDoc is not NULL:
  *             if self._c_ctxt.myDoc is not result and \
  *                     self._c_ctxt.myDoc._private is NULL:             # <<<<<<<<<<<<<<
  *                 # no _Document proxy => orphen
  *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(12, 124, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc->_private == NULL) != 0);
     __pyx_t_1 = __pyx_t_2;
     __pyx_L5_bool_binop_done:;
 
-    /* "src/lxml/parsertarget.pxi":122
+    /* "src/lxml/parsertarget.pxi":123
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  *         if self._c_ctxt.myDoc is not NULL:
  *             if self._c_ctxt.myDoc is not result and \             # <<<<<<<<<<<<<<
  *                     self._c_ctxt.myDoc._private is NULL:
  *                 # no _Document proxy => orphen
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(12, 123, __pyx_L1_error))
     if (__pyx_t_1) {
 
-      /* "src/lxml/parsertarget.pxi":125
+      /* "src/lxml/parsertarget.pxi":126
  *                     self._c_ctxt.myDoc._private is NULL:
  *                 # no _Document proxy => orphen
  *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)             # <<<<<<<<<<<<<<
  *             self._c_ctxt.myDoc = NULL
  * 
  */
+      __Pyx_TraceLine(126,0,__PYX_ERR(12, 126, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc);
 
-      /* "src/lxml/parsertarget.pxi":122
+      /* "src/lxml/parsertarget.pxi":123
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  *         if self._c_ctxt.myDoc is not NULL:
  *             if self._c_ctxt.myDoc is not result and \             # <<<<<<<<<<<<<<
@@ -133736,16 +142199,17 @@ static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserCont
  */
     }
 
-    /* "src/lxml/parsertarget.pxi":126
+    /* "src/lxml/parsertarget.pxi":127
  *                 # no _Document proxy => orphen
  *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)
  *             self._c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser, xmlDoc* result,
  */
+    __Pyx_TraceLine(127,0,__PYX_ERR(12, 127, __pyx_L1_error))
     __pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc = NULL;
 
-    /* "src/lxml/parsertarget.pxi":121
+    /* "src/lxml/parsertarget.pxi":122
  * 
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
  *         if self._c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
@@ -133754,7 +142218,7 @@ static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserCont
  */
   }
 
-  /* "src/lxml/parsertarget.pxi":120
+  /* "src/lxml/parsertarget.pxi":121
  *         return context
  * 
  *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):             # <<<<<<<<<<<<<<
@@ -133763,10 +142227,15 @@ static void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserCont
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._TargetParserContext._cleanupTargetParserContext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/parsertarget.pxi":128
+/* "src/lxml/parsertarget.pxi":129
  *             self._c_ctxt.myDoc = NULL
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser, xmlDoc* result,             # <<<<<<<<<<<<<<
@@ -133778,6 +142247,7 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
   int __pyx_v_recover;
   PyObject *__pyx_v_exc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -133795,23 +142265,26 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("_handleParseResult", 0);
+  __Pyx_TraceCall("_handleParseResult", __pyx_f[12], 129, 0, __PYX_ERR(12, 129, __pyx_L1_error));
 
-  /* "src/lxml/parsertarget.pxi":131
+  /* "src/lxml/parsertarget.pxi":132
  *                                    filename):
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         try:
  *             if self._has_raised():
  */
+  __Pyx_TraceLine(132,0,__PYX_ERR(12, 132, __pyx_L1_error))
   __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parsertarget.pxi":132
+  /* "src/lxml/parsertarget.pxi":133
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         try:             # <<<<<<<<<<<<<<
  *             if self._has_raised():
  *                 self._cleanupTargetParserContext(result)
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(12, 133, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -133821,36 +142294,39 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "src/lxml/parsertarget.pxi":133
+      /* "src/lxml/parsertarget.pxi":134
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         try:
  *             if self._has_raised():             # <<<<<<<<<<<<<<
  *                 self._cleanupTargetParserContext(result)
  *                 self._raise_if_stored()
  */
-      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(12, 133, __pyx_L3_error)
+      __Pyx_TraceLine(134,0,__PYX_ERR(12, 134, __pyx_L3_error))
+      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(12, 134, __pyx_L3_error)
       __pyx_t_5 = (__pyx_t_4 != 0);
       if (__pyx_t_5) {
 
-        /* "src/lxml/parsertarget.pxi":134
+        /* "src/lxml/parsertarget.pxi":135
  *         try:
  *             if self._has_raised():
  *                 self._cleanupTargetParserContext(result)             # <<<<<<<<<<<<<<
  *                 self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:
  */
+        __Pyx_TraceLine(135,0,__PYX_ERR(12, 135, __pyx_L3_error))
         __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext(__pyx_v_self, __pyx_v_result);
 
-        /* "src/lxml/parsertarget.pxi":135
+        /* "src/lxml/parsertarget.pxi":136
  *             if self._has_raised():
  *                 self._cleanupTargetParserContext(result)
  *                 self._raise_if_stored()             # <<<<<<<<<<<<<<
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  */
-        __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(12, 135, __pyx_L3_error)
+        __Pyx_TraceLine(136,0,__PYX_ERR(12, 136, __pyx_L3_error))
+        __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(12, 136, __pyx_L3_error)
 
-        /* "src/lxml/parsertarget.pxi":133
+        /* "src/lxml/parsertarget.pxi":134
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         try:
  *             if self._has_raised():             # <<<<<<<<<<<<<<
@@ -133859,13 +142335,14 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
  */
       }
 
-      /* "src/lxml/parsertarget.pxi":136
+      /* "src/lxml/parsertarget.pxi":137
  *                 self._cleanupTargetParserContext(result)
  *                 self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  */
+      __Pyx_TraceLine(137,0,__PYX_ERR(12, 137, __pyx_L3_error))
       __pyx_t_4 = ((!(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->wellFormed != 0)) != 0);
       if (__pyx_t_4) {
       } else {
@@ -133877,19 +142354,20 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
       __pyx_L11_bool_binop_done:;
       if (__pyx_t_5) {
 
-        /* "src/lxml/parsertarget.pxi":137
+        /* "src/lxml/parsertarget.pxi":138
  *                 self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)             # <<<<<<<<<<<<<<
  *         except:
  *             if python.IS_PYTHON2:
  */
+        __Pyx_TraceLine(138,0,__PYX_ERR(12, 138, __pyx_L3_error))
         __pyx_t_7 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._error_log);
         __Pyx_INCREF(__pyx_t_7);
-        __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_7)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(12, 137, __pyx_L3_error)
+        __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_7)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(12, 138, __pyx_L3_error)
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "src/lxml/parsertarget.pxi":136
+        /* "src/lxml/parsertarget.pxi":137
  *                 self._cleanupTargetParserContext(result)
  *                 self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
@@ -133898,7 +142376,7 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
  */
       }
 
-      /* "src/lxml/parsertarget.pxi":132
+      /* "src/lxml/parsertarget.pxi":133
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         try:             # <<<<<<<<<<<<<<
@@ -133913,38 +142391,41 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "src/lxml/parsertarget.pxi":138
+    /* "src/lxml/parsertarget.pxi":139
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:             # <<<<<<<<<<<<<<
  *             if python.IS_PYTHON2:
  *                 exc = sys.exc_info()
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(12, 139, __pyx_L5_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._TargetParserContext._handleParseResult", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(12, 138, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(12, 139, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_9);
 
-      /* "src/lxml/parsertarget.pxi":139
+      /* "src/lxml/parsertarget.pxi":140
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
  *                 exc = sys.exc_info()
  *                 # Python 2 can't chain exceptions
  */
+      __Pyx_TraceLine(140,0,__PYX_ERR(12, 140, __pyx_L5_except_error))
       __pyx_t_5 = (IS_PYTHON2 != 0);
       if (likely(__pyx_t_5)) {
 
-        /* "src/lxml/parsertarget.pxi":140
+        /* "src/lxml/parsertarget.pxi":141
  *         except:
  *             if python.IS_PYTHON2:
  *                 exc = sys.exc_info()             # <<<<<<<<<<<<<<
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()
  */
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 140, __pyx_L5_except_error)
+        __Pyx_TraceLine(141,0,__PYX_ERR(12, 141, __pyx_L5_except_error))
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 141, __pyx_L5_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_12 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -133957,23 +142438,24 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
           }
         }
         if (__pyx_t_12) {
-          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 140, __pyx_L5_except_error)
+          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 141, __pyx_L5_except_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         } else {
-          __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 140, __pyx_L5_except_error)
+          __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 141, __pyx_L5_except_error)
         }
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __pyx_v_exc = __pyx_t_10;
         __pyx_t_10 = 0;
 
-        /* "src/lxml/parsertarget.pxi":142
+        /* "src/lxml/parsertarget.pxi":143
  *                 exc = sys.exc_info()
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()             # <<<<<<<<<<<<<<
  *                 except: pass
  *                 raise exc[0], exc[1], exc[2]
  */
+        __Pyx_TraceLine(143,0,__PYX_ERR(12, 143, __pyx_L16_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -133982,7 +142464,7 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
           __Pyx_XGOTREF(__pyx_t_14);
           __Pyx_XGOTREF(__pyx_t_15);
           /*try:*/ {
-            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 142, __pyx_L16_error)
+            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 143, __pyx_L16_error)
             __Pyx_GOTREF(__pyx_t_11);
             __pyx_t_12 = NULL;
             if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -133995,10 +142477,10 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
               }
             }
             if (__pyx_t_12) {
-              __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 142, __pyx_L16_error)
+              __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 143, __pyx_L16_error)
               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
             } else {
-              __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 142, __pyx_L16_error)
+              __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 143, __pyx_L16_error)
             }
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -134013,17 +142495,32 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
           __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-          /* "src/lxml/parsertarget.pxi":143
+          /* "src/lxml/parsertarget.pxi":144
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()
  *                 except: pass             # <<<<<<<<<<<<<<
  *                 raise exc[0], exc[1], exc[2]
  *             else:
  */
+          __Pyx_TraceLine(144,0,__PYX_ERR(12, 144, __pyx_L18_except_error))
           /*except:*/ {
             __Pyx_ErrRestore(0,0,0);
             goto __pyx_L17_exception_handled;
           }
+          __pyx_L18_except_error:;
+
+          /* "src/lxml/parsertarget.pxi":143
+ *                 exc = sys.exc_info()
+ *                 # Python 2 can't chain exceptions
+ *                 try: self._python_target.close()             # <<<<<<<<<<<<<<
+ *                 except: pass
+ *                 raise exc[0], exc[1], exc[2]
+ */
+          __Pyx_XGIVEREF(__pyx_t_13);
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+          goto __pyx_L5_except_error;
           __pyx_L17_exception_handled:;
           __Pyx_XGIVEREF(__pyx_t_13);
           __Pyx_XGIVEREF(__pyx_t_14);
@@ -134032,26 +142529,27 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
           __pyx_L23_try_end:;
         }
 
-        /* "src/lxml/parsertarget.pxi":144
+        /* "src/lxml/parsertarget.pxi":145
  *                 try: self._python_target.close()
  *                 except: pass
  *                 raise exc[0], exc[1], exc[2]             # <<<<<<<<<<<<<<
  *             else:
  *                 self._python_target.close()
  */
-        __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_exc, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 144, __pyx_L5_except_error)
+        __Pyx_TraceLine(145,0,__PYX_ERR(12, 145, __pyx_L5_except_error))
+        __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_exc, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 145, __pyx_L5_except_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_exc, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 144, __pyx_L5_except_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_exc, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 145, __pyx_L5_except_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_exc, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 144, __pyx_L5_except_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_exc, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 145, __pyx_L5_except_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_Raise(__pyx_t_10, __pyx_t_11, __pyx_t_12, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __PYX_ERR(12, 144, __pyx_L5_except_error)
+        __PYX_ERR(12, 145, __pyx_L5_except_error)
 
-        /* "src/lxml/parsertarget.pxi":139
+        /* "src/lxml/parsertarget.pxi":140
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
@@ -134060,15 +142558,16 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
  */
       }
 
-      /* "src/lxml/parsertarget.pxi":146
+      /* "src/lxml/parsertarget.pxi":147
  *                 raise exc[0], exc[1], exc[2]
  *             else:
  *                 self._python_target.close()             # <<<<<<<<<<<<<<
  *                 raise
  *         return self._python_target.close()
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(12, 147, __pyx_L5_except_error))
       /*else*/ {
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 146, __pyx_L5_except_error)
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 147, __pyx_L5_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_10 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -134081,33 +142580,34 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
           }
         }
         if (__pyx_t_10) {
-          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 146, __pyx_L5_except_error)
+          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 147, __pyx_L5_except_error)
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         } else {
-          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 146, __pyx_L5_except_error)
+          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 147, __pyx_L5_except_error)
         }
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "src/lxml/parsertarget.pxi":147
+        /* "src/lxml/parsertarget.pxi":148
  *             else:
  *                 self._python_target.close()
  *                 raise             # <<<<<<<<<<<<<<
  *         return self._python_target.close()
  * 
  */
+        __Pyx_TraceLine(148,0,__PYX_ERR(12, 148, __pyx_L5_except_error))
         __Pyx_GIVEREF(__pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_8);
         __Pyx_XGIVEREF(__pyx_t_9);
         __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_8, __pyx_t_9);
         __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; 
-        __PYX_ERR(12, 147, __pyx_L5_except_error)
+        __PYX_ERR(12, 148, __pyx_L5_except_error)
       }
     }
     __pyx_L5_except_error:;
 
-    /* "src/lxml/parsertarget.pxi":132
+    /* "src/lxml/parsertarget.pxi":133
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         try:             # <<<<<<<<<<<<<<
@@ -134122,15 +142622,16 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
     __pyx_L8_try_end:;
   }
 
-  /* "src/lxml/parsertarget.pxi":148
+  /* "src/lxml/parsertarget.pxi":149
  *                 self._python_target.close()
  *                 raise
  *         return self._python_target.close()             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(12, 149, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 148, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_7 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
@@ -134143,10 +142644,10 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 148, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 149, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 148, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 149, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -134154,7 +142655,7 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
   __pyx_t_9 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parsertarget.pxi":128
+  /* "src/lxml/parsertarget.pxi":129
  *             self._c_ctxt.myDoc = NULL
  * 
  *     cdef object _handleParseResult(self, _BaseParser parser, xmlDoc* result,             # <<<<<<<<<<<<<<
@@ -134175,11 +142676,12 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_exc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "src/lxml/parsertarget.pxi":150
+/* "src/lxml/parsertarget.pxi":151
  *         return self._python_target.close()
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -134192,6 +142694,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
   PyObject *__pyx_v_exc = NULL;
   PyObject *__pyx_v_parse_result = NULL;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -134209,23 +142712,26 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("_handleParseResultDoc", 0);
+  __Pyx_TraceCall("_handleParseResultDoc", __pyx_f[12], 151, 0, __PYX_ERR(12, 151, __pyx_L1_error));
 
-  /* "src/lxml/parsertarget.pxi":153
+  /* "src/lxml/parsertarget.pxi":154
  *                                        xmlDoc* result, filename) except NULL:
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
  *         if result is not NULL and result._private is NULL:
  *             # no _Document proxy => orphen
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(12, 154, __pyx_L1_error))
   __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);
 
-  /* "src/lxml/parsertarget.pxi":154
+  /* "src/lxml/parsertarget.pxi":155
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if result is not NULL and result._private is NULL:             # <<<<<<<<<<<<<<
  *             # no _Document proxy => orphen
  *             tree.xmlFreeDoc(result)
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(12, 155, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_result != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -134237,16 +142743,17 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/parsertarget.pxi":156
+    /* "src/lxml/parsertarget.pxi":157
  *         if result is not NULL and result._private is NULL:
  *             # no _Document proxy => orphen
  *             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
  *         try:
  *             self._cleanupTargetParserContext(result)
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(12, 157, __pyx_L1_error))
     xmlFreeDoc(__pyx_v_result);
 
-    /* "src/lxml/parsertarget.pxi":154
+    /* "src/lxml/parsertarget.pxi":155
  *         cdef bint recover
  *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
  *         if result is not NULL and result._private is NULL:             # <<<<<<<<<<<<<<
@@ -134255,13 +142762,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
  */
   }
 
-  /* "src/lxml/parsertarget.pxi":157
+  /* "src/lxml/parsertarget.pxi":158
  *             # no _Document proxy => orphen
  *             tree.xmlFreeDoc(result)
  *         try:             # <<<<<<<<<<<<<<
  *             self._cleanupTargetParserContext(result)
  *             self._raise_if_stored()
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(12, 158, __pyx_L6_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -134271,31 +142779,34 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     __Pyx_XGOTREF(__pyx_t_5);
     /*try:*/ {
 
-      /* "src/lxml/parsertarget.pxi":158
+      /* "src/lxml/parsertarget.pxi":159
  *             tree.xmlFreeDoc(result)
  *         try:
  *             self._cleanupTargetParserContext(result)             # <<<<<<<<<<<<<<
  *             self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:
  */
+      __Pyx_TraceLine(159,0,__PYX_ERR(12, 159, __pyx_L6_error))
       __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext(__pyx_v_self, __pyx_v_result);
 
-      /* "src/lxml/parsertarget.pxi":159
+      /* "src/lxml/parsertarget.pxi":160
  *         try:
  *             self._cleanupTargetParserContext(result)
  *             self._raise_if_stored()             # <<<<<<<<<<<<<<
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  */
-      __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(12, 159, __pyx_L6_error)
+      __Pyx_TraceLine(160,0,__PYX_ERR(12, 160, __pyx_L6_error))
+      __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(12, 160, __pyx_L6_error)
 
-      /* "src/lxml/parsertarget.pxi":160
+      /* "src/lxml/parsertarget.pxi":161
  *             self._cleanupTargetParserContext(result)
  *             self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  */
+      __Pyx_TraceLine(161,0,__PYX_ERR(12, 161, __pyx_L6_error))
       __pyx_t_2 = ((!(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->wellFormed != 0)) != 0);
       if (__pyx_t_2) {
       } else {
@@ -134307,19 +142818,20 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
       __pyx_L13_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "src/lxml/parsertarget.pxi":161
+        /* "src/lxml/parsertarget.pxi":162
  *             self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)             # <<<<<<<<<<<<<<
  *         except:
  *             if python.IS_PYTHON2:
  */
+        __Pyx_TraceLine(162,0,__PYX_ERR(12, 162, __pyx_L6_error))
         __pyx_t_7 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._error_log);
         __Pyx_INCREF(__pyx_t_7);
-        __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_7)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(12, 161, __pyx_L6_error)
+        __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_7)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(12, 162, __pyx_L6_error)
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "src/lxml/parsertarget.pxi":160
+        /* "src/lxml/parsertarget.pxi":161
  *             self._cleanupTargetParserContext(result)
  *             self._raise_if_stored()
  *             if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
@@ -134328,7 +142840,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
  */
       }
 
-      /* "src/lxml/parsertarget.pxi":157
+      /* "src/lxml/parsertarget.pxi":158
  *             # no _Document proxy => orphen
  *             tree.xmlFreeDoc(result)
  *         try:             # <<<<<<<<<<<<<<
@@ -134343,38 +142855,41 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     __pyx_L6_error:;
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "src/lxml/parsertarget.pxi":162
+    /* "src/lxml/parsertarget.pxi":163
  *             if not self._c_ctxt.wellFormed and not recover:
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:             # <<<<<<<<<<<<<<
  *             if python.IS_PYTHON2:
  *                 exc = sys.exc_info()
  */
+    __Pyx_TraceLine(163,0,__PYX_ERR(12, 163, __pyx_L8_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._TargetParserContext._handleParseResultDoc", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(12, 162, __pyx_L8_except_error)
+      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(12, 163, __pyx_L8_except_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_9);
 
-      /* "src/lxml/parsertarget.pxi":163
+      /* "src/lxml/parsertarget.pxi":164
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
  *                 exc = sys.exc_info()
  *                 # Python 2 can't chain exceptions
  */
+      __Pyx_TraceLine(164,0,__PYX_ERR(12, 164, __pyx_L8_except_error))
       __pyx_t_1 = (IS_PYTHON2 != 0);
       if (likely(__pyx_t_1)) {
 
-        /* "src/lxml/parsertarget.pxi":164
+        /* "src/lxml/parsertarget.pxi":165
  *         except:
  *             if python.IS_PYTHON2:
  *                 exc = sys.exc_info()             # <<<<<<<<<<<<<<
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()
  */
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 164, __pyx_L8_except_error)
+        __Pyx_TraceLine(165,0,__PYX_ERR(12, 165, __pyx_L8_except_error))
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 165, __pyx_L8_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_12 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -134387,23 +142902,24 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
           }
         }
         if (__pyx_t_12) {
-          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 164, __pyx_L8_except_error)
+          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 165, __pyx_L8_except_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         } else {
-          __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 164, __pyx_L8_except_error)
+          __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 165, __pyx_L8_except_error)
         }
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __pyx_v_exc = __pyx_t_10;
         __pyx_t_10 = 0;
 
-        /* "src/lxml/parsertarget.pxi":166
+        /* "src/lxml/parsertarget.pxi":167
  *                 exc = sys.exc_info()
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()             # <<<<<<<<<<<<<<
  *                 except: pass
  *                 raise exc[0], exc[1], exc[2]
  */
+        __Pyx_TraceLine(167,0,__PYX_ERR(12, 167, __pyx_L18_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -134412,7 +142928,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
           __Pyx_XGOTREF(__pyx_t_14);
           __Pyx_XGOTREF(__pyx_t_15);
           /*try:*/ {
-            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 166, __pyx_L18_error)
+            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 167, __pyx_L18_error)
             __Pyx_GOTREF(__pyx_t_11);
             __pyx_t_12 = NULL;
             if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -134425,10 +142941,10 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
               }
             }
             if (__pyx_t_12) {
-              __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 166, __pyx_L18_error)
+              __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 167, __pyx_L18_error)
               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
             } else {
-              __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 166, __pyx_L18_error)
+              __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 167, __pyx_L18_error)
             }
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -134443,17 +142959,32 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
           __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-          /* "src/lxml/parsertarget.pxi":167
+          /* "src/lxml/parsertarget.pxi":168
  *                 # Python 2 can't chain exceptions
  *                 try: self._python_target.close()
  *                 except: pass             # <<<<<<<<<<<<<<
  *                 raise exc[0], exc[1], exc[2]
  *             else:
  */
+          __Pyx_TraceLine(168,0,__PYX_ERR(12, 168, __pyx_L20_except_error))
           /*except:*/ {
             __Pyx_ErrRestore(0,0,0);
             goto __pyx_L19_exception_handled;
           }
+          __pyx_L20_except_error:;
+
+          /* "src/lxml/parsertarget.pxi":167
+ *                 exc = sys.exc_info()
+ *                 # Python 2 can't chain exceptions
+ *                 try: self._python_target.close()             # <<<<<<<<<<<<<<
+ *                 except: pass
+ *                 raise exc[0], exc[1], exc[2]
+ */
+          __Pyx_XGIVEREF(__pyx_t_13);
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+          goto __pyx_L8_except_error;
           __pyx_L19_exception_handled:;
           __Pyx_XGIVEREF(__pyx_t_13);
           __Pyx_XGIVEREF(__pyx_t_14);
@@ -134462,26 +142993,27 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
           __pyx_L25_try_end:;
         }
 
-        /* "src/lxml/parsertarget.pxi":168
+        /* "src/lxml/parsertarget.pxi":169
  *                 try: self._python_target.close()
  *                 except: pass
  *                 raise exc[0], exc[1], exc[2]             # <<<<<<<<<<<<<<
  *             else:
  *                 self._python_target.close()
  */
-        __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_exc, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 168, __pyx_L8_except_error)
+        __Pyx_TraceLine(169,0,__PYX_ERR(12, 169, __pyx_L8_except_error))
+        __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_exc, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 169, __pyx_L8_except_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_exc, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 168, __pyx_L8_except_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_exc, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 169, __pyx_L8_except_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_exc, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 168, __pyx_L8_except_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_exc, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 169, __pyx_L8_except_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_Raise(__pyx_t_10, __pyx_t_11, __pyx_t_12, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __PYX_ERR(12, 168, __pyx_L8_except_error)
+        __PYX_ERR(12, 169, __pyx_L8_except_error)
 
-        /* "src/lxml/parsertarget.pxi":163
+        /* "src/lxml/parsertarget.pxi":164
  *                 _raiseParseError(self._c_ctxt, filename, self._error_log)
  *         except:
  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
@@ -134490,15 +143022,16 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
  */
       }
 
-      /* "src/lxml/parsertarget.pxi":170
+      /* "src/lxml/parsertarget.pxi":171
  *                 raise exc[0], exc[1], exc[2]
  *             else:
  *                 self._python_target.close()             # <<<<<<<<<<<<<<
  *                 raise
  *         parse_result = self._python_target.close()
  */
+      __Pyx_TraceLine(171,0,__PYX_ERR(12, 171, __pyx_L8_except_error))
       /*else*/ {
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 170, __pyx_L8_except_error)
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 171, __pyx_L8_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_10 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
@@ -134511,33 +143044,34 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
           }
         }
         if (__pyx_t_10) {
-          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 170, __pyx_L8_except_error)
+          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 171, __pyx_L8_except_error)
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         } else {
-          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 170, __pyx_L8_except_error)
+          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 171, __pyx_L8_except_error)
         }
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "src/lxml/parsertarget.pxi":171
+        /* "src/lxml/parsertarget.pxi":172
  *             else:
  *                 self._python_target.close()
  *                 raise             # <<<<<<<<<<<<<<
  *         parse_result = self._python_target.close()
  *         raise _TargetParserResult(parse_result)
  */
+        __Pyx_TraceLine(172,0,__PYX_ERR(12, 172, __pyx_L8_except_error))
         __Pyx_GIVEREF(__pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_8);
         __Pyx_XGIVEREF(__pyx_t_9);
         __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_8, __pyx_t_9);
         __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; 
-        __PYX_ERR(12, 171, __pyx_L8_except_error)
+        __PYX_ERR(12, 172, __pyx_L8_except_error)
       }
     }
     __pyx_L8_except_error:;
 
-    /* "src/lxml/parsertarget.pxi":157
+    /* "src/lxml/parsertarget.pxi":158
  *             # no _Document proxy => orphen
  *             tree.xmlFreeDoc(result)
  *         try:             # <<<<<<<<<<<<<<
@@ -134552,13 +143086,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     __pyx_L11_try_end:;
   }
 
-  /* "src/lxml/parsertarget.pxi":172
+  /* "src/lxml/parsertarget.pxi":173
  *                 self._python_target.close()
  *                 raise
  *         parse_result = self._python_target.close()             # <<<<<<<<<<<<<<
  *         raise _TargetParserResult(parse_result)
  */
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 172, __pyx_L1_error)
+  __Pyx_TraceLine(173,0,__PYX_ERR(12, 173, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_python_target, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_7 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
@@ -134571,22 +143106,23 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 172, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 172, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __pyx_v_parse_result = __pyx_t_9;
   __pyx_t_9 = 0;
 
-  /* "src/lxml/parsertarget.pxi":173
+  /* "src/lxml/parsertarget.pxi":174
  *                 raise
  *         parse_result = self._python_target.close()
  *         raise _TargetParserResult(parse_result)             # <<<<<<<<<<<<<<
  */
-  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 173, __pyx_L1_error)
+  __Pyx_TraceLine(174,0,__PYX_ERR(12, 174, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_7 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
@@ -134599,13 +143135,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     }
   }
   if (!__pyx_t_7) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_parse_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_parse_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 174, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
   } else {
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_8)) {
       PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_parse_result};
-      __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 174, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_GOTREF(__pyx_t_9);
     } else
@@ -134613,19 +143149,19 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
       PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_parse_result};
-      __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 174, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_GOTREF(__pyx_t_9);
     } else
     #endif
     {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 173, __pyx_L1_error)
+      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 174, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_parse_result);
       __Pyx_GIVEREF(__pyx_v_parse_result);
       PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_parse_result);
-      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 173, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 174, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     }
@@ -134633,9 +143169,9 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_Raise(__pyx_t_9, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __PYX_ERR(12, 173, __pyx_L1_error)
+  __PYX_ERR(12, 174, __pyx_L1_error)
 
-  /* "src/lxml/parsertarget.pxi":150
+  /* "src/lxml/parsertarget.pxi":151
  *         return self._python_target.close()
  * 
  *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
@@ -134655,6 +143191,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
   __pyx_r = NULL;
   __Pyx_XDECREF(__pyx_v_exc);
   __Pyx_XDECREF(__pyx_v_parse_result);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -134669,6 +143206,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
 
 static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -134676,6 +143214,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_findOutputMethod", 0);
+  __Pyx_TraceCall("_findOutputMethod", __pyx_f[8], 18, 0, __PYX_ERR(8, 18, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_method);
 
   /* "src/lxml/serializer.pxi":19
@@ -134685,6 +143224,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *         return OUTPUT_METHOD_XML
  *     method = method.lower()
  */
+  __Pyx_TraceLine(19,0,__PYX_ERR(8, 19, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_method == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -134696,6 +143236,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *     method = method.lower()
  *     if method == "xml":
  */
+    __Pyx_TraceLine(20,0,__PYX_ERR(8, 20, __pyx_L1_error))
     __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
     goto __pyx_L0;
 
@@ -134715,6 +143256,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *     if method == "xml":
  *         return OUTPUT_METHOD_XML
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(8, 21, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_method, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
@@ -134745,6 +143287,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *         return OUTPUT_METHOD_XML
  *     if method == "html":
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(8, 22, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_xml, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 22, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -134755,6 +143298,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *     if method == "html":
  *         return OUTPUT_METHOD_HTML
  */
+    __Pyx_TraceLine(23,0,__PYX_ERR(8, 23, __pyx_L1_error))
     __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
     goto __pyx_L0;
 
@@ -134774,6 +143318,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *         return OUTPUT_METHOD_HTML
  *     if method == "text":
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(8, 24, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_html, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 24, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -134784,6 +143329,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *     if method == "text":
  *         return OUTPUT_METHOD_TEXT
  */
+    __Pyx_TraceLine(25,0,__PYX_ERR(8, 25, __pyx_L1_error))
     __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML;
     goto __pyx_L0;
 
@@ -134803,6 +143349,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *         return OUTPUT_METHOD_TEXT
  *     raise ValueError(f"unknown output method {method!r}")
  */
+  __Pyx_TraceLine(26,0,__PYX_ERR(8, 26, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_text, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 26, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -134813,6 +143360,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  *     raise ValueError(f"unknown output method {method!r}")
  * 
  */
+    __Pyx_TraceLine(27,0,__PYX_ERR(8, 27, __pyx_L1_error))
     __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT;
     goto __pyx_L0;
 
@@ -134832,6 +143380,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  * 
  * 
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(8, 28, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_method), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 28, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unknown_output_method, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 28, __pyx_L1_error)
@@ -134861,6 +143410,7 @@ static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_method);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -134881,6 +143431,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
   int __pyx_v_error_result;
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -134898,6 +143449,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("_textToString", 0);
+  __Pyx_TraceCall("_textToString", __pyx_f[8], 31, 0, __PYX_ERR(8, 31, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
 
   /* "src/lxml/serializer.pxi":38
@@ -134907,6 +143459,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *     if c_buffer is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(8, 38, __pyx_L1_error))
   __pyx_v_c_buffer = xmlBufferCreate();
 
   /* "src/lxml/serializer.pxi":39
@@ -134916,6 +143469,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(39,0,__PYX_ERR(8, 39, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -134926,6 +143480,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  * 
  *     with nogil:
  */
+    __Pyx_TraceLine(40,0,__PYX_ERR(8, 40, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(8, 40, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":39
@@ -134944,6 +143499,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
  *         if with_tail:
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(8, 42, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -134959,6 +143515,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         if with_tail:
  *             c_text_node = _textNodeOrSkip(c_node.next)
  */
+        __Pyx_TraceLine(43,1,__PYX_ERR(8, 43, __pyx_L5_error))
         __pyx_v_error_result = xmlNodeBufGetContent(__pyx_v_c_buffer, __pyx_v_c_node);
 
         /* "src/lxml/serializer.pxi":44
@@ -134968,6 +143525,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             c_text_node = _textNodeOrSkip(c_node.next)
  *             while c_text_node is not NULL:
  */
+        __Pyx_TraceLine(44,1,__PYX_ERR(8, 44, __pyx_L5_error))
         __pyx_t_1 = (__pyx_v_with_tail != 0);
         if (__pyx_t_1) {
 
@@ -134978,6 +143536,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             while c_text_node is not NULL:
  *                 tree.xmlBufferWriteChar(c_buffer, <const_char*>c_text_node.content)
  */
+          __Pyx_TraceLine(45,1,__PYX_ERR(8, 45, __pyx_L5_error))
           __pyx_v_c_text_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
 
           /* "src/lxml/serializer.pxi":46
@@ -134987,6 +143546,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 tree.xmlBufferWriteChar(c_buffer, <const_char*>c_text_node.content)
  *                 c_text_node = _textNodeOrSkip(c_text_node.next)
  */
+          __Pyx_TraceLine(46,1,__PYX_ERR(8, 46, __pyx_L5_error))
           while (1) {
             __pyx_t_1 = ((__pyx_v_c_text_node != NULL) != 0);
             if (!__pyx_t_1) break;
@@ -134998,6 +143558,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 c_text_node = _textNodeOrSkip(c_text_node.next)
  *         c_text = tree.xmlBufferContent(c_buffer)
  */
+            __Pyx_TraceLine(47,1,__PYX_ERR(8, 47, __pyx_L5_error))
             xmlBufferWriteChar(__pyx_v_c_buffer, ((const char *)__pyx_v_c_text_node->content));
 
             /* "src/lxml/serializer.pxi":48
@@ -135007,6 +143568,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         c_text = tree.xmlBufferContent(c_buffer)
  * 
  */
+            __Pyx_TraceLine(48,1,__PYX_ERR(8, 48, __pyx_L5_error))
             __pyx_v_c_text_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_text_node->next);
           }
 
@@ -135026,6 +143588,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  * 
  *     if error_result < 0 or c_text is NULL:
  */
+        __Pyx_TraceLine(49,1,__PYX_ERR(8, 49, __pyx_L5_error))
         __pyx_v_c_text = xmlBufferContent(__pyx_v_c_buffer);
       }
 
@@ -135036,6 +143599,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
  *         if with_tail:
  */
+      __Pyx_TraceLine(42,1,__PYX_ERR(8, 42, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -135044,6 +143608,13 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
           #endif
           goto __pyx_L6;
         }
+        __pyx_L5_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L6:;
       }
   }
@@ -135055,6 +143626,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         tree.xmlBufferFree(c_buffer)
  *         raise SerialisationError, u"Error during serialisation (out of memory?)"
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(8, 51, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error_result < 0) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -135073,6 +143645,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         raise SerialisationError, u"Error during serialisation (out of memory?)"
  * 
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(8, 52, __pyx_L1_error))
     xmlBufferFree(__pyx_v_c_buffer);
 
     /* "src/lxml/serializer.pxi":53
@@ -135082,6 +143655,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  * 
  *     try:
  */
+    __Pyx_TraceLine(53,0,__PYX_ERR(8, 53, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_SerialisationError), __pyx_kp_u_Error_during_serialisation_out_o, 0, 0);
     __PYX_ERR(8, 53, __pyx_L1_error)
 
@@ -135101,6 +143675,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         needs_conversion = 0
  *         if encoding is unicode:
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(8, 55, __pyx_L14_error))
   /*try:*/ {
 
     /* "src/lxml/serializer.pxi":56
@@ -135110,6 +143685,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         if encoding is unicode:
  *             needs_conversion = 1
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(8, 56, __pyx_L14_error))
     __pyx_v_needs_conversion = 0;
 
     /* "src/lxml/serializer.pxi":57
@@ -135119,6 +143695,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             needs_conversion = 1
  *         elif encoding is not None:
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(8, 57, __pyx_L14_error))
     __pyx_t_1 = (__pyx_v_encoding == ((PyObject *)(&PyUnicode_Type)));
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -135130,6 +143707,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         elif encoding is not None:
  *             # Python prefers lower case encoding names
  */
+      __Pyx_TraceLine(58,0,__PYX_ERR(8, 58, __pyx_L14_error))
       __pyx_v_needs_conversion = 1;
 
       /* "src/lxml/serializer.pxi":57
@@ -135149,6 +143727,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             # Python prefers lower case encoding names
  *             encoding = encoding.lower()
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(8, 59, __pyx_L14_error))
     __pyx_t_2 = (__pyx_v_encoding != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -135160,6 +143739,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             if encoding not in (u'utf8', u'utf-8'):
  *                 if encoding == u'ascii':
  */
+      __Pyx_TraceLine(61,0,__PYX_ERR(8, 61, __pyx_L14_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 61, __pyx_L14_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = NULL;
@@ -135190,6 +143770,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 if encoding == u'ascii':
  *                     if isutf8(c_text):
  */
+      __Pyx_TraceLine(62,0,__PYX_ERR(8, 62, __pyx_L14_error))
       __Pyx_INCREF(__pyx_v_encoding);
       __pyx_t_3 = __pyx_v_encoding;
       __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_utf8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 62, __pyx_L14_error)
@@ -135212,6 +143793,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                     if isutf8(c_text):
  *                         # will raise a decode error below
  */
+        __Pyx_TraceLine(63,0,__PYX_ERR(8, 63, __pyx_L14_error))
         __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_encoding, __pyx_n_u_ascii, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 63, __pyx_L14_error)
         if (__pyx_t_2) {
 
@@ -135222,6 +143804,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                         # will raise a decode error below
  *                         needs_conversion = 1
  */
+          __Pyx_TraceLine(64,0,__PYX_ERR(8, 64, __pyx_L14_error))
           __pyx_t_2 = (__pyx_f_4lxml_5etree_isutf8(__pyx_v_c_text) != 0);
           if (__pyx_t_2) {
 
@@ -135232,6 +143815,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 else:
  *                     needs_conversion = 1
  */
+            __Pyx_TraceLine(66,0,__PYX_ERR(8, 66, __pyx_L14_error))
             __pyx_v_needs_conversion = 1;
 
             /* "src/lxml/serializer.pxi":64
@@ -135260,6 +143844,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  * 
  *         if needs_conversion:
  */
+        __Pyx_TraceLine(68,0,__PYX_ERR(8, 68, __pyx_L14_error))
         /*else*/ {
           __pyx_v_needs_conversion = 1;
         }
@@ -135291,6 +143876,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *             text = python.PyUnicode_DecodeUTF8(
  *                 <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
  */
+    __Pyx_TraceLine(70,0,__PYX_ERR(8, 70, __pyx_L14_error))
     __pyx_t_2 = (__pyx_v_needs_conversion != 0);
     if (__pyx_t_2) {
 
@@ -135301,6 +143887,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 <const_char*>c_text, tree.xmlBufferLength(c_buffer), 'strict')
  *             if encoding is not unicode:
  */
+      __Pyx_TraceLine(71,0,__PYX_ERR(8, 71, __pyx_L14_error))
       __pyx_t_3 = PyUnicode_DecodeUTF8(((const char *)__pyx_v_c_text), xmlBufferLength(__pyx_v_c_buffer), ((char *)"strict")); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 71, __pyx_L14_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_text = __pyx_t_3;
@@ -135313,6 +143900,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 encoding = _utf8(encoding)
  *                 text = python.PyUnicode_AsEncodedString(
  */
+      __Pyx_TraceLine(73,0,__PYX_ERR(8, 73, __pyx_L14_error))
       __pyx_t_2 = (__pyx_v_encoding != ((PyObject *)(&PyUnicode_Type)));
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -135324,6 +143912,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                 text = python.PyUnicode_AsEncodedString(
  *                     text, encoding, 'strict')
  */
+        __Pyx_TraceLine(74,0,__PYX_ERR(8, 74, __pyx_L14_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 74, __pyx_L14_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_3);
@@ -135336,6 +143925,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *         else:
  *             text = (<unsigned char*>c_text)[:tree.xmlBufferLength(c_buffer)]
  */
+        __Pyx_TraceLine(76,0,__PYX_ERR(8, 76, __pyx_L14_error))
         __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_encoding); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(8, 76, __pyx_L14_error)
 
         /* "src/lxml/serializer.pxi":75
@@ -135345,6 +143935,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *                     text, encoding, 'strict')
  *         else:
  */
+        __Pyx_TraceLine(75,0,__PYX_ERR(8, 75, __pyx_L14_error))
         __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_text, __pyx_t_6, ((char *)"strict")); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 75, __pyx_L14_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
@@ -135376,6 +143967,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *     finally:
  *         tree.xmlBufferFree(c_buffer)
  */
+    __Pyx_TraceLine(78,0,__PYX_ERR(8, 78, __pyx_L14_error))
     /*else*/ {
       __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)__pyx_v_c_text)) + 0, xmlBufferLength(__pyx_v_c_buffer) - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 78, __pyx_L14_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -135392,6 +143984,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  *     return text
  * 
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(8, 80, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlBufferFree(__pyx_v_c_buffer);
@@ -135441,6 +144034,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
  * 
  * 
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(8, 81, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_text);
   __pyx_r = __pyx_v_text;
@@ -135465,6 +144059,7 @@ static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyO
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -135487,6 +144082,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
   int __pyx_v_error_result;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -135506,6 +144102,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
   PyObject *__pyx_t_16 = NULL;
   PyObject *__pyx_t_17 = NULL;
   __Pyx_RefNannySetupContext("_tostring", 0);
+  __Pyx_TraceCall("_tostring", __pyx_f[8], 84, 0, __PYX_ERR(8, 84, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
   __Pyx_INCREF(__pyx_v_doctype);
 
@@ -135516,6 +144113,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         return None
  *     _assertValidNode(element)
  */
+  __Pyx_TraceLine(98,0,__PYX_ERR(8, 98, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_element) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -135527,6 +144125,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     _assertValidNode(element)
  *     c_method = _findOutputMethod(method)
  */
+    __Pyx_TraceLine(99,0,__PYX_ERR(8, 99, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -135547,6 +144146,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     c_method = _findOutputMethod(method)
  *     if c_method == OUTPUT_METHOD_TEXT:
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(8, 100, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 100, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":101
@@ -135556,6 +144156,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if c_method == OUTPUT_METHOD_TEXT:
  *         return _textToString(element._c_node, encoding, with_tail)
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(8, 101, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 101, __pyx_L1_error)
   __pyx_v_c_method = __pyx_t_3;
 
@@ -135566,6 +144167,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         return _textToString(element._c_node, encoding, with_tail)
  *     if encoding is None or encoding is unicode:
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(8, 102, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT) != 0);
   if (__pyx_t_2) {
 
@@ -135576,6 +144178,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if encoding is None or encoding is unicode:
  *         c_enc = NULL
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(8, 103, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 103, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -135599,6 +144202,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         c_enc = NULL
  *     else:
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(8, 104, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_encoding == Py_None);
   __pyx_t_5 = (__pyx_t_1 != 0);
   if (!__pyx_t_5) {
@@ -135619,6 +144223,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     else:
  *         encoding = _utf8(encoding)
  */
+    __Pyx_TraceLine(105,0,__PYX_ERR(8, 105, __pyx_L1_error))
     __pyx_v_c_enc = NULL;
 
     /* "src/lxml/serializer.pxi":104
@@ -135638,6 +144243,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         c_enc = _cstr(encoding)
  *     if doctype is None:
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(8, 107, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 107, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -135651,6 +144257,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if doctype is None:
  *         c_doctype = NULL
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(8, 108, __pyx_L1_error))
     __pyx_v_c_enc = PyBytes_AS_STRING(__pyx_v_encoding);
   }
   __pyx_L5:;
@@ -135662,6 +144269,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         c_doctype = NULL
  *     else:
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(8, 109, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_doctype == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -135673,6 +144281,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     else:
  *         doctype = _utf8(doctype)
  */
+    __Pyx_TraceLine(110,0,__PYX_ERR(8, 110, __pyx_L1_error))
     __pyx_v_c_doctype = NULL;
 
     /* "src/lxml/serializer.pxi":109
@@ -135692,6 +144301,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         c_doctype = _xcstr(doctype)
  *     # it is necessary to *and* find the encoding handler *and* use
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(8, 112, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 112, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -135705,6 +144315,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     # it is necessary to *and* find the encoding handler *and* use
  *     # encoding during output
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(8, 113, __pyx_L1_error))
     __pyx_v_c_doctype = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype);
   }
   __pyx_L8:;
@@ -135716,6 +144327,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if enchandler is NULL and c_enc is not NULL:
  *         if encoding is not None:
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(8, 116, __pyx_L1_error))
   __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);
 
   /* "src/lxml/serializer.pxi":117
@@ -135725,6 +144337,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         if encoding is not None:
  *             encoding = encoding.decode('UTF-8')
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(8, 117, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_enchandler == NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -135743,6 +144356,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *             encoding = encoding.decode('UTF-8')
  *         raise LookupError, f"unknown encoding: '{encoding}'"
  */
+    __Pyx_TraceLine(118,0,__PYX_ERR(8, 118, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_encoding != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -135754,9 +144368,10 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         raise LookupError, f"unknown encoding: '{encoding}'"
  *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
  */
+      __Pyx_TraceLine(119,0,__PYX_ERR(8, 119, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_decode); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 119, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 119, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__256, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 119, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_6);
@@ -135778,6 +144393,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
  *     if c_buffer is NULL:
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(8, 120, __pyx_L1_error))
     __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 120, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = 0;
@@ -135793,10 +144409,10 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
     __pyx_t_4 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_7 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__60);
     __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 120, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -135820,6 +144436,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if c_buffer is NULL:
  *         tree.xmlCharEncCloseFunc(enchandler)
  */
+  __Pyx_TraceLine(121,0,__PYX_ERR(8, 121, __pyx_L1_error))
   __pyx_v_c_buffer = xmlAllocOutputBuffer(__pyx_v_enchandler);
 
   /* "src/lxml/serializer.pxi":122
@@ -135829,6 +144446,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         tree.xmlCharEncCloseFunc(enchandler)
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(8, 122, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_buffer == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -135839,6 +144457,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(8, 123, __pyx_L1_error))
     (void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
 
     /* "src/lxml/serializer.pxi":124
@@ -135848,6 +144467,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  * 
  *     with nogil:
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(8, 124, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(8, 124, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":122
@@ -135866,6 +144486,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_doctype, c_method,
  *                            write_xml_declaration, write_complete_document,
  */
+  __Pyx_TraceLine(126,0,__PYX_ERR(8, 126, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -135881,6 +144502,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *                            write_xml_declaration, write_complete_document,
  *                            pretty_print, with_tail, standalone)
  */
+        __Pyx_TraceLine(127,1,__PYX_ERR(8, 127, __pyx_L15_error))
         __pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_element->_c_node, __pyx_v_c_enc, __pyx_v_c_doctype, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_complete_document, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
 
         /* "src/lxml/serializer.pxi":130
@@ -135890,6 +144512,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         if c_buffer.conv is not NULL:
  *             c_result_buffer = c_buffer.conv
  */
+        __Pyx_TraceLine(130,1,__PYX_ERR(8, 130, __pyx_L15_error))
         (void)(xmlOutputBufferFlush(__pyx_v_c_buffer));
 
         /* "src/lxml/serializer.pxi":131
@@ -135899,6 +144522,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *             c_result_buffer = c_buffer.conv
  *         else:
  */
+        __Pyx_TraceLine(131,1,__PYX_ERR(8, 131, __pyx_L15_error))
         __pyx_t_2 = ((__pyx_v_c_buffer->conv != NULL) != 0);
         if (__pyx_t_2) {
 
@@ -135909,6 +144533,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         else:
  *             c_result_buffer = c_buffer.buffer
  */
+          __Pyx_TraceLine(132,1,__PYX_ERR(8, 132, __pyx_L15_error))
           __pyx_t_9 = __pyx_v_c_buffer->conv;
           __pyx_v_c_result_buffer = __pyx_t_9;
 
@@ -135929,6 +144554,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  * 
  *     error_result = c_buffer.error
  */
+        __Pyx_TraceLine(134,1,__PYX_ERR(8, 134, __pyx_L15_error))
         /*else*/ {
           __pyx_t_9 = __pyx_v_c_buffer->buffer;
           __pyx_v_c_result_buffer = __pyx_t_9;
@@ -135943,6 +144569,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_doctype, c_method,
  *                            write_xml_declaration, write_complete_document,
  */
+      __Pyx_TraceLine(126,1,__PYX_ERR(8, 126, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -135951,6 +144578,13 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
           #endif
           goto __pyx_L16;
         }
+        __pyx_L15_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L16:;
       }
   }
@@ -135962,6 +144596,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if error_result != xmlerror.XML_ERR_OK:
  *         tree.xmlOutputBufferClose(c_buffer)
  */
+  __Pyx_TraceLine(136,0,__PYX_ERR(8, 136, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_buffer->error;
   __pyx_v_error_result = __pyx_t_3;
 
@@ -135972,6 +144607,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         tree.xmlOutputBufferClose(c_buffer)
  *         _raiseSerialisationError(error_result)
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(8, 137, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
   if (__pyx_t_2) {
 
@@ -135982,6 +144618,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         _raiseSerialisationError(error_result)
  * 
  */
+    __Pyx_TraceLine(138,0,__PYX_ERR(8, 138, __pyx_L1_error))
     (void)(xmlOutputBufferClose(__pyx_v_c_buffer));
 
     /* "src/lxml/serializer.pxi":139
@@ -135991,6 +144628,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  * 
  *     try:
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(8, 139, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 139, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -136011,6 +144649,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         if encoding is unicode:
  *             result = (<unsigned char*>tree.xmlBufContent(
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(8, 141, __pyx_L20_error))
   /*try:*/ {
 
     /* "src/lxml/serializer.pxi":142
@@ -136020,6 +144659,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *             result = (<unsigned char*>tree.xmlBufContent(
  *                 c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8')
  */
+    __Pyx_TraceLine(142,0,__PYX_ERR(8, 142, __pyx_L20_error))
     __pyx_t_2 = (__pyx_v_encoding == ((PyObject *)(&PyUnicode_Type)));
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -136031,6 +144671,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         else:
  *             result = <bytes>(<unsigned char*>tree.xmlBufContent(
  */
+      __Pyx_TraceLine(144,0,__PYX_ERR(8, 144, __pyx_L20_error))
       __pyx_t_4 = __Pyx_decode_c_string(((char const *)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))), 0, xmlBufUse(__pyx_v_c_result_buffer), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 144, __pyx_L20_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_result = __pyx_t_4;
@@ -136053,6 +144694,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *                 c_result_buffer))[:tree.xmlBufUse(c_result_buffer)]
  *     finally:
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(8, 146, __pyx_L20_error))
     /*else*/ {
 
       /* "src/lxml/serializer.pxi":147
@@ -136062,6 +144704,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     finally:
  *         error_result = tree.xmlOutputBufferClose(c_buffer)
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(8, 147, __pyx_L20_error))
       __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))) + 0, xmlBufUse(__pyx_v_c_result_buffer) - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 147, __pyx_L20_error)
       __Pyx_GOTREF(__pyx_t_4);
 
@@ -136072,6 +144715,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *                 c_result_buffer))[:tree.xmlBufUse(c_result_buffer)]
  *     finally:
  */
+      __Pyx_TraceLine(146,0,__PYX_ERR(8, 146, __pyx_L20_error))
       __pyx_t_6 = __pyx_t_4;
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -136088,6 +144732,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     if error_result < 0:
  *         _raiseSerialisationError(error_result)
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(8, 149, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_v_error_result = xmlOutputBufferClose(__pyx_v_c_buffer);
@@ -136136,6 +144781,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *         _raiseSerialisationError(error_result)
  *     return result
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(8, 150, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_error_result < 0) != 0);
   if (__pyx_t_1) {
 
@@ -136146,6 +144792,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  *     return result
  * 
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(8, 151, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 151, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -136166,6 +144813,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
  * 
  * cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments, inclusive_ns_prefixes):
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(8, 152, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -136190,6 +144838,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_elem
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XDECREF(__pyx_v_doctype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -136210,6 +144859,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
   struct LxmlDocument *__pyx_v_doc = 0;
   xmlChar **__pyx_v_c_inclusive_ns_prefixes;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -136226,7 +144876,9 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
+  char const *__pyx_t_16;
   __Pyx_RefNannySetupContext("_tostringC14N", 0);
+  __Pyx_TraceCall("_tostringC14N", __pyx_f[8], 154, 0, __PYX_ERR(8, 154, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":156
  * cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments, inclusive_ns_prefixes):
@@ -136235,6 +144887,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     cdef int byte_count = -1
  *     cdef bytes result
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(8, 156, __pyx_L1_error))
   __pyx_v_c_buffer = NULL;
 
   /* "src/lxml/serializer.pxi":157
@@ -136244,6 +144897,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     cdef bytes result
  *     cdef _Document doc
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(8, 157, __pyx_L1_error))
   __pyx_v_byte_count = -1;
 
   /* "src/lxml/serializer.pxi":163
@@ -136253,6 +144907,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         _assertValidNode(<_Element>element_or_tree)
  *         doc = (<_Element>element_or_tree)._doc
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(8, 163, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -136264,6 +144919,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         doc = (<_Element>element_or_tree)._doc
  *         c_doc = _plainFakeRootDoc(doc._c_doc, (<_Element>element_or_tree)._c_node, 0)
  */
+    __Pyx_TraceLine(164,0,__PYX_ERR(8, 164, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_element_or_tree)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 164, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":165
@@ -136273,6 +144929,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         c_doc = _plainFakeRootDoc(doc._c_doc, (<_Element>element_or_tree)._c_node, 0)
  *     else:
  */
+    __Pyx_TraceLine(165,0,__PYX_ERR(8, 165, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)((struct LxmlElement *)__pyx_v_element_or_tree)->_doc);
     __Pyx_INCREF(__pyx_t_4);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
@@ -136285,6 +144942,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     else:
  *         doc = _documentOrRaise(element_or_tree)
  */
+    __Pyx_TraceLine(166,0,__PYX_ERR(8, 166, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree__plainFakeRootDoc(__pyx_v_doc->_c_doc, ((struct LxmlElement *)__pyx_v_element_or_tree)->_c_node, 0); if (unlikely(__pyx_t_5 == ((xmlDoc *)NULL))) __PYX_ERR(8, 166, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_5;
 
@@ -136305,6 +144963,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         _assertValidDoc(doc)
  *         c_doc = doc._c_doc
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(8, 168, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 168, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -136318,6 +144977,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         c_doc = doc._c_doc
  * 
  */
+    __Pyx_TraceLine(169,0,__PYX_ERR(8, 169, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 169, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":170
@@ -136327,6 +144987,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  * 
  *     c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(8, 170, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_doc->_c_doc;
     __pyx_v_c_doc = __pyx_t_5;
   }
@@ -136339,6 +145000,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     try:
  *          with nogil:
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(8, 172, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 172, __pyx_L1_error)
   if (__pyx_t_2) {
     __pyx_t_7 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_7 == ((xmlChar **)NULL))) __PYX_ERR(8, 172, __pyx_L1_error)
@@ -136355,6 +145017,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *          with nogil:
  *              byte_count = c14n.xmlC14NDocDumpMemory(
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(8, 173, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/serializer.pxi":174
@@ -136364,6 +145027,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *              byte_count = c14n.xmlC14NDocDumpMemory(
  *                  c_doc, NULL, exclusive, c_inclusive_ns_prefixes, with_comments, &c_buffer)
  */
+    __Pyx_TraceLine(174,0,__PYX_ERR(8, 174, __pyx_L5_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -136379,6 +145043,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *                  c_doc, NULL, exclusive, c_inclusive_ns_prefixes, with_comments, &c_buffer)
  * 
  */
+          __Pyx_TraceLine(175,1,__PYX_ERR(8, 175, __pyx_L8_error))
           __pyx_v_byte_count = xmlC14NDocDumpMemory(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, (&__pyx_v_c_buffer));
         }
 
@@ -136389,6 +145054,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *              byte_count = c14n.xmlC14NDocDumpMemory(
  *                  c_doc, NULL, exclusive, c_inclusive_ns_prefixes, with_comments, &c_buffer)
  */
+        __Pyx_TraceLine(174,1,__PYX_ERR(8, 174, __pyx_L5_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -136397,6 +145063,13 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
             #endif
             goto __pyx_L9;
           }
+          __pyx_L8_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L5_error;
+          }
           __pyx_L9:;
         }
     }
@@ -136409,6 +145082,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *          if c_inclusive_ns_prefixes is not NULL:
  *             python.lxml_free(c_inclusive_ns_prefixes)
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(8, 179, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
@@ -136420,6 +145094,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *             python.lxml_free(c_inclusive_ns_prefixes)
  * 
  */
+      __Pyx_TraceLine(180,0,__PYX_ERR(8, 180, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
       if (__pyx_t_2) {
 
@@ -136430,6 +145105,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  * 
  *     if byte_count < 0 or c_buffer is NULL:
  */
+        __Pyx_TraceLine(181,0,__PYX_ERR(8, 181, __pyx_L1_error))
         lxml_free(__pyx_v_c_inclusive_ns_prefixes);
 
         /* "src/lxml/serializer.pxi":180
@@ -136442,6 +145118,89 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
       }
       goto __pyx_L6;
     }
+    __pyx_L5_error:;
+    /*exception exit:*/{
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
+      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_11);
+      __Pyx_XGOTREF(__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_13);
+      __Pyx_XGOTREF(__pyx_t_14);
+      __Pyx_XGOTREF(__pyx_t_15);
+      __pyx_t_3 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
+      {
+
+        /* "src/lxml/serializer.pxi":179
+ * 
+ *     finally:
+ *          _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
+ *          if c_inclusive_ns_prefixes is not NULL:
+ *             python.lxml_free(c_inclusive_ns_prefixes)
+ */
+        __Pyx_TraceLine(179,0,__PYX_ERR(8, 179, __pyx_L12_error))
+        __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
+
+        /* "src/lxml/serializer.pxi":180
+ *     finally:
+ *          _destroyFakeDoc(doc._c_doc, c_doc)
+ *          if c_inclusive_ns_prefixes is not NULL:             # <<<<<<<<<<<<<<
+ *             python.lxml_free(c_inclusive_ns_prefixes)
+ * 
+ */
+        __Pyx_TraceLine(180,0,__PYX_ERR(8, 180, __pyx_L12_error))
+        __pyx_t_2 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
+        if (__pyx_t_2) {
+
+          /* "src/lxml/serializer.pxi":181
+ *          _destroyFakeDoc(doc._c_doc, c_doc)
+ *          if c_inclusive_ns_prefixes is not NULL:
+ *             python.lxml_free(c_inclusive_ns_prefixes)             # <<<<<<<<<<<<<<
+ * 
+ *     if byte_count < 0 or c_buffer is NULL:
+ */
+          __Pyx_TraceLine(181,0,__PYX_ERR(8, 181, __pyx_L12_error))
+          lxml_free(__pyx_v_c_inclusive_ns_prefixes);
+
+          /* "src/lxml/serializer.pxi":180
+ *     finally:
+ *          _destroyFakeDoc(doc._c_doc, c_doc)
+ *          if c_inclusive_ns_prefixes is not NULL:             # <<<<<<<<<<<<<<
+ *             python.lxml_free(c_inclusive_ns_prefixes)
+ * 
+ */
+        }
+      }
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_13);
+        __Pyx_XGIVEREF(__pyx_t_14);
+        __Pyx_XGIVEREF(__pyx_t_15);
+        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+      }
+      __Pyx_XGIVEREF(__pyx_t_10);
+      __Pyx_XGIVEREF(__pyx_t_11);
+      __Pyx_XGIVEREF(__pyx_t_12);
+      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
+      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
+      goto __pyx_L1_error;
+      __pyx_L12_error:;
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_13);
+        __Pyx_XGIVEREF(__pyx_t_14);
+        __Pyx_XGIVEREF(__pyx_t_15);
+        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+      }
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
+      goto __pyx_L1_error;
+    }
     __pyx_L6:;
   }
 
@@ -136452,15 +145211,16 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         if c_buffer is not NULL:
  *             tree.xmlFree(c_buffer)
  */
+  __Pyx_TraceLine(183,0,__PYX_ERR(8, 183, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_byte_count < 0) != 0);
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
-    goto __pyx_L12_bool_binop_done;
+    goto __pyx_L15_bool_binop_done;
   }
   __pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
   __pyx_t_2 = __pyx_t_1;
-  __pyx_L12_bool_binop_done:;
+  __pyx_L15_bool_binop_done:;
   if (__pyx_t_2) {
 
     /* "src/lxml/serializer.pxi":184
@@ -136470,6 +145230,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *             tree.xmlFree(c_buffer)
  *         raise C14NError, u"C14N failed"
  */
+    __Pyx_TraceLine(184,0,__PYX_ERR(8, 184, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_buffer != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -136480,6 +145241,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         raise C14NError, u"C14N failed"
  *     try:
  */
+      __Pyx_TraceLine(185,0,__PYX_ERR(8, 185, __pyx_L1_error))
       xmlFree(__pyx_v_c_buffer);
 
       /* "src/lxml/serializer.pxi":184
@@ -136498,6 +145260,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     try:
  *         result = c_buffer[:byte_count]
  */
+    __Pyx_TraceLine(186,0,__PYX_ERR(8, 186, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_C14NError), __pyx_kp_u_C14N_failed, 0, 0);
     __PYX_ERR(8, 186, __pyx_L1_error)
 
@@ -136517,6 +145280,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *         result = c_buffer[:byte_count]
  *     finally:
  */
+  __Pyx_TraceLine(187,0,__PYX_ERR(8, 187, __pyx_L19_error))
   /*try:*/ {
 
     /* "src/lxml/serializer.pxi":188
@@ -136526,7 +145290,8 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     finally:
  *         tree.xmlFree(c_buffer)
  */
-    __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_c_buffer) + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 188, __pyx_L16_error)
+    __Pyx_TraceLine(188,0,__PYX_ERR(8, 188, __pyx_L19_error))
+    __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_c_buffer) + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 188, __pyx_L19_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_result = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
@@ -136539,44 +145304,45 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  *     return result
  * 
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(8, 190, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_c_buffer);
-      goto __pyx_L17;
+      goto __pyx_L20;
     }
-    __pyx_L16_error:;
+    __pyx_L19_error:;
     /*exception exit:*/{
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
-      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
+      __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0;
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
-      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_10);
-      __Pyx_XGOTREF(__pyx_t_11);
-      __Pyx_XGOTREF(__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_13);
-      __Pyx_XGOTREF(__pyx_t_14);
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
+      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13);
       __Pyx_XGOTREF(__pyx_t_15);
-      __pyx_t_3 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
+      __Pyx_XGOTREF(__pyx_t_14);
+      __Pyx_XGOTREF(__pyx_t_13);
+      __Pyx_XGOTREF(__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_11);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __pyx_t_8 = __pyx_lineno; __pyx_t_3 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
       {
         xmlFree(__pyx_v_c_buffer);
       }
       if (PY_MAJOR_VERSION >= 3) {
-        __Pyx_XGIVEREF(__pyx_t_13);
-        __Pyx_XGIVEREF(__pyx_t_14);
-        __Pyx_XGIVEREF(__pyx_t_15);
-        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
       }
-      __Pyx_XGIVEREF(__pyx_t_10);
-      __Pyx_XGIVEREF(__pyx_t_11);
-      __Pyx_XGIVEREF(__pyx_t_12);
-      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
-      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
-      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
+      __Pyx_XGIVEREF(__pyx_t_15);
+      __Pyx_XGIVEREF(__pyx_t_14);
+      __Pyx_XGIVEREF(__pyx_t_13);
+      __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13);
+      __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0;
+      __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_3; __pyx_filename = __pyx_t_16;
       goto __pyx_L1_error;
     }
-    __pyx_L17:;
+    __pyx_L20:;
   }
 
   /* "src/lxml/serializer.pxi":191
@@ -136586,6 +145352,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
  * 
  * cdef _raiseSerialisationError(int error_result):
  */
+  __Pyx_TraceLine(191,0,__PYX_ERR(8, 191, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -136608,6 +145375,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -136623,6 +145391,7 @@ static PyObject *__pyx_f_4lxml_5etree__tostringC14N(PyObject *__pyx_v_element_or
 static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error_result) {
   PyObject *__pyx_v_message = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -136632,6 +145401,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_raiseSerialisationError", 0);
+  __Pyx_TraceCall("_raiseSerialisationError", __pyx_f[8], 193, 0, __PYX_ERR(8, 193, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":194
  * 
@@ -136640,6 +145410,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  *         raise MemoryError()
  *     message = ErrorTypes._getName(error_result)
  */
+  __Pyx_TraceLine(194,0,__PYX_ERR(8, 194, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_error_result == XML_ERR_NO_MEMORY) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -136650,6 +145421,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  *     message = ErrorTypes._getName(error_result)
  *     if message is None:
  */
+    __Pyx_TraceLine(195,0,__PYX_ERR(8, 195, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(8, 195, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":194
@@ -136668,6 +145440,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  *     if message is None:
  *         message = f"unknown error {error_result}"
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(8, 196, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 196, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getName); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 196, __pyx_L1_error)
@@ -136731,6 +145504,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  *         message = f"unknown error {error_result}"
  *     raise SerialisationError, message
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(8, 197, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_message == Py_None);
   __pyx_t_7 = (__pyx_t_1 != 0);
   if (__pyx_t_7) {
@@ -136742,6 +145516,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  *     raise SerialisationError, message
  * 
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(8, 198, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_error_result, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 198, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unknown_error_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 198, __pyx_L1_error)
@@ -136766,6 +145541,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(199,0,__PYX_ERR(8, 199, __pyx_L1_error))
   __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_SerialisationError), __pyx_v_message, 0, 0);
   __PYX_ERR(8, 199, __pyx_L1_error)
 
@@ -136788,6 +145564,7 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
   __pyx_r = 0;
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -136801,6 +145578,8 @@ static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error
  */
 
 static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer, const xmlChar *__pyx_v_c_doctype) {
+  __Pyx_TraceDeclarations
+  __Pyx_TraceCall("_writeDoctype", __pyx_f[8], 204, 1, __PYX_ERR(8, 204, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":206
  * cdef void _writeDoctype(tree.xmlOutputBuffer* c_buffer,
@@ -136809,6 +145588,7 @@ static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer
  *                               <const_char*>c_doctype)
  *     tree.xmlOutputBufferWriteString(c_buffer, "\n")
  */
+  __Pyx_TraceLine(206,1,__PYX_ERR(8, 206, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, xmlStrlen(__pyx_v_c_doctype), ((const char *)__pyx_v_c_doctype)));
 
   /* "src/lxml/serializer.pxi":208
@@ -136818,6 +145598,7 @@ static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer
  * 
  * cdef void _writeNodeToBuffer(tree.xmlOutputBuffer* c_buffer,
  */
+  __Pyx_TraceLine(208,1,__PYX_ERR(8, 208, __pyx_L1_error))
   (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
 
   /* "src/lxml/serializer.pxi":204
@@ -136829,6 +145610,11 @@ static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeDoctype", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":210
@@ -136842,10 +145628,12 @@ static void __pyx_f_4lxml_5etree__writeDoctype(xmlOutputBuffer *__pyx_v_c_buffer
 static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, const char *__pyx_v_encoding, const xmlChar *__pyx_v_c_doctype, int __pyx_v_c_method, int __pyx_v_write_xml_declaration, int __pyx_v_write_complete_document, int __pyx_v_pretty_print, int __pyx_v_with_tail, int __pyx_v_standalone) {
   xmlNode *__pyx_v_c_nsdecl_node;
   xmlDoc *__pyx_v_c_doc;
+  __Pyx_TraceDeclarations
   xmlDoc *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   xmlNode *__pyx_t_4;
+  __Pyx_TraceCall("_writeNodeToBuffer", __pyx_f[8], 210, 1, __PYX_ERR(8, 210, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":217
  *                              int standalone) nogil:
@@ -136854,6 +145642,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *     if write_xml_declaration and c_method == OUTPUT_METHOD_XML:
  *         _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone)
  */
+  __Pyx_TraceLine(217,1,__PYX_ERR(8, 217, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->doc;
   __pyx_v_c_doc = __pyx_t_1;
 
@@ -136864,6 +145653,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone)
  * 
  */
+  __Pyx_TraceLine(218,1,__PYX_ERR(8, 218, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_write_xml_declaration != 0);
   if (__pyx_t_3) {
   } else {
@@ -136882,6 +145672,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     # comments/processing instructions before doctype declaration
  */
+    __Pyx_TraceLine(219,1,__PYX_ERR(8, 219, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc->version, __pyx_v_encoding, __pyx_v_standalone);
 
     /* "src/lxml/serializer.pxi":218
@@ -136900,6 +145691,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writePrevSiblings(c_buffer, <xmlNode*>c_doc.intSubset, encoding, pretty_print)
  * 
  */
+  __Pyx_TraceLine(222,1,__PYX_ERR(8, 222, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_write_complete_document != 0);
   if (__pyx_t_3) {
   } else {
@@ -136924,6 +145716,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     if c_doctype:
  */
+    __Pyx_TraceLine(223,1,__PYX_ERR(8, 223, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writePrevSiblings(__pyx_v_c_buffer, ((xmlNode *)__pyx_v_c_doc->intSubset), __pyx_v_encoding, __pyx_v_pretty_print);
 
     /* "src/lxml/serializer.pxi":222
@@ -136942,6 +145735,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writeDoctype(c_buffer, c_doctype)
  *     # write internal DTD subset, preceding PIs/comments, etc.
  */
+  __Pyx_TraceLine(225,1,__PYX_ERR(8, 225, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_doctype != 0);
   if (__pyx_t_2) {
 
@@ -136952,6 +145746,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *     # write internal DTD subset, preceding PIs/comments, etc.
  *     if write_complete_document and not c_buffer.error:
  */
+    __Pyx_TraceLine(226,1,__PYX_ERR(8, 226, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writeDoctype(__pyx_v_c_buffer, __pyx_v_c_doctype);
 
     /* "src/lxml/serializer.pxi":225
@@ -136970,6 +145765,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         if c_doctype is NULL:
  *             _writeDtdToBuffer(c_buffer, c_doc, c_node.name, c_method, encoding)
  */
+  __Pyx_TraceLine(228,1,__PYX_ERR(8, 228, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_write_complete_document != 0);
   if (__pyx_t_3) {
   } else {
@@ -136988,6 +145784,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *             _writeDtdToBuffer(c_buffer, c_doc, c_node.name, c_method, encoding)
  *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
  */
+    __Pyx_TraceLine(229,1,__PYX_ERR(8, 229, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_doctype == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -136998,6 +145795,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
  * 
  */
+      __Pyx_TraceLine(230,1,__PYX_ERR(8, 230, __pyx_L1_error))
       __pyx_f_4lxml_5etree__writeDtdToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_node->name, __pyx_v_c_method, __pyx_v_encoding);
 
       /* "src/lxml/serializer.pxi":229
@@ -137016,6 +145814,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     c_nsdecl_node = c_node
  */
+    __Pyx_TraceLine(231,1,__PYX_ERR(8, 231, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writePrevSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
 
     /* "src/lxml/serializer.pxi":228
@@ -137034,6 +145833,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *     if not c_node.parent or c_node.parent.type != tree.XML_DOCUMENT_NODE:
  *         # copy the node and add namespaces from parents
  */
+  __Pyx_TraceLine(233,1,__PYX_ERR(8, 233, __pyx_L1_error))
   __pyx_v_c_nsdecl_node = __pyx_v_c_node;
 
   /* "src/lxml/serializer.pxi":234
@@ -137043,6 +145843,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         # copy the node and add namespaces from parents
  *         # this is required to make libxml write them
  */
+  __Pyx_TraceLine(234,1,__PYX_ERR(8, 234, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_c_node->parent != 0)) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -137061,6 +145862,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         if not c_nsdecl_node:
  *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
  */
+    __Pyx_TraceLine(237,1,__PYX_ERR(8, 237, __pyx_L1_error))
     __pyx_v_c_nsdecl_node = xmlCopyNode(__pyx_v_c_node, 2);
 
     /* "src/lxml/serializer.pxi":238
@@ -137070,6 +145872,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
  *             return
  */
+    __Pyx_TraceLine(238,1,__PYX_ERR(8, 238, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_c_nsdecl_node != 0)) != 0);
     if (__pyx_t_2) {
 
@@ -137080,6 +145883,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *             return
  *         _copyParentNamespaces(c_node, c_nsdecl_node)
  */
+      __Pyx_TraceLine(239,1,__PYX_ERR(8, 239, __pyx_L1_error))
       __pyx_v_c_buffer->error = XML_ERR_NO_MEMORY;
 
       /* "src/lxml/serializer.pxi":240
@@ -137089,6 +145893,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _copyParentNamespaces(c_node, c_nsdecl_node)
  * 
  */
+      __Pyx_TraceLine(240,1,__PYX_ERR(8, 240, __pyx_L1_error))
       goto __pyx_L0;
 
       /* "src/lxml/serializer.pxi":238
@@ -137107,6 +145912,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *         c_nsdecl_node.parent = c_node.parent
  */
+    __Pyx_TraceLine(241,1,__PYX_ERR(8, 241, __pyx_L1_error))
     __pyx_f_4lxml_5etree__copyParentNamespaces(__pyx_v_c_node, __pyx_v_c_nsdecl_node);
 
     /* "src/lxml/serializer.pxi":243
@@ -137116,6 +145922,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         c_nsdecl_node.children = c_node.children
  *         c_nsdecl_node.last = c_node.last
  */
+    __Pyx_TraceLine(243,1,__PYX_ERR(8, 243, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_node->parent;
     __pyx_v_c_nsdecl_node->parent = __pyx_t_4;
 
@@ -137126,6 +145933,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         c_nsdecl_node.last = c_node.last
  * 
  */
+    __Pyx_TraceLine(244,1,__PYX_ERR(8, 244, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_node->children;
     __pyx_v_c_nsdecl_node->children = __pyx_t_4;
 
@@ -137136,6 +145944,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     # write node
  */
+    __Pyx_TraceLine(245,1,__PYX_ERR(8, 245, __pyx_L1_error))
     __pyx_t_4 = __pyx_v_c_node->last;
     __pyx_v_c_nsdecl_node->last = __pyx_t_4;
 
@@ -137155,6 +145964,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         tree.htmlNodeDumpFormatOutput(
  *             c_buffer, c_doc, c_nsdecl_node, encoding, pretty_print)
  */
+  __Pyx_TraceLine(248,1,__PYX_ERR(8, 248, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
   if (__pyx_t_2) {
 
@@ -137165,6 +145975,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *             c_buffer, c_doc, c_nsdecl_node, encoding, pretty_print)
  *     else:
  */
+    __Pyx_TraceLine(249,1,__PYX_ERR(8, 249, __pyx_L1_error))
     htmlNodeDumpFormatOutput(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_nsdecl_node, __pyx_v_encoding, __pyx_v_pretty_print);
 
     /* "src/lxml/serializer.pxi":248
@@ -137184,6 +145995,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *             c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding)
  * 
  */
+  __Pyx_TraceLine(252,1,__PYX_ERR(8, 252, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/serializer.pxi":253
@@ -137193,6 +146005,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     if c_nsdecl_node is not c_node:
  */
+    __Pyx_TraceLine(253,1,__PYX_ERR(8, 253, __pyx_L1_error))
     xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_nsdecl_node, 0, __pyx_v_pretty_print, __pyx_v_encoding);
   }
   __pyx_L19:;
@@ -137204,6 +146017,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         # clean up
  *         c_nsdecl_node.children = c_nsdecl_node.last = NULL
  */
+  __Pyx_TraceLine(255,1,__PYX_ERR(8, 255, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_nsdecl_node != __pyx_v_c_node) != 0);
   if (__pyx_t_2) {
 
@@ -137214,6 +146028,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         tree.xmlFreeNode(c_nsdecl_node)
  * 
  */
+    __Pyx_TraceLine(257,1,__PYX_ERR(8, 257, __pyx_L1_error))
     __pyx_v_c_nsdecl_node->children = NULL;
     __pyx_v_c_nsdecl_node->last = NULL;
 
@@ -137224,6 +146039,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     if c_buffer.error:
  */
+    __Pyx_TraceLine(258,1,__PYX_ERR(8, 258, __pyx_L1_error))
     xmlFreeNode(__pyx_v_c_nsdecl_node);
 
     /* "src/lxml/serializer.pxi":255
@@ -137242,6 +146058,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         return
  * 
  */
+  __Pyx_TraceLine(260,1,__PYX_ERR(8, 260, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_buffer->error != 0);
   if (__pyx_t_2) {
 
@@ -137252,6 +146069,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  *     # write tail, trailing comments, etc.
  */
+    __Pyx_TraceLine(261,1,__PYX_ERR(8, 261, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/serializer.pxi":260
@@ -137270,6 +146088,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writeTail(c_buffer, c_node, encoding, c_method, pretty_print)
  *     if write_complete_document:
  */
+  __Pyx_TraceLine(264,1,__PYX_ERR(8, 264, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_with_tail != 0);
   if (__pyx_t_2) {
 
@@ -137280,6 +146099,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *     if write_complete_document:
  *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
  */
+    __Pyx_TraceLine(265,1,__PYX_ERR(8, 265, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writeTail(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_c_method, __pyx_v_pretty_print);
 
     /* "src/lxml/serializer.pxi":264
@@ -137298,6 +146118,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
  *     if pretty_print:
  */
+  __Pyx_TraceLine(266,1,__PYX_ERR(8, 266, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_write_complete_document != 0);
   if (__pyx_t_2) {
 
@@ -137308,6 +146129,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *     if pretty_print:
  *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
  */
+    __Pyx_TraceLine(267,1,__PYX_ERR(8, 267, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writeNextSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
 
     /* "src/lxml/serializer.pxi":266
@@ -137326,6 +146148,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
  * 
  */
+  __Pyx_TraceLine(268,1,__PYX_ERR(8, 268, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_pretty_print != 0);
   if (__pyx_t_2) {
 
@@ -137336,6 +146159,7 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  * 
  * cdef void _writeDeclarationToBuffer(tree.xmlOutputBuffer* c_buffer,
  */
+    __Pyx_TraceLine(269,1,__PYX_ERR(8, 269, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, ((const char *)"\n")));
 
     /* "src/lxml/serializer.pxi":268
@@ -137356,7 +146180,11 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeNodeToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":271
@@ -137368,7 +146196,9 @@ static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_b
  */
 
 static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, const xmlChar *__pyx_v_version, const char *__pyx_v_encoding, int __pyx_v_standalone) {
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
+  __Pyx_TraceCall("_writeDeclarationToBuffer", __pyx_f[8], 271, 1, __PYX_ERR(8, 271, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":274
  *                                     const_xmlChar* version, const_char* encoding,
@@ -137377,6 +146207,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *         version = <unsigned char*>"1.0"
  *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
  */
+  __Pyx_TraceLine(274,1,__PYX_ERR(8, 274, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_version == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -137387,6 +146218,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
  *     tree.xmlOutputBufferWriteString(c_buffer, <const_char*>version)
  */
+    __Pyx_TraceLine(275,1,__PYX_ERR(8, 275, __pyx_L1_error))
     __pyx_v_version = ((unsigned char *)((unsigned char *)((char const *)"1.0")));
 
     /* "src/lxml/serializer.pxi":274
@@ -137405,6 +146237,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     tree.xmlOutputBufferWriteString(c_buffer, <const_char*>version)
  *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
  */
+  __Pyx_TraceLine(276,1,__PYX_ERR(8, 276, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 15, ((const char *)"<?xml version='")));
 
   /* "src/lxml/serializer.pxi":277
@@ -137414,6 +146247,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
  *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
  */
+  __Pyx_TraceLine(277,1,__PYX_ERR(8, 277, __pyx_L1_error))
   (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_version)));
 
   /* "src/lxml/serializer.pxi":278
@@ -137423,6 +146257,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
  *     if standalone == 0:
  */
+  __Pyx_TraceLine(278,1,__PYX_ERR(8, 278, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 12, ((const char *)"' encoding='")));
 
   /* "src/lxml/serializer.pxi":279
@@ -137432,6 +146267,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     if standalone == 0:
  *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
  */
+  __Pyx_TraceLine(279,1,__PYX_ERR(8, 279, __pyx_L1_error))
   (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_encoding));
 
   /* "src/lxml/serializer.pxi":280
@@ -137441,6 +146277,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
  *     elif standalone == 1:
  */
+  __Pyx_TraceLine(280,1,__PYX_ERR(8, 280, __pyx_L1_error))
   switch (__pyx_v_standalone) {
     case 0:
 
@@ -137451,6 +146288,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     elif standalone == 1:
  *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
  */
+    __Pyx_TraceLine(281,1,__PYX_ERR(8, 281, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 20, ((const char *)"' standalone='no'?>\n")));
 
     /* "src/lxml/serializer.pxi":280
@@ -137469,6 +146307,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
  *     else:
  */
+    __Pyx_TraceLine(282,1,__PYX_ERR(8, 282, __pyx_L1_error))
     case 1:
 
     /* "src/lxml/serializer.pxi":283
@@ -137478,6 +146317,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  *     else:
  *         tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
  */
+    __Pyx_TraceLine(283,1,__PYX_ERR(8, 283, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 21, ((const char *)"' standalone='yes'?>\n")));
 
     /* "src/lxml/serializer.pxi":282
@@ -137497,6 +146337,7 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  * 
  * cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer,
  */
+    __Pyx_TraceLine(285,1,__PYX_ERR(8, 285, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 4, ((const char *)"'?>\n")));
     break;
   }
@@ -137510,6 +146351,11 @@ static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__py
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeDeclarationToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":287
@@ -137527,11 +146373,13 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
   const xmlChar *__pyx_v_public_id;
   const xmlChar *__pyx_v_sys_url;
   xmlBuffer *__pyx_v_c_buf;
+  __Pyx_TraceDeclarations
   xmlDtd *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   const xmlChar *__pyx_t_4;
   xmlNode *__pyx_t_5;
+  __Pyx_TraceCall("_writeDtdToBuffer", __pyx_f[8], 287, 1, __PYX_ERR(8, 287, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":293
  *     cdef xmlNode* c_node
@@ -137540,6 +146388,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     if not c_dtd or not c_dtd.name:
  *         return
  */
+  __Pyx_TraceLine(293,1,__PYX_ERR(8, 293, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_doc->intSubset;
   __pyx_v_c_dtd = __pyx_t_1;
 
@@ -137550,6 +146399,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         return
  * 
  */
+  __Pyx_TraceLine(294,1,__PYX_ERR(8, 294, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_c_dtd != 0)) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -137568,6 +146418,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     # Name in document type declaration must match the root element tag.
  */
+    __Pyx_TraceLine(295,1,__PYX_ERR(8, 295, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/serializer.pxi":294
@@ -137586,6 +146437,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         if tree.xmlStrcasecmp(c_root_name, c_dtd.name) != 0:
  *             return
  */
+  __Pyx_TraceLine(299,1,__PYX_ERR(8, 299, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
   if (__pyx_t_2) {
 
@@ -137596,6 +146448,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             return
  *     else:
  */
+    __Pyx_TraceLine(300,1,__PYX_ERR(8, 300, __pyx_L1_error))
     __pyx_t_2 = ((xmlStrcasecmp(__pyx_v_c_root_name, __pyx_v_c_dtd->name) != 0) != 0);
     if (__pyx_t_2) {
 
@@ -137606,6 +146459,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     else:
  *         if tree.xmlStrcmp(c_root_name, c_dtd.name) != 0:
  */
+      __Pyx_TraceLine(301,1,__PYX_ERR(8, 301, __pyx_L1_error))
       goto __pyx_L0;
 
       /* "src/lxml/serializer.pxi":300
@@ -137634,6 +146488,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             return
  * 
  */
+  __Pyx_TraceLine(303,1,__PYX_ERR(8, 303, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = ((xmlStrcmp(__pyx_v_c_root_name, __pyx_v_c_dtd->name) != 0) != 0);
     if (__pyx_t_2) {
@@ -137645,6 +146500,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
  */
+      __Pyx_TraceLine(304,1,__PYX_ERR(8, 304, __pyx_L1_error))
       goto __pyx_L0;
 
       /* "src/lxml/serializer.pxi":303
@@ -137665,6 +146521,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     tree.xmlOutputBufferWriteString(c_buffer, <const_char*>c_dtd.name)
  * 
  */
+  __Pyx_TraceLine(306,1,__PYX_ERR(8, 306, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 10, ((const char *)"<!DOCTYPE ")));
 
   /* "src/lxml/serializer.pxi":307
@@ -137674,6 +146531,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     cdef const_xmlChar* public_id = c_dtd.ExternalID
  */
+  __Pyx_TraceLine(307,1,__PYX_ERR(8, 307, __pyx_L1_error))
   (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_c_dtd->name)));
 
   /* "src/lxml/serializer.pxi":309
@@ -137683,6 +146541,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     cdef const_xmlChar* sys_url = c_dtd.SystemID
  *     if public_id and public_id[0] == b'\0':
  */
+  __Pyx_TraceLine(309,1,__PYX_ERR(8, 309, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_dtd->ExternalID;
   __pyx_v_public_id = __pyx_t_4;
 
@@ -137693,6 +146552,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     if public_id and public_id[0] == b'\0':
  *         public_id = NULL
  */
+  __Pyx_TraceLine(310,1,__PYX_ERR(8, 310, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_dtd->SystemID;
   __pyx_v_sys_url = __pyx_t_4;
 
@@ -137703,6 +146563,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         public_id = NULL
  *     if sys_url and sys_url[0] == b'\0':
  */
+  __Pyx_TraceLine(311,1,__PYX_ERR(8, 311, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_public_id != 0);
   if (__pyx_t_3) {
   } else {
@@ -137721,6 +146582,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     if sys_url and sys_url[0] == b'\0':
  *         sys_url = NULL
  */
+    __Pyx_TraceLine(312,1,__PYX_ERR(8, 312, __pyx_L1_error))
     __pyx_v_public_id = NULL;
 
     /* "src/lxml/serializer.pxi":311
@@ -137739,6 +146601,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         sys_url = NULL
  * 
  */
+  __Pyx_TraceLine(313,1,__PYX_ERR(8, 313, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_sys_url != 0);
   if (__pyx_t_3) {
   } else {
@@ -137757,6 +146620,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     if public_id:
  */
+    __Pyx_TraceLine(314,1,__PYX_ERR(8, 314, __pyx_L1_error))
     __pyx_v_sys_url = NULL;
 
     /* "src/lxml/serializer.pxi":313
@@ -137775,6 +146639,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
  *         tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id)
  */
+  __Pyx_TraceLine(316,1,__PYX_ERR(8, 316, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_public_id != 0);
   if (__pyx_t_2) {
 
@@ -137785,6 +146650,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWriteString(c_buffer, <const_char*>public_id)
  *         if sys_url:
  */
+    __Pyx_TraceLine(317,1,__PYX_ERR(8, 317, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 9, ((const char *)" PUBLIC \"")));
 
     /* "src/lxml/serializer.pxi":318
@@ -137794,6 +146660,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         if sys_url:
  *             tree.xmlOutputBufferWrite(c_buffer, 2, '" ')
  */
+    __Pyx_TraceLine(318,1,__PYX_ERR(8, 318, __pyx_L1_error))
     (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_public_id)));
 
     /* "src/lxml/serializer.pxi":319
@@ -137803,6 +146670,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             tree.xmlOutputBufferWrite(c_buffer, 2, '" ')
  *         else:
  */
+    __Pyx_TraceLine(319,1,__PYX_ERR(8, 319, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_sys_url != 0);
     if (__pyx_t_2) {
 
@@ -137813,6 +146681,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         else:
  *             tree.xmlOutputBufferWrite(c_buffer, 1, '"')
  */
+      __Pyx_TraceLine(320,1,__PYX_ERR(8, 320, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 2, ((const char *)"\" ")));
 
       /* "src/lxml/serializer.pxi":319
@@ -137832,6 +146701,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     elif sys_url:
  *         tree.xmlOutputBufferWrite(c_buffer, 8, ' SYSTEM ')
  */
+    __Pyx_TraceLine(322,1,__PYX_ERR(8, 322, __pyx_L1_error))
     /*else*/ {
       (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, ((const char *)"\"")));
     }
@@ -137854,6 +146724,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(c_buffer, 8, ' SYSTEM ')
  * 
  */
+  __Pyx_TraceLine(323,1,__PYX_ERR(8, 323, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_sys_url != 0);
   if (__pyx_t_2) {
 
@@ -137864,6 +146735,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     if sys_url:
  */
+    __Pyx_TraceLine(324,1,__PYX_ERR(8, 324, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 8, ((const char *)" SYSTEM ")));
 
     /* "src/lxml/serializer.pxi":323
@@ -137883,6 +146755,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         if tree.xmlStrchr(sys_url, b'"'):
  *             quotechar = '\''
  */
+  __Pyx_TraceLine(326,1,__PYX_ERR(8, 326, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_sys_url != 0);
   if (__pyx_t_2) {
 
@@ -137893,6 +146766,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             quotechar = '\''
  *         else:
  */
+    __Pyx_TraceLine(327,1,__PYX_ERR(8, 327, __pyx_L1_error))
     __pyx_t_2 = (xmlStrchr(__pyx_v_sys_url, '"') != 0);
     if (__pyx_t_2) {
 
@@ -137903,6 +146777,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         else:
  *             quotechar = '"'
  */
+      __Pyx_TraceLine(328,1,__PYX_ERR(8, 328, __pyx_L1_error))
       __pyx_v_quotechar = ((char *)"'");
 
       /* "src/lxml/serializer.pxi":327
@@ -137922,6 +146797,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
  *         tree.xmlOutputBufferWriteString(c_buffer, <const_char*>sys_url)
  */
+    __Pyx_TraceLine(330,1,__PYX_ERR(8, 330, __pyx_L1_error))
     /*else*/ {
       __pyx_v_quotechar = ((char *)"\"");
     }
@@ -137934,6 +146810,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWriteString(c_buffer, <const_char*>sys_url)
  *         tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
  */
+    __Pyx_TraceLine(331,1,__PYX_ERR(8, 331, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_v_quotechar));
 
     /* "src/lxml/serializer.pxi":332
@@ -137943,6 +146820,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(c_buffer, 1, quotechar)
  * 
  */
+    __Pyx_TraceLine(332,1,__PYX_ERR(8, 332, __pyx_L1_error))
     (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)__pyx_v_sys_url)));
 
     /* "src/lxml/serializer.pxi":333
@@ -137952,6 +146830,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     if (not c_dtd.entities and not c_dtd.elements and
  */
+    __Pyx_TraceLine(333,1,__PYX_ERR(8, 333, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_v_quotechar));
 
     /* "src/lxml/serializer.pxi":326
@@ -137970,6 +146849,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *            not c_dtd.attributes and not c_dtd.notations and
  *            not c_dtd.pentities):
  */
+  __Pyx_TraceLine(335,1,__PYX_ERR(8, 335, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_c_dtd->entities != 0)) != 0);
   if (__pyx_t_3) {
   } else {
@@ -137990,6 +146870,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *            not c_dtd.pentities):
  *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
  */
+  __Pyx_TraceLine(336,1,__PYX_ERR(8, 336, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_c_dtd->attributes != 0)) != 0);
   if (__pyx_t_3) {
   } else {
@@ -138010,6 +146891,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
  *         return
  */
+  __Pyx_TraceLine(337,1,__PYX_ERR(8, 337, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_c_dtd->pentities != 0)) != 0);
   __pyx_t_2 = __pyx_t_3;
   __pyx_L20_bool_binop_done:;
@@ -138021,6 +146903,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *            not c_dtd.attributes and not c_dtd.notations and
  *            not c_dtd.pentities):
  */
+  __Pyx_TraceLine(335,1,__PYX_ERR(8, 335, __pyx_L1_error))
   if (__pyx_t_2) {
 
     /* "src/lxml/serializer.pxi":338
@@ -138030,6 +146913,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         return
  * 
  */
+    __Pyx_TraceLine(338,1,__PYX_ERR(8, 338, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 2, ((const char *)">\n")));
 
     /* "src/lxml/serializer.pxi":339
@@ -138039,6 +146923,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  *     tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
  */
+    __Pyx_TraceLine(339,1,__PYX_ERR(8, 339, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/serializer.pxi":335
@@ -138057,6 +146942,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     if c_dtd.notations and not c_buffer.error:
  *         c_buf = tree.xmlBufferCreate()
  */
+  __Pyx_TraceLine(341,1,__PYX_ERR(8, 341, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 3, ((const char *)" [\n")));
 
   /* "src/lxml/serializer.pxi":342
@@ -138066,6 +146952,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         c_buf = tree.xmlBufferCreate()
  *         if not c_buf:
  */
+  __Pyx_TraceLine(342,1,__PYX_ERR(8, 342, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c_dtd->notations != 0);
   if (__pyx_t_3) {
   } else {
@@ -138084,6 +146971,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         if not c_buf:
  *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
  */
+    __Pyx_TraceLine(343,1,__PYX_ERR(8, 343, __pyx_L1_error))
     __pyx_v_c_buf = xmlBufferCreate();
 
     /* "src/lxml/serializer.pxi":344
@@ -138093,6 +146981,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
  *             return
  */
+    __Pyx_TraceLine(344,1,__PYX_ERR(8, 344, __pyx_L1_error))
     __pyx_t_2 = ((!(__pyx_v_c_buf != 0)) != 0);
     if (__pyx_t_2) {
 
@@ -138103,6 +146992,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             return
  *         tree.xmlDumpNotationTable(c_buf, <tree.xmlNotationTable*>c_dtd.notations)
  */
+      __Pyx_TraceLine(345,1,__PYX_ERR(8, 345, __pyx_L1_error))
       __pyx_v_c_buffer->error = XML_ERR_NO_MEMORY;
 
       /* "src/lxml/serializer.pxi":346
@@ -138112,6 +147002,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlDumpNotationTable(c_buf, <tree.xmlNotationTable*>c_dtd.notations)
  *         tree.xmlOutputBufferWrite(
  */
+      __Pyx_TraceLine(346,1,__PYX_ERR(8, 346, __pyx_L1_error))
       goto __pyx_L0;
 
       /* "src/lxml/serializer.pxi":344
@@ -138130,6 +147021,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlOutputBufferWrite(
  *             c_buffer, tree.xmlBufferLength(c_buf),
  */
+    __Pyx_TraceLine(347,1,__PYX_ERR(8, 347, __pyx_L1_error))
     xmlDumpNotationTable(__pyx_v_c_buf, ((xmlNotationTable *)__pyx_v_c_dtd->notations));
 
     /* "src/lxml/serializer.pxi":348
@@ -138139,6 +147031,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *             c_buffer, tree.xmlBufferLength(c_buf),
  *             <const_char*>tree.xmlBufferContent(c_buf))
  */
+    __Pyx_TraceLine(348,1,__PYX_ERR(8, 348, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, xmlBufferLength(__pyx_v_c_buf), ((const char *)xmlBufferContent(__pyx_v_c_buf))));
 
     /* "src/lxml/serializer.pxi":351
@@ -138148,6 +147041,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     c_node = c_dtd.children
  *     while c_node and not c_buffer.error:
  */
+    __Pyx_TraceLine(351,1,__PYX_ERR(8, 351, __pyx_L1_error))
     xmlBufferFree(__pyx_v_c_buf);
 
     /* "src/lxml/serializer.pxi":342
@@ -138166,6 +147060,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     while c_node and not c_buffer.error:
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
  */
+  __Pyx_TraceLine(352,1,__PYX_ERR(8, 352, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_c_dtd->children;
   __pyx_v_c_node = __pyx_t_5;
 
@@ -138176,6 +147071,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
  *         c_node = c_node.next
  */
+  __Pyx_TraceLine(353,1,__PYX_ERR(8, 353, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = (__pyx_v_c_node != 0);
     if (__pyx_t_3) {
@@ -138195,6 +147091,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *         c_node = c_node.next
  *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
  */
+    __Pyx_TraceLine(354,1,__PYX_ERR(8, 354, __pyx_L1_error))
     xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, 0, __pyx_v_encoding);
 
     /* "src/lxml/serializer.pxi":355
@@ -138204,6 +147101,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
  * 
  */
+    __Pyx_TraceLine(355,1,__PYX_ERR(8, 355, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_5;
   }
@@ -138215,6 +147113,7 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  * 
  * cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
  */
+  __Pyx_TraceLine(356,1,__PYX_ERR(8, 356, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_c_buffer, 3, ((const char *)"]>\n")));
 
   /* "src/lxml/serializer.pxi":287
@@ -138226,7 +147125,11 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeDtdToBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":358
@@ -138238,10 +147141,12 @@ static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_bu
  */
 
 static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, const char *__pyx_v_encoding, int __pyx_v_c_method, int __pyx_v_pretty_print) {
+  __Pyx_TraceDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
+  __Pyx_TraceCall("_writeTail", __pyx_f[8], 358, 1, __PYX_ERR(8, 358, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":361
  *                      const_char* encoding, int c_method, bint pretty_print) nogil:
@@ -138250,6 +147155,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *     while c_node and not c_buffer.error and c_node.type in (
  *             tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
  */
+  __Pyx_TraceLine(361,1,__PYX_ERR(8, 361, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -138260,6 +147166,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *             tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
  *         if c_method == OUTPUT_METHOD_HTML:
  */
+  __Pyx_TraceLine(362,1,__PYX_ERR(8, 362, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = (__pyx_v_c_node != 0);
     if (__pyx_t_3) {
@@ -138282,6 +147189,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *         if c_method == OUTPUT_METHOD_HTML:
  *             tree.htmlNodeDumpFormatOutput(
  */
+      __Pyx_TraceLine(363,1,__PYX_ERR(8, 363, __pyx_L1_error))
       case XML_TEXT_NODE:
       case XML_CDATA_SECTION_NODE:
 
@@ -138292,6 +147200,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *             tree.XML_TEXT_NODE, tree.XML_CDATA_SECTION_NODE):
  *         if c_method == OUTPUT_METHOD_HTML:
  */
+      __Pyx_TraceLine(362,1,__PYX_ERR(8, 362, __pyx_L1_error))
       __pyx_t_3 = 1;
       break;
       default:
@@ -138310,6 +147219,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *             tree.htmlNodeDumpFormatOutput(
  *                 c_buffer, c_node.doc, c_node, encoding, pretty_print)
  */
+    __Pyx_TraceLine(364,1,__PYX_ERR(8, 364, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
     if (__pyx_t_2) {
 
@@ -138320,6 +147230,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *                 c_buffer, c_node.doc, c_node, encoding, pretty_print)
  *         else:
  */
+      __Pyx_TraceLine(365,1,__PYX_ERR(8, 365, __pyx_L1_error))
       htmlNodeDumpFormatOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
 
       /* "src/lxml/serializer.pxi":364
@@ -138339,6 +147250,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *                 c_buffer, c_node.doc, c_node, 0, pretty_print, encoding)
  *         c_node = c_node.next
  */
+    __Pyx_TraceLine(368,1,__PYX_ERR(8, 368, __pyx_L1_error))
     /*else*/ {
 
       /* "src/lxml/serializer.pxi":369
@@ -138348,6 +147260,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  *         c_node = c_node.next
  * 
  */
+      __Pyx_TraceLine(369,1,__PYX_ERR(8, 369, __pyx_L1_error))
       xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, __pyx_v_pretty_print, __pyx_v_encoding);
     }
     __pyx_L8:;
@@ -138359,6 +147272,7 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  * 
  * cdef void _writePrevSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
  */
+    __Pyx_TraceLine(370,1,__PYX_ERR(8, 370, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_1;
   }
@@ -138372,6 +147286,11 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeTail", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":372
@@ -138384,9 +147303,11 @@ static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, x
 
 static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, const char *__pyx_v_encoding, int __pyx_v_pretty_print) {
   xmlNode *__pyx_v_c_sibling;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
+  __Pyx_TraceCall("_writePrevSiblings", __pyx_f[8], 372, 1, __PYX_ERR(8, 372, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":375
  *                              const_char* encoding, bint pretty_print) nogil:
@@ -138395,6 +147316,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         return
  *     # we are at a root node, so add PI and comment siblings
  */
+  __Pyx_TraceLine(375,1,__PYX_ERR(8, 375, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_node->parent != 0);
   if (__pyx_t_2) {
   } else {
@@ -138413,6 +147335,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *     # we are at a root node, so add PI and comment siblings
  *     c_sibling = c_node
  */
+    __Pyx_TraceLine(376,1,__PYX_ERR(8, 376, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/serializer.pxi":375
@@ -138431,6 +147354,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *     while c_sibling.prev and \
  *             (c_sibling.prev.type == tree.XML_PI_NODE or
  */
+  __Pyx_TraceLine(378,1,__PYX_ERR(8, 378, __pyx_L1_error))
   __pyx_v_c_sibling = __pyx_v_c_node;
 
   /* "src/lxml/serializer.pxi":379
@@ -138440,6 +147364,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *             (c_sibling.prev.type == tree.XML_PI_NODE or
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(379,1,__PYX_ERR(8, 379, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = (__pyx_v_c_sibling->prev != 0);
     if (__pyx_t_2) {
@@ -138455,6 +147380,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE):
  *         c_sibling = c_sibling.prev
  */
+    __Pyx_TraceLine(380,1,__PYX_ERR(8, 380, __pyx_L1_error))
     switch (__pyx_v_c_sibling->prev->type) {
       case XML_PI_NODE:
 
@@ -138465,6 +147391,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         c_sibling = c_sibling.prev
  *     while c_sibling is not c_node and not c_buffer.error:
  */
+      __Pyx_TraceLine(381,1,__PYX_ERR(8, 381, __pyx_L1_error))
       case XML_COMMENT_NODE:
 
       /* "src/lxml/serializer.pxi":380
@@ -138474,6 +147401,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *              c_sibling.prev.type == tree.XML_COMMENT_NODE):
  *         c_sibling = c_sibling.prev
  */
+      __Pyx_TraceLine(380,1,__PYX_ERR(8, 380, __pyx_L1_error))
       __pyx_t_2 = 1;
       break;
       default:
@@ -138491,6 +147419,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *     while c_sibling is not c_node and not c_buffer.error:
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
  */
+    __Pyx_TraceLine(382,1,__PYX_ERR(8, 382, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->prev;
     __pyx_v_c_sibling = __pyx_t_3;
   }
@@ -138502,6 +147431,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
  *                                pretty_print, encoding)
  */
+  __Pyx_TraceLine(383,1,__PYX_ERR(8, 383, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_sibling != __pyx_v_c_node) != 0);
     if (__pyx_t_2) {
@@ -138521,6 +147451,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *                                pretty_print, encoding)
  *         if pretty_print:
  */
+    __Pyx_TraceLine(384,1,__PYX_ERR(8, 384, __pyx_L1_error))
     xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);
 
     /* "src/lxml/serializer.pxi":386
@@ -138530,6 +147461,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
  *         c_sibling = c_sibling.next
  */
+    __Pyx_TraceLine(386,1,__PYX_ERR(8, 386, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_pretty_print != 0);
     if (__pyx_t_1) {
 
@@ -138540,6 +147472,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         c_sibling = c_sibling.next
  * 
  */
+      __Pyx_TraceLine(387,1,__PYX_ERR(8, 387, __pyx_L1_error))
       (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
 
       /* "src/lxml/serializer.pxi":386
@@ -138558,6 +147491,7 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  * 
  * cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
  */
+    __Pyx_TraceLine(388,1,__PYX_ERR(8, 388, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->next;
     __pyx_v_c_sibling = __pyx_t_3;
   }
@@ -138571,7 +147505,11 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writePrevSiblings", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":390
@@ -138584,9 +147522,11 @@ static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_b
 
 static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, const char *__pyx_v_encoding, int __pyx_v_pretty_print) {
   xmlNode *__pyx_v_c_sibling;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
+  __Pyx_TraceCall("_writeNextSiblings", __pyx_f[8], 390, 1, __PYX_ERR(8, 390, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":393
  *                              const_char* encoding, bint pretty_print) nogil:
@@ -138595,6 +147535,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         return
  *     # we are at a root node, so add PI and comment siblings
  */
+  __Pyx_TraceLine(393,1,__PYX_ERR(8, 393, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_node->parent != 0);
   if (__pyx_t_2) {
   } else {
@@ -138613,6 +147554,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *     # we are at a root node, so add PI and comment siblings
  *     c_sibling = c_node.next
  */
+    __Pyx_TraceLine(394,1,__PYX_ERR(8, 394, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/serializer.pxi":393
@@ -138631,6 +147573,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *     while not c_buffer.error and c_sibling and \
  *             (c_sibling.type == tree.XML_PI_NODE or
  */
+  __Pyx_TraceLine(396,1,__PYX_ERR(8, 396, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_node->next;
   __pyx_v_c_sibling = __pyx_t_3;
 
@@ -138641,6 +147584,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *             (c_sibling.type == tree.XML_PI_NODE or
  *              c_sibling.type == tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(397,1,__PYX_ERR(8, 397, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((!(__pyx_v_c_buffer->error != 0)) != 0);
     if (__pyx_t_2) {
@@ -138662,6 +147606,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *              c_sibling.type == tree.XML_COMMENT_NODE):
  *         if pretty_print:
  */
+    __Pyx_TraceLine(398,1,__PYX_ERR(8, 398, __pyx_L1_error))
     switch (__pyx_v_c_sibling->type) {
       case XML_PI_NODE:
 
@@ -138672,6 +147617,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         if pretty_print:
  *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
  */
+      __Pyx_TraceLine(399,1,__PYX_ERR(8, 399, __pyx_L1_error))
       case XML_COMMENT_NODE:
 
       /* "src/lxml/serializer.pxi":398
@@ -138681,6 +147627,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *              c_sibling.type == tree.XML_COMMENT_NODE):
  *         if pretty_print:
  */
+      __Pyx_TraceLine(398,1,__PYX_ERR(8, 398, __pyx_L1_error))
       __pyx_t_2 = 1;
       break;
       default:
@@ -138698,6 +147645,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
  */
+    __Pyx_TraceLine(400,1,__PYX_ERR(8, 400, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_pretty_print != 0);
     if (__pyx_t_1) {
 
@@ -138708,6 +147656,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
  *                                pretty_print, encoding)
  */
+      __Pyx_TraceLine(401,1,__PYX_ERR(8, 401, __pyx_L1_error))
       (void)(xmlOutputBufferWriteString(__pyx_v_c_buffer, ((const char *)"\n")));
 
       /* "src/lxml/serializer.pxi":400
@@ -138726,6 +147675,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  *                                pretty_print, encoding)
  *         c_sibling = c_sibling.next
  */
+    __Pyx_TraceLine(402,1,__PYX_ERR(8, 402, __pyx_L1_error))
     xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);
 
     /* "src/lxml/serializer.pxi":404
@@ -138735,6 +147685,7 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  * 
  * 
  */
+    __Pyx_TraceLine(404,1,__PYX_ERR(8, 404, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_sibling->next;
     __pyx_v_c_sibling = __pyx_t_3;
   }
@@ -138748,7 +147699,11 @@ static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_b
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeNextSiblings", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/serializer.pxi":408
@@ -138763,9 +147718,11 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
   xmlChar *__pyx_v_ptr;
   xmlChar __pyx_v_c;
   unsigned char *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("xmlSerializeHexCharRef", 0);
+  __Pyx_TraceCall("xmlSerializeHexCharRef", __pyx_f[8], 408, 0, __PYX_ERR(8, 408, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":412
  *     cdef xmlChar c
@@ -138774,6 +147731,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     out += 1
  * 
  */
+  __Pyx_TraceLine(412,0,__PYX_ERR(8, 412, __pyx_L1_error))
   (__pyx_v_out[0]) = '&';
 
   /* "src/lxml/serializer.pxi":413
@@ -138783,6 +147741,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     out[0] = '#'
  */
+  __Pyx_TraceLine(413,0,__PYX_ERR(8, 413, __pyx_L1_error))
   __pyx_v_out = (__pyx_v_out + 1);
 
   /* "src/lxml/serializer.pxi":415
@@ -138792,6 +147751,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     out += 1
  * 
  */
+  __Pyx_TraceLine(415,0,__PYX_ERR(8, 415, __pyx_L1_error))
   (__pyx_v_out[0]) = '#';
 
   /* "src/lxml/serializer.pxi":416
@@ -138801,6 +147761,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     out[0] = 'x'
  */
+  __Pyx_TraceLine(416,0,__PYX_ERR(8, 416, __pyx_L1_error))
   __pyx_v_out = (__pyx_v_out + 1);
 
   /* "src/lxml/serializer.pxi":418
@@ -138810,6 +147771,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     out += 1
  * 
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(8, 418, __pyx_L1_error))
   (__pyx_v_out[0]) = 'x';
 
   /* "src/lxml/serializer.pxi":419
@@ -138819,6 +147781,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     if (val < 0x10):
  */
+  __Pyx_TraceLine(419,0,__PYX_ERR(8, 419, __pyx_L1_error))
   __pyx_v_out = (__pyx_v_out + 1);
 
   /* "src/lxml/serializer.pxi":421
@@ -138828,6 +147791,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         ptr = out
  *     elif (val < 0x100):
  */
+  __Pyx_TraceLine(421,0,__PYX_ERR(8, 421, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_val < 0x10) != 0);
   if (__pyx_t_1) {
 
@@ -138838,6 +147802,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     elif (val < 0x100):
  *         ptr = out + 1
  */
+    __Pyx_TraceLine(422,0,__PYX_ERR(8, 422, __pyx_L1_error))
     __pyx_v_ptr = __pyx_v_out;
 
     /* "src/lxml/serializer.pxi":421
@@ -138857,6 +147822,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         ptr = out + 1
  *     elif (val < 0x1000):
  */
+  __Pyx_TraceLine(423,0,__PYX_ERR(8, 423, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_val < 0x100) != 0);
   if (__pyx_t_1) {
 
@@ -138867,6 +147833,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     elif (val < 0x1000):
  *         ptr = out + 2
  */
+    __Pyx_TraceLine(424,0,__PYX_ERR(8, 424, __pyx_L1_error))
     __pyx_v_ptr = (__pyx_v_out + 1);
 
     /* "src/lxml/serializer.pxi":423
@@ -138886,6 +147853,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         ptr = out + 2
  *     elif (val < 0x10000):
  */
+  __Pyx_TraceLine(425,0,__PYX_ERR(8, 425, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_val < 0x1000) != 0);
   if (__pyx_t_1) {
 
@@ -138896,6 +147864,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     elif (val < 0x10000):
  *         ptr = out + 3
  */
+    __Pyx_TraceLine(426,0,__PYX_ERR(8, 426, __pyx_L1_error))
     __pyx_v_ptr = (__pyx_v_out + 2);
 
     /* "src/lxml/serializer.pxi":425
@@ -138915,6 +147884,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         ptr = out + 3
  *     elif (val < 0x100000):
  */
+  __Pyx_TraceLine(427,0,__PYX_ERR(8, 427, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_val < 0x10000) != 0);
   if (__pyx_t_1) {
 
@@ -138925,6 +147895,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     elif (val < 0x100000):
  *         ptr = out + 4
  */
+    __Pyx_TraceLine(428,0,__PYX_ERR(8, 428, __pyx_L1_error))
     __pyx_v_ptr = (__pyx_v_out + 3);
 
     /* "src/lxml/serializer.pxi":427
@@ -138944,6 +147915,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         ptr = out + 4
  *     else:
  */
+  __Pyx_TraceLine(429,0,__PYX_ERR(8, 429, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_val < 0x100000) != 0);
   if (__pyx_t_1) {
 
@@ -138954,6 +147926,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     else:
  *         ptr = out + 5
  */
+    __Pyx_TraceLine(430,0,__PYX_ERR(8, 430, __pyx_L1_error))
     __pyx_v_ptr = (__pyx_v_out + 4);
 
     /* "src/lxml/serializer.pxi":429
@@ -138973,6 +147946,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     out = ptr + 1
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(8, 432, __pyx_L1_error))
   /*else*/ {
     __pyx_v_ptr = (__pyx_v_out + 5);
   }
@@ -138985,6 +147959,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     while val > 0:
  *         c = (val & 0xF)
  */
+  __Pyx_TraceLine(434,0,__PYX_ERR(8, 434, __pyx_L1_error))
   __pyx_v_out = (__pyx_v_ptr + 1);
 
   /* "src/lxml/serializer.pxi":435
@@ -138994,6 +147969,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         c = (val & 0xF)
  * 
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(8, 435, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_val > 0) != 0);
     if (!__pyx_t_1) break;
@@ -139005,6 +147981,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *         if c == 0:
  */
+    __Pyx_TraceLine(436,0,__PYX_ERR(8, 436, __pyx_L1_error))
     __pyx_v_c = (__pyx_v_val & 0xF);
 
     /* "src/lxml/serializer.pxi":438
@@ -139014,6 +147991,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '0'
  *         elif c == 1:
  */
+    __Pyx_TraceLine(438,0,__PYX_ERR(8, 438, __pyx_L1_error))
     switch (__pyx_v_c) {
       case 0:
 
@@ -139024,6 +148002,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 1:
  *             ptr[0] = '1'
  */
+      __Pyx_TraceLine(439,0,__PYX_ERR(8, 439, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '0';
 
       /* "src/lxml/serializer.pxi":438
@@ -139042,6 +148021,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '1'
  *         elif c == 2:
  */
+      __Pyx_TraceLine(440,0,__PYX_ERR(8, 440, __pyx_L1_error))
       case 1:
 
       /* "src/lxml/serializer.pxi":441
@@ -139051,6 +148031,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 2:
  *             ptr[0] = '2'
  */
+      __Pyx_TraceLine(441,0,__PYX_ERR(8, 441, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '1';
 
       /* "src/lxml/serializer.pxi":440
@@ -139069,6 +148050,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '2'
  *         elif c == 3:
  */
+      __Pyx_TraceLine(442,0,__PYX_ERR(8, 442, __pyx_L1_error))
       case 2:
 
       /* "src/lxml/serializer.pxi":443
@@ -139078,6 +148060,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 3:
  *             ptr[0] = '3'
  */
+      __Pyx_TraceLine(443,0,__PYX_ERR(8, 443, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '2';
 
       /* "src/lxml/serializer.pxi":442
@@ -139096,6 +148079,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '3'
  *         elif c == 4:
  */
+      __Pyx_TraceLine(444,0,__PYX_ERR(8, 444, __pyx_L1_error))
       case 3:
 
       /* "src/lxml/serializer.pxi":445
@@ -139105,6 +148089,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 4:
  *             ptr[0] = '4'
  */
+      __Pyx_TraceLine(445,0,__PYX_ERR(8, 445, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '3';
 
       /* "src/lxml/serializer.pxi":444
@@ -139123,6 +148108,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '4'
  *         elif c == 5:
  */
+      __Pyx_TraceLine(446,0,__PYX_ERR(8, 446, __pyx_L1_error))
       case 4:
 
       /* "src/lxml/serializer.pxi":447
@@ -139132,6 +148118,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 5:
  *             ptr[0] = '5'
  */
+      __Pyx_TraceLine(447,0,__PYX_ERR(8, 447, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '4';
 
       /* "src/lxml/serializer.pxi":446
@@ -139150,6 +148137,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '5'
  *         elif c == 6:
  */
+      __Pyx_TraceLine(448,0,__PYX_ERR(8, 448, __pyx_L1_error))
       case 5:
 
       /* "src/lxml/serializer.pxi":449
@@ -139159,6 +148147,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 6:
  *             ptr[0] = '6'
  */
+      __Pyx_TraceLine(449,0,__PYX_ERR(8, 449, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '5';
 
       /* "src/lxml/serializer.pxi":448
@@ -139177,6 +148166,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '6'
  *         elif c == 7:
  */
+      __Pyx_TraceLine(450,0,__PYX_ERR(8, 450, __pyx_L1_error))
       case 6:
 
       /* "src/lxml/serializer.pxi":451
@@ -139186,6 +148176,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 7:
  *             ptr[0] = '7'
  */
+      __Pyx_TraceLine(451,0,__PYX_ERR(8, 451, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '6';
 
       /* "src/lxml/serializer.pxi":450
@@ -139204,6 +148195,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '7'
  *         elif c == 8:
  */
+      __Pyx_TraceLine(452,0,__PYX_ERR(8, 452, __pyx_L1_error))
       case 7:
 
       /* "src/lxml/serializer.pxi":453
@@ -139213,6 +148205,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 8:
  *             ptr[0] = '8'
  */
+      __Pyx_TraceLine(453,0,__PYX_ERR(8, 453, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '7';
 
       /* "src/lxml/serializer.pxi":452
@@ -139231,6 +148224,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '8'
  *         elif c == 9:
  */
+      __Pyx_TraceLine(454,0,__PYX_ERR(8, 454, __pyx_L1_error))
       case 8:
 
       /* "src/lxml/serializer.pxi":455
@@ -139240,6 +148234,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 9:
  *             ptr[0] = '9'
  */
+      __Pyx_TraceLine(455,0,__PYX_ERR(8, 455, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '8';
 
       /* "src/lxml/serializer.pxi":454
@@ -139258,6 +148253,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = '9'
  *         elif c == 0xA:
  */
+      __Pyx_TraceLine(456,0,__PYX_ERR(8, 456, __pyx_L1_error))
       case 9:
 
       /* "src/lxml/serializer.pxi":457
@@ -139267,6 +148263,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xA:
  *             ptr[0] = 'A'
  */
+      __Pyx_TraceLine(457,0,__PYX_ERR(8, 457, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '9';
 
       /* "src/lxml/serializer.pxi":456
@@ -139285,6 +148282,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'A'
  *         elif c == 0xB:
  */
+      __Pyx_TraceLine(458,0,__PYX_ERR(8, 458, __pyx_L1_error))
       case 0xA:
 
       /* "src/lxml/serializer.pxi":459
@@ -139294,6 +148292,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xB:
  *             ptr[0] = 'B'
  */
+      __Pyx_TraceLine(459,0,__PYX_ERR(8, 459, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'A';
 
       /* "src/lxml/serializer.pxi":458
@@ -139312,6 +148311,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'B'
  *         elif c == 0xC:
  */
+      __Pyx_TraceLine(460,0,__PYX_ERR(8, 460, __pyx_L1_error))
       case 0xB:
 
       /* "src/lxml/serializer.pxi":461
@@ -139321,6 +148321,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xC:
  *             ptr[0] = 'C'
  */
+      __Pyx_TraceLine(461,0,__PYX_ERR(8, 461, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'B';
 
       /* "src/lxml/serializer.pxi":460
@@ -139339,6 +148340,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'C'
  *         elif c == 0xD:
  */
+      __Pyx_TraceLine(462,0,__PYX_ERR(8, 462, __pyx_L1_error))
       case 0xC:
 
       /* "src/lxml/serializer.pxi":463
@@ -139348,6 +148350,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xD:
  *             ptr[0] = 'D'
  */
+      __Pyx_TraceLine(463,0,__PYX_ERR(8, 463, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'C';
 
       /* "src/lxml/serializer.pxi":462
@@ -139366,6 +148369,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'D'
  *         elif c == 0xE:
  */
+      __Pyx_TraceLine(464,0,__PYX_ERR(8, 464, __pyx_L1_error))
       case 0xD:
 
       /* "src/lxml/serializer.pxi":465
@@ -139375,6 +148379,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xE:
  *             ptr[0] = 'E'
  */
+      __Pyx_TraceLine(465,0,__PYX_ERR(8, 465, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'D';
 
       /* "src/lxml/serializer.pxi":464
@@ -139393,6 +148398,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'E'
  *         elif c == 0xF:
  */
+      __Pyx_TraceLine(466,0,__PYX_ERR(8, 466, __pyx_L1_error))
       case 0xE:
 
       /* "src/lxml/serializer.pxi":467
@@ -139402,6 +148408,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         elif c == 0xF:
  *             ptr[0] = 'F'
  */
+      __Pyx_TraceLine(467,0,__PYX_ERR(8, 467, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'E';
 
       /* "src/lxml/serializer.pxi":466
@@ -139420,6 +148427,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *             ptr[0] = 'F'
  *         else:
  */
+      __Pyx_TraceLine(468,0,__PYX_ERR(8, 468, __pyx_L1_error))
       case 0xF:
 
       /* "src/lxml/serializer.pxi":469
@@ -139429,6 +148437,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *         else:
  *             ptr[0] = '0'
  */
+      __Pyx_TraceLine(469,0,__PYX_ERR(8, 469, __pyx_L1_error))
       (__pyx_v_ptr[0]) = 'F';
 
       /* "src/lxml/serializer.pxi":468
@@ -139448,6 +148457,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *         ptr -= 1
  */
+      __Pyx_TraceLine(471,0,__PYX_ERR(8, 471, __pyx_L1_error))
       (__pyx_v_ptr[0]) = '0';
       break;
     }
@@ -139459,6 +148469,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *         val >>= 4
  */
+    __Pyx_TraceLine(473,0,__PYX_ERR(8, 473, __pyx_L1_error))
     __pyx_v_ptr = (__pyx_v_ptr - 1);
 
     /* "src/lxml/serializer.pxi":475
@@ -139468,6 +148479,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     out[0] = ';'
  */
+    __Pyx_TraceLine(475,0,__PYX_ERR(8, 475, __pyx_L1_error))
     __pyx_v_val = (__pyx_v_val >> 4);
   }
 
@@ -139478,6 +148490,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     out += 1
  *     out[0] = 0
  */
+  __Pyx_TraceLine(477,0,__PYX_ERR(8, 477, __pyx_L1_error))
   (__pyx_v_out[0]) = ';';
 
   /* "src/lxml/serializer.pxi":478
@@ -139487,6 +148500,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  *     out[0] = 0
  * 
  */
+  __Pyx_TraceLine(478,0,__PYX_ERR(8, 478, __pyx_L1_error))
   __pyx_v_out = (__pyx_v_out + 1);
 
   /* "src/lxml/serializer.pxi":479
@@ -139496,6 +148510,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  *     return out
  */
+  __Pyx_TraceLine(479,0,__PYX_ERR(8, 479, __pyx_L1_error))
   (__pyx_v_out[0]) = 0;
 
   /* "src/lxml/serializer.pxi":481
@@ -139505,6 +148520,7 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  * 
  * 
  */
+  __Pyx_TraceLine(481,0,__PYX_ERR(8, 481, __pyx_L1_error))
   __pyx_r = __pyx_v_out;
   goto __pyx_L0;
 
@@ -139517,7 +148533,11 @@ static unsigned char *__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(unsigned char
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.xmlSerializeHexCharRef", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -139538,6 +148558,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
   int __pyx_v_val;
   int __pyx_v_l;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -139545,6 +148566,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
   PyObject *__pyx_t_4 = NULL;
   size_t __pyx_t_5;
   __Pyx_RefNannySetupContext("_write_attr_string", 0);
+  __Pyx_TraceCall("_write_attr_string", __pyx_f[8], 485, 0, __PYX_ERR(8, 485, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":491
  * 
@@ -139553,6 +148575,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *     cdef int l
  * 
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(8, 491, __pyx_L1_error))
   __pyx_v_val = 0;
 
   /* "src/lxml/serializer.pxi":494
@@ -139562,6 +148585,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *         return
  * 
  */
+  __Pyx_TraceLine(494,0,__PYX_ERR(8, 494, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_string == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -139572,6 +148596,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *     base = cur = <const char*>string
  */
+    __Pyx_TraceLine(495,0,__PYX_ERR(8, 495, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -139592,6 +148617,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *     while (cur[0] != 0):
  *         if (cur[0] == '\n'):
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(8, 497, __pyx_L1_error))
   __pyx_v_base = ((char const *)__pyx_v_string);
   __pyx_v_cur = ((char const *)__pyx_v_string);
 
@@ -139602,6 +148628,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *         if (cur[0] == '\n'):
  *             if (base != cur):
  */
+  __Pyx_TraceLine(498,0,__PYX_ERR(8, 498, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (((__pyx_v_cur[0]) != 0) != 0);
     if (!__pyx_t_1) break;
@@ -139613,6 +148640,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(499,0,__PYX_ERR(8, 499, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '\n') != 0);
     if (__pyx_t_1) {
 
@@ -139623,6 +148651,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(500,0,__PYX_ERR(8, 500, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -139633,6 +148662,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 5, "&#10;")
  */
+        __Pyx_TraceLine(501,0,__PYX_ERR(8, 501, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":500
@@ -139651,6 +148681,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(503,0,__PYX_ERR(8, 503, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)"&#10;")));
 
       /* "src/lxml/serializer.pxi":504
@@ -139660,6 +148691,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(504,0,__PYX_ERR(8, 504, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":505
@@ -139669,6 +148701,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (cur[0] == '\r'):
  */
+      __Pyx_TraceLine(505,0,__PYX_ERR(8, 505, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":499
@@ -139688,6 +148721,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(507,0,__PYX_ERR(8, 507, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '\r') != 0);
     if (__pyx_t_1) {
 
@@ -139698,6 +148732,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(508,0,__PYX_ERR(8, 508, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -139708,6 +148743,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 5, "&#13;")
  */
+        __Pyx_TraceLine(509,0,__PYX_ERR(8, 509, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":508
@@ -139726,6 +148762,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(511,0,__PYX_ERR(8, 511, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)"&#13;")));
 
       /* "src/lxml/serializer.pxi":512
@@ -139735,6 +148772,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(512,0,__PYX_ERR(8, 512, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":513
@@ -139744,6 +148782,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (cur[0] == '\t'):
  */
+      __Pyx_TraceLine(513,0,__PYX_ERR(8, 513, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":507
@@ -139763,6 +148802,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(515,0,__PYX_ERR(8, 515, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '\t') != 0);
     if (__pyx_t_1) {
 
@@ -139773,6 +148813,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(516,0,__PYX_ERR(8, 516, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -139783,6 +148824,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 4, "&#9;")
  */
+        __Pyx_TraceLine(517,0,__PYX_ERR(8, 517, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":516
@@ -139801,6 +148843,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(519,0,__PYX_ERR(8, 519, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)"&#9;")));
 
       /* "src/lxml/serializer.pxi":520
@@ -139810,6 +148853,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(520,0,__PYX_ERR(8, 520, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":521
@@ -139819,6 +148863,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (cur[0] == '"'):
  */
+      __Pyx_TraceLine(521,0,__PYX_ERR(8, 521, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":515
@@ -139838,6 +148883,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(523,0,__PYX_ERR(8, 523, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '"') != 0);
     if (__pyx_t_1) {
 
@@ -139848,6 +148894,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(524,0,__PYX_ERR(8, 524, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -139858,6 +148905,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 6, "&quot;")
  */
+        __Pyx_TraceLine(525,0,__PYX_ERR(8, 525, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":524
@@ -139876,6 +148924,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(527,0,__PYX_ERR(8, 527, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 6, ((const char *)"&quot;")));
 
       /* "src/lxml/serializer.pxi":528
@@ -139885,6 +148934,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(528,0,__PYX_ERR(8, 528, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":529
@@ -139894,6 +148944,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (cur[0] == '<'):
  */
+      __Pyx_TraceLine(529,0,__PYX_ERR(8, 529, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":523
@@ -139913,6 +148964,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(531,0,__PYX_ERR(8, 531, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '<') != 0);
     if (__pyx_t_1) {
 
@@ -139923,6 +148975,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(532,0,__PYX_ERR(8, 532, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -139933,6 +148986,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 4, "&lt;")
  */
+        __Pyx_TraceLine(533,0,__PYX_ERR(8, 533, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":532
@@ -139951,6 +149005,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(535,0,__PYX_ERR(8, 535, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)"&lt;")));
 
       /* "src/lxml/serializer.pxi":536
@@ -139960,6 +149015,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(536,0,__PYX_ERR(8, 536, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":537
@@ -139969,6 +149025,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (cur[0] == '>'):
  */
+      __Pyx_TraceLine(537,0,__PYX_ERR(8, 537, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":531
@@ -139988,6 +149045,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(539,0,__PYX_ERR(8, 539, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '>') != 0);
     if (__pyx_t_1) {
 
@@ -139998,6 +149056,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(540,0,__PYX_ERR(8, 540, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -140008,6 +149067,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 4, "&gt;")
  */
+        __Pyx_TraceLine(541,0,__PYX_ERR(8, 541, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":540
@@ -140026,6 +149086,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(543,0,__PYX_ERR(8, 543, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 4, ((const char *)"&gt;")));
 
       /* "src/lxml/serializer.pxi":544
@@ -140035,6 +149096,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  *         elif (cur[0] == '&'):
  */
+      __Pyx_TraceLine(544,0,__PYX_ERR(8, 544, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":545
@@ -140044,6 +149106,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *         elif (cur[0] == '&'):
  *             if (base != cur):
  */
+      __Pyx_TraceLine(545,0,__PYX_ERR(8, 545, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":539
@@ -140063,6 +149126,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             if (base != cur):
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  */
+    __Pyx_TraceLine(546,0,__PYX_ERR(8, 546, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_cur[0]) == '&') != 0);
     if (__pyx_t_1) {
 
@@ -140073,6 +149137,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(547,0,__PYX_ERR(8, 547, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -140083,6 +149148,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             tree.xmlOutputBufferWrite(buf, 5, "&amp;")
  */
+        __Pyx_TraceLine(548,0,__PYX_ERR(8, 548, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":547
@@ -140101,6 +149167,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += 1
  *             base = cur
  */
+      __Pyx_TraceLine(550,0,__PYX_ERR(8, 550, __pyx_L1_error))
       (void)(xmlOutputBufferWrite(__pyx_v_buf, 5, ((const char *)"&amp;")));
 
       /* "src/lxml/serializer.pxi":551
@@ -140110,6 +149177,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(551,0,__PYX_ERR(8, 551, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + 1);
 
       /* "src/lxml/serializer.pxi":552
@@ -140119,6 +149187,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0):
  */
+      __Pyx_TraceLine(552,0,__PYX_ERR(8, 552, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":546
@@ -140138,6 +149207,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             if (base != cur):
  */
+    __Pyx_TraceLine(554,0,__PYX_ERR(8, 554, __pyx_L1_error))
     __pyx_t_2 = ((((unsigned char const )(__pyx_v_cur[0])) >= 0x80) != 0);
     if (__pyx_t_2) {
     } else {
@@ -140156,6 +149226,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+      __Pyx_TraceLine(556,0,__PYX_ERR(8, 556, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
       if (__pyx_t_1) {
 
@@ -140166,6 +149237,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             ucur = <const unsigned char *>cur
  */
+        __Pyx_TraceLine(557,0,__PYX_ERR(8, 557, __pyx_L1_error))
         (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
         /* "src/lxml/serializer.pxi":556
@@ -140184,6 +149256,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             if (ucur[0] < 0xC0):
  */
+      __Pyx_TraceLine(559,0,__PYX_ERR(8, 559, __pyx_L1_error))
       __pyx_v_ucur = ((unsigned char const *)__pyx_v_cur);
 
       /* "src/lxml/serializer.pxi":561
@@ -140193,6 +149266,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 # invalid UTF-8 sequence
  *                 val = ucur[0]
  */
+      __Pyx_TraceLine(561,0,__PYX_ERR(8, 561, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_ucur[0]) < 0xC0) != 0);
       if (__pyx_t_1) {
 
@@ -140203,6 +149277,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 l = 1
  * 
  */
+        __Pyx_TraceLine(563,0,__PYX_ERR(8, 563, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_ucur[0]);
 
         /* "src/lxml/serializer.pxi":564
@@ -140212,6 +149287,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             elif (ucur[0] < 0xE0):
  */
+        __Pyx_TraceLine(564,0,__PYX_ERR(8, 564, __pyx_L1_error))
         __pyx_v_l = 1;
 
         /* "src/lxml/serializer.pxi":561
@@ -140231,6 +149307,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val = (ucur[0]) & 0x1F
  *                 val <<= 6
  */
+      __Pyx_TraceLine(566,0,__PYX_ERR(8, 566, __pyx_L1_error))
       __pyx_t_1 = (((__pyx_v_ucur[0]) < 0xE0) != 0);
       if (__pyx_t_1) {
 
@@ -140241,6 +149318,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[1]) & 0x3F
  */
+        __Pyx_TraceLine(567,0,__PYX_ERR(8, 567, __pyx_L1_error))
         __pyx_v_val = ((__pyx_v_ucur[0]) & 0x1F);
 
         /* "src/lxml/serializer.pxi":568
@@ -140250,6 +149328,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[1]) & 0x3F
  *                 l = 2
  */
+        __Pyx_TraceLine(568,0,__PYX_ERR(8, 568, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":569
@@ -140259,6 +149338,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 l = 2
  * 
  */
+        __Pyx_TraceLine(569,0,__PYX_ERR(8, 569, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":570
@@ -140268,6 +149348,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             elif ((ucur[0] < 0xF0) and (ucur[2] != 0)):
  */
+        __Pyx_TraceLine(570,0,__PYX_ERR(8, 570, __pyx_L1_error))
         __pyx_v_l = 2;
 
         /* "src/lxml/serializer.pxi":566
@@ -140287,6 +149368,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val = (ucur[0]) & 0x0F
  *                 val <<= 6
  */
+      __Pyx_TraceLine(572,0,__PYX_ERR(8, 572, __pyx_L1_error))
       __pyx_t_2 = (((__pyx_v_ucur[0]) < 0xF0) != 0);
       if (__pyx_t_2) {
       } else {
@@ -140305,6 +149387,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[1]) & 0x3F
  */
+        __Pyx_TraceLine(573,0,__PYX_ERR(8, 573, __pyx_L1_error))
         __pyx_v_val = ((__pyx_v_ucur[0]) & 0x0F);
 
         /* "src/lxml/serializer.pxi":574
@@ -140314,6 +149397,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[1]) & 0x3F
  *                 val <<= 6
  */
+        __Pyx_TraceLine(574,0,__PYX_ERR(8, 574, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":575
@@ -140323,6 +149407,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[2]) & 0x3F
  */
+        __Pyx_TraceLine(575,0,__PYX_ERR(8, 575, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":576
@@ -140332,6 +149417,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[2]) & 0x3F
  *                 l = 3
  */
+        __Pyx_TraceLine(576,0,__PYX_ERR(8, 576, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":577
@@ -140341,6 +149427,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 l = 3
  * 
  */
+        __Pyx_TraceLine(577,0,__PYX_ERR(8, 577, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[2]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":578
@@ -140350,6 +149437,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             elif ((ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0)):
  */
+        __Pyx_TraceLine(578,0,__PYX_ERR(8, 578, __pyx_L1_error))
         __pyx_v_l = 3;
 
         /* "src/lxml/serializer.pxi":572
@@ -140369,6 +149457,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val = (ucur[0]) & 0x07
  *                 val <<= 6
  */
+      __Pyx_TraceLine(580,0,__PYX_ERR(8, 580, __pyx_L1_error))
       __pyx_t_2 = (((__pyx_v_ucur[0]) < 0xF8) != 0);
       if (__pyx_t_2) {
       } else {
@@ -140393,6 +149482,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[1]) & 0x3F
  */
+        __Pyx_TraceLine(581,0,__PYX_ERR(8, 581, __pyx_L1_error))
         __pyx_v_val = ((__pyx_v_ucur[0]) & 0x07);
 
         /* "src/lxml/serializer.pxi":582
@@ -140402,6 +149492,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[1]) & 0x3F
  *                 val <<= 6
  */
+        __Pyx_TraceLine(582,0,__PYX_ERR(8, 582, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":583
@@ -140411,6 +149502,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[2]) & 0x3F
  */
+        __Pyx_TraceLine(583,0,__PYX_ERR(8, 583, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[1]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":584
@@ -140420,6 +149512,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[2]) & 0x3F
  *                 val <<= 6
  */
+        __Pyx_TraceLine(584,0,__PYX_ERR(8, 584, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":585
@@ -140429,6 +149522,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val <<= 6
  *                 val |= (ucur[3]) & 0x3F
  */
+        __Pyx_TraceLine(585,0,__PYX_ERR(8, 585, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[2]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":586
@@ -140438,6 +149532,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 val |= (ucur[3]) & 0x3F
  *                 l = 4
  */
+        __Pyx_TraceLine(586,0,__PYX_ERR(8, 586, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val << 6);
 
         /* "src/lxml/serializer.pxi":587
@@ -140447,6 +149542,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 l = 4
  *             else:
  */
+        __Pyx_TraceLine(587,0,__PYX_ERR(8, 587, __pyx_L1_error))
         __pyx_v_val = (__pyx_v_val | ((__pyx_v_ucur[3]) & 0x3F));
 
         /* "src/lxml/serializer.pxi":588
@@ -140456,6 +149552,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             else:
  *                 # invalid UTF-8 sequence
  */
+        __Pyx_TraceLine(588,0,__PYX_ERR(8, 588, __pyx_L1_error))
         __pyx_v_l = 4;
 
         /* "src/lxml/serializer.pxi":580
@@ -140475,6 +149572,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 l = 1
  * 
  */
+      __Pyx_TraceLine(591,0,__PYX_ERR(8, 591, __pyx_L1_error))
       /*else*/ {
         __pyx_v_val = (__pyx_v_ucur[0]);
 
@@ -140485,6 +149583,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             if ((l == 1) or (not tree.xmlIsCharQ(val))):
  */
+        __Pyx_TraceLine(592,0,__PYX_ERR(8, 592, __pyx_L1_error))
         __pyx_v_l = 1;
       }
       __pyx_L17:;
@@ -140496,6 +149595,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *                 raise ValueError(f"Invalid character: {val:X}")
  * 
  */
+      __Pyx_TraceLine(594,0,__PYX_ERR(8, 594, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_l == 1) != 0);
       if (!__pyx_t_2) {
       } else {
@@ -140514,6 +149614,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *             # We could do multiple things here. Just save
  */
+        __Pyx_TraceLine(595,0,__PYX_ERR(8, 595, __pyx_L1_error))
         __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_val, 0, ' ', 'X'); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 595, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_character, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 595, __pyx_L1_error)
@@ -140542,6 +149643,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp)
  *             cur += l
  */
+      __Pyx_TraceLine(599,0,__PYX_ERR(8, 599, __pyx_L1_error))
       (void)(__pyx_f_4lxml_5etree_xmlSerializeHexCharRef(__pyx_v_tmp, __pyx_v_val));
 
       /* "src/lxml/serializer.pxi":600
@@ -140551,6 +149653,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             cur += l
  *             base = cur
  */
+      __Pyx_TraceLine(600,0,__PYX_ERR(8, 600, __pyx_L1_error))
       __pyx_t_5 = strlen(((char const *)__pyx_v_tmp)); 
       (void)(xmlOutputBufferWrite(__pyx_v_buf, __pyx_t_5, ((char const *)__pyx_v_tmp)));
 
@@ -140561,6 +149664,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *             base = cur
  * 
  */
+      __Pyx_TraceLine(601,0,__PYX_ERR(8, 601, __pyx_L1_error))
       __pyx_v_cur = (__pyx_v_cur + __pyx_v_l);
 
       /* "src/lxml/serializer.pxi":602
@@ -140570,6 +149674,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *         else:
  */
+      __Pyx_TraceLine(602,0,__PYX_ERR(8, 602, __pyx_L1_error))
       __pyx_v_base = __pyx_v_cur;
 
       /* "src/lxml/serializer.pxi":554
@@ -140589,6 +149694,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  *     if (base != cur):
  */
+    __Pyx_TraceLine(605,0,__PYX_ERR(8, 605, __pyx_L1_error))
     /*else*/ {
       __pyx_v_cur = (__pyx_v_cur + 1);
     }
@@ -140602,6 +149708,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  *         tree.xmlOutputBufferWrite(buf, cur - base, base)
  * 
  */
+  __Pyx_TraceLine(607,0,__PYX_ERR(8, 607, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_base != __pyx_v_cur) != 0);
   if (__pyx_t_1) {
 
@@ -140612,6 +149719,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
  * 
  * 
  */
+    __Pyx_TraceLine(608,0,__PYX_ERR(8, 608, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_buf, (__pyx_v_cur - __pyx_v_base), __pyx_v_base));
 
     /* "src/lxml/serializer.pxi":607
@@ -140641,6 +149749,7 @@ static PyObject *__pyx_f_4lxml_5etree__write_attr_string(xmlOutputBuffer *__pyx_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -140746,6 +149855,7 @@ static int __pyx_pw_4lxml_5etree_15_FilelikeWriter_1__cinit__(PyObject *__pyx_v_
 
 static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self, PyObject *__pyx_v_filelike, PyObject *__pyx_v_exc_context, PyObject *__pyx_v_compression, PyObject *__pyx_v_close) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -140753,6 +149863,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 621, 0, __PYX_ERR(8, 621, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_filelike);
 
   /* "src/lxml/serializer.pxi":622
@@ -140762,6 +149873,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *             filelike = GzipFile(
  *                 fileobj=filelike, mode='wb', compresslevel=compression)
  */
+  __Pyx_TraceLine(622,0,__PYX_ERR(8, 622, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_compression != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -140783,6 +149895,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *             self._close_filelike = filelike.close
  *         elif close:
  */
+    __Pyx_TraceLine(624,0,__PYX_ERR(8, 624, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 624, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fileobj, __pyx_v_filelike) < 0) __PYX_ERR(8, 624, __pyx_L1_error)
@@ -140796,6 +149909,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *                 fileobj=filelike, mode='wb', compresslevel=compression)
  *             self._close_filelike = filelike.close
  */
+    __Pyx_TraceLine(623,0,__PYX_ERR(8, 623, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 623, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -140809,6 +149923,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *         elif close:
  *             self._close_filelike = filelike.close
  */
+    __Pyx_TraceLine(625,0,__PYX_ERR(8, 625, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 625, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -140834,6 +149949,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *             self._close_filelike = filelike.close
  *         self._filelike = filelike
  */
+  __Pyx_TraceLine(626,0,__PYX_ERR(8, 626, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(8, 626, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -140844,6 +149960,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *         self._filelike = filelike
  *         if exc_context is None:
  */
+    __Pyx_TraceLine(627,0,__PYX_ERR(8, 627, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 627, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -140869,6 +149986,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *         if exc_context is None:
  *             self._exc_context = _ExceptionContext()
  */
+  __Pyx_TraceLine(628,0,__PYX_ERR(8, 628, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_filelike);
   __Pyx_GIVEREF(__pyx_v_filelike);
   __Pyx_GOTREF(__pyx_v_self->_filelike);
@@ -140882,6 +150000,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *             self._exc_context = _ExceptionContext()
  *         else:
  */
+  __Pyx_TraceLine(629,0,__PYX_ERR(8, 629, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_exc_context == Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -140893,6 +150012,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *         else:
  *             self._exc_context = exc_context
  */
+    __Pyx_TraceLine(630,0,__PYX_ERR(8, 630, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 630, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -140918,6 +150038,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  *         self.error_log = _ErrorLog()
  * 
  */
+  __Pyx_TraceLine(632,0,__PYX_ERR(8, 632, __pyx_L1_error))
   /*else*/ {
     if (!(likely(((__pyx_v_exc_context) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext))))) __PYX_ERR(8, 632, __pyx_L1_error)
     __pyx_t_5 = __pyx_v_exc_context;
@@ -140937,6 +150058,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
  * 
  *     cdef tree.xmlOutputBuffer* _createOutputBuffer(
  */
+  __Pyx_TraceLine(633,0,__PYX_ERR(8, 633, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 633, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_5);
@@ -140963,6 +150085,7 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_filelike);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -140978,9 +150101,11 @@ static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___cinit__(struct __pyx_obj_4l
 static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self, xmlCharEncodingHandler *__pyx_v_enchandler) {
   xmlOutputBuffer *__pyx_v_c_buffer;
   xmlOutputBuffer *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_createOutputBuffer", 0);
+  __Pyx_TraceCall("_createOutputBuffer", __pyx_f[8], 635, 0, __PYX_ERR(8, 635, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":638
  *         self, tree.xmlCharEncodingHandler* enchandler) except NULL:
@@ -140989,6 +150114,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
  *             <tree.xmlOutputWriteCallback>_writeFilelikeWriter, _closeFilelikeWriter,
  *             <python.PyObject*>self, enchandler)
  */
+  __Pyx_TraceLine(638,0,__PYX_ERR(8, 638, __pyx_L1_error))
   __pyx_v_c_buffer = xmlOutputBufferCreateIO(((xmlOutputWriteCallback)__pyx_f_4lxml_5etree__writeFilelikeWriter), __pyx_f_4lxml_5etree__closeFilelikeWriter, ((PyObject *)__pyx_v_self), __pyx_v_enchandler);
 
   /* "src/lxml/serializer.pxi":641
@@ -140998,6 +150124,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
  *             raise IOError, u"Could not create I/O writer context."
  *         return c_buffer
  */
+  __Pyx_TraceLine(641,0,__PYX_ERR(8, 641, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -141008,6 +150135,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
  *         return c_buffer
  * 
  */
+    __Pyx_TraceLine(642,0,__PYX_ERR(8, 642, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_IOError, __pyx_kp_u_Could_not_create_I_O_writer_cont, 0, 0);
     __PYX_ERR(8, 642, __pyx_L1_error)
 
@@ -141027,6 +150155,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
  * 
  *     cdef int write(self, char* c_buffer, int size):
  */
+  __Pyx_TraceLine(643,0,__PYX_ERR(8, 643, __pyx_L1_error))
   __pyx_r = __pyx_v_c_buffer;
   goto __pyx_L0;
 
@@ -141043,6 +150172,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
   __Pyx_AddTraceback("lxml.etree._FilelikeWriter._createOutputBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -141058,6 +150188,7 @@ static xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuff
 static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self, char *__pyx_v_c_buffer, int __pyx_v_size) {
   PyObject *__pyx_v_py_buffer = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -141072,6 +150203,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_TraceCall("write", __pyx_f[8], 645, 0, __PYX_ERR(8, 645, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":646
  * 
@@ -141080,6 +150212,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *             if self._filelike is None:
  *                 raise IOError, u"File is already closed"
  */
+  __Pyx_TraceLine(646,0,__PYX_ERR(8, 646, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -141097,6 +150230,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *                 raise IOError, u"File is already closed"
  *             py_buffer = <bytes>c_buffer[:size]
  */
+        __Pyx_TraceLine(647,0,__PYX_ERR(8, 647, __pyx_L6_error))
         __pyx_t_4 = (__pyx_v_self->_filelike == Py_None);
         __pyx_t_5 = (__pyx_t_4 != 0);
         if (unlikely(__pyx_t_5)) {
@@ -141108,6 +150242,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *             py_buffer = <bytes>c_buffer[:size]
  *             self._filelike.write(py_buffer)
  */
+          __Pyx_TraceLine(648,0,__PYX_ERR(8, 648, __pyx_L6_error))
           __Pyx_Raise(__pyx_builtin_IOError, __pyx_kp_u_File_is_already_closed, 0, 0);
           __PYX_ERR(8, 648, __pyx_L6_error)
 
@@ -141127,6 +150262,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *             self._filelike.write(py_buffer)
  *         except:
  */
+        __Pyx_TraceLine(649,0,__PYX_ERR(8, 649, __pyx_L6_error))
         __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_buffer + 0, __pyx_v_size - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 649, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_7 = __pyx_t_6;
@@ -141142,6 +150278,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *         except:
  *             size = -1
  */
+        __Pyx_TraceLine(650,0,__PYX_ERR(8, 650, __pyx_L6_error))
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 650, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_8 = NULL;
@@ -141214,6 +150351,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *             size = -1
  *             self._exc_context._store_raised()
  */
+      __Pyx_TraceLine(651,0,__PYX_ERR(8, 651, __pyx_L8_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._FilelikeWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(8, 651, __pyx_L8_except_error)
@@ -141228,6 +150366,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *             self._exc_context._store_raised()
  *         finally:
  */
+        __Pyx_TraceLine(652,0,__PYX_ERR(8, 652, __pyx_L8_except_error))
         __pyx_v_size = -1;
 
         /* "src/lxml/serializer.pxi":653
@@ -141237,6 +150376,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  *         finally:
  *             return size  # and swallow any further exceptions
  */
+        __Pyx_TraceLine(653,0,__PYX_ERR(8, 653, __pyx_L8_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -141273,6 +150413,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  * 
  *     cdef int close(self):
  */
+  __Pyx_TraceLine(655,0,__PYX_ERR(8, 655, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_r = __pyx_v_size;
@@ -141323,8 +150464,16 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_WriteUnraisable("lxml.etree._FilelikeWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_py_buffer);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -141340,6 +150489,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5
 static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self) {
   long __pyx_v_retval;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -141353,6 +150503,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_TraceCall("close", __pyx_f[8], 657, 0, __PYX_ERR(8, 657, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":658
  * 
@@ -141361,6 +150512,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *         try:
  *             if self._close_filelike is not None:
  */
+  __Pyx_TraceLine(658,0,__PYX_ERR(8, 658, __pyx_L1_error))
   __pyx_v_retval = 0;
 
   /* "src/lxml/serializer.pxi":659
@@ -141370,6 +150522,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *             if self._close_filelike is not None:
  *                 self._close_filelike()
  */
+  __Pyx_TraceLine(659,0,__PYX_ERR(8, 659, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -141387,6 +150540,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *                 self._close_filelike()
  *             # we should not close the file here as we didn't open it
  */
+        __Pyx_TraceLine(660,0,__PYX_ERR(8, 660, __pyx_L6_error))
         __pyx_t_4 = (__pyx_v_self->_close_filelike != Py_None);
         __pyx_t_5 = (__pyx_t_4 != 0);
         if (__pyx_t_5) {
@@ -141398,6 +150552,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *             # we should not close the file here as we didn't open it
  *             self._filelike = None
  */
+          __Pyx_TraceLine(661,0,__PYX_ERR(8, 661, __pyx_L6_error))
           __Pyx_INCREF(__pyx_v_self->_close_filelike);
           __pyx_t_7 = __pyx_v_self->_close_filelike; __pyx_t_8 = NULL;
           if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -141435,6 +150590,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *         except:
  *             retval = -1
  */
+        __Pyx_TraceLine(663,0,__PYX_ERR(8, 663, __pyx_L6_error))
         __Pyx_INCREF(Py_None);
         __Pyx_GIVEREF(Py_None);
         __Pyx_GOTREF(__pyx_v_self->_filelike);
@@ -141465,6 +150621,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *             retval = -1
  *             self._exc_context._store_raised()
  */
+      __Pyx_TraceLine(664,0,__PYX_ERR(8, 664, __pyx_L8_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._FilelikeWriter.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(8, 664, __pyx_L8_except_error)
@@ -141479,6 +150636,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *             self._exc_context._store_raised()
  *         finally:
  */
+        __Pyx_TraceLine(665,0,__PYX_ERR(8, 665, __pyx_L8_except_error))
         __pyx_v_retval = -1L;
 
         /* "src/lxml/serializer.pxi":666
@@ -141488,6 +150646,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  *         finally:
  *             return retval  # and swallow any further exceptions
  */
+        __Pyx_TraceLine(666,0,__PYX_ERR(8, 666, __pyx_L8_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -141524,6 +150683,7 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  * 
  * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length):
  */
+  __Pyx_TraceLine(668,0,__PYX_ERR(8, 668, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_r = __pyx_v_retval;
@@ -141573,7 +150733,14 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_WriteUnraisable("lxml.etree._FilelikeWriter.close", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -141588,8 +150755,10 @@ static int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5
 
 static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_length) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_writeFilelikeWriter", 0);
+  __Pyx_TraceCall("_writeFilelikeWriter", __pyx_f[8], 670, 0, __PYX_ERR(8, 670, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":671
  * 
@@ -141598,6 +150767,7 @@ static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *_
  * 
  * cdef int _closeFilelikeWriter(void* ctxt):
  */
+  __Pyx_TraceLine(671,0,__PYX_ERR(8, 671, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_write(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_length);
   goto __pyx_L0;
 
@@ -141610,7 +150780,11 @@ static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._writeFilelikeWriter", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -141625,8 +150799,10 @@ static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *_
 
 static int __pyx_f_4lxml_5etree__closeFilelikeWriter(void *__pyx_v_ctxt) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_closeFilelikeWriter", 0);
+  __Pyx_TraceCall("_closeFilelikeWriter", __pyx_f[8], 673, 0, __PYX_ERR(8, 673, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":674
  * 
@@ -141635,6 +150811,7 @@ static int __pyx_f_4lxml_5etree__closeFilelikeWriter(void *__pyx_v_ctxt) {
  * 
  * cdef _tofilelike(f, _Element element, encoding, doctype, method,
  */
+  __Pyx_TraceLine(674,0,__PYX_ERR(8, 674, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_close(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt));
   goto __pyx_L0;
 
@@ -141647,7 +150824,11 @@ static int __pyx_f_4lxml_5etree__closeFilelikeWriter(void *__pyx_v_ctxt) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._closeFilelikeWriter", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -141672,6 +150853,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
   PyObject *__pyx_v_gzip_file = NULL;
   PyObject *__pyx_v_filename8 = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -141690,6 +150872,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
   char const *__pyx_t_15;
   int __pyx_t_16;
   __Pyx_RefNannySetupContext("_tofilelike", 0);
+  __Pyx_TraceCall("_tofilelike", __pyx_f[8], 676, 0, __PYX_ERR(8, 676, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_f);
   __Pyx_INCREF(__pyx_v_encoding);
   __Pyx_INCREF(__pyx_v_doctype);
@@ -141701,6 +150884,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     cdef tree.xmlOutputBuffer* c_buffer
  *     cdef tree.xmlCharEncodingHandler* enchandler
  */
+  __Pyx_TraceLine(680,0,__PYX_ERR(8, 680, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
 
@@ -141711,6 +150895,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     if c_method == OUTPUT_METHOD_TEXT:
  *         data = _textToString(element._c_node, encoding, with_tail)
  */
+  __Pyx_TraceLine(687,0,__PYX_ERR(8, 687, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(8, 687, __pyx_L1_error)
   __pyx_v_c_method = __pyx_t_1;
 
@@ -141721,6 +150906,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         data = _textToString(element._c_node, encoding, with_tail)
  *         if compression:
  */
+  __Pyx_TraceLine(688,0,__PYX_ERR(8, 688, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT) != 0);
   if (__pyx_t_2) {
 
@@ -141731,6 +150917,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         if compression:
  *             bytes_out = BytesIO()
  */
+    __Pyx_TraceLine(689,0,__PYX_ERR(8, 689, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 689, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_data = __pyx_t_3;
@@ -141743,6 +150930,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             bytes_out = BytesIO()
  *             gzip_file = GzipFile(
  */
+    __Pyx_TraceLine(690,0,__PYX_ERR(8, 690, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_compression != 0);
     if (__pyx_t_2) {
 
@@ -141753,6 +150941,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             gzip_file = GzipFile(
  *                 fileobj=bytes_out, mode='wb', compresslevel=compression)
  */
+      __Pyx_TraceLine(691,0,__PYX_ERR(8, 691, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_4lxml_5etree_BytesIO);
       __pyx_t_4 = __pyx_v_4lxml_5etree_BytesIO; __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -141782,6 +150971,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             try:
  *                 gzip_file.write(data)
  */
+      __Pyx_TraceLine(693,0,__PYX_ERR(8, 693, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 693, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fileobj, __pyx_v_bytes_out) < 0) __PYX_ERR(8, 693, __pyx_L1_error)
@@ -141798,6 +150988,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *                 fileobj=bytes_out, mode='wb', compresslevel=compression)
  *             try:
  */
+      __Pyx_TraceLine(692,0,__PYX_ERR(8, 692, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_5etree_GzipFile, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 692, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -141811,6 +151002,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *                 gzip_file.write(data)
  *             finally:
  */
+      __Pyx_TraceLine(694,0,__PYX_ERR(8, 694, __pyx_L6_error))
       /*try:*/ {
 
         /* "src/lxml/serializer.pxi":695
@@ -141820,6 +151012,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             finally:
  *                 gzip_file.close()
  */
+        __Pyx_TraceLine(695,0,__PYX_ERR(8, 695, __pyx_L6_error))
         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_gzip_file, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 695, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_5 = NULL;
@@ -141875,6 +151068,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             data = bytes_out.getvalue()
  *         if _isString(f):
  */
+      __Pyx_TraceLine(697,0,__PYX_ERR(8, 697, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_gzip_file, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 697, __pyx_L1_error)
@@ -141977,6 +151171,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         if _isString(f):
  *             filename8 = _encodeFilename(f)
  */
+      __Pyx_TraceLine(698,0,__PYX_ERR(8, 698, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_bytes_out, __pyx_n_s_getvalue); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 698, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_6 = NULL;
@@ -142016,6 +151211,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             filename8 = _encodeFilename(f)
  *             f = open(filename8, 'wb')
  */
+    __Pyx_TraceLine(699,0,__PYX_ERR(8, 699, __pyx_L1_error))
     __pyx_t_2 = (_isString(__pyx_v_f) != 0);
     if (__pyx_t_2) {
 
@@ -142026,6 +151222,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             f = open(filename8, 'wb')
  *             try:
  */
+      __Pyx_TraceLine(700,0,__PYX_ERR(8, 700, __pyx_L1_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 700, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_filename8 = __pyx_t_4;
@@ -142038,6 +151235,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             try:
  *                 f.write(data)
  */
+      __Pyx_TraceLine(701,0,__PYX_ERR(8, 701, __pyx_L1_error))
       __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 701, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_filename8);
@@ -142059,6 +151257,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *                 f.write(data)
  *             finally:
  */
+      __Pyx_TraceLine(702,0,__PYX_ERR(8, 702, __pyx_L12_error))
       /*try:*/ {
 
         /* "src/lxml/serializer.pxi":703
@@ -142068,6 +151267,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             finally:
  *                 f.close()
  */
+        __Pyx_TraceLine(703,0,__PYX_ERR(8, 703, __pyx_L12_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 703, __pyx_L12_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_6 = NULL;
@@ -142123,6 +151323,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         else:
  *             f.write(data)
  */
+      __Pyx_TraceLine(705,0,__PYX_ERR(8, 705, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 705, __pyx_L1_error)
@@ -142235,6 +151436,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         return
  * 
  */
+    __Pyx_TraceLine(707,0,__PYX_ERR(8, 707, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 707, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -142292,6 +151494,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  * 
  *     if encoding is None:
  */
+    __Pyx_TraceLine(708,0,__PYX_ERR(8, 708, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -142312,6 +151515,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         c_enc = NULL
  *     else:
  */
+  __Pyx_TraceLine(710,0,__PYX_ERR(8, 710, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_encoding == Py_None);
   __pyx_t_16 = (__pyx_t_2 != 0);
   if (__pyx_t_16) {
@@ -142323,6 +151527,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     else:
  *         encoding = _utf8(encoding)
  */
+    __Pyx_TraceLine(711,0,__PYX_ERR(8, 711, __pyx_L1_error))
     __pyx_v_c_enc = NULL;
 
     /* "src/lxml/serializer.pxi":710
@@ -142342,6 +151547,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         c_enc = _cstr(encoding)
  *     if doctype is None:
  */
+  __Pyx_TraceLine(713,0,__PYX_ERR(8, 713, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 713, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -142355,6 +151561,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     if doctype is None:
  *         c_doctype = NULL
  */
+    __Pyx_TraceLine(714,0,__PYX_ERR(8, 714, __pyx_L1_error))
     __pyx_v_c_enc = PyBytes_AS_STRING(__pyx_v_encoding);
   }
   __pyx_L16:;
@@ -142366,6 +151573,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         c_doctype = NULL
  *     else:
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(8, 715, __pyx_L1_error))
   __pyx_t_16 = (__pyx_v_doctype == Py_None);
   __pyx_t_2 = (__pyx_t_16 != 0);
   if (__pyx_t_2) {
@@ -142377,6 +151585,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     else:
  *         doctype = _utf8(doctype)
  */
+    __Pyx_TraceLine(716,0,__PYX_ERR(8, 716, __pyx_L1_error))
     __pyx_v_c_doctype = NULL;
 
     /* "src/lxml/serializer.pxi":715
@@ -142396,6 +151605,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         c_doctype = _xcstr(doctype)
  * 
  */
+  __Pyx_TraceLine(718,0,__PYX_ERR(8, 718, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 718, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -142409,6 +151619,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  * 
  *     writer = _create_output_buffer(f, c_enc, compression, &c_buffer, close=False)
  */
+    __Pyx_TraceLine(719,0,__PYX_ERR(8, 719, __pyx_L1_error))
     __pyx_v_c_doctype = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype);
   }
   __pyx_L17:;
@@ -142420,6 +151631,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     if writer is None:
  *         with nogil:
  */
+  __Pyx_TraceLine(721,0,__PYX_ERR(8, 721, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_f, __pyx_v_c_enc, __pyx_v_compression, (&__pyx_v_c_buffer), 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF_SET(__pyx_v_writer, ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_3));
@@ -142432,6 +151644,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         with nogil:
  *             error_result = _serialise_node(
  */
+  __Pyx_TraceLine(722,0,__PYX_ERR(8, 722, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_writer) == Py_None);
   __pyx_t_16 = (__pyx_t_2 != 0);
   if (__pyx_t_16) {
@@ -142443,6 +151656,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             error_result = _serialise_node(
  *                 c_buffer, c_doctype, c_enc, element._c_node, c_method,
  */
+    __Pyx_TraceLine(723,0,__PYX_ERR(8, 723, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -142458,6 +151672,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *                 c_buffer, c_doctype, c_enc, element._c_node, c_method,
  *                 write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
  */
+          __Pyx_TraceLine(724,1,__PYX_ERR(8, 724, __pyx_L20_error))
           __pyx_v_error_result = __pyx_f_4lxml_5etree__serialise_node(__pyx_v_c_buffer, __pyx_v_c_doctype, __pyx_v_c_enc, __pyx_v_element->_c_node, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
         }
 
@@ -142468,6 +151683,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             error_result = _serialise_node(
  *                 c_buffer, c_doctype, c_enc, element._c_node, c_method,
  */
+        __Pyx_TraceLine(723,1,__PYX_ERR(8, 723, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -142476,6 +151692,13 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
             #endif
             goto __pyx_L21;
           }
+          __pyx_L20_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L21:;
         }
     }
@@ -142497,6 +151720,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *             c_buffer, c_doctype, c_enc, element._c_node, c_method,
  *             write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
  */
+  __Pyx_TraceLine(728,0,__PYX_ERR(8, 728, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/serializer.pxi":730
@@ -142506,6 +151730,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  * 
  *     if writer is not None:
  */
+    __Pyx_TraceLine(730,0,__PYX_ERR(8, 730, __pyx_L1_error))
     __pyx_v_error_result = __pyx_f_4lxml_5etree__serialise_node(__pyx_v_c_buffer, __pyx_v_c_doctype, __pyx_v_c_enc, __pyx_v_element->_c_node, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
   }
   __pyx_L18:;
@@ -142517,6 +151742,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         writer._exc_context._raise_if_stored()
  *     if error_result != xmlerror.XML_ERR_OK:
  */
+  __Pyx_TraceLine(732,0,__PYX_ERR(8, 732, __pyx_L1_error))
   __pyx_t_16 = (((PyObject *)__pyx_v_writer) != Py_None);
   __pyx_t_2 = (__pyx_t_16 != 0);
   if (__pyx_t_2) {
@@ -142528,6 +151754,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *     if error_result != xmlerror.XML_ERR_OK:
  *         _raiseSerialisationError(error_result)
  */
+    __Pyx_TraceLine(733,0,__PYX_ERR(8, 733, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(8, 733, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":732
@@ -142546,6 +151773,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  *         _raiseSerialisationError(error_result)
  * 
  */
+  __Pyx_TraceLine(734,0,__PYX_ERR(8, 734, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
   if (__pyx_t_2) {
 
@@ -142556,6 +151784,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
  * 
  * 
  */
+    __Pyx_TraceLine(735,0,__PYX_ERR(8, 735, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 735, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -142597,6 +151826,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
   __Pyx_XDECREF(__pyx_v_encoding);
   __Pyx_XDECREF(__pyx_v_doctype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -142612,8 +151842,10 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct Lx
 static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffer, const xmlChar *__pyx_v_c_doctype, const char *__pyx_v_c_enc, xmlNode *__pyx_v_c_node, int __pyx_v_c_method, int __pyx_v_write_xml_declaration, int __pyx_v_write_doctype, int __pyx_v_pretty_print, int __pyx_v_with_tail, int __pyx_v_standalone) {
   int __pyx_v_error_result;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  __Pyx_TraceCall("_serialise_node", __pyx_f[8], 738, 1, __PYX_ERR(8, 738, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":742
  *                          bint write_xml_declaration, bint write_doctype, bint pretty_print,
@@ -142622,6 +151854,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *         c_buffer, c_node, c_enc, c_doctype, c_method,
  *         write_xml_declaration, write_doctype, pretty_print, with_tail, standalone)
  */
+  __Pyx_TraceLine(742,1,__PYX_ERR(8, 742, __pyx_L1_error))
   __pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_c_enc, __pyx_v_c_doctype, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);
 
   /* "src/lxml/serializer.pxi":745
@@ -142631,6 +151864,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *     if error_result == xmlerror.XML_ERR_OK:
  *         error_result = tree.xmlOutputBufferClose(c_buffer)
  */
+  __Pyx_TraceLine(745,1,__PYX_ERR(8, 745, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_buffer->error;
   __pyx_v_error_result = __pyx_t_1;
 
@@ -142641,6 +151875,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *         error_result = tree.xmlOutputBufferClose(c_buffer)
  *         if error_result > 0:
  */
+  __Pyx_TraceLine(746,1,__PYX_ERR(8, 746, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_error_result == XML_ERR_OK) != 0);
   if (__pyx_t_2) {
 
@@ -142651,6 +151886,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *         if error_result > 0:
  *             error_result = xmlerror.XML_ERR_OK
  */
+    __Pyx_TraceLine(747,1,__PYX_ERR(8, 747, __pyx_L1_error))
     __pyx_v_error_result = xmlOutputBufferClose(__pyx_v_c_buffer);
 
     /* "src/lxml/serializer.pxi":748
@@ -142660,6 +151896,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *             error_result = xmlerror.XML_ERR_OK
  *     else:
  */
+    __Pyx_TraceLine(748,1,__PYX_ERR(8, 748, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_error_result > 0) != 0);
     if (__pyx_t_2) {
 
@@ -142670,6 +151907,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *     else:
  *         tree.xmlOutputBufferClose(c_buffer)
  */
+      __Pyx_TraceLine(749,1,__PYX_ERR(8, 749, __pyx_L1_error))
       __pyx_v_error_result = XML_ERR_OK;
 
       /* "src/lxml/serializer.pxi":748
@@ -142698,6 +151936,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  *     return error_result
  * 
  */
+  __Pyx_TraceLine(751,1,__PYX_ERR(8, 751, __pyx_L1_error))
   /*else*/ {
     (void)(xmlOutputBufferClose(__pyx_v_c_buffer));
   }
@@ -142710,6 +151949,7 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  * 
  * 
  */
+  __Pyx_TraceLine(752,1,__PYX_ERR(8, 752, __pyx_L1_error))
   __pyx_r = __pyx_v_error_result;
   goto __pyx_L0;
 
@@ -142722,7 +151962,11 @@ static int __pyx_f_4lxml_5etree__serialise_node(xmlOutputBuffer *__pyx_v_c_buffe
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._serialise_node", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
@@ -142740,6 +151984,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
   xmlCharEncodingHandler *__pyx_v_enchandler;
   PyObject *__pyx_v_filename8 = NULL;
   struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -142754,6 +151999,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
   xmlOutputBuffer *__pyx_t_11;
   const char *__pyx_t_12;
   __Pyx_RefNannySetupContext("_create_output_buffer", 0);
+  __Pyx_TraceCall("_create_output_buffer", __pyx_f[8], 755, 0, __PYX_ERR(8, 755, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":760
  *     cdef tree.xmlOutputBuffer* c_buffer
@@ -142762,6 +152008,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *     if enchandler is NULL:
  *         raise LookupError(
  */
+  __Pyx_TraceLine(760,0,__PYX_ERR(8, 760, __pyx_L1_error))
   __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);
 
   /* "src/lxml/serializer.pxi":761
@@ -142771,6 +152018,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         raise LookupError(
  *             f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
  */
+  __Pyx_TraceLine(761,0,__PYX_ERR(8, 761, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_enchandler == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -142781,6 +152029,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *     try:
  *         if _isString(f):
  */
+    __Pyx_TraceLine(763,0,__PYX_ERR(8, 763, __pyx_L1_error))
     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = 0;
@@ -142795,8 +152044,8 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
       __pyx_t_5 = __pyx_t_6;
       __pyx_t_6 = 0;
     } else {
-      __Pyx_INCREF(__pyx_kp_u__16);
-      __pyx_t_5 = __pyx_kp_u__16;
+      __Pyx_INCREF(__pyx_kp_u__23);
+      __pyx_t_5 = __pyx_kp_u__23;
     }
     __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
@@ -142806,10 +152055,10 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
     __Pyx_GIVEREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
     __pyx_t_6 = 0;
-    __Pyx_INCREF(__pyx_kp_u__31);
+    __Pyx_INCREF(__pyx_kp_u__60);
     __pyx_t_3 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__31);
-    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__31);
+    __Pyx_GIVEREF(__pyx_kp_u__60);
+    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__60);
     __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -142821,6 +152070,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
  *     try:
  */
+    __Pyx_TraceLine(762,0,__PYX_ERR(8, 762, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_LookupError, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -142844,6 +152094,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         if _isString(f):
  *             filename8 = _encodeFilename(f)
  */
+  __Pyx_TraceLine(764,0,__PYX_ERR(8, 764, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -142860,6 +152111,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             filename8 = _encodeFilename(f)
  *             c_buffer = tree.xmlOutputBufferCreateFilename(
  */
+      __Pyx_TraceLine(765,0,__PYX_ERR(8, 765, __pyx_L4_error))
       __pyx_t_1 = (_isString(__pyx_v_f) != 0);
       if (__pyx_t_1) {
 
@@ -142870,6 +152122,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             c_buffer = tree.xmlOutputBufferCreateFilename(
  *                 _cstr(filename8), enchandler, c_compression)
  */
+        __Pyx_TraceLine(766,0,__PYX_ERR(8, 766, __pyx_L4_error))
         __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 766, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_2);
         __pyx_v_filename8 = __pyx_t_2;
@@ -142882,6 +152135,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *                 _cstr(filename8), enchandler, c_compression)
  *             if c_buffer is NULL:
  */
+        __Pyx_TraceLine(767,0,__PYX_ERR(8, 767, __pyx_L4_error))
         __pyx_v_c_buffer = xmlOutputBufferCreateFilename(PyBytes_AS_STRING(__pyx_v_filename8), __pyx_v_enchandler, __pyx_v_c_compression);
 
         /* "src/lxml/serializer.pxi":769
@@ -142891,6 +152145,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *                 return python.PyErr_SetFromErrno(IOError) # raises IOError
  *             writer = None
  */
+        __Pyx_TraceLine(769,0,__PYX_ERR(8, 769, __pyx_L4_error))
         __pyx_t_1 = ((__pyx_v_c_buffer == NULL) != 0);
         if (__pyx_t_1) {
 
@@ -142901,6 +152156,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             writer = None
  *         elif hasattr(f, 'write'):
  */
+          __Pyx_TraceLine(770,0,__PYX_ERR(8, 770, __pyx_L4_error))
           __Pyx_XDECREF(((PyObject *)__pyx_r));
           __pyx_t_2 = PyErr_SetFromErrno(__pyx_builtin_IOError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 770, __pyx_L4_error)
           __Pyx_GOTREF(__pyx_t_2);
@@ -142925,6 +152181,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         elif hasattr(f, 'write'):
  *             writer = _FilelikeWriter(f, compression=c_compression, close=close)
  */
+        __Pyx_TraceLine(771,0,__PYX_ERR(8, 771, __pyx_L4_error))
         __Pyx_INCREF(Py_None);
         __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
 
@@ -142945,6 +152202,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             writer = _FilelikeWriter(f, compression=c_compression, close=close)
  *             c_buffer = writer._createOutputBuffer(enchandler)
  */
+      __Pyx_TraceLine(772,0,__PYX_ERR(8, 772, __pyx_L4_error))
       __pyx_t_1 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(8, 772, __pyx_L4_error)
       __pyx_t_10 = (__pyx_t_1 != 0);
       if (likely(__pyx_t_10)) {
@@ -142956,6 +152214,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *             c_buffer = writer._createOutputBuffer(enchandler)
  *         else:
  */
+        __Pyx_TraceLine(773,0,__PYX_ERR(8, 773, __pyx_L4_error))
         __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 773, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_INCREF(__pyx_v_f);
@@ -142985,6 +152244,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         else:
  *             raise TypeError(
  */
+        __Pyx_TraceLine(774,0,__PYX_ERR(8, 774, __pyx_L4_error))
         __pyx_t_11 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, __pyx_v_enchandler); if (unlikely(__pyx_t_11 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(8, 774, __pyx_L4_error)
         __pyx_v_c_buffer = __pyx_t_11;
 
@@ -143005,6 +152265,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *                 f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
  *     except:
  */
+      __Pyx_TraceLine(776,0,__PYX_ERR(8, 776, __pyx_L4_error))
       /*else*/ {
 
         /* "src/lxml/serializer.pxi":777
@@ -143014,6 +152275,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *     except:
  *         tree.xmlCharEncCloseFunc(enchandler)
  */
+        __Pyx_TraceLine(777,0,__PYX_ERR(8, 777, __pyx_L4_error))
         __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 777, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_3 = 0;
@@ -143031,10 +152293,10 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
         __Pyx_GIVEREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __Pyx_INCREF(__pyx_kp_u__31);
+        __Pyx_INCREF(__pyx_kp_u__60);
         __pyx_t_3 += 1;
-        __Pyx_GIVEREF(__pyx_kp_u__31);
-        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__31);
+        __Pyx_GIVEREF(__pyx_kp_u__60);
+        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__60);
         __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 777, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -143046,6 +152308,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *                 f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
  *     except:
  */
+        __Pyx_TraceLine(776,0,__PYX_ERR(8, 776, __pyx_L4_error))
         __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 776, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -143079,6 +152342,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         tree.xmlCharEncCloseFunc(enchandler)
  *         raise
  */
+    __Pyx_TraceLine(778,0,__PYX_ERR(8, 778, __pyx_L6_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._create_output_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_2) < 0) __PYX_ERR(8, 778, __pyx_L6_except_error)
@@ -143093,6 +152357,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *         raise
  *     c_buffer_ret[0] = c_buffer
  */
+      __Pyx_TraceLine(779,0,__PYX_ERR(8, 779, __pyx_L6_except_error))
       (void)(xmlCharEncCloseFunc(__pyx_v_enchandler));
 
       /* "src/lxml/serializer.pxi":780
@@ -143102,6 +152367,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *     c_buffer_ret[0] = c_buffer
  *     return writer
  */
+      __Pyx_TraceLine(780,0,__PYX_ERR(8, 780, __pyx_L6_except_error))
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_6);
       __Pyx_XGIVEREF(__pyx_t_2);
@@ -143139,6 +152405,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  *     return writer
  * 
  */
+  __Pyx_TraceLine(781,0,__PYX_ERR(8, 781, __pyx_L1_error))
   (__pyx_v_c_buffer_ret[0]) = __pyx_v_c_buffer;
 
   /* "src/lxml/serializer.pxi":782
@@ -143148,6 +152415,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
  * 
  * cdef xmlChar **_convert_ns_prefixes(tree.xmlDict* c_dict, ns_prefixes) except NULL:
  */
+  __Pyx_TraceLine(782,0,__PYX_ERR(8, 782, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_writer));
   __pyx_r = __pyx_v_writer;
@@ -143172,6 +152440,7 @@ static struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_f_4lxml_5etree__crea
   __Pyx_XDECREF((PyObject *)__pyx_v_writer);
   __Pyx_XDECREF(__pyx_v_filename8);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -143192,6 +152461,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
   PyObject *__pyx_v_prefix_utf = NULL;
   const xmlChar *__pyx_v_c_prefix;
   xmlChar **__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   int __pyx_t_2;
@@ -143204,6 +152474,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
   Py_ssize_t __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
   __Pyx_RefNannySetupContext("_convert_ns_prefixes", 0);
+  __Pyx_TraceCall("_convert_ns_prefixes", __pyx_f[8], 784, 0, __PYX_ERR(8, 784, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":785
  * 
@@ -143212,6 +152483,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     # Need to allocate one extra memory block to handle last NULL entry
  *     c_ns_prefixes = <xmlChar **>python.lxml_malloc(num_ns_prefixes + 1, sizeof(xmlChar*))
  */
+  __Pyx_TraceLine(785,0,__PYX_ERR(8, 785, __pyx_L1_error))
   __pyx_t_1 = PyObject_Length(__pyx_v_ns_prefixes); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(8, 785, __pyx_L1_error)
   __pyx_v_num_ns_prefixes = __pyx_t_1;
 
@@ -143222,6 +152494,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     if not c_ns_prefixes:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(787,0,__PYX_ERR(8, 787, __pyx_L1_error))
   __pyx_v_c_ns_prefixes = ((xmlChar **)lxml_malloc((__pyx_v_num_ns_prefixes + 1), (sizeof(xmlChar *))));
 
   /* "src/lxml/serializer.pxi":788
@@ -143231,6 +152504,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *         raise MemoryError()
  *     i = 0
  */
+  __Pyx_TraceLine(788,0,__PYX_ERR(8, 788, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_c_ns_prefixes != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -143241,6 +152515,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     i = 0
  *     try:
  */
+    __Pyx_TraceLine(789,0,__PYX_ERR(8, 789, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(8, 789, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":788
@@ -143259,6 +152534,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     try:
  *         for prefix in ns_prefixes:
  */
+  __Pyx_TraceLine(790,0,__PYX_ERR(8, 790, __pyx_L1_error))
   __pyx_v_i = 0;
 
   /* "src/lxml/serializer.pxi":791
@@ -143268,6 +152544,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *         for prefix in ns_prefixes:
  *              prefix_utf = _utf8(prefix)
  */
+  __Pyx_TraceLine(791,0,__PYX_ERR(8, 791, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -143284,6 +152561,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *              prefix_utf = _utf8(prefix)
  *              c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
  */
+      __Pyx_TraceLine(792,0,__PYX_ERR(8, 792, __pyx_L4_error))
       if (likely(PyList_CheckExact(__pyx_v_ns_prefixes)) || PyTuple_CheckExact(__pyx_v_ns_prefixes)) {
         __pyx_t_6 = __pyx_v_ns_prefixes; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
         __pyx_t_7 = NULL;
@@ -143333,6 +152611,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *              c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
  *              if c_prefix:
  */
+        __Pyx_TraceLine(793,0,__PYX_ERR(8, 793, __pyx_L4_error))
         __pyx_t_8 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 793, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_XDECREF_SET(__pyx_v_prefix_utf, ((PyObject*)__pyx_t_8));
@@ -143345,6 +152624,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *              if c_prefix:
  *                  # unknown prefixes do not need to get serialised
  */
+        __Pyx_TraceLine(794,0,__PYX_ERR(8, 794, __pyx_L4_error))
         if (unlikely(__pyx_v_prefix_utf == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
           __PYX_ERR(8, 794, __pyx_L4_error)
@@ -143359,6 +152639,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *                  # unknown prefixes do not need to get serialised
  *                  c_ns_prefixes[i] = <xmlChar*>c_prefix
  */
+        __Pyx_TraceLine(795,0,__PYX_ERR(8, 795, __pyx_L4_error))
         __pyx_t_2 = (__pyx_v_c_prefix != 0);
         if (__pyx_t_2) {
 
@@ -143369,6 +152650,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *                  i += 1
  *     except:
  */
+          __Pyx_TraceLine(797,0,__PYX_ERR(8, 797, __pyx_L4_error))
           (__pyx_v_c_ns_prefixes[__pyx_v_i]) = ((xmlChar *)__pyx_v_c_prefix);
 
           /* "src/lxml/serializer.pxi":798
@@ -143378,6 +152660,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     except:
  *         python.lxml_free(c_ns_prefixes)
  */
+          __Pyx_TraceLine(798,0,__PYX_ERR(8, 798, __pyx_L4_error))
           __pyx_v_i = (__pyx_v_i + 1);
 
           /* "src/lxml/serializer.pxi":795
@@ -143396,6 +152679,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *              prefix_utf = _utf8(prefix)
  *              c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
  */
+        __Pyx_TraceLine(792,0,__PYX_ERR(8, 792, __pyx_L4_error))
       }
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -143422,6 +152706,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *         python.lxml_free(c_ns_prefixes)
  *         raise
  */
+    __Pyx_TraceLine(799,0,__PYX_ERR(8, 799, __pyx_L6_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._convert_ns_prefixes", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(8, 799, __pyx_L6_except_error)
@@ -143436,6 +152721,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *         raise
  * 
  */
+      __Pyx_TraceLine(800,0,__PYX_ERR(8, 800, __pyx_L6_except_error))
       lxml_free(__pyx_v_c_ns_prefixes);
 
       /* "src/lxml/serializer.pxi":801
@@ -143445,6 +152731,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  * 
  *     c_ns_prefixes[i] = NULL  # append end marker
  */
+      __Pyx_TraceLine(801,0,__PYX_ERR(8, 801, __pyx_L6_except_error))
       __Pyx_GIVEREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_8);
       __Pyx_XGIVEREF(__pyx_t_10);
@@ -143476,6 +152763,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  *     return c_ns_prefixes
  * 
  */
+  __Pyx_TraceLine(803,0,__PYX_ERR(8, 803, __pyx_L1_error))
   (__pyx_v_c_ns_prefixes[__pyx_v_i]) = NULL;
 
   /* "src/lxml/serializer.pxi":804
@@ -143485,6 +152773,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
  * 
  * cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
  */
+  __Pyx_TraceLine(804,0,__PYX_ERR(8, 804, __pyx_L1_error))
   __pyx_r = __pyx_v_c_ns_prefixes;
   goto __pyx_L0;
 
@@ -143506,6 +152795,7 @@ static xmlChar **__pyx_f_4lxml_5etree__convert_ns_prefixes(xmlDict *__pyx_v_c_di
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XDECREF(__pyx_v_prefix_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -143531,6 +152821,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
   PyObject *__pyx_v_message = NULL;
   struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_errors = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDoc *__pyx_t_1;
   xmlChar **__pyx_t_2;
@@ -143546,14 +152837,16 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
-  Py_ssize_t __pyx_t_15;
-  Py_UCS4 __pyx_t_16;
-  const char *__pyx_t_17;
-  int __pyx_t_18;
-  char const *__pyx_t_19;
-  PyObject *__pyx_t_20 = NULL;
-  PyObject *__pyx_t_21 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  Py_ssize_t __pyx_t_17;
+  Py_UCS4 __pyx_t_18;
+  const char *__pyx_t_19;
+  int __pyx_t_20;
+  char const *__pyx_t_21;
+  PyObject *__pyx_t_22 = NULL;
   __Pyx_RefNannySetupContext("_tofilelikeC14N", 0);
+  __Pyx_TraceCall("_tofilelikeC14N", __pyx_f[8], 806, 0, __PYX_ERR(8, 806, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":808
  * cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
@@ -143562,6 +152855,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *     cdef tree.xmlOutputBuffer* c_buffer
  *     cdef xmlChar **c_inclusive_ns_prefixes = NULL
  */
+  __Pyx_TraceLine(808,0,__PYX_ERR(8, 808, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
 
@@ -143572,6 +152866,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *     cdef char* c_filename
  *     cdef xmlDoc* c_base_doc
  */
+  __Pyx_TraceLine(810,0,__PYX_ERR(8, 810, __pyx_L1_error))
   __pyx_v_c_inclusive_ns_prefixes = NULL;
 
   /* "src/lxml/serializer.pxi":814
@@ -143581,6 +152876,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *     c_base_doc = element._c_node.doc
  */
+  __Pyx_TraceLine(814,0,__PYX_ERR(8, 814, __pyx_L1_error))
   __pyx_v_error = 0;
 
   /* "src/lxml/serializer.pxi":816
@@ -143590,6 +152886,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *     c_doc = _fakeRootDoc(c_base_doc, element._c_node)
  *     try:
  */
+  __Pyx_TraceLine(816,0,__PYX_ERR(8, 816, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_element->_c_node->doc;
   __pyx_v_c_base_doc = __pyx_t_1;
 
@@ -143600,6 +152897,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *     try:
  *         c_inclusive_ns_prefixes = (
  */
+  __Pyx_TraceLine(817,0,__PYX_ERR(8, 817, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_c_base_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == ((xmlDoc *)NULL))) __PYX_ERR(8, 817, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_1;
 
@@ -143610,6 +152908,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         c_inclusive_ns_prefixes = (
  *             _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
  */
+  __Pyx_TraceLine(818,0,__PYX_ERR(8, 818, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/serializer.pxi":821
@@ -143619,6 +152918,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *         if _isString(f):
  */
+    __Pyx_TraceLine(821,0,__PYX_ERR(8, 821, __pyx_L4_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(8, 821, __pyx_L4_error)
     if (__pyx_t_3) {
 
@@ -143629,6 +152929,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             if inclusive_ns_prefixes else NULL)
  * 
  */
+      __Pyx_TraceLine(820,0,__PYX_ERR(8, 820, __pyx_L4_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_4 == ((xmlChar **)NULL))) __PYX_ERR(8, 820, __pyx_L4_error)
       __pyx_t_2 = __pyx_t_4;
     } else {
@@ -143640,6 +152941,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *         if _isString(f):
  */
+      __Pyx_TraceLine(821,0,__PYX_ERR(8, 821, __pyx_L4_error))
       __pyx_t_2 = NULL;
     }
     __pyx_v_c_inclusive_ns_prefixes = __pyx_t_2;
@@ -143651,6 +152953,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             filename8 = _encodeFilename(f)
  *             c_filename = _cstr(filename8)
  */
+    __Pyx_TraceLine(823,0,__PYX_ERR(8, 823, __pyx_L4_error))
     __pyx_t_3 = (_isString(__pyx_v_f) != 0);
     if (__pyx_t_3) {
 
@@ -143661,6 +152964,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             c_filename = _cstr(filename8)
  *             with nogil:
  */
+      __Pyx_TraceLine(824,0,__PYX_ERR(8, 824, __pyx_L4_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 824, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_v_filename8 = __pyx_t_5;
@@ -143673,6 +152977,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             with nogil:
  *                 error = c14n.xmlC14NDocSave(
  */
+      __Pyx_TraceLine(825,0,__PYX_ERR(8, 825, __pyx_L4_error))
       __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename8);
 
       /* "src/lxml/serializer.pxi":826
@@ -143682,6 +152987,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                 error = c14n.xmlC14NDocSave(
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
+      __Pyx_TraceLine(826,0,__PYX_ERR(8, 826, __pyx_L4_error))
       {
           #ifdef WITH_THREAD
           PyThreadState *_save;
@@ -143697,6 +153003,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  *                     with_comments, c_filename, compression)
  */
+            __Pyx_TraceLine(827,1,__PYX_ERR(8, 827, __pyx_L8_error))
             __pyx_v_error = xmlC14NDocSave(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_filename, __pyx_v_compression);
           }
 
@@ -143707,6 +153014,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                 error = c14n.xmlC14NDocSave(
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
+          __Pyx_TraceLine(826,1,__PYX_ERR(8, 826, __pyx_L4_error))
           /*finally:*/ {
             /*normal exit:*/{
               #ifdef WITH_THREAD
@@ -143715,6 +153023,13 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
               #endif
               goto __pyx_L9;
             }
+            __pyx_L8_error: {
+              #ifdef WITH_THREAD
+              __Pyx_FastGIL_Forget();
+              Py_BLOCK_THREADS
+              #endif
+              goto __pyx_L4_error;
+            }
             __pyx_L9:;
           }
       }
@@ -143736,6 +153051,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             writer   = _FilelikeWriter(f, compression=compression)
  *             c_buffer = writer._createOutputBuffer(NULL)
  */
+    __Pyx_TraceLine(830,0,__PYX_ERR(8, 830, __pyx_L4_error))
     __pyx_t_3 = __Pyx_HasAttr(__pyx_v_f, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 830, __pyx_L4_error)
     __pyx_t_6 = (__pyx_t_3 != 0);
     if (likely(__pyx_t_6)) {
@@ -143747,6 +153063,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             c_buffer = writer._createOutputBuffer(NULL)
  *             with writer.error_log:
  */
+      __Pyx_TraceLine(831,0,__PYX_ERR(8, 831, __pyx_L4_error))
       __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 831, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_v_f);
@@ -143772,6 +153089,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             with writer.error_log:
  *                 bytes_count = c14n.xmlC14NDocSaveTo(
  */
+      __Pyx_TraceLine(832,0,__PYX_ERR(8, 832, __pyx_L4_error))
       __pyx_t_9 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_9 == ((xmlOutputBuffer *)NULL))) __PYX_ERR(8, 832, __pyx_L4_error)
       __pyx_v_c_buffer = __pyx_t_9;
 
@@ -143782,13 +153100,19 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                 bytes_count = c14n.xmlC14NDocSaveTo(
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
+      __Pyx_TraceLine(833,0,__PYX_ERR(8, 833, __pyx_L4_error))
       /*with:*/ {
         __pyx_t_10 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_writer->error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(8, 833, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_10);
         __pyx_t_11 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_writer->error_log); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(8, 833, __pyx_L10_error)
         /*try:*/ {
           {
-            (void)__pyx_t_12; (void)__pyx_t_13; (void)__pyx_t_14; /* mark used */
+            __Pyx_PyThreadState_declare
+            __Pyx_PyThreadState_assign
+            __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
+            __Pyx_XGOTREF(__pyx_t_12);
+            __Pyx_XGOTREF(__pyx_t_13);
+            __Pyx_XGOTREF(__pyx_t_14);
             /*try:*/ {
 
               /* "src/lxml/serializer.pxi":834
@@ -143798,6 +153122,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  *                     with_comments, c_buffer)
  */
+              __Pyx_TraceLine(834,0,__PYX_ERR(8, 834, __pyx_L14_error))
               __pyx_v_bytes_count = xmlC14NDocSaveTo(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_buffer);
 
               /* "src/lxml/serializer.pxi":837
@@ -143807,6 +153132,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                 if bytes_count < 0:
  *                     error = bytes_count
  */
+              __Pyx_TraceLine(837,0,__PYX_ERR(8, 837, __pyx_L14_error))
               __pyx_v_error = xmlOutputBufferClose(__pyx_v_c_buffer);
 
               /* "src/lxml/serializer.pxi":838
@@ -143816,6 +153142,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                     error = bytes_count
  *         else:
  */
+              __Pyx_TraceLine(838,0,__PYX_ERR(8, 838, __pyx_L14_error))
               __pyx_t_6 = ((__pyx_v_bytes_count < 0) != 0);
               if (__pyx_t_6) {
 
@@ -143826,6 +153153,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         else:
  *             raise TypeError(f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'")
  */
+                __Pyx_TraceLine(839,0,__PYX_ERR(8, 839, __pyx_L14_error))
                 __pyx_v_error = __pyx_v_bytes_count;
 
                 /* "src/lxml/serializer.pxi":838
@@ -143845,12 +153173,62 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
             }
+            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+            goto __pyx_L19_try_end;
+            __pyx_L14_error:;
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+            /*except:*/ {
+              __Pyx_AddTraceback("lxml.etree._tofilelikeC14N", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(8, 833, __pyx_L16_except_error)
+              __Pyx_GOTREF(__pyx_t_8);
+              __Pyx_GOTREF(__pyx_t_7);
+              __Pyx_GOTREF(__pyx_t_5);
+              __pyx_t_15 = PyTuple_Pack(3, __pyx_t_8, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_15)) __PYX_ERR(8, 833, __pyx_L16_except_error)
+              __Pyx_GOTREF(__pyx_t_15);
+              __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_15, NULL);
+              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+              if (unlikely(!__pyx_t_16)) __PYX_ERR(8, 833, __pyx_L16_except_error)
+              __Pyx_GOTREF(__pyx_t_16);
+              __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_16);
+              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+              if (__pyx_t_6 < 0) __PYX_ERR(8, 833, __pyx_L16_except_error)
+              __pyx_t_3 = ((!(__pyx_t_6 != 0)) != 0);
+              if (__pyx_t_3) {
+                __Pyx_GIVEREF(__pyx_t_8);
+                __Pyx_GIVEREF(__pyx_t_7);
+                __Pyx_XGIVEREF(__pyx_t_5);
+                __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_7, __pyx_t_5);
+                __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; 
+                __PYX_ERR(8, 833, __pyx_L16_except_error)
+              }
+              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+              goto __pyx_L15_exception_handled;
+            }
+            __pyx_L16_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_12);
+            __Pyx_XGIVEREF(__pyx_t_13);
+            __Pyx_XGIVEREF(__pyx_t_14);
+            __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+            goto __pyx_L4_error;
+            __pyx_L15_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_12);
+            __Pyx_XGIVEREF(__pyx_t_13);
+            __Pyx_XGIVEREF(__pyx_t_14);
+            __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+            __pyx_L19_try_end:;
           }
         }
         /*finally:*/ {
           /*normal exit:*/{
             if (__pyx_t_10) {
-              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__78, NULL);
+              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__257, NULL);
               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
               if (unlikely(!__pyx_t_14)) __PYX_ERR(8, 833, __pyx_L4_error)
               __Pyx_GOTREF(__pyx_t_14);
@@ -143860,11 +153238,11 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
           }
           __pyx_L13:;
         }
-        goto __pyx_L21;
+        goto __pyx_L24;
         __pyx_L10_error:;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         goto __pyx_L4_error;
-        __pyx_L21:;
+        __pyx_L24:;
       }
 
       /* "src/lxml/serializer.pxi":830
@@ -143884,36 +153262,37 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *     finally:
  *         _destroyFakeDoc(c_base_doc, c_doc)
  */
+    __Pyx_TraceLine(841,0,__PYX_ERR(8, 841, __pyx_L4_error))
     /*else*/ {
-      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 841, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_15 = 0;
-      __pyx_t_16 = 127;
+      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 841, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_17 = 0;
+      __pyx_t_18 = 127;
       __Pyx_INCREF(__pyx_kp_u_File_or_filename_expected_got);
-      __pyx_t_15 += 32;
+      __pyx_t_17 += 32;
       __Pyx_GIVEREF(__pyx_kp_u_File_or_filename_expected_got);
-      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_File_or_filename_expected_got);
-      __pyx_t_17 = _fqtypename(__pyx_v_f);
-      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_17, 0, strlen(__pyx_t_17), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 841, __pyx_L4_error)
+      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_File_or_filename_expected_got);
+      __pyx_t_19 = _fqtypename(__pyx_v_f);
+      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_19, 0, strlen(__pyx_t_19), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 841, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_t_7);
-      __pyx_t_16 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_16) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_16;
-      __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
+      __pyx_t_18 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_18) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_18;
+      __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_INCREF(__pyx_kp_u__31);
-      __pyx_t_15 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__31);
-      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__31);
-      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 841, __pyx_L4_error)
+      __Pyx_INCREF(__pyx_kp_u__60);
+      __pyx_t_17 += 1;
+      __Pyx_GIVEREF(__pyx_kp_u__60);
+      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__60);
+      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_17, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 841, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 841, __pyx_L4_error)
-      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 841, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __PYX_ERR(8, 841, __pyx_L4_error)
     }
     __pyx_L6:;
@@ -143926,6 +153305,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         if c_inclusive_ns_prefixes is not NULL:
  *             python.lxml_free(c_inclusive_ns_prefixes)
  */
+  __Pyx_TraceLine(843,0,__PYX_ERR(8, 843, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
@@ -143937,8 +153317,9 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             python.lxml_free(c_inclusive_ns_prefixes)
  * 
  */
-      __pyx_t_6 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
-      if (__pyx_t_6) {
+      __Pyx_TraceLine(844,0,__PYX_ERR(8, 844, __pyx_L1_error))
+      __pyx_t_3 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
+      if (__pyx_t_3) {
 
         /* "src/lxml/serializer.pxi":845
  *         _destroyFakeDoc(c_base_doc, c_doc)
@@ -143947,6 +153328,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *     if writer is not None:
  */
+        __Pyx_TraceLine(845,0,__PYX_ERR(8, 845, __pyx_L1_error))
         lxml_free(__pyx_v_c_inclusive_ns_prefixes);
 
         /* "src/lxml/serializer.pxi":844
@@ -143963,19 +153345,20 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
     /*exception exit:*/{
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
-      __pyx_t_10 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
-      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_t_10 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_16 = 0; __pyx_t_22 = 0;
+      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_20, &__pyx_t_21);
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_16, &__pyx_t_22);
       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_14, &__pyx_t_13);
       __Pyx_XGOTREF(__pyx_t_10);
       __Pyx_XGOTREF(__pyx_t_14);
       __Pyx_XGOTREF(__pyx_t_13);
       __Pyx_XGOTREF(__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_20);
-      __Pyx_XGOTREF(__pyx_t_21);
-      __pyx_t_11 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
+      __Pyx_XGOTREF(__pyx_t_16);
+      __Pyx_XGOTREF(__pyx_t_22);
+      __pyx_t_11 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
       {
 
         /* "src/lxml/serializer.pxi":843
@@ -143985,6 +153368,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         if c_inclusive_ns_prefixes is not NULL:
  *             python.lxml_free(c_inclusive_ns_prefixes)
  */
+        __Pyx_TraceLine(843,0,__PYX_ERR(8, 843, __pyx_L27_error))
         __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
 
         /* "src/lxml/serializer.pxi":844
@@ -143994,8 +153378,9 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             python.lxml_free(c_inclusive_ns_prefixes)
  * 
  */
-        __pyx_t_6 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
-        if (__pyx_t_6) {
+        __Pyx_TraceLine(844,0,__PYX_ERR(8, 844, __pyx_L27_error))
+        __pyx_t_3 = ((__pyx_v_c_inclusive_ns_prefixes != NULL) != 0);
+        if (__pyx_t_3) {
 
           /* "src/lxml/serializer.pxi":845
  *         _destroyFakeDoc(c_base_doc, c_doc)
@@ -144004,6 +153389,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *     if writer is not None:
  */
+          __Pyx_TraceLine(845,0,__PYX_ERR(8, 845, __pyx_L27_error))
           lxml_free(__pyx_v_c_inclusive_ns_prefixes);
 
           /* "src/lxml/serializer.pxi":844
@@ -144017,16 +153403,28 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_20);
-        __Pyx_XGIVEREF(__pyx_t_21);
-        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_20, __pyx_t_21);
+        __Pyx_XGIVEREF(__pyx_t_16);
+        __Pyx_XGIVEREF(__pyx_t_22);
+        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_16, __pyx_t_22);
       }
       __Pyx_XGIVEREF(__pyx_t_10);
       __Pyx_XGIVEREF(__pyx_t_14);
       __Pyx_XGIVEREF(__pyx_t_13);
       __Pyx_ErrRestore(__pyx_t_10, __pyx_t_14, __pyx_t_13);
-      __pyx_t_10 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
-      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
+      __pyx_t_10 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_16 = 0; __pyx_t_22 = 0;
+      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
+      goto __pyx_L1_error;
+      __pyx_L27_error:;
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_XGIVEREF(__pyx_t_16);
+        __Pyx_XGIVEREF(__pyx_t_22);
+        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_16, __pyx_t_22);
+      }
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __pyx_t_12 = 0; __pyx_t_16 = 0; __pyx_t_22 = 0;
       goto __pyx_L1_error;
     }
     __pyx_L5:;
@@ -144039,9 +153437,10 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         writer._exc_context._raise_if_stored()
  * 
  */
-  __pyx_t_6 = (((PyObject *)__pyx_v_writer) != Py_None);
-  __pyx_t_3 = (__pyx_t_6 != 0);
-  if (__pyx_t_3) {
+  __Pyx_TraceLine(847,0,__PYX_ERR(8, 847, __pyx_L1_error))
+  __pyx_t_3 = (((PyObject *)__pyx_v_writer) != Py_None);
+  __pyx_t_6 = (__pyx_t_3 != 0);
+  if (__pyx_t_6) {
 
     /* "src/lxml/serializer.pxi":848
  * 
@@ -144050,7 +153449,8 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  *     if error < 0:
  */
-    __pyx_t_18 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(8, 848, __pyx_L1_error)
+    __Pyx_TraceLine(848,0,__PYX_ERR(8, 848, __pyx_L1_error))
+    __pyx_t_20 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(8, 848, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":847
  *             python.lxml_free(c_inclusive_ns_prefixes)
@@ -144068,8 +153468,9 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         message = u"C14N failed"
  *         if writer is not None:
  */
-  __pyx_t_3 = ((__pyx_v_error < 0) != 0);
-  if (__pyx_t_3) {
+  __Pyx_TraceLine(850,0,__PYX_ERR(8, 850, __pyx_L1_error))
+  __pyx_t_6 = ((__pyx_v_error < 0) != 0);
+  if (__pyx_t_6) {
 
     /* "src/lxml/serializer.pxi":851
  * 
@@ -144078,6 +153479,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         if writer is not None:
  *             errors = writer.error_log
  */
+    __Pyx_TraceLine(851,0,__PYX_ERR(8, 851, __pyx_L1_error))
     __Pyx_INCREF(__pyx_kp_u_C14N_failed);
     __pyx_v_message = __pyx_kp_u_C14N_failed;
 
@@ -144088,9 +153490,10 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             errors = writer.error_log
  *             if len(errors):
  */
-    __pyx_t_3 = (((PyObject *)__pyx_v_writer) != Py_None);
-    __pyx_t_6 = (__pyx_t_3 != 0);
-    if (__pyx_t_6) {
+    __Pyx_TraceLine(852,0,__PYX_ERR(8, 852, __pyx_L1_error))
+    __pyx_t_6 = (((PyObject *)__pyx_v_writer) != Py_None);
+    __pyx_t_3 = (__pyx_t_6 != 0);
+    if (__pyx_t_3) {
 
       /* "src/lxml/serializer.pxi":853
  *         message = u"C14N failed"
@@ -144099,10 +153502,11 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *             if len(errors):
  *                 message = errors[0].message
  */
-      __pyx_t_8 = ((PyObject *)__pyx_v_writer->error_log);
-      __Pyx_INCREF(__pyx_t_8);
-      __pyx_v_errors = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_8);
-      __pyx_t_8 = 0;
+      __Pyx_TraceLine(853,0,__PYX_ERR(8, 853, __pyx_L1_error))
+      __pyx_t_5 = ((PyObject *)__pyx_v_writer->error_log);
+      __Pyx_INCREF(__pyx_t_5);
+      __pyx_v_errors = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_5);
+      __pyx_t_5 = 0;
 
       /* "src/lxml/serializer.pxi":854
  *         if writer is not None:
@@ -144111,9 +153515,10 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *                 message = errors[0].message
  *         raise C14NError(message)
  */
-      __pyx_t_15 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(8, 854, __pyx_L1_error)
-      __pyx_t_6 = (__pyx_t_15 != 0);
-      if (__pyx_t_6) {
+      __Pyx_TraceLine(854,0,__PYX_ERR(8, 854, __pyx_L1_error))
+      __pyx_t_17 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(8, 854, __pyx_L1_error)
+      __pyx_t_3 = (__pyx_t_17 != 0);
+      if (__pyx_t_3) {
 
         /* "src/lxml/serializer.pxi":855
  *             errors = writer.error_log
@@ -144122,11 +153527,12 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  *         raise C14NError(message)
  * 
  */
-        __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 855, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 855, __pyx_L1_error)
+        __Pyx_TraceLine(855,0,__PYX_ERR(8, 855, __pyx_L1_error))
+        __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 855, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 855, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_7);
         __pyx_t_7 = 0;
 
@@ -144155,6 +153561,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
  * 
  * # incremental serialisation
  */
+    __Pyx_TraceLine(856,0,__PYX_ERR(8, 856, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_C14NError), __pyx_v_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 856, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
@@ -144185,6 +153592,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
   __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_15);
   __Pyx_AddTraceback("lxml.etree._tofilelikeC14N", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
@@ -144193,6 +153601,7 @@ static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struc
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XDECREF((PyObject *)__pyx_v_errors);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -144334,12 +153743,14 @@ static int __pyx_pw_4lxml_5etree_7xmlfile_1__init__(PyObject *__pyx_v_self, PyOb
 
 static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree_xmlfile *__pyx_v_self, PyObject *__pyx_v_output_file, PyObject *__pyx_v_encoding, PyObject *__pyx_v_compression, PyObject *__pyx_v_close, PyObject *__pyx_v_buffered) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[8], 905, 0, __PYX_ERR(8, 905, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":907
  *     def __init__(self, output_file not None, encoding=None, compression=None,
@@ -144348,6 +153759,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  *         self.encoding = _utf8orNone(encoding)
  *         self.compresslevel = compression or 0
  */
+  __Pyx_TraceLine(907,0,__PYX_ERR(8, 907, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_output_file);
   __Pyx_GIVEREF(__pyx_v_output_file);
   __Pyx_GOTREF(__pyx_v_self->output_file);
@@ -144361,6 +153773,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  *         self.compresslevel = compression or 0
  *         self.close = close
  */
+  __Pyx_TraceLine(908,0,__PYX_ERR(8, 908, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_encoding); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 908, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -144376,6 +153789,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  *         self.close = close
  *         self.buffered = buffered
  */
+  __Pyx_TraceLine(909,0,__PYX_ERR(8, 909, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(8, 909, __pyx_L1_error)
   if (!__pyx_t_3) {
   } else {
@@ -144394,6 +153808,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  *         self.buffered = buffered
  *         self.method = OUTPUT_METHOD_XML
  */
+  __Pyx_TraceLine(910,0,__PYX_ERR(8, 910, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 910, __pyx_L1_error)
   __pyx_v_self->close = __pyx_t_3;
 
@@ -144404,6 +153819,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  *         self.method = OUTPUT_METHOD_XML
  * 
  */
+  __Pyx_TraceLine(911,0,__PYX_ERR(8, 911, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_buffered); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 911, __pyx_L1_error)
   __pyx_v_self->buffered = __pyx_t_3;
 
@@ -144414,6 +153830,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
  * 
  *     def __enter__(self):
  */
+  __Pyx_TraceLine(912,0,__PYX_ERR(8, 912, __pyx_L1_error))
   __pyx_v_self->method = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
 
   /* "src/lxml/serializer.pxi":905
@@ -144432,6 +153849,7 @@ static int __pyx_pf_4lxml_5etree_7xmlfile___init__(struct __pyx_obj_4lxml_5etree
   __Pyx_AddTraceback("lxml.etree.xmlfile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -144460,6 +153878,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7xmlfile_3__enter__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxml_5etree_xmlfile *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -144467,7 +153886,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__258)
   __Pyx_RefNannySetupContext("__enter__", 0);
+  __Pyx_TraceCall("__enter__", __pyx_f[8], 914, 0, __PYX_ERR(8, 914, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":915
  * 
@@ -144476,6 +153897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
  *         self.writer = _IncrementalFileWriter(
  *             self.output_file, self.encoding, self.compresslevel,
  */
+  __Pyx_TraceLine(915,0,__PYX_ERR(8, 915, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (__pyx_v_self->output_file != Py_None);
@@ -144493,6 +153915,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
  *             self.close, self.buffered, self.method)
  *         return self.writer
  */
+  __Pyx_TraceLine(917,0,__PYX_ERR(8, 917, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 917, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -144503,6 +153926,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
  *         return self.writer
  * 
  */
+  __Pyx_TraceLine(918,0,__PYX_ERR(8, 918, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->close); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 918, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->buffered); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 918, __pyx_L1_error)
@@ -144517,6 +153941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
  *             self.output_file, self.encoding, self.compresslevel,
  *             self.close, self.buffered, self.method)
  */
+  __Pyx_TraceLine(916,0,__PYX_ERR(8, 916, __pyx_L1_error))
   __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 916, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_v_self->output_file);
@@ -144553,6 +153978,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
  * 
  *     def __exit__(self, exc_type, exc_val, exc_tb):
  */
+  __Pyx_TraceLine(919,0,__PYX_ERR(8, 919, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->writer));
   __pyx_r = ((PyObject *)__pyx_v_self->writer);
@@ -144577,6 +154003,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_2__enter__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -144666,12 +154093,15 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
   struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_old_writer = NULL;
   PyObject *__pyx_v_raise_on_error = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__259)
   __Pyx_RefNannySetupContext("__exit__", 0);
+  __Pyx_TraceCall("__exit__", __pyx_f[8], 921, 0, __PYX_ERR(8, 921, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":922
  * 
@@ -144680,6 +154110,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  *             old_writer, self.writer = self.writer, None
  *             raise_on_error = exc_type is None
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(8, 922, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->writer) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -144691,6 +154122,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  *             raise_on_error = exc_type is None
  *             old_writer._close(raise_on_error)
  */
+    __Pyx_TraceLine(923,0,__PYX_ERR(8, 923, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->writer);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = Py_None;
@@ -144710,6 +154142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  *             old_writer._close(raise_on_error)
  *             if self.close:
  */
+    __Pyx_TraceLine(924,0,__PYX_ERR(8, 924, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_exc_type == Py_None);
     __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 924, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -144723,6 +154156,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  *             if self.close:
  *                 self.output_file = None
  */
+    __Pyx_TraceLine(925,0,__PYX_ERR(8, 925, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_raise_on_error); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 925, __pyx_L1_error)
     __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_v_old_writer, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 925, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -144735,6 +154169,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  *                 self.output_file = None
  * 
  */
+    __Pyx_TraceLine(926,0,__PYX_ERR(8, 926, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_self->close != 0);
     if (__pyx_t_2) {
 
@@ -144745,6 +154180,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
  * 
  *     async def __aenter__(self):
  */
+      __Pyx_TraceLine(927,0,__PYX_ERR(8, 927, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __Pyx_GIVEREF(Py_None);
       __Pyx_GOTREF(__pyx_v_self->output_file);
@@ -144789,6 +154225,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_4__exit__(struct __pyx_obj_4lxml
   __Pyx_XDECREF((PyObject *)__pyx_v_old_writer);
   __Pyx_XDECREF(__pyx_v_raise_on_error);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -144833,7 +154270,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_6__aenter__(struct __pyx_obj_4lx
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_8generator, __pyx_codeobj__79, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_xmlfile___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 929, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_8generator, __pyx_codeobj__260, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_xmlfile___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 929, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -144853,6 +154290,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct____aenter__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct____aenter__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
@@ -144862,9 +154300,12 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aenter__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__260)
+  __Pyx_TraceCall("__aenter__", __pyx_f[8], 929, 0, __PYX_ERR(8, 929, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -144878,6 +154319,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *         if isinstance(self.output_file, basestring):
  *             raise TypeError("Cannot asynchronously write to a plain file")
  */
+  __Pyx_TraceLine(930,0,__PYX_ERR(8, 930, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->output_file != Py_None);
@@ -144895,6 +154337,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *             raise TypeError("Cannot asynchronously write to a plain file")
  *         if not hasattr(self.output_file, 'write'):
  */
+  __Pyx_TraceLine(931,0,__PYX_ERR(8, 931, __pyx_L1_error))
   __pyx_t_2 = __pyx_cur_scope->__pyx_v_self->output_file;
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_t_2); 
@@ -144909,7 +154352,8 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *         if not hasattr(self.output_file, 'write'):
  *             raise TypeError("Output file needs an async .write() method")
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 932, __pyx_L1_error)
+    __Pyx_TraceLine(932,0,__PYX_ERR(8, 932, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__261, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 932, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -144931,6 +154375,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *             raise TypeError("Output file needs an async .write() method")
  *         self.async_writer = _AsyncIncrementalFileWriter(
  */
+  __Pyx_TraceLine(933,0,__PYX_ERR(8, 933, __pyx_L1_error))
   __pyx_t_2 = __pyx_cur_scope->__pyx_v_self->output_file;
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_HasAttr(__pyx_t_2, __pyx_n_s_write); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 933, __pyx_L1_error)
@@ -144945,7 +154390,8 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *         self.async_writer = _AsyncIncrementalFileWriter(
  *             self.output_file, self.encoding, self.compresslevel,
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 934, __pyx_L1_error)
+    __Pyx_TraceLine(934,0,__PYX_ERR(8, 934, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__262, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 934, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -144967,6 +154413,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *             self.close, self.buffered, self.method)
  *         return self.async_writer
  */
+  __Pyx_TraceLine(936,0,__PYX_ERR(8, 936, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 936, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -144977,6 +154424,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *         return self.async_writer
  * 
  */
+  __Pyx_TraceLine(937,0,__PYX_ERR(8, 937, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->close); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 937, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_self->buffered); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 937, __pyx_L1_error)
@@ -144991,6 +154439,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  *             self.output_file, self.encoding, self.compresslevel,
  *             self.close, self.buffered, self.method)
  */
+  __Pyx_TraceLine(935,0,__PYX_ERR(8, 935, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 935, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->output_file);
@@ -145027,6 +154476,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
  * 
  *     async def __aexit__(self, exc_type, exc_val, exc_tb):
  */
+  __Pyx_TraceLine(938,0,__PYX_ERR(8, 938, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_self->async_writer));
   goto __pyx_L0;
@@ -145053,6 +154503,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_8generator(__pyx_CoroutineObject
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -145165,7 +154616,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7xmlfile_9__aexit__(struct __pyx_obj_4lxm
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_exc_tb);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_exc_tb);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_11generator1, __pyx_codeobj__82, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_xmlfile___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 940, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_7xmlfile_11generator1, __pyx_codeobj__263, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_xmlfile___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 940, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -145185,6 +154636,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_1___aexit__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_1___aexit__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
@@ -145193,10 +154645,13 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aexit__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__263)
+  __Pyx_TraceCall("__aexit__", __pyx_f[8], 940, 0, __PYX_ERR(8, 940, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -145210,6 +154665,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  *             old_writer, self.async_writer = self.async_writer, None
  *             raise_on_error = exc_type is None
  */
+  __Pyx_TraceLine(941,0,__PYX_ERR(8, 941, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->async_writer) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -145221,6 +154677,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  *             raise_on_error = exc_type is None
  *             await old_writer._close(raise_on_error)
  */
+    __Pyx_TraceLine(942,0,__PYX_ERR(8, 942, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->async_writer);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = Py_None;
@@ -145241,6 +154698,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  *             await old_writer._close(raise_on_error)
  *             if self.close:
  */
+    __Pyx_TraceLine(943,0,__PYX_ERR(8, 943, __pyx_L1_error))
     __pyx_t_2 = (__pyx_cur_scope->__pyx_v_exc_type == Py_None);
     __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 943, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -145255,6 +154713,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  *             if self.close:
  *                 self.output_file = None
  */
+    __Pyx_TraceLine(944,0,__PYX_ERR(8, 944, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_old_writer), __pyx_n_s_close_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 944, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = NULL;
@@ -145305,6 +154764,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -145327,6 +154787,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  *                 self.output_file = None
  * 
  */
+    __Pyx_TraceLine(945,0,__PYX_ERR(8, 945, __pyx_L1_error))
     __pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->close != 0);
     if (__pyx_t_2) {
 
@@ -145337,6 +154798,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
  * 
  * 
  */
+      __Pyx_TraceLine(946,0,__PYX_ERR(8, 946, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __Pyx_GIVEREF(Py_None);
       __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->output_file);
@@ -145384,6 +154846,7 @@ static PyObject *__pyx_gb_4lxml_5etree_7xmlfile_11generator1(__pyx_CoroutineObje
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -145424,10 +154887,12 @@ static int __pyx_pw_4lxml_5etree_8htmlfile_1__init__(PyObject *__pyx_v_self, PyO
 
 static int __pyx_pf_4lxml_5etree_8htmlfile___init__(struct __pyx_obj_4lxml_5etree_htmlfile *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[8], 955, 0, __PYX_ERR(8, 955, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":956
  *     """
@@ -145436,6 +154901,7 @@ static int __pyx_pf_4lxml_5etree_8htmlfile___init__(struct __pyx_obj_4lxml_5etre
  *         self.method = OUTPUT_METHOD_HTML
  * 
  */
+  __Pyx_TraceLine(956,0,__PYX_ERR(8, 956, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 956, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_htmlfile));
@@ -145462,6 +154928,7 @@ static int __pyx_pf_4lxml_5etree_8htmlfile___init__(struct __pyx_obj_4lxml_5etre
  * 
  * 
  */
+  __Pyx_TraceLine(957,0,__PYX_ERR(8, 957, __pyx_L1_error))
   __pyx_v_self->__pyx_base.method = __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML;
 
   /* "src/lxml/serializer.pxi":955
@@ -145481,6 +154948,7 @@ static int __pyx_pf_4lxml_5etree_8htmlfile___init__(struct __pyx_obj_4lxml_5etre
   __Pyx_AddTraceback("lxml.etree.htmlfile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -145605,12 +155073,14 @@ static int __pyx_pw_4lxml_5etree_22_IncrementalFileWriter_1__cinit__(PyObject *_
 
 static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_outfile, PyObject *__pyx_v_encoding, int __pyx_v_compresslevel, int __pyx_v_close, int __pyx_v_buffered, int __pyx_v_method) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   char *__pyx_t_4;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 980, 0, __PYX_ERR(8, 980, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_encoding);
 
   /* "src/lxml/serializer.pxi":982
@@ -145620,6 +155090,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         self._element_stack = []
  *         if encoding is None:
  */
+  __Pyx_TraceLine(982,0,__PYX_ERR(8, 982, __pyx_L1_error))
   __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_STARTING;
 
   /* "src/lxml/serializer.pxi":983
@@ -145629,6 +155100,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         if encoding is None:
  *             encoding = b'ASCII'
  */
+  __Pyx_TraceLine(983,0,__PYX_ERR(8, 983, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 983, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -145644,6 +155116,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *             encoding = b'ASCII'
  *         self._encoding = encoding
  */
+  __Pyx_TraceLine(984,0,__PYX_ERR(8, 984, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_encoding == ((PyObject*)Py_None));
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -145655,6 +155128,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         self._encoding = encoding
  *         self._c_encoding = _cstr(encoding) if encoding is not None else NULL
  */
+    __Pyx_TraceLine(985,0,__PYX_ERR(8, 985, __pyx_L1_error))
     __Pyx_INCREF(__pyx_n_b_ASCII);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_b_ASCII);
 
@@ -145674,6 +155148,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         self._c_encoding = _cstr(encoding) if encoding is not None else NULL
  *         self._buffered = buffered
  */
+  __Pyx_TraceLine(986,0,__PYX_ERR(8, 986, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_encoding);
   __Pyx_GIVEREF(__pyx_v_encoding);
   __Pyx_GOTREF(__pyx_v_self->_encoding);
@@ -145687,6 +155162,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         self._buffered = buffered
  *         self._target = _create_output_buffer(
  */
+  __Pyx_TraceLine(987,0,__PYX_ERR(8, 987, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_encoding != ((PyObject*)Py_None));
   if ((__pyx_t_3 != 0)) {
     __pyx_t_4 = PyBytes_AS_STRING(__pyx_v_encoding);
@@ -145702,6 +155178,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *         self._target = _create_output_buffer(
  *             outfile, self._c_encoding, compresslevel, &self._c_out, close)
  */
+  __Pyx_TraceLine(988,0,__PYX_ERR(8, 988, __pyx_L1_error))
   __pyx_v_self->_buffered = __pyx_v_buffered;
 
   /* "src/lxml/serializer.pxi":989
@@ -145711,6 +155188,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  *             outfile, self._c_encoding, compresslevel, &self._c_out, close)
  *         self._method = method
  */
+  __Pyx_TraceLine(989,0,__PYX_ERR(8, 989, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_outfile, __pyx_v_self->_c_encoding, __pyx_v_compresslevel, (&__pyx_v_self->_c_out), __pyx_v_close)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 989, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -145726,6 +155204,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(991,0,__PYX_ERR(8, 991, __pyx_L1_error))
   __pyx_v_self->_method = __pyx_v_method;
 
   /* "src/lxml/serializer.pxi":980
@@ -145745,6 +155224,7 @@ static int __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(struct __pyx
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_encoding);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -145769,9 +155249,11 @@ static void __pyx_pw_4lxml_5etree_22_IncrementalFileWriter_3__dealloc__(PyObject
 }
 
 static void __pyx_pf_4lxml_5etree_22_IncrementalFileWriter_2__dealloc__(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[8], 993, 0, __PYX_ERR(8, 993, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":994
  * 
@@ -145780,6 +155262,7 @@ static void __pyx_pf_4lxml_5etree_22_IncrementalFileWriter_2__dealloc__(struct _
  *             tree.xmlOutputBufferClose(self._c_out)
  * 
  */
+  __Pyx_TraceLine(994,0,__PYX_ERR(8, 994, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_out != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -145790,6 +155273,7 @@ static void __pyx_pf_4lxml_5etree_22_IncrementalFileWriter_2__dealloc__(struct _
  * 
  *     def write_declaration(self, version=None, standalone=None, doctype=None):
  */
+    __Pyx_TraceLine(995,0,__PYX_ERR(8, 995, __pyx_L1_error))
     (void)(xmlOutputBufferClose(__pyx_v_self->_c_out));
 
     /* "src/lxml/serializer.pxi":994
@@ -145810,6 +155294,11 @@ static void __pyx_pf_4lxml_5etree_22_IncrementalFileWriter_2__dealloc__(struct _
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._IncrementalFileWriter.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -145909,6 +155398,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
   const xmlChar *__pyx_v_c_version;
   int __pyx_v_c_standalone;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -145916,7 +155406,9 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
   const xmlChar *__pyx_t_4;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__264)
   __Pyx_RefNannySetupContext("write_declaration", 0);
+  __Pyx_TraceCall("write_declaration", __pyx_f[8], 997, 0, __PYX_ERR(8, 997, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_version);
   __Pyx_INCREF(__pyx_v_doctype);
 
@@ -145927,6 +155419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         cdef const_xmlChar* c_version
  *         cdef int c_standalone
  */
+  __Pyx_TraceLine(1002,0,__PYX_ERR(8, 1002, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -145943,6 +155436,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             raise LxmlSyntaxError("only XML documents have declarations")
  *         if self._status >= WRITER_DECL_WRITTEN:
  */
+  __Pyx_TraceLine(1005,0,__PYX_ERR(8, 1005, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_method != __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -145953,9 +155447,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         if self._status >= WRITER_DECL_WRITTEN:
  *             raise LxmlSyntaxError("XML declaration already written")
  */
+    __Pyx_TraceLine(1006,0,__PYX_ERR(8, 1006, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1006, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1006, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__265, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1006, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -145978,6 +155473,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             raise LxmlSyntaxError("XML declaration already written")
  *         version = _utf8orNone(version)
  */
+  __Pyx_TraceLine(1007,0,__PYX_ERR(8, 1007, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DECL_WRITTEN) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -145988,9 +155484,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         version = _utf8orNone(version)
  *         c_version = _xcstr(version) if version is not None else NULL
  */
+    __Pyx_TraceLine(1008,0,__PYX_ERR(8, 1008, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1008, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1008, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__266, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1008, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
@@ -146013,6 +155510,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         c_version = _xcstr(version) if version is not None else NULL
  *         doctype = _utf8orNone(doctype)
  */
+  __Pyx_TraceLine(1009,0,__PYX_ERR(8, 1009, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1009, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF_SET(__pyx_v_version, __pyx_t_2);
@@ -146025,6 +155523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         doctype = _utf8orNone(doctype)
  *         if standalone is None:
  */
+  __Pyx_TraceLine(1010,0,__PYX_ERR(8, 1010, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_version != Py_None);
   if ((__pyx_t_1 != 0)) {
     __pyx_t_4 = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_version);
@@ -146040,6 +155539,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         if standalone is None:
  *             c_standalone = -1
  */
+  __Pyx_TraceLine(1011,0,__PYX_ERR(8, 1011, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8orNone(__pyx_v_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_2);
@@ -146052,6 +155552,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             c_standalone = -1
  *         else:
  */
+  __Pyx_TraceLine(1012,0,__PYX_ERR(8, 1012, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_standalone == Py_None);
   __pyx_t_5 = (__pyx_t_1 != 0);
   if (__pyx_t_5) {
@@ -146063,6 +155564,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         else:
  *             c_standalone = 1 if standalone else 0
  */
+    __Pyx_TraceLine(1013,0,__PYX_ERR(8, 1013, __pyx_L1_error))
     __pyx_v_c_standalone = -1;
 
     /* "src/lxml/serializer.pxi":1012
@@ -146082,6 +155584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
  *         if doctype is not None:
  */
+  __Pyx_TraceLine(1015,0,__PYX_ERR(8, 1015, __pyx_L1_error))
   /*else*/ {
     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(8, 1015, __pyx_L1_error)
     if (__pyx_t_5) {
@@ -146100,6 +155603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         if doctype is not None:
  *             _writeDoctype(self._c_out, _xcstr(doctype))
  */
+  __Pyx_TraceLine(1016,0,__PYX_ERR(8, 1016, __pyx_L1_error))
   __pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_self->_c_out, __pyx_v_c_version, __pyx_v_self->_c_encoding, __pyx_v_c_standalone);
 
   /* "src/lxml/serializer.pxi":1017
@@ -146109,6 +155613,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             _writeDoctype(self._c_out, _xcstr(doctype))
  *             self._status = WRITER_DTD_WRITTEN
  */
+  __Pyx_TraceLine(1017,0,__PYX_ERR(8, 1017, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_doctype != Py_None);
   __pyx_t_1 = (__pyx_t_5 != 0);
   if (__pyx_t_1) {
@@ -146120,6 +155625,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             self._status = WRITER_DTD_WRITTEN
  *         else:
  */
+    __Pyx_TraceLine(1018,0,__PYX_ERR(8, 1018, __pyx_L1_error))
     __pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
 
     /* "src/lxml/serializer.pxi":1019
@@ -146129,6 +155635,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         else:
  *             self._status = WRITER_DECL_WRITTEN
  */
+    __Pyx_TraceLine(1019,0,__PYX_ERR(8, 1019, __pyx_L1_error))
     __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN;
 
     /* "src/lxml/serializer.pxi":1017
@@ -146148,6 +155655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         if not self._buffered:
  *             tree.xmlOutputBufferFlush(self._c_out)
  */
+  __Pyx_TraceLine(1021,0,__PYX_ERR(8, 1021, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DECL_WRITTEN;
   }
@@ -146160,6 +155668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *             tree.xmlOutputBufferFlush(self._c_out)
  *         self._handle_error(self._c_out.error)
  */
+  __Pyx_TraceLine(1022,0,__PYX_ERR(8, 1022, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_self->_buffered != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -146170,6 +155679,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  *         self._handle_error(self._c_out.error)
  * 
  */
+    __Pyx_TraceLine(1023,0,__PYX_ERR(8, 1023, __pyx_L1_error))
     (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
     /* "src/lxml/serializer.pxi":1022
@@ -146188,6 +155698,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
  * 
  *     def write_doctype(self, doctype):
  */
+  __Pyx_TraceLine(1024,0,__PYX_ERR(8, 1024, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1024, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -146212,6 +155723,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_4write_declarati
   __Pyx_XDECREF(__pyx_v_version);
   __Pyx_XDECREF(__pyx_v_doctype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -146241,12 +155753,15 @@ static PyObject *__pyx_pw_4lxml_5etree_22_IncrementalFileWriter_7write_doctype(P
 
 static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_doctype) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__267)
   __Pyx_RefNannySetupContext("write_doctype", 0);
+  __Pyx_TraceCall("write_doctype", __pyx_f[8], 1026, 0, __PYX_ERR(8, 1026, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_doctype);
 
   /* "src/lxml/serializer.pxi":1031
@@ -146256,6 +155771,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         if doctype is None:
  *             return
  */
+  __Pyx_TraceLine(1031,0,__PYX_ERR(8, 1031, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -146272,6 +155788,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *             return
  *         if self._status >= WRITER_DTD_WRITTEN:
  */
+  __Pyx_TraceLine(1032,0,__PYX_ERR(8, 1032, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_doctype == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -146283,6 +155800,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         if self._status >= WRITER_DTD_WRITTEN:
  *             raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
  */
+    __Pyx_TraceLine(1033,0,__PYX_ERR(8, 1033, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -146303,6 +155821,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *             raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
  *         doctype = _utf8(doctype)
  */
+  __Pyx_TraceLine(1034,0,__PYX_ERR(8, 1034, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -146313,9 +155832,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         doctype = _utf8(doctype)
  *         _writeDoctype(self._c_out, _xcstr(doctype))
  */
+    __Pyx_TraceLine(1035,0,__PYX_ERR(8, 1035, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1035, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1035, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__268, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1035, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
@@ -146338,6 +155858,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         _writeDoctype(self._c_out, _xcstr(doctype))
  *         self._status = WRITER_DTD_WRITTEN
  */
+  __Pyx_TraceLine(1036,0,__PYX_ERR(8, 1036, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_doctype); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1036, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_doctype, __pyx_t_4);
@@ -146350,6 +155871,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         self._status = WRITER_DTD_WRITTEN
  *         if not self._buffered:
  */
+  __Pyx_TraceLine(1037,0,__PYX_ERR(8, 1037, __pyx_L1_error))
   __pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
 
   /* "src/lxml/serializer.pxi":1038
@@ -146359,6 +155881,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         if not self._buffered:
  *             tree.xmlOutputBufferFlush(self._c_out)
  */
+  __Pyx_TraceLine(1038,0,__PYX_ERR(8, 1038, __pyx_L1_error))
   __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN;
 
   /* "src/lxml/serializer.pxi":1039
@@ -146368,6 +155891,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *             tree.xmlOutputBufferFlush(self._c_out)
  *         self._handle_error(self._c_out.error)
  */
+  __Pyx_TraceLine(1039,0,__PYX_ERR(8, 1039, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_self->_buffered != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -146378,6 +155902,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  *         self._handle_error(self._c_out.error)
  * 
  */
+    __Pyx_TraceLine(1040,0,__PYX_ERR(8, 1040, __pyx_L1_error))
     (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
     /* "src/lxml/serializer.pxi":1039
@@ -146396,6 +155921,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
  * 
  *     def method(self, method):
  */
+  __Pyx_TraceLine(1041,0,__PYX_ERR(8, 1041, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1041, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -146419,6 +155945,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_6write_doctype(s
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_doctype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -146449,13 +155976,16 @@ static PyObject *__pyx_pw_4lxml_5etree_22_IncrementalFileWriter_9method(PyObject
 static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_8method(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_method) {
   int __pyx_v_c_method;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__269)
   __Pyx_RefNannySetupContext("method", 0);
+  __Pyx_TraceCall("method", __pyx_f[8], 1043, 0, __PYX_ERR(8, 1043, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1049
  *         method is one of (None, 'xml', 'html') where None means 'xml'.
@@ -146464,6 +155994,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_8method(struct _
  *         c_method = self._method if method is None else _findOutputMethod(method)
  *         return _MethodChanger(self, c_method)
  */
+  __Pyx_TraceLine(1049,0,__PYX_ERR(8, 1049, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -146480,6 +156011,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_8method(struct _
  *         return _MethodChanger(self, c_method)
  * 
  */
+  __Pyx_TraceLine(1050,0,__PYX_ERR(8, 1050, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_method == Py_None);
   if ((__pyx_t_2 != 0)) {
     __pyx_t_1 = __pyx_v_self->_method;
@@ -146496,6 +156028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_8method(struct _
  * 
  *     def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
  */
+  __Pyx_TraceLine(1051,0,__PYX_ERR(8, 1051, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_c_method); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -146530,6 +156063,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_8method(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -146649,6 +156183,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
   PyObject *__pyx_v_prefix = NULL;
   int __pyx_v_c_method;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -146664,7 +156199,9 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
   Py_ssize_t __pyx_t_12;
   int __pyx_t_13;
   int __pyx_t_14;
+  __Pyx_TraceFrameInit(__pyx_codeobj__270)
   __Pyx_RefNannySetupContext("element", 0);
+  __Pyx_TraceCall("element", __pyx_f[8], 1053, 0, __PYX_ERR(8, 1053, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1059
  *         method is one of (None, 'xml', 'html') where None means 'xml'.
@@ -146673,6 +156210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         attributes = []
  *         if attrib is not None:
  */
+  __Pyx_TraceLine(1059,0,__PYX_ERR(8, 1059, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -146689,6 +156227,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         if attrib is not None:
  *             for name, value in _iter_attrib(attrib):
  */
+  __Pyx_TraceLine(1060,0,__PYX_ERR(8, 1060, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1060, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_attributes = ((PyObject*)__pyx_t_1);
@@ -146701,6 +156240,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *             for name, value in _iter_attrib(attrib):
  *                 if name not in _extra:
  */
+  __Pyx_TraceLine(1061,0,__PYX_ERR(8, 1061, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_attrib != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -146712,6 +156252,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 if name not in _extra:
  *                     ns, name = _getNsTag(name)
  */
+    __Pyx_TraceLine(1062,0,__PYX_ERR(8, 1062, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__iter_attrib(__pyx_v_attrib); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1062, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
@@ -146812,6 +156353,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                     ns, name = _getNsTag(name)
  *                     attributes.append((ns, name, _utf8(value)))
  */
+      __Pyx_TraceLine(1063,0,__PYX_ERR(8, 1063, __pyx_L1_error))
       __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v__extra, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(8, 1063, __pyx_L1_error)
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
@@ -146823,6 +156365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                     attributes.append((ns, name, _utf8(value)))
  *         if _extra:
  */
+        __Pyx_TraceLine(1064,0,__PYX_ERR(8, 1064, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1064, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         if (likely(__pyx_t_1 != Py_None)) {
@@ -146860,6 +156403,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         if _extra:
  *             for name, value in _extra.iteritems():
  */
+        __Pyx_TraceLine(1065,0,__PYX_ERR(8, 1065, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1065, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 1065, __pyx_L1_error)
@@ -146892,6 +156436,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 if name not in _extra:
  *                     ns, name = _getNsTag(name)
  */
+      __Pyx_TraceLine(1062,0,__PYX_ERR(8, 1062, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -146911,6 +156456,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *             for name, value in _extra.iteritems():
  *                 ns, name = _getNsTag(name)
  */
+  __Pyx_TraceLine(1066,0,__PYX_ERR(8, 1066, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__extra); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 1066, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -146921,6 +156467,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 ns, name = _getNsTag(name)
  *                 attributes.append((ns, name, _utf8(value)))
  */
+    __Pyx_TraceLine(1067,0,__PYX_ERR(8, 1067, __pyx_L1_error))
     __pyx_t_5 = 0;
     __pyx_t_7 = __Pyx_dict_iterator(__pyx_v__extra, 1, __pyx_n_s_iteritems, (&__pyx_t_12), (&__pyx_t_13)); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 1067, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
@@ -146945,6 +156492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 attributes.append((ns, name, _utf8(value)))
  *         reversed_nsmap = {}
  */
+      __Pyx_TraceLine(1068,0,__PYX_ERR(8, 1068, __pyx_L1_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1068, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (likely(__pyx_t_1 != Py_None)) {
@@ -146982,6 +156530,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         reversed_nsmap = {}
  *         if nsmap:
  */
+      __Pyx_TraceLine(1069,0,__PYX_ERR(8, 1069, __pyx_L1_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1069, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1069, __pyx_L1_error)
@@ -147016,6 +156565,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         if nsmap:
  *             for prefix, ns in nsmap.items():
  */
+  __Pyx_TraceLine(1070,0,__PYX_ERR(8, 1070, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1070, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_reversed_nsmap = ((PyObject*)__pyx_t_4);
@@ -147028,6 +156578,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *             for prefix, ns in nsmap.items():
  *                 if prefix is not None:
  */
+  __Pyx_TraceLine(1071,0,__PYX_ERR(8, 1071, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 1071, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -147038,6 +156589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 if prefix is not None:
  *                     prefix = _utf8(prefix)
  */
+    __Pyx_TraceLine(1072,0,__PYX_ERR(8, 1072, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1072, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_1 = NULL;
@@ -147156,6 +156708,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                     prefix = _utf8(prefix)
  *                     _prefixValidOrRaise(prefix)
  */
+      __Pyx_TraceLine(1073,0,__PYX_ERR(8, 1073, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_prefix != Py_None);
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
@@ -147167,6 +156720,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                     _prefixValidOrRaise(prefix)
  *                 reversed_nsmap[_utf8(ns)] = prefix
  */
+        __Pyx_TraceLine(1074,0,__PYX_ERR(8, 1074, __pyx_L1_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1074, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_4);
@@ -147179,6 +156733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 reversed_nsmap[_utf8(ns)] = prefix
  *         ns, name = _getNsTag(tag)
  */
+        __Pyx_TraceLine(1075,0,__PYX_ERR(8, 1075, __pyx_L1_error))
         __pyx_t_13 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(8, 1075, __pyx_L1_error)
 
         /* "src/lxml/serializer.pxi":1073
@@ -147197,6 +156752,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *         ns, name = _getNsTag(tag)
  * 
  */
+      __Pyx_TraceLine(1076,0,__PYX_ERR(8, 1076, __pyx_L1_error))
       __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1076, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       if (unlikely(PyDict_SetItem(__pyx_v_reversed_nsmap, __pyx_t_4, __pyx_v_prefix) < 0)) __PYX_ERR(8, 1076, __pyx_L1_error)
@@ -147209,6 +156765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  *                 if prefix is not None:
  *                     prefix = _utf8(prefix)
  */
+      __Pyx_TraceLine(1072,0,__PYX_ERR(8, 1072, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -147228,6 +156785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  * 
  *         c_method = self._method if method is None else _findOutputMethod(method)
  */
+  __Pyx_TraceLine(1077,0,__PYX_ERR(8, 1077, __pyx_L1_error))
   __pyx_t_8 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1077, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (likely(__pyx_t_8 != Py_None)) {
@@ -147265,6 +156823,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  * 
  *         return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap), c_method)
  */
+  __Pyx_TraceLine(1079,0,__PYX_ERR(8, 1079, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_method == Py_None);
   if ((__pyx_t_3 != 0)) {
     __pyx_t_13 = __pyx_v_self->_method;
@@ -147281,6 +156840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
  * 
  *     cdef _write_qname(self, bytes name, bytes prefix):
  */
+  __Pyx_TraceLine(1081,0,__PYX_ERR(8, 1081, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1081, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
@@ -147341,6 +156901,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
   __Pyx_XDECREF(__pyx_v_reversed_nsmap);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -147355,10 +156916,12 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_10element(struct
 
 static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_prefix) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   Py_ssize_t __pyx_t_2;
   __Pyx_RefNannySetupContext("_write_qname", 0);
+  __Pyx_TraceCall("_write_qname", __pyx_f[8], 1083, 0, __PYX_ERR(8, 1083, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1084
  * 
@@ -147367,6 +156930,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(stru
  *             tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix))
  *             tree.xmlOutputBufferWrite(self._c_out, 1, ':')
  */
+  __Pyx_TraceLine(1084,0,__PYX_ERR(8, 1084, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_prefix != Py_None)&&(PyBytes_GET_SIZE(__pyx_v_prefix) != 0);
   if (__pyx_t_1) {
 
@@ -147377,6 +156941,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(stru
  *             tree.xmlOutputBufferWrite(self._c_out, 1, ':')
  *         tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name))
  */
+    __Pyx_TraceLine(1085,0,__PYX_ERR(8, 1085, __pyx_L1_error))
     if (unlikely(__pyx_v_prefix == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
       __PYX_ERR(8, 1085, __pyx_L1_error)
@@ -147391,6 +156956,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(stru
  *         tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name))
  * 
  */
+    __Pyx_TraceLine(1086,0,__PYX_ERR(8, 1086, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)":")));
 
     /* "src/lxml/serializer.pxi":1084
@@ -147409,6 +156975,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(stru
  * 
  *     cdef _write_start_element(self, element_config):
  */
+  __Pyx_TraceLine(1087,0,__PYX_ERR(8, 1087, __pyx_L1_error))
   if (unlikely(__pyx_v_name == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
     __PYX_ERR(8, 1087, __pyx_L1_error)
@@ -147432,6 +156999,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(stru
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -147453,6 +157021,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
   PyObject *__pyx_v_new_namespaces = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -147463,6 +157032,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
   PyObject *(*__pyx_t_7)(PyObject *);
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_write_start_element", 0);
+  __Pyx_TraceCall("_write_start_element", __pyx_f[8], 1089, 0, __PYX_ERR(8, 1089, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1090
  * 
@@ -147471,6 +157041,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *             raise LxmlSyntaxError("cannot append trailing element to complete XML document")
  *         ns, name, attributes, nsmap = element_config
  */
+  __Pyx_TraceLine(1090,0,__PYX_ERR(8, 1090, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -147481,9 +157052,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         ns, name, attributes, nsmap = element_config
  *         flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
  */
+    __Pyx_TraceLine(1091,0,__PYX_ERR(8, 1091, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1091, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1091, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__271, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1091, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -147506,6 +157078,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
  *         prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
  */
+  __Pyx_TraceLine(1092,0,__PYX_ERR(8, 1092, __pyx_L1_error))
   if ((likely(PyTuple_CheckExact(__pyx_v_element_config))) || (PyList_CheckExact(__pyx_v_element_config))) {
     PyObject* sequence = __pyx_v_element_config;
     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
@@ -147579,6 +157152,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
  *         tree.xmlOutputBufferWrite(self._c_out, 1, '<')
  */
+  __Pyx_TraceLine(1093,0,__PYX_ERR(8, 1093, __pyx_L1_error))
   if (!(likely(PyDict_CheckExact(__pyx_v_nsmap))||((__pyx_v_nsmap) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_nsmap)->tp_name), 0))) __PYX_ERR(8, 1093, __pyx_L1_error)
   __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_nsmap)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1093, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -147640,6 +157214,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         tree.xmlOutputBufferWrite(self._c_out, 1, '<')
  *         self._write_qname(name, prefix)
  */
+  __Pyx_TraceLine(1094,0,__PYX_ERR(8, 1094, __pyx_L1_error))
   if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(8, 1094, __pyx_L1_error)
   if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(8, 1094, __pyx_L1_error)
   if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(8, 1094, __pyx_L1_error)
@@ -147655,6 +157230,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         self._write_qname(name, prefix)
  * 
  */
+  __Pyx_TraceLine(1095,0,__PYX_ERR(8, 1095, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)"<")));
 
   /* "src/lxml/serializer.pxi":1096
@@ -147664,6 +157240,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  * 
  *         self._write_attributes_and_namespaces(
  */
+  __Pyx_TraceLine(1096,0,__PYX_ERR(8, 1096, __pyx_L1_error))
   if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(8, 1096, __pyx_L1_error)
   if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(8, 1096, __pyx_L1_error)
   __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1096, __pyx_L1_error)
@@ -147677,6 +157254,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  * 
  *         tree.xmlOutputBufferWrite(self._c_out, 1, '>')
  */
+  __Pyx_TraceLine(1099,0,__PYX_ERR(8, 1099, __pyx_L1_error))
   if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) __PYX_ERR(8, 1099, __pyx_L1_error)
   if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) __PYX_ERR(8, 1099, __pyx_L1_error)
   if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) __PYX_ERR(8, 1099, __pyx_L1_error)
@@ -147688,6 +157266,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *             attributes, flat_namespace_map, new_namespaces)
  * 
  */
+  __Pyx_TraceLine(1098,0,__PYX_ERR(8, 1098, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_and_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_attributes), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1098, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -147699,6 +157278,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         if not self._buffered:
  *             tree.xmlOutputBufferFlush(self._c_out)
  */
+  __Pyx_TraceLine(1101,0,__PYX_ERR(8, 1101, __pyx_L1_error))
   (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)">")));
 
   /* "src/lxml/serializer.pxi":1102
@@ -147708,6 +157288,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *             tree.xmlOutputBufferFlush(self._c_out)
  *         self._handle_error(self._c_out.error)
  */
+  __Pyx_TraceLine(1102,0,__PYX_ERR(8, 1102, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_self->_buffered != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -147718,6 +157299,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         self._handle_error(self._c_out.error)
  * 
  */
+    __Pyx_TraceLine(1103,0,__PYX_ERR(8, 1103, __pyx_L1_error))
     (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
     /* "src/lxml/serializer.pxi":1102
@@ -147736,6 +157318,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  * 
  *         self._element_stack.append((ns, name, prefix, flat_namespace_map))
  */
+  __Pyx_TraceLine(1104,0,__PYX_ERR(8, 1104, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1104, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -147747,6 +157330,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  *         self._status = WRITER_IN_ELEMENT
  * 
  */
+  __Pyx_TraceLine(1106,0,__PYX_ERR(8, 1106, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(8, 1106, __pyx_L1_error)
@@ -147775,6 +157359,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
  * 
  *     cdef _write_attributes_and_namespaces(self, list attributes,
  */
+  __Pyx_TraceLine(1107,0,__PYX_ERR(8, 1107, __pyx_L1_error))
   __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT;
 
   /* "src/lxml/serializer.pxi":1089
@@ -147805,6 +157390,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_elem
   __Pyx_XDECREF(__pyx_v_new_namespaces);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -147822,6 +157408,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -147835,6 +157422,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   PyObject *(*__pyx_t_10)(PyObject *);
   int __pyx_t_11;
   __Pyx_RefNannySetupContext("_write_attributes_and_namespaces", 0);
+  __Pyx_TraceCall("_write_attributes_and_namespaces", __pyx_f[8], 1109, 0, __PYX_ERR(8, 1109, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_attributes);
 
   /* "src/lxml/serializer.pxi":1112
@@ -147844,6 +157432,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             # _find_prefix() may append to new_namespaces => build them first
  *             attributes = [
  */
+  __Pyx_TraceLine(1112,0,__PYX_ERR(8, 1112, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attributes != Py_None)&&(PyList_GET_SIZE(__pyx_v_attributes) != 0);
   if (__pyx_t_1) {
 
@@ -147854,6 +157443,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *                 (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
  *                 for ns, name, value in attributes ]
  */
+    __Pyx_TraceLine(1114,0,__PYX_ERR(8, 1114, __pyx_L1_error))
     __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1114, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
 
@@ -147864,6 +157454,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *         if new_namespaces:
  *             new_namespaces.sort()
  */
+    __Pyx_TraceLine(1116,0,__PYX_ERR(8, 1116, __pyx_L1_error))
     if (unlikely(__pyx_v_attributes == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(8, 1116, __pyx_L1_error)
@@ -147944,6 +157535,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *                 for ns, name, value in attributes ]
  *         if new_namespaces:
  */
+      __Pyx_TraceLine(1115,0,__PYX_ERR(8, 1115, __pyx_L1_error))
       if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_ns)->tp_name), 0))) __PYX_ERR(8, 1115, __pyx_L1_error)
       __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), __pyx_v_flat_namespace_map, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1115, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -147968,6 +157560,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *         if new_namespaces:
  *             new_namespaces.sort()
  */
+      __Pyx_TraceLine(1116,0,__PYX_ERR(8, 1116, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_attributes, ((PyObject*)__pyx_t_2));
@@ -147989,6 +157582,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             new_namespaces.sort()
  *             self._write_attributes_list(new_namespaces)
  */
+  __Pyx_TraceLine(1117,0,__PYX_ERR(8, 1117, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_new_namespaces != Py_None)&&(PyList_GET_SIZE(__pyx_v_new_namespaces) != 0);
   if (__pyx_t_1) {
 
@@ -147999,6 +157593,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             self._write_attributes_list(new_namespaces)
  *         if attributes:
  */
+    __Pyx_TraceLine(1118,0,__PYX_ERR(8, 1118, __pyx_L1_error))
     if (unlikely(__pyx_v_new_namespaces == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "sort");
       __PYX_ERR(8, 1118, __pyx_L1_error)
@@ -148012,6 +157607,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *         if attributes:
  *             self._write_attributes_list(attributes)
  */
+    __Pyx_TraceLine(1119,0,__PYX_ERR(8, 1119, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1119, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -148032,6 +157628,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             self._write_attributes_list(attributes)
  * 
  */
+  __Pyx_TraceLine(1120,0,__PYX_ERR(8, 1120, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attributes != Py_None)&&(PyList_GET_SIZE(__pyx_v_attributes) != 0);
   if (__pyx_t_1) {
 
@@ -148042,6 +157639,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  * 
  *     cdef _write_attributes_list(self, list attributes):
  */
+    __Pyx_TraceLine(1121,0,__PYX_ERR(8, 1121, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1121, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -148082,6 +157680,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_attributes);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -148099,6 +157698,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -148109,6 +157709,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_write_attributes_list", 0);
+  __Pyx_TraceCall("_write_attributes_list", __pyx_f[8], 1123, 0, __PYX_ERR(8, 1123, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1124
  * 
@@ -148117,6 +157718,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
  *             self._write_qname(name, prefix)
  */
+  __Pyx_TraceLine(1124,0,__PYX_ERR(8, 1124, __pyx_L1_error))
   if (unlikely(__pyx_v_attributes == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(8, 1124, __pyx_L1_error)
@@ -148197,6 +157799,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             self._write_qname(name, prefix)
  *             tree.xmlOutputBufferWrite(self._c_out, 2, '="')
  */
+    __Pyx_TraceLine(1125,0,__PYX_ERR(8, 1125, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)" ")));
 
     /* "src/lxml/serializer.pxi":1126
@@ -148206,6 +157809,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             tree.xmlOutputBufferWrite(self._c_out, 2, '="')
  *             _write_attr_string(self._c_out, _cstr(value))
  */
+    __Pyx_TraceLine(1126,0,__PYX_ERR(8, 1126, __pyx_L1_error))
     if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(8, 1126, __pyx_L1_error)
     if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(8, 1126, __pyx_L1_error)
     __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1126, __pyx_L1_error)
@@ -148219,6 +157823,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             _write_attr_string(self._c_out, _cstr(value))
  * 
  */
+    __Pyx_TraceLine(1127,0,__PYX_ERR(8, 1127, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, ((const char *)"=\"")));
 
     /* "src/lxml/serializer.pxi":1128
@@ -148228,6 +157833,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  * 
  *             tree.xmlOutputBufferWrite(self._c_out, 1, '"')
  */
+    __Pyx_TraceLine(1128,0,__PYX_ERR(8, 1128, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__write_attr_string(__pyx_v_self->_c_out, PyBytes_AS_STRING(__pyx_v_value)); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1128, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -148239,6 +157845,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  * 
  *     cdef _write_end_element(self, element_config):
  */
+    __Pyx_TraceLine(1130,0,__PYX_ERR(8, 1130, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)"\"")));
 
     /* "src/lxml/serializer.pxi":1124
@@ -148248,6 +157855,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
  *             tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
  *             self._write_qname(name, prefix)
  */
+    __Pyx_TraceLine(1124,0,__PYX_ERR(8, 1124, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -148276,6 +157884,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -148293,6 +157902,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -148303,6 +157913,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_write_end_element", 0);
+  __Pyx_TraceCall("_write_end_element", __pyx_f[8], 1132, 0, __PYX_ERR(8, 1132, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1133
  * 
@@ -148311,6 +157922,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             raise LxmlSyntaxError("not in an element")
  *         if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
  */
+  __Pyx_TraceLine(1133,0,__PYX_ERR(8, 1133, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -148321,9 +157933,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *         if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  */
+    __Pyx_TraceLine(1134,0,__PYX_ERR(8, 1134, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1134, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1134, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__272, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1134, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -148346,6 +157959,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  * 
  */
+  __Pyx_TraceLine(1135,0,__PYX_ERR(8, 1135, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   __pyx_t_5 = ((!__pyx_t_4) != 0);
   if (!__pyx_t_5) {
@@ -148359,10 +157973,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   }
   __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_self->_element_stack, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__88, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1135, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__273, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__89, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1135, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_element_config, 0, 2, NULL, NULL, &__pyx_slice__274, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1135, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -148380,9 +157994,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  * 
  *         # If previous write operations failed, the context manager exit might still call us.
  */
+    __Pyx_TraceLine(1136,0,__PYX_ERR(8, 1136, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1136, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__275, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -148405,6 +158020,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  * 
  *         name, prefix = self._element_stack.pop()[1:3]
  */
+  __Pyx_TraceLine(1141,0,__PYX_ERR(8, 1141, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c_out->error == XML_ERR_OK)); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_ok_to_write = __pyx_t_3;
@@ -148417,13 +158033,14 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *         if ok_to_write:
  *             tree.xmlOutputBufferWrite(self._c_out, 2, '</')
  */
+  __Pyx_TraceLine(1143,0,__PYX_ERR(8, 1143, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
     __PYX_ERR(8, 1143, __pyx_L1_error)
   }
   __pyx_t_3 = __Pyx_PyList_Pop(__pyx_v_self->_element_stack); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 3, NULL, NULL, &__pyx_slice__91, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1143, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 3, NULL, NULL, &__pyx_slice__276, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
@@ -148484,6 +158101,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             tree.xmlOutputBufferWrite(self._c_out, 2, '</')
  *             self._write_qname(name, prefix)
  */
+  __Pyx_TraceLine(1144,0,__PYX_ERR(8, 1144, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(8, 1144, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -148494,6 +158112,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             self._write_qname(name, prefix)
  *             tree.xmlOutputBufferWrite(self._c_out, 1, '>')
  */
+    __Pyx_TraceLine(1145,0,__PYX_ERR(8, 1145, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, ((const char *)"</")));
 
     /* "src/lxml/serializer.pxi":1146
@@ -148503,6 +158122,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             tree.xmlOutputBufferWrite(self._c_out, 1, '>')
  * 
  */
+    __Pyx_TraceLine(1146,0,__PYX_ERR(8, 1146, __pyx_L1_error))
     if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(8, 1146, __pyx_L1_error)
     if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) __PYX_ERR(8, 1146, __pyx_L1_error)
     __pyx_t_6 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1146, __pyx_L1_error)
@@ -148516,6 +158136,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  * 
  *         if not self._element_stack:
  */
+    __Pyx_TraceLine(1147,0,__PYX_ERR(8, 1147, __pyx_L1_error))
     (void)(xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, ((const char *)">")));
 
     /* "src/lxml/serializer.pxi":1144
@@ -148534,6 +158155,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             self._status = WRITER_FINISHED
  *         if ok_to_write:
  */
+  __Pyx_TraceLine(1149,0,__PYX_ERR(8, 1149, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   __pyx_t_5 = ((!__pyx_t_1) != 0);
   if (__pyx_t_5) {
@@ -148545,6 +158167,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *         if ok_to_write:
  *             if not self._buffered:
  */
+    __Pyx_TraceLine(1150,0,__PYX_ERR(8, 1150, __pyx_L1_error))
     __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
 
     /* "src/lxml/serializer.pxi":1149
@@ -148563,6 +158186,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             if not self._buffered:
  *                 tree.xmlOutputBufferFlush(self._c_out)
  */
+  __Pyx_TraceLine(1151,0,__PYX_ERR(8, 1151, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ok_to_write); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(8, 1151, __pyx_L1_error)
   if (__pyx_t_5) {
 
@@ -148573,6 +158197,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *                 tree.xmlOutputBufferFlush(self._c_out)
  *             self._handle_error(self._c_out.error)
  */
+    __Pyx_TraceLine(1152,0,__PYX_ERR(8, 1152, __pyx_L1_error))
     __pyx_t_5 = ((!(__pyx_v_self->_buffered != 0)) != 0);
     if (__pyx_t_5) {
 
@@ -148583,6 +158208,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  *             self._handle_error(self._c_out.error)
  * 
  */
+      __Pyx_TraceLine(1153,0,__PYX_ERR(8, 1153, __pyx_L1_error))
       (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
       /* "src/lxml/serializer.pxi":1152
@@ -148601,6 +158227,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
  * 
  *     cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
  */
+    __Pyx_TraceLine(1154,0,__PYX_ERR(8, 1154, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -148637,6 +158264,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_elemen
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -148654,6 +158282,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
   PyObject *__pyx_v_i = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -148661,6 +158290,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_find_prefix", 0);
+  __Pyx_TraceCall("_find_prefix", __pyx_f[8], 1156, 0, __PYX_ERR(8, 1156, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1157
  * 
@@ -148669,6 +158299,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *             return None
  *         if href in flat_namespaces_map:
  */
+  __Pyx_TraceLine(1157,0,__PYX_ERR(8, 1157, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_href == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -148680,6 +158311,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *         if href in flat_namespaces_map:
  *             return flat_namespaces_map[href]
  */
+    __Pyx_TraceLine(1158,0,__PYX_ERR(8, 1158, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -148700,6 +158332,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *             return flat_namespaces_map[href]
  *         # need to create a new prefix
  */
+  __Pyx_TraceLine(1159,0,__PYX_ERR(8, 1159, __pyx_L1_error))
   if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(8, 1159, __pyx_L1_error)
@@ -148715,6 +158348,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *         # need to create a new prefix
  *         prefixes = flat_namespaces_map.values()
  */
+    __Pyx_TraceLine(1160,0,__PYX_ERR(8, 1160, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -148742,6 +158376,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *         i = 0
  *         while True:
  */
+  __Pyx_TraceLine(1162,0,__PYX_ERR(8, 1162, __pyx_L1_error))
   if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
     __PYX_ERR(8, 1162, __pyx_L1_error)
@@ -148758,6 +158393,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *         while True:
  *             prefix = _utf8('ns%d' % i)
  */
+  __Pyx_TraceLine(1163,0,__PYX_ERR(8, 1163, __pyx_L1_error))
   __Pyx_INCREF(__pyx_int_0);
   __pyx_v_i = __pyx_int_0;
 
@@ -148768,6 +158404,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *             prefix = _utf8('ns%d' % i)
  *             if prefix not in prefixes:
  */
+  __Pyx_TraceLine(1164,0,__PYX_ERR(8, 1164, __pyx_L1_error))
   while (1) {
 
     /* "src/lxml/serializer.pxi":1165
@@ -148777,6 +158414,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *             if prefix not in prefixes:
  *                 new_namespaces.append((b'xmlns', prefix, href))
  */
+    __Pyx_TraceLine(1165,0,__PYX_ERR(8, 1165, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_ns_d, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1165, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1165, __pyx_L1_error)
@@ -148792,6 +158430,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *                 new_namespaces.append((b'xmlns', prefix, href))
  *                 flat_namespaces_map[href] = prefix
  */
+    __Pyx_TraceLine(1166,0,__PYX_ERR(8, 1166, __pyx_L1_error))
     __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_prefix, __pyx_v_prefixes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(8, 1166, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -148803,6 +158442,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *                 flat_namespaces_map[href] = prefix
  *                 return prefix
  */
+      __Pyx_TraceLine(1167,0,__PYX_ERR(8, 1167, __pyx_L1_error))
       if (unlikely(__pyx_v_new_namespaces == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(8, 1167, __pyx_L1_error)
@@ -148828,6 +158468,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *                 return prefix
  *             i += 1
  */
+      __Pyx_TraceLine(1168,0,__PYX_ERR(8, 1168, __pyx_L1_error))
       if (unlikely(__pyx_v_flat_namespaces_map == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(8, 1168, __pyx_L1_error)
@@ -148841,6 +158482,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  *             i += 1
  * 
  */
+      __Pyx_TraceLine(1169,0,__PYX_ERR(8, 1169, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_prefix);
       __pyx_r = __pyx_v_prefix;
@@ -148862,6 +158504,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
  * 
  *     cdef _collect_namespaces(self, dict nsmap):
  */
+    __Pyx_TraceLine(1170,0,__PYX_ERR(8, 1170, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1170, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_4);
@@ -148889,6 +158532,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(CYTH
   __Pyx_XDECREF(__pyx_v_i);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -148907,6 +158551,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -148919,6 +158564,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
   int __pyx_t_9;
   int __pyx_t_10;
   __Pyx_RefNannySetupContext("_collect_namespaces", 0);
+  __Pyx_TraceCall("_collect_namespaces", __pyx_f[8], 1172, 0, __PYX_ERR(8, 1172, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1173
  * 
@@ -148927,6 +158573,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *         flat_namespaces_map = {}
  *         for ns, prefix in nsmap.iteritems():
  */
+  __Pyx_TraceLine(1173,0,__PYX_ERR(8, 1173, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_new_namespaces = ((PyObject*)__pyx_t_1);
@@ -148939,6 +158586,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *         for ns, prefix in nsmap.iteritems():
  *             flat_namespaces_map[ns] = prefix
  */
+  __Pyx_TraceLine(1174,0,__PYX_ERR(8, 1174, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_flat_namespaces_map = ((PyObject*)__pyx_t_1);
@@ -148951,6 +158599,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *             flat_namespaces_map[ns] = prefix
  *             if prefix is None:
  */
+  __Pyx_TraceLine(1175,0,__PYX_ERR(8, 1175, __pyx_L1_error))
   __pyx_t_2 = 0;
   if (unlikely(__pyx_v_nsmap == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -148979,6 +158628,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *             if prefix is None:
  *                 # use empty bytes rather than None to allow sorting
  */
+    __Pyx_TraceLine(1176,0,__PYX_ERR(8, 1176, __pyx_L1_error))
     if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(8, 1176, __pyx_L1_error)
 
     /* "src/lxml/serializer.pxi":1177
@@ -148988,6 +158638,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *                 # use empty bytes rather than None to allow sorting
  *                 new_namespaces.append((b'', b'xmlns', ns))
  */
+    __Pyx_TraceLine(1177,0,__PYX_ERR(8, 1177, __pyx_L1_error))
     __pyx_t_8 = (__pyx_v_prefix == Py_None);
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
@@ -148999,11 +158650,12 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *             else:
  *                 new_namespaces.append((b'xmlns', prefix, ns))
  */
+      __Pyx_TraceLine(1179,0,__PYX_ERR(8, 1179, __pyx_L1_error))
       __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1179, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_INCREF(__pyx_kp_b__16);
-      __Pyx_GIVEREF(__pyx_kp_b__16);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_b__16);
+      __Pyx_INCREF(__pyx_kp_b__23);
+      __Pyx_GIVEREF(__pyx_kp_b__23);
+      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_b__23);
       __Pyx_INCREF(__pyx_n_b_xmlns);
       __Pyx_GIVEREF(__pyx_n_b_xmlns);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_b_xmlns);
@@ -149030,6 +158682,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *         # merge in flat namespace map of parent
  *         if self._element_stack:
  */
+    __Pyx_TraceLine(1181,0,__PYX_ERR(8, 1181, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1181, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -149056,6 +158709,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *             for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems():
  *                 if flat_namespaces_map.get(ns) is None:
  */
+  __Pyx_TraceLine(1183,0,__PYX_ERR(8, 1183, __pyx_L1_error))
   __pyx_t_9 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
   if (__pyx_t_9) {
 
@@ -149066,6 +158720,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *                 if flat_namespaces_map.get(ns) is None:
  *                     # unknown or empty prefix => prefer a 'real' prefix
  */
+    __Pyx_TraceLine(1184,0,__PYX_ERR(8, 1184, __pyx_L1_error))
     __pyx_t_3 = 0;
     if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
@@ -149104,6 +158759,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *                     # unknown or empty prefix => prefer a 'real' prefix
  *                     flat_namespaces_map[ns] = prefix
  */
+      __Pyx_TraceLine(1185,0,__PYX_ERR(8, 1185, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_flat_namespaces_map, __pyx_v_ns, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 1185, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 = (__pyx_t_5 == Py_None);
@@ -149118,6 +158774,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  *         return flat_namespaces_map, new_namespaces
  * 
  */
+        __Pyx_TraceLine(1187,0,__PYX_ERR(8, 1187, __pyx_L1_error))
         if (unlikely(PyDict_SetItem(__pyx_v_flat_namespaces_map, __pyx_v_ns, __pyx_v_prefix) < 0)) __PYX_ERR(8, 1187, __pyx_L1_error)
 
         /* "src/lxml/serializer.pxi":1185
@@ -149147,6 +158804,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
  * 
  *     def write(self, *args, bint with_tail=True, bint pretty_print=False, method=None):
  */
+  __Pyx_TraceLine(1188,0,__PYX_ERR(8, 1188, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1188, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -149181,6 +158839,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespac
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -149278,6 +158937,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
   PyObject *__pyx_v_name = NULL;
   CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -149295,7 +158955,9 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
   int __pyx_t_14;
   Py_ssize_t __pyx_t_15;
   Py_UCS4 __pyx_t_16;
+  __Pyx_TraceFrameInit(__pyx_codeobj__277)
   __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_TraceCall("write", __pyx_f[8], 1190, 0, __PYX_ERR(8, 1190, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1198
  *         to temporarily override the output method.
@@ -149304,6 +158966,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *         c_method = self._method if method is None else _findOutputMethod(method)
  * 
  */
+  __Pyx_TraceLine(1198,0,__PYX_ERR(8, 1198, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -149320,6 +158983,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *         for content in args:
  */
+  __Pyx_TraceLine(1199,0,__PYX_ERR(8, 1199, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_method == Py_None);
   if ((__pyx_t_2 != 0)) {
     __pyx_t_1 = __pyx_v_self->_method;
@@ -149336,6 +159000,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *             if _isString(content):
  *                 if self._status != WRITER_IN_ELEMENT:
  */
+  __Pyx_TraceLine(1201,0,__PYX_ERR(8, 1201, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_args; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
   for (;;) {
     if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
@@ -149355,6 +159020,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 if self._status != WRITER_IN_ELEMENT:
  *                     if self._status > WRITER_IN_ELEMENT or content.strip():
  */
+    __Pyx_TraceLine(1202,0,__PYX_ERR(8, 1202, __pyx_L1_error))
     __pyx_t_2 = (_isString(__pyx_v_content) != 0);
     if (__pyx_t_2) {
 
@@ -149365,6 +159031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     if self._status > WRITER_IN_ELEMENT or content.strip():
  *                         raise LxmlSyntaxError("not in an element")
  */
+      __Pyx_TraceLine(1203,0,__PYX_ERR(8, 1203, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
       if (__pyx_t_2) {
 
@@ -149375,6 +159042,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                         raise LxmlSyntaxError("not in an element")
  *                 bstring = _utf8(content)
  */
+        __Pyx_TraceLine(1204,0,__PYX_ERR(8, 1204, __pyx_L1_error))
         __pyx_t_7 = ((__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
         if (!__pyx_t_7) {
         } else {
@@ -149414,9 +159082,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 bstring = _utf8(content)
  *                 if not bstring:
  */
+          __Pyx_TraceLine(1205,0,__PYX_ERR(8, 1205, __pyx_L1_error))
           __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 1205, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1205, __pyx_L1_error)
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__278, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1205, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_8, 0, 0, 0);
@@ -149448,6 +159117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 if not bstring:
  *                     continue
  */
+      __Pyx_TraceLine(1206,0,__PYX_ERR(8, 1206, __pyx_L1_error))
       __pyx_t_8 = __pyx_f_4lxml_5etree__utf8(__pyx_v_content); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1206, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_XDECREF_SET(__pyx_v_bstring, ((PyObject*)__pyx_t_8));
@@ -149460,6 +159130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     continue
  * 
  */
+      __Pyx_TraceLine(1207,0,__PYX_ERR(8, 1207, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_bstring != Py_None)&&(PyBytes_GET_SIZE(__pyx_v_bstring) != 0);
       __pyx_t_7 = ((!__pyx_t_2) != 0);
       if (__pyx_t_7) {
@@ -149471,6 +159142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *                 ns, name, _, _ = self._element_stack[-1]
  */
+        __Pyx_TraceLine(1208,0,__PYX_ERR(8, 1208, __pyx_L1_error))
         goto __pyx_L3_continue;
 
         /* "src/lxml/serializer.pxi":1207
@@ -149489,6 +159161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 if (c_method == OUTPUT_METHOD_HTML and
  *                         ns in (None, b'http://www.w3.org/1999/xhtml') and
  */
+      __Pyx_TraceLine(1210,0,__PYX_ERR(8, 1210, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(8, 1210, __pyx_L1_error)
@@ -149570,6 +159243,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                         ns in (None, b'http://www.w3.org/1999/xhtml') and
  *                         name in (b'script', b'style')):
  */
+      __Pyx_TraceLine(1211,0,__PYX_ERR(8, 1211, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML) != 0);
       if (__pyx_t_2) {
       } else {
@@ -149584,6 +159258,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                         name in (b'script', b'style')):
  *                     tree.xmlOutputBufferWrite(self._c_out, len(bstring), _cstr(bstring))
  */
+      __Pyx_TraceLine(1212,0,__PYX_ERR(8, 1212, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_ns);
       __pyx_t_8 = __pyx_v_ns;
       __pyx_t_11 = PyObject_RichCompare(__pyx_t_8, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1212, __pyx_L1_error)
@@ -149612,6 +159287,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     tree.xmlOutputBufferWrite(self._c_out, len(bstring), _cstr(bstring))
  * 
  */
+      __Pyx_TraceLine(1213,0,__PYX_ERR(8, 1213, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_name);
       __pyx_t_8 = __pyx_v_name;
       __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_8, __pyx_n_b_script, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(8, 1213, __pyx_L1_error)
@@ -149635,6 +159311,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                         ns in (None, b'http://www.w3.org/1999/xhtml') and
  *                         name in (b'script', b'style')):
  */
+      __Pyx_TraceLine(1211,0,__PYX_ERR(8, 1211, __pyx_L1_error))
       if (__pyx_t_7) {
 
         /* "src/lxml/serializer.pxi":1214
@@ -149644,6 +159321,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *                 else:
  */
+        __Pyx_TraceLine(1214,0,__PYX_ERR(8, 1214, __pyx_L1_error))
         if (unlikely(__pyx_v_bstring == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
           __PYX_ERR(8, 1214, __pyx_L1_error)
@@ -149668,6 +159346,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *             elif iselement(content):
  */
+      __Pyx_TraceLine(1217,0,__PYX_ERR(8, 1217, __pyx_L1_error))
       /*else*/ {
         (void)(xmlOutputBufferWriteEscape(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_bstring), NULL));
       }
@@ -149690,6 +159369,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 if self._status > WRITER_IN_ELEMENT:
  *                     raise LxmlSyntaxError("cannot append trailing element to complete XML document")
  */
+    __Pyx_TraceLine(1219,0,__PYX_ERR(8, 1219, __pyx_L1_error))
     __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_iselement); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1219, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __pyx_t_10 = NULL;
@@ -149746,6 +159426,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     raise LxmlSyntaxError("cannot append trailing element to complete XML document")
  *                 _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
  */
+      __Pyx_TraceLine(1220,0,__PYX_ERR(8, 1220, __pyx_L1_error))
       __pyx_t_7 = ((__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
       if (unlikely(__pyx_t_7)) {
 
@@ -149756,9 +159437,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
  *                                    self._c_encoding, NULL, c_method,
  */
+        __Pyx_TraceLine(1221,0,__PYX_ERR(8, 1221, __pyx_L1_error))
         __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 1221, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1221, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__279, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1221, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_Raise(__pyx_t_11, 0, 0, 0);
@@ -149781,6 +159463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                                    self._c_encoding, NULL, c_method,
  *                                    False, False, pretty_print, with_tail, False)
  */
+      __Pyx_TraceLine(1222,0,__PYX_ERR(8, 1222, __pyx_L1_error))
       __pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_self->_c_out, ((struct LxmlElement *)__pyx_v_content)->_c_node, __pyx_v_self->_c_encoding, NULL, __pyx_v_c_method, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, 0);
 
       /* "src/lxml/serializer.pxi":1225
@@ -149790,6 +159473,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     if not self._element_stack:
  *                         self._status = WRITER_FINISHED
  */
+      __Pyx_TraceLine(1225,0,__PYX_ERR(8, 1225, __pyx_L1_error))
       __pyx_t_7 = ((((struct LxmlElement *)__pyx_v_content)->_c_node->type == XML_ELEMENT_NODE) != 0);
       if (__pyx_t_7) {
 
@@ -149800,6 +159484,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                         self._status = WRITER_FINISHED
  * 
  */
+        __Pyx_TraceLine(1226,0,__PYX_ERR(8, 1226, __pyx_L1_error))
         __pyx_t_7 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
         __pyx_t_2 = ((!__pyx_t_7) != 0);
         if (__pyx_t_2) {
@@ -149811,6 +159496,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *             elif content is not None:
  */
+          __Pyx_TraceLine(1227,0,__PYX_ERR(8, 1227, __pyx_L1_error))
           __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
 
           /* "src/lxml/serializer.pxi":1226
@@ -149848,6 +159534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                 raise TypeError(
  *                     f"got invalid input value of type {type(content)}, expected string or Element")
  */
+    __Pyx_TraceLine(1229,0,__PYX_ERR(8, 1229, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_content != Py_None);
     __pyx_t_7 = (__pyx_t_2 != 0);
     if (unlikely(__pyx_t_7)) {
@@ -149859,6 +159546,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *             self._handle_error(self._c_out.error)
  *         if not self._buffered:
  */
+      __Pyx_TraceLine(1231,0,__PYX_ERR(8, 1231, __pyx_L1_error))
       __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1231, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_15 = 0;
@@ -149889,6 +159577,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *                     f"got invalid input value of type {type(content)}, expected string or Element")
  *             self._handle_error(self._c_out.error)
  */
+      __Pyx_TraceLine(1230,0,__PYX_ERR(8, 1230, __pyx_L1_error))
       __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1230, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -149913,6 +159602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *         if not self._buffered:
  *             tree.xmlOutputBufferFlush(self._c_out)
  */
+    __Pyx_TraceLine(1232,0,__PYX_ERR(8, 1232, __pyx_L1_error))
     __pyx_t_11 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 1232, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -149924,6 +159614,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *             if _isString(content):
  *                 if self._status != WRITER_IN_ELEMENT:
  */
+    __Pyx_TraceLine(1201,0,__PYX_ERR(8, 1201, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -149935,6 +159626,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *             tree.xmlOutputBufferFlush(self._c_out)
  *             self._handle_error(self._c_out.error)
  */
+  __Pyx_TraceLine(1233,0,__PYX_ERR(8, 1233, __pyx_L1_error))
   __pyx_t_7 = ((!(__pyx_v_self->_buffered != 0)) != 0);
   if (__pyx_t_7) {
 
@@ -149945,6 +159637,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  *             self._handle_error(self._c_out.error)
  * 
  */
+    __Pyx_TraceLine(1234,0,__PYX_ERR(8, 1234, __pyx_L1_error))
     (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
     /* "src/lxml/serializer.pxi":1235
@@ -149954,6 +159647,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
  * 
  *     def flush(self):
  */
+    __Pyx_TraceLine(1235,0,__PYX_ERR(8, 1235, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1235, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -149995,6 +159689,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_12write(struct _
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v__);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150024,9 +159719,12 @@ static PyObject *__pyx_pw_4lxml_5etree_22_IncrementalFileWriter_15flush(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__280)
   __Pyx_RefNannySetupContext("flush", 0);
+  __Pyx_TraceCall("flush", __pyx_f[8], 1237, 0, __PYX_ERR(8, 1237, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1242
  *         Write any pending content of the current output buffer to the stream.
@@ -150035,6 +159733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct _
  *         tree.xmlOutputBufferFlush(self._c_out)
  *         self._handle_error(self._c_out.error)
  */
+  __Pyx_TraceLine(1242,0,__PYX_ERR(8, 1242, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_out != NULL) != 0))) {
@@ -150051,6 +159750,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct _
  *         self._handle_error(self._c_out.error)
  * 
  */
+  __Pyx_TraceLine(1243,0,__PYX_ERR(8, 1243, __pyx_L1_error))
   (void)(xmlOutputBufferFlush(__pyx_v_self->_c_out));
 
   /* "src/lxml/serializer.pxi":1244
@@ -150060,6 +159760,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct _
  * 
  *     cdef _close(self, bint raise_on_error):
  */
+  __Pyx_TraceLine(1244,0,__PYX_ERR(8, 1244, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1244, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -150081,6 +159782,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150096,12 +159798,14 @@ static PyObject *__pyx_pf_4lxml_5etree_22_IncrementalFileWriter_14flush(struct _
 static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, int __pyx_v_raise_on_error) {
   int __pyx_v_error_result;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_close", 0);
+  __Pyx_TraceCall("_close", __pyx_f[8], 1246, 0, __PYX_ERR(8, 1246, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1247
  * 
@@ -150110,6 +159814,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *             if self._status < WRITER_IN_ELEMENT:
  *                 raise LxmlSyntaxError("no content written")
  */
+  __Pyx_TraceLine(1247,0,__PYX_ERR(8, 1247, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_raise_on_error != 0);
   if (__pyx_t_1) {
 
@@ -150120,6 +159825,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *                 raise LxmlSyntaxError("no content written")
  *             if self._element_stack:
  */
+    __Pyx_TraceLine(1248,0,__PYX_ERR(8, 1248, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_status < __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -150130,9 +159836,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *             if self._element_stack:
  *                 raise LxmlSyntaxError("pending open tags on close")
  */
+      __Pyx_TraceLine(1249,0,__PYX_ERR(8, 1249, __pyx_L1_error))
       __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1249, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1249, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__281, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1249, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -150155,6 +159862,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *                 raise LxmlSyntaxError("pending open tags on close")
  *         error_result = self._c_out.error
  */
+    __Pyx_TraceLine(1250,0,__PYX_ERR(8, 1250, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_self->_element_stack != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_element_stack) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -150165,9 +159873,10 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         error_result = self._c_out.error
  *         if error_result == xmlerror.XML_ERR_OK:
  */
+      __Pyx_TraceLine(1251,0,__PYX_ERR(8, 1251, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1251, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1251, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__282, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1251, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
@@ -150199,6 +159908,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         if error_result == xmlerror.XML_ERR_OK:
  *             error_result = tree.xmlOutputBufferClose(self._c_out)
  */
+  __Pyx_TraceLine(1252,0,__PYX_ERR(8, 1252, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_c_out->error;
   __pyx_v_error_result = __pyx_t_4;
 
@@ -150209,6 +159919,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *             error_result = tree.xmlOutputBufferClose(self._c_out)
  *             if error_result > 0:
  */
+  __Pyx_TraceLine(1253,0,__PYX_ERR(8, 1253, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_error_result == XML_ERR_OK) != 0);
   if (__pyx_t_1) {
 
@@ -150219,6 +159930,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *             if error_result > 0:
  *                 error_result = xmlerror.XML_ERR_OK
  */
+    __Pyx_TraceLine(1254,0,__PYX_ERR(8, 1254, __pyx_L1_error))
     __pyx_v_error_result = xmlOutputBufferClose(__pyx_v_self->_c_out);
 
     /* "src/lxml/serializer.pxi":1255
@@ -150228,6 +159940,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *                 error_result = xmlerror.XML_ERR_OK
  *         else:
  */
+    __Pyx_TraceLine(1255,0,__PYX_ERR(8, 1255, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_error_result > 0) != 0);
     if (__pyx_t_1) {
 
@@ -150238,6 +159951,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         else:
  *             tree.xmlOutputBufferClose(self._c_out)
  */
+      __Pyx_TraceLine(1256,0,__PYX_ERR(8, 1256, __pyx_L1_error))
       __pyx_v_error_result = XML_ERR_OK;
 
       /* "src/lxml/serializer.pxi":1255
@@ -150266,6 +159980,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         self._status = WRITER_FINISHED
  *         self._c_out = NULL
  */
+  __Pyx_TraceLine(1258,0,__PYX_ERR(8, 1258, __pyx_L1_error))
   /*else*/ {
     (void)(xmlOutputBufferClose(__pyx_v_self->_c_out));
   }
@@ -150278,6 +159993,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         self._c_out = NULL
  *         del self._element_stack[:]
  */
+  __Pyx_TraceLine(1259,0,__PYX_ERR(8, 1259, __pyx_L1_error))
   __pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_FINISHED;
 
   /* "src/lxml/serializer.pxi":1260
@@ -150287,6 +160003,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         del self._element_stack[:]
  *         if raise_on_error:
  */
+  __Pyx_TraceLine(1260,0,__PYX_ERR(8, 1260, __pyx_L1_error))
   __pyx_v_self->_c_out = NULL;
 
   /* "src/lxml/serializer.pxi":1261
@@ -150296,6 +160013,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *         if raise_on_error:
  *             self._handle_error(error_result)
  */
+  __Pyx_TraceLine(1261,0,__PYX_ERR(8, 1261, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(8, 1261, __pyx_L1_error)
@@ -150309,6 +160027,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  *             self._handle_error(error_result)
  * 
  */
+  __Pyx_TraceLine(1262,0,__PYX_ERR(8, 1262, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_raise_on_error != 0);
   if (__pyx_t_1) {
 
@@ -150319,6 +160038,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
  * 
  *     cdef _handle_error(self, int error_result):
  */
+    __Pyx_TraceLine(1263,0,__PYX_ERR(8, 1263, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_error_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1263, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -150350,6 +160070,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150364,12 +160085,14 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(struct __p
 
 static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_self, int __pyx_v_error_result) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_handle_error", 0);
+  __Pyx_TraceCall("_handle_error", __pyx_f[8], 1265, 0, __PYX_ERR(8, 1265, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1266
  * 
@@ -150378,6 +160101,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(str
  *             if self._target is not None:
  *                 self._target._exc_context._raise_if_stored()
  */
+  __Pyx_TraceLine(1266,0,__PYX_ERR(8, 1266, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_error_result != XML_ERR_OK) != 0);
   if (__pyx_t_1) {
 
@@ -150388,6 +160112,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(str
  *                 self._target._exc_context._raise_if_stored()
  *             _raiseSerialisationError(error_result)
  */
+    __Pyx_TraceLine(1267,0,__PYX_ERR(8, 1267, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_target) != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -150399,6 +160124,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(str
  *             _raiseSerialisationError(error_result)
  * 
  */
+      __Pyx_TraceLine(1268,0,__PYX_ERR(8, 1268, __pyx_L1_error))
       __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_target->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_self->_target->_exc_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 1268, __pyx_L1_error)
 
       /* "src/lxml/serializer.pxi":1267
@@ -150417,6 +160143,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(str
  * 
  * 
  */
+    __Pyx_TraceLine(1269,0,__PYX_ERR(8, 1269, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 1269, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -150447,6 +160174,7 @@ static PyObject *__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(str
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150477,9 +160205,11 @@ static int __pyx_pw_4lxml_5etree_16_AsyncDataWriter_1__cinit__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_16_AsyncDataWriter___cinit__(struct __pyx_obj_4lxml_5etree__AsyncDataWriter *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 1276, 0, __PYX_ERR(8, 1276, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1277
  *     cdef list _data
@@ -150488,6 +160218,7 @@ static int __pyx_pf_4lxml_5etree_16_AsyncDataWriter___cinit__(struct __pyx_obj_4
  * 
  *     cdef bytes collect(self):
  */
+  __Pyx_TraceLine(1277,0,__PYX_ERR(8, 1277, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1277, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -150512,6 +160243,7 @@ static int __pyx_pf_4lxml_5etree_16_AsyncDataWriter___cinit__(struct __pyx_obj_4
   __Pyx_AddTraceback("lxml.etree._AsyncDataWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150527,10 +160259,12 @@ static int __pyx_pf_4lxml_5etree_16_AsyncDataWriter___cinit__(struct __pyx_obj_4
 static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_obj_4lxml_5etree__AsyncDataWriter *__pyx_v_self) {
   PyObject *__pyx_v_data = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("collect", 0);
+  __Pyx_TraceCall("collect", __pyx_f[8], 1279, 0, __PYX_ERR(8, 1279, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1280
  * 
@@ -150539,9 +160273,10 @@ static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_ob
  *         del self._data[:]
  *         return data
  */
+  __Pyx_TraceLine(1280,0,__PYX_ERR(8, 1280, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_data;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyBytes_Join(__pyx_kp_b__16, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1280, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBytes_Join(__pyx_kp_b__23, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1280, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_data = __pyx_t_2;
@@ -150554,6 +160289,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_ob
  *         return data
  * 
  */
+  __Pyx_TraceLine(1281,0,__PYX_ERR(8, 1281, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_data == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(8, 1281, __pyx_L1_error)
@@ -150567,6 +160303,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_ob
  * 
  *     def write(self, data):
  */
+  __Pyx_TraceLine(1282,0,__PYX_ERR(8, 1282, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (!(likely(PyBytes_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(8, 1282, __pyx_L1_error)
   __Pyx_INCREF(__pyx_v_data);
@@ -150590,6 +160327,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(struct __pyx_ob
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_data);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150618,9 +160356,12 @@ static PyObject *__pyx_pw_4lxml_5etree_16_AsyncDataWriter_3write(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_16_AsyncDataWriter_2write(struct __pyx_obj_4lxml_5etree__AsyncDataWriter *__pyx_v_self, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__283)
   __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_TraceCall("write", __pyx_f[8], 1284, 0, __PYX_ERR(8, 1284, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1285
  * 
@@ -150629,6 +160370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_AsyncDataWriter_2write(struct __pyx_ob
  * 
  *     def close(self):
  */
+  __Pyx_TraceLine(1285,0,__PYX_ERR(8, 1285, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_data == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(8, 1285, __pyx_L1_error)
@@ -150651,6 +160393,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_AsyncDataWriter_2write(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150679,12 +160422,21 @@ static PyObject *__pyx_pw_4lxml_5etree_16_AsyncDataWriter_5close(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_16_AsyncDataWriter_4close(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__AsyncDataWriter *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__284)
   __Pyx_RefNannySetupContext("close", 0);
+  __Pyx_TraceCall("close", __pyx_f[8], 1287, 0, __PYX_ERR(8, 1287, __pyx_L1_error));
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._AsyncDataWriter.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150809,11 +160561,13 @@ static int __pyx_pw_4lxml_5etree_27_AsyncIncrementalFileWriter_1__cinit__(PyObje
 
 static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_async_outfile, PyObject *__pyx_v_encoding, int __pyx_v_compresslevel, int __pyx_v_close, int __pyx_v_buffered, int __pyx_v_method) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 1301, 0, __PYX_ERR(8, 1301, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1303
  *     def __cinit__(self, async_outfile, bytes encoding, int compresslevel, bint close,
@@ -150822,6 +160576,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *         self._async_outfile = async_outfile
  *         self._should_close = close
  */
+  __Pyx_TraceLine(1303,0,__PYX_ERR(8, 1303, __pyx_L1_error))
   __pyx_v_self->_flush_after_writes = 20;
 
   /* "src/lxml/serializer.pxi":1304
@@ -150831,6 +160586,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *         self._should_close = close
  *         self._buffered = buffered
  */
+  __Pyx_TraceLine(1304,0,__PYX_ERR(8, 1304, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_async_outfile);
   __Pyx_GIVEREF(__pyx_v_async_outfile);
   __Pyx_GOTREF(__pyx_v_self->_async_outfile);
@@ -150844,6 +160600,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *         self._buffered = buffered
  *         self._buffer = _AsyncDataWriter()
  */
+  __Pyx_TraceLine(1305,0,__PYX_ERR(8, 1305, __pyx_L1_error))
   __pyx_v_self->_should_close = __pyx_v_close;
 
   /* "src/lxml/serializer.pxi":1306
@@ -150853,6 +160610,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *         self._buffer = _AsyncDataWriter()
  *         self._writer = _IncrementalFileWriter(
  */
+  __Pyx_TraceLine(1306,0,__PYX_ERR(8, 1306, __pyx_L1_error))
   __pyx_v_self->_buffered = __pyx_v_buffered;
 
   /* "src/lxml/serializer.pxi":1307
@@ -150862,6 +160620,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *         self._writer = _IncrementalFileWriter(
  *             self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
  */
+  __Pyx_TraceLine(1307,0,__PYX_ERR(8, 1307, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1307, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -150877,6 +160636,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  * 
  *     cdef bytes _flush(self):
  */
+  __Pyx_TraceLine(1309,0,__PYX_ERR(8, 1309, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_compresslevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -150887,6 +160647,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *             self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
  * 
  */
+  __Pyx_TraceLine(1308,0,__PYX_ERR(8, 1308, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1308, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_buffer));
@@ -150906,6 +160667,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  * 
  *     cdef bytes _flush(self):
  */
+  __Pyx_TraceLine(1309,0,__PYX_ERR(8, 1309, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_close, Py_True) < 0) __PYX_ERR(8, 1309, __pyx_L1_error)
@@ -150922,6 +160684,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
  *             self._buffer, encoding, compresslevel, close=True, buffered=False, method=method)
  * 
  */
+  __Pyx_TraceLine(1308,0,__PYX_ERR(8, 1308, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter), __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1308, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -150950,6 +160713,7 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
   __Pyx_AddTraceback("lxml.etree._AsyncIncrementalFileWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -150964,12 +160728,14 @@ static int __pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter___cinit__(struct
 
 static PyObject *__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   Py_ssize_t __pyx_t_4;
   __Pyx_RefNannySetupContext("_flush", 0);
+  __Pyx_TraceCall("_flush", __pyx_f[8], 1311, 0, __PYX_ERR(8, 1311, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1312
  * 
@@ -150978,6 +160744,7 @@ static PyObject *__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(struc
  *             return self._buffer.collect()
  *         return None
  */
+  __Pyx_TraceLine(1312,0,__PYX_ERR(8, 1312, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_self->_buffered != 0)) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -151004,6 +160771,7 @@ static PyObject *__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(struc
  *         return None
  * 
  */
+    __Pyx_TraceLine(1313,0,__PYX_ERR(8, 1313, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1313, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -151027,6 +160795,7 @@ static PyObject *__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(struc
  * 
  *     async def flush(self):
  */
+  __Pyx_TraceLine(1314,0,__PYX_ERR(8, 1314, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -151046,6 +160815,7 @@ static PyObject *__pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(struc
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -151090,7 +160860,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_2flush(stru
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2, __pyx_codeobj__96, (PyObject *) __pyx_cur_scope, __pyx_n_s_flush, __pyx_n_s_AsyncIncrementalFileWriter_flus, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1316, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2, __pyx_codeobj__285, (PyObject *) __pyx_cur_scope, __pyx_n_s_flush, __pyx_n_s_AsyncIncrementalFileWriter_flus, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1316, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -151110,6 +160880,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_2_flush *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_2_flush *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -151117,10 +160888,13 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("flush", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__285)
+  __Pyx_TraceCall("flush", __pyx_f[8], 1316, 0, __PYX_ERR(8, 1316, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -151134,6 +160908,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
  *         data = self._buffer.collect()
  *         if data:
  */
+  __Pyx_TraceLine(1317,0,__PYX_ERR(8, 1317, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_flush); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -151163,6 +160938,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
  *         if data:
  *             await self._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1318,0,__PYX_ERR(8, 1318, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -151176,6 +160952,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
  *             await self._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1319,0,__PYX_ERR(8, 1319, __pyx_L1_error))
   __pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_4) {
 
@@ -151186,6 +160963,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
  * 
  *     async def write_declaration(self, version=None, standalone=None, doctype=None):
  */
+    __Pyx_TraceLine(1320,0,__PYX_ERR(8, 1320, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1320, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = NULL;
@@ -151236,6 +161014,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -151283,6 +161062,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_4generator2
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -151405,7 +161185,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_5write_decl
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_doctype);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_doctype);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3, __pyx_codeobj__97, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_declaration, __pyx_n_s_AsyncIncrementalFileWriter_writ, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1322, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3, __pyx_codeobj__286, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_declaration, __pyx_n_s_AsyncIncrementalFileWriter_writ, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1322, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -151425,6 +161205,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_3_write_declaration *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_3_write_declaration *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -151433,10 +161214,13 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
   int __pyx_t_6;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("write_declaration", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__286)
+  __Pyx_TraceCall("write_declaration", __pyx_f[8], 1322, 0, __PYX_ERR(8, 1322, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -151450,6 +161234,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
  *         data = self._flush()
  *         if data:
  */
+  __Pyx_TraceLine(1323,0,__PYX_ERR(8, 1323, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_declaration); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1323, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -151509,6 +161294,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
  *         if data:
  *             await self._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1324,0,__PYX_ERR(8, 1324, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1324, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -151522,6 +161308,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
  *             await self._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1325,0,__PYX_ERR(8, 1325, __pyx_L1_error))
   __pyx_t_6 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_6) {
 
@@ -151532,6 +161319,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
  * 
  *     async def write_doctype(self, doctype):
  */
+    __Pyx_TraceLine(1326,0,__PYX_ERR(8, 1326, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = NULL;
@@ -151582,6 +161370,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -151629,6 +161418,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_7generator3
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -151676,7 +161466,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_8write_doct
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_doctype);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_doctype);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator4, __pyx_codeobj__98, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_doctype, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1328, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator4, __pyx_codeobj__287, (PyObject *) __pyx_cur_scope, __pyx_n_s_write_doctype, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1328, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -151696,6 +161486,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_4_write_doctype *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_4_write_doctype *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -151703,10 +161494,13 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
   int __pyx_t_5;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("write_doctype", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__287)
+  __Pyx_TraceCall("write_doctype", __pyx_f[8], 1328, 0, __PYX_ERR(8, 1328, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -151720,6 +161514,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
  *         data = self._flush()
  *         if data:
  */
+  __Pyx_TraceLine(1329,0,__PYX_ERR(8, 1329, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write_doctype); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -151774,6 +161569,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
  *         if data:
  *             await self._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1330,0,__PYX_ERR(8, 1330, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1330, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -151787,6 +161583,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
  *             await self._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1331,0,__PYX_ERR(8, 1331, __pyx_L1_error))
   __pyx_t_5 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_5) {
 
@@ -151797,6 +161594,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
  * 
  *     async def write(self, *args, with_tail=True, pretty_print=False, method=None):
  */
+    __Pyx_TraceLine(1332,0,__PYX_ERR(8, 1332, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1332, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = NULL;
@@ -151847,6 +161645,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -151894,6 +161693,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_10generator
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152006,7 +161806,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_11write(str
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator5, __pyx_codeobj__99, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1334, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator5, __pyx_codeobj__288, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1334, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -152026,6 +161826,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_5_write *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_5_write *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -152033,10 +161834,13 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__288)
+  __Pyx_TraceCall("write", __pyx_f[8], 1334, 0, __PYX_ERR(8, 1334, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -152050,6 +161854,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
  *         data = self._flush()
  *         if data:
  */
+  __Pyx_TraceLine(1335,0,__PYX_ERR(8, 1335, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_writer), __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1335, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1335, __pyx_L1_error)
@@ -152070,6 +161875,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
  *         if data:
  *             await self._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1336,0,__PYX_ERR(8, 1336, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1336, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -152083,6 +161889,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
  *             await self._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1337,0,__PYX_ERR(8, 1337, __pyx_L1_error))
   __pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_4) {
 
@@ -152093,6 +161900,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
  * 
  *     def method(self, method):
  */
+    __Pyx_TraceLine(1338,0,__PYX_ERR(8, 1338, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1338, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = NULL;
@@ -152143,6 +161951,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -152190,6 +161999,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_13generator
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152218,12 +162028,15 @@ static PyObject *__pyx_pw_4lxml_5etree_27_AsyncIncrementalFileWriter_15method(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_14method(struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_method) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__289)
   __Pyx_RefNannySetupContext("method", 0);
+  __Pyx_TraceCall("method", __pyx_f[8], 1340, 0, __PYX_ERR(8, 1340, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1341
  * 
@@ -152232,6 +162045,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_14method(st
  * 
  *     def element(self, tag, attrib=None, nsmap=None, method=None, **_extra):
  */
+  __Pyx_TraceLine(1341,0,__PYX_ERR(8, 1341, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -152300,6 +162114,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_14method(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152412,11 +162227,14 @@ static PyObject *__pyx_pw_4lxml_5etree_27_AsyncIncrementalFileWriter_17element(P
 static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_16element(struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v_method, PyObject *__pyx_v__extra) {
   PyObject *__pyx_v_element_writer = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__290)
   __Pyx_RefNannySetupContext("element", 0);
+  __Pyx_TraceCall("element", __pyx_f[8], 1343, 0, __PYX_ERR(8, 1343, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1344
  * 
@@ -152425,6 +162243,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_16element(s
  *         return _AsyncFileWriterElement(element_writer, self)
  * 
  */
+  __Pyx_TraceLine(1344,0,__PYX_ERR(8, 1344, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_writer), __pyx_n_s_element); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1344, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1344, __pyx_L1_error)
@@ -152455,6 +162274,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_16element(s
  * 
  *     async def _close(self, bint raise_on_error):
  */
+  __Pyx_TraceLine(1345,0,__PYX_ERR(8, 1345, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1345, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -152489,6 +162309,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_16element(s
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element_writer);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152544,7 +162365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_27_AsyncIncrementalFileWriter_18_close(st
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __pyx_cur_scope->__pyx_v_raise_on_error = __pyx_v_raise_on_error;
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator6, __pyx_codeobj__100, (PyObject *) __pyx_cur_scope, __pyx_n_s_close_2, __pyx_n_s_AsyncIncrementalFileWriter__clo, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1347, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator6, __pyx_codeobj__291, (PyObject *) __pyx_cur_scope, __pyx_n_s_close_2, __pyx_n_s_AsyncIncrementalFileWriter__clo, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1347, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -152564,6 +162385,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_6__close *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_6__close *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
@@ -152571,11 +162393,14 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_close", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__291)
+  __Pyx_TraceCall("_close", __pyx_f[8], 1347, 0, __PYX_ERR(8, 1347, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     case 2: goto __pyx_L7_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -152589,6 +162414,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  *         data = self._buffer.collect()
  *         if data:
  */
+  __Pyx_TraceLine(1348,0,__PYX_ERR(8, 1348, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_cur_scope->__pyx_v_self->_writer, __pyx_cur_scope->__pyx_v_raise_on_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1348, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -152600,6 +162426,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  *         if data:
  *             await self._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1349,0,__PYX_ERR(8, 1349, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_16_AsyncDataWriter_collect(__pyx_cur_scope->__pyx_v_self->_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1349, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -152613,6 +162440,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  *             await self._async_outfile.write(data)
  *         if self._should_close:
  */
+  __Pyx_TraceLine(1350,0,__PYX_ERR(8, 1350, __pyx_L1_error))
   __pyx_t_2 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_2) {
 
@@ -152623,6 +162451,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  *         if self._should_close:
  *             await self._async_outfile.close()
  */
+    __Pyx_TraceLine(1351,0,__PYX_ERR(8, 1351, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1351, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
@@ -152673,6 +162502,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -152704,6 +162534,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  *             await self._async_outfile.close()
  * 
  */
+  __Pyx_TraceLine(1352,0,__PYX_ERR(8, 1352, __pyx_L1_error))
   __pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->_should_close != 0);
   if (__pyx_t_2) {
 
@@ -152714,6 +162545,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
  * 
  * 
  */
+    __Pyx_TraceLine(1353,0,__PYX_ERR(8, 1353, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_async_outfile, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1353, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = NULL;
@@ -152739,6 +162571,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -152786,6 +162619,7 @@ static PyObject *__pyx_gb_4lxml_5etree_27_AsyncIncrementalFileWriter_20generator
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152867,8 +162701,10 @@ static int __pyx_pw_4lxml_5etree_23_AsyncFileWriterElement_1__cinit__(PyObject *
 
 static int __pyx_pf_4lxml_5etree_23_AsyncFileWriterElement___cinit__(struct __pyx_obj_4lxml_5etree__AsyncFileWriterElement *__pyx_v_self, struct __pyx_obj_4lxml_5etree__FileWriterElement *__pyx_v_element_writer, struct __pyx_obj_4lxml_5etree__AsyncIncrementalFileWriter *__pyx_v_writer) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 1362, 0, __PYX_ERR(8, 1362, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1364
  *     def __cinit__(self, _FileWriterElement element_writer not None,
@@ -152877,6 +162713,7 @@ static int __pyx_pf_4lxml_5etree_23_AsyncFileWriterElement___cinit__(struct __py
  *         self._writer = writer
  * 
  */
+  __Pyx_TraceLine(1364,0,__PYX_ERR(8, 1364, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_element_writer));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element_writer));
   __Pyx_GOTREF(__pyx_v_self->_element_writer);
@@ -152890,6 +162727,7 @@ static int __pyx_pf_4lxml_5etree_23_AsyncFileWriterElement___cinit__(struct __py
  * 
  *     async def __aenter__(self):
  */
+  __Pyx_TraceLine(1365,0,__PYX_ERR(8, 1365, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_writer));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_writer));
   __Pyx_GOTREF(__pyx_v_self->_writer);
@@ -152906,6 +162744,12 @@ static int __pyx_pf_4lxml_5etree_23_AsyncFileWriterElement___cinit__(struct __py
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._AsyncFileWriterElement.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -152950,7 +162794,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AsyncFileWriterElement_2__aenter__(str
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7, __pyx_codeobj__101, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_AsyncFileWriterElement___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1367, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7, __pyx_codeobj__292, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_AsyncFileWriterElement___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1367, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -152970,6 +162814,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_7___aenter__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_7___aenter__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -152977,10 +162822,13 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aenter__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__292)
+  __Pyx_TraceCall("__aenter__", __pyx_f[8], 1367, 0, __PYX_ERR(8, 1367, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -152994,6 +162842,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
  *         data = self._writer._flush()
  *         if data:
  */
+  __Pyx_TraceLine(1368,0,__PYX_ERR(8, 1368, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1368, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -153023,6 +162872,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
  *         if data:
  *             await self._writer._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1369,0,__PYX_ERR(8, 1369, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1369, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -153036,6 +162886,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
  *             await self._writer._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1370,0,__PYX_ERR(8, 1370, __pyx_L1_error))
   __pyx_t_4 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_4) {
 
@@ -153046,6 +162897,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
  * 
  *     async def __aexit__(self, *args):
  */
+    __Pyx_TraceLine(1371,0,__PYX_ERR(8, 1371, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1371, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = NULL;
@@ -153096,6 +162948,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -153143,6 +162996,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_4generator7(__p
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153195,7 +163049,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_AsyncFileWriterElement_5__aexit__(stru
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8, __pyx_codeobj__102, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_AsyncFileWriterElement___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1373, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8, __pyx_codeobj__293, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_AsyncFileWriterElement___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1373, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -153215,6 +163069,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_8___aexit__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_8___aexit__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
@@ -153222,10 +163077,13 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aexit__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__293)
+  __Pyx_TraceCall("__aexit__", __pyx_f[8], 1373, 0, __PYX_ERR(8, 1373, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L5_resume_from_await;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -153239,6 +163097,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
  *         data = self._writer._flush()
  *         if data:
  */
+  __Pyx_TraceLine(1374,0,__PYX_ERR(8, 1374, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_element_writer), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1374, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_cur_scope->__pyx_v_args, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1374, __pyx_L1_error)
@@ -153253,6 +163112,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
  *         if data:
  *             await self._writer._async_outfile.write(data)
  */
+  __Pyx_TraceLine(1375,0,__PYX_ERR(8, 1375, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_27_AsyncIncrementalFileWriter__flush(__pyx_cur_scope->__pyx_v_self->_writer); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1375, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -153266,6 +163126,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
  *             await self._writer._async_outfile.write(data)
  * 
  */
+  __Pyx_TraceLine(1376,0,__PYX_ERR(8, 1376, __pyx_L1_error))
   __pyx_t_3 = (__pyx_cur_scope->__pyx_v_data != Py_None)&&(PyBytes_GET_SIZE(__pyx_cur_scope->__pyx_v_data) != 0);
   if (__pyx_t_3) {
 
@@ -153276,6 +163137,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
  * 
  * 
  */
+    __Pyx_TraceLine(1377,0,__PYX_ERR(8, 1377, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_writer->_async_outfile, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1377, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = NULL;
@@ -153326,6 +163188,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
     __Pyx_XGOTREF(__pyx_r);
     if (likely(__pyx_r)) {
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, awaiting value */
@@ -153373,6 +163236,7 @@ static PyObject *__pyx_gb_4lxml_5etree_23_AsyncFileWriterElement_7generator8(__p
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153464,9 +163328,11 @@ static int __pyx_pw_4lxml_5etree_18_FileWriterElement_1__cinit__(PyObject *__pyx
 
 static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj_4lxml_5etree__FileWriterElement *__pyx_v_self, struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_writer, PyObject *__pyx_v_element_config, int __pyx_v_method) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 1389, 0, __PYX_ERR(8, 1389, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1390
  * 
@@ -153475,6 +163341,7 @@ static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj
  *         self._element = element_config
  *         self._new_method = method
  */
+  __Pyx_TraceLine(1390,0,__PYX_ERR(8, 1390, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_writer));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_writer));
   __Pyx_GOTREF(__pyx_v_self->_writer);
@@ -153488,6 +163355,7 @@ static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj
  *         self._new_method = method
  *         self._old_method = writer._method
  */
+  __Pyx_TraceLine(1391,0,__PYX_ERR(8, 1391, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_element_config);
   __Pyx_GIVEREF(__pyx_v_element_config);
   __Pyx_GOTREF(__pyx_v_self->_element);
@@ -153501,6 +163369,7 @@ static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj
  *         self._old_method = writer._method
  * 
  */
+  __Pyx_TraceLine(1392,0,__PYX_ERR(8, 1392, __pyx_L1_error))
   __pyx_v_self->_new_method = __pyx_v_method;
 
   /* "src/lxml/serializer.pxi":1393
@@ -153510,6 +163379,7 @@ static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj
  * 
  *     def __enter__(self):
  */
+  __Pyx_TraceLine(1393,0,__PYX_ERR(8, 1393, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_writer->_method;
   __pyx_v_self->_old_method = __pyx_t_1;
 
@@ -153523,6 +163393,12 @@ static int __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(struct __pyx_obj
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._FileWriterElement.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153551,11 +163427,14 @@ static PyObject *__pyx_pw_4lxml_5etree_18_FileWriterElement_3__enter__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_2__enter__(struct __pyx_obj_4lxml_5etree__FileWriterElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__294)
   __Pyx_RefNannySetupContext("__enter__", 0);
+  __Pyx_TraceCall("__enter__", __pyx_f[8], 1395, 0, __PYX_ERR(8, 1395, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1396
  * 
@@ -153564,6 +163443,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_2__enter__(struct __
  *         self._writer._write_start_element(self._element)
  * 
  */
+  __Pyx_TraceLine(1396,0,__PYX_ERR(8, 1396, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_new_method;
   __pyx_v_self->_writer->_method = __pyx_t_1;
 
@@ -153574,6 +163454,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_2__enter__(struct __
  * 
  *     def __exit__(self, exc_type, exc_val, exc_tb):
  */
+  __Pyx_TraceLine(1397,0,__PYX_ERR(8, 1397, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_element;
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_element(__pyx_v_self->_writer, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1397, __pyx_L1_error)
@@ -153599,6 +163480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_2__enter__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153686,11 +163568,14 @@ static PyObject *__pyx_pw_4lxml_5etree_18_FileWriterElement_5__exit__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_4__exit__(struct __pyx_obj_4lxml_5etree__FileWriterElement *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__295)
   __Pyx_RefNannySetupContext("__exit__", 0);
+  __Pyx_TraceCall("__exit__", __pyx_f[8], 1399, 0, __PYX_ERR(8, 1399, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1400
  * 
@@ -153699,6 +163584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_4__exit__(struct __p
  *         self._writer._method = self._old_method
  * 
  */
+  __Pyx_TraceLine(1400,0,__PYX_ERR(8, 1400, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_element;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1400, __pyx_L1_error)
@@ -153713,6 +163599,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_4__exit__(struct __p
  * 
  * 
  */
+  __Pyx_TraceLine(1401,0,__PYX_ERR(8, 1401, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_old_method;
   __pyx_v_self->_writer->_method = __pyx_t_3;
 
@@ -153734,6 +163621,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18_FileWriterElement_4__exit__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153814,9 +163702,11 @@ static int __pyx_pw_4lxml_5etree_14_MethodChanger_1__cinit__(PyObject *__pyx_v_s
 
 static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lxml_5etree__MethodChanger *__pyx_v_self, struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *__pyx_v_writer, int __pyx_v_method) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[8], 1414, 0, __PYX_ERR(8, 1414, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1415
  * 
@@ -153825,6 +163715,7 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
  *         self._new_method = method
  *         self._old_method = writer._method
  */
+  __Pyx_TraceLine(1415,0,__PYX_ERR(8, 1415, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_writer));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_writer));
   __Pyx_GOTREF(__pyx_v_self->_writer);
@@ -153838,6 +163729,7 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
  *         self._old_method = writer._method
  *         self._entered = False
  */
+  __Pyx_TraceLine(1416,0,__PYX_ERR(8, 1416, __pyx_L1_error))
   __pyx_v_self->_new_method = __pyx_v_method;
 
   /* "src/lxml/serializer.pxi":1417
@@ -153847,6 +163739,7 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
  *         self._entered = False
  *         self._exited = False
  */
+  __Pyx_TraceLine(1417,0,__PYX_ERR(8, 1417, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_writer->_method;
   __pyx_v_self->_old_method = __pyx_t_1;
 
@@ -153857,6 +163750,7 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
  *         self._exited = False
  * 
  */
+  __Pyx_TraceLine(1418,0,__PYX_ERR(8, 1418, __pyx_L1_error))
   __pyx_v_self->_entered = 0;
 
   /* "src/lxml/serializer.pxi":1419
@@ -153866,6 +163760,7 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
  * 
  *     def __enter__(self):
  */
+  __Pyx_TraceLine(1419,0,__PYX_ERR(8, 1419, __pyx_L1_error))
   __pyx_v_self->_exited = 0;
 
   /* "src/lxml/serializer.pxi":1414
@@ -153878,6 +163773,12 @@ static int __pyx_pf_4lxml_5etree_14_MethodChanger___cinit__(struct __pyx_obj_4lx
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._MethodChanger.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -153906,12 +163807,15 @@ static PyObject *__pyx_pw_4lxml_5etree_14_MethodChanger_3__enter__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_obj_4lxml_5etree__MethodChanger *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__296)
   __Pyx_RefNannySetupContext("__enter__", 0);
+  __Pyx_TraceCall("__enter__", __pyx_f[8], 1421, 0, __PYX_ERR(8, 1421, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1422
  * 
@@ -153920,6 +163824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_
  *             raise LxmlSyntaxError("Inconsistent enter action in context manager")
  *         self._writer._method = self._new_method
  */
+  __Pyx_TraceLine(1422,0,__PYX_ERR(8, 1422, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_entered != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -153930,9 +163835,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_
  *         self._writer._method = self._new_method
  *         self._entered = True
  */
+    __Pyx_TraceLine(1423,0,__PYX_ERR(8, 1423, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1423, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__297, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -153955,6 +163861,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_
  *         self._entered = True
  * 
  */
+  __Pyx_TraceLine(1424,0,__PYX_ERR(8, 1424, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_new_method;
   __pyx_v_self->_writer->_method = __pyx_t_4;
 
@@ -153965,6 +163872,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_
  * 
  *     def __exit__(self, exc_type, exc_val, exc_tb):
  */
+  __Pyx_TraceLine(1425,0,__PYX_ERR(8, 1425, __pyx_L1_error))
   __pyx_v_self->_entered = 1;
 
   /* "src/lxml/serializer.pxi":1421
@@ -153985,6 +163893,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_2__enter__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -154072,12 +163981,15 @@ static PyObject *__pyx_pw_4lxml_5etree_14_MethodChanger_5__exit__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_obj_4lxml_5etree__MethodChanger *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__298)
   __Pyx_RefNannySetupContext("__exit__", 0);
+  __Pyx_TraceCall("__exit__", __pyx_f[8], 1427, 0, __PYX_ERR(8, 1427, __pyx_L1_error));
 
   /* "src/lxml/serializer.pxi":1428
  * 
@@ -154086,6 +163998,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  *             raise LxmlSyntaxError("Inconsistent exit action in context manager")
  *         if self._writer._method != self._new_method:
  */
+  __Pyx_TraceLine(1428,0,__PYX_ERR(8, 1428, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_exited != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -154096,9 +164009,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  *         if self._writer._method != self._new_method:
  *             raise LxmlSyntaxError("Method changed outside of context manager")
  */
+    __Pyx_TraceLine(1429,0,__PYX_ERR(8, 1429, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1429, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1429, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__299, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1429, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -154121,6 +164035,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  *             raise LxmlSyntaxError("Method changed outside of context manager")
  *         self._writer._method = self._old_method
  */
+  __Pyx_TraceLine(1430,0,__PYX_ERR(8, 1430, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_writer->_method != __pyx_v_self->_new_method) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -154131,9 +164046,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  *         self._writer._method = self._old_method
  *         self._exited = True
  */
+    __Pyx_TraceLine(1431,0,__PYX_ERR(8, 1431, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1431, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1431, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__300, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1431, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
@@ -154156,6 +164072,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  *         self._exited = True
  * 
  */
+  __Pyx_TraceLine(1432,0,__PYX_ERR(8, 1432, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_self->_old_method;
   __pyx_v_self->_writer->_method = __pyx_t_4;
 
@@ -154166,6 +164083,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
  * 
  *     async def __aenter__(self):
  */
+  __Pyx_TraceLine(1433,0,__PYX_ERR(8, 1433, __pyx_L1_error))
   __pyx_v_self->_exited = 1;
 
   /* "src/lxml/serializer.pxi":1427
@@ -154186,6 +164104,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_4__exit__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -154230,7 +164149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_6__aenter__(struct __pyx
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_8generator9, __pyx_codeobj__106, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_MethodChanger___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1435, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_8generator9, __pyx_codeobj__301, (PyObject *) __pyx_cur_scope, __pyx_n_s_aenter, __pyx_n_s_MethodChanger___aenter, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1435, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -154250,14 +164169,18 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_8generator9(__pyx_Corout
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_9___aenter__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_9___aenter__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aenter__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__301)
+  __Pyx_TraceCall("__aenter__", __pyx_f[8], 1435, 0, __PYX_ERR(8, 1435, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -154271,6 +164194,7 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_8generator9(__pyx_Corout
  * 
  *     async def __aexit__(self, *args):
  */
+  __Pyx_TraceLine(1437,0,__PYX_ERR(8, 1437, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -154317,6 +164241,7 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_8generator9(__pyx_Corout
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -154369,7 +164294,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_MethodChanger_9__aexit__(struct __pyx_
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_args);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_args);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_11generator10, __pyx_codeobj__107, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_MethodChanger___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1439, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_14_MethodChanger_11generator10, __pyx_codeobj__302, (PyObject *) __pyx_cur_scope, __pyx_n_s_aexit, __pyx_n_s_MethodChanger___aexit, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(8, 1439, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -154389,13 +164314,17 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_11generator10(__pyx_Coro
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_10___aexit__ *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_10___aexit__ *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__aexit__", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__302)
+  __Pyx_TraceCall("__aexit__", __pyx_f[8], 1439, 0, __PYX_ERR(8, 1439, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -154407,6 +164336,7 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_11generator10(__pyx_Coro
  *         # for your async convenience
  *         return self.__exit__(*args)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(1441,0,__PYX_ERR(8, 1441, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -154437,6 +164367,7 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_11generator10(__pyx_Coro
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -154477,7 +164408,7 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_events,&__pyx_n_s_tag,&__pyx_n_s_attribute_defaults,&__pyx_n_s_dtd_validation,&__pyx_n_s_load_dtd,&__pyx_n_s_no_network,&__pyx_n_s_remove_blank_text,&__pyx_n_s_compact,&__pyx_n_s_resolve_entities,&__pyx_n_s_remove_comments,&__pyx_n_s_remove_pis,&__pyx_n_s_strip_cdata,&__pyx_n_s_encoding,&__pyx_n_s_html,&__pyx_n_s_recover,&__pyx_n_s_huge_tree,&__pyx_n_s_collect_ids,&__pyx_n_s_schema,0};
     PyObject* values[19] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-    values[1] = ((PyObject *)__pyx_tuple__108);
+    values[1] = ((PyObject *)__pyx_tuple__303);
     values[2] = ((PyObject *)Py_None);
 
     /* "src/lxml/iterparse.pxi":68
@@ -154637,6 +164568,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
   struct __pyx_obj_4lxml_5etree__FeedParser *__pyx_v_parser = NULL;
   PyObject *__pyx_v_event = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -154646,6 +164578,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
   PyObject *(*__pyx_t_6)(PyObject *);
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[13], 67, 0, __PYX_ERR(13, 67, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_source);
   __Pyx_INCREF(__pyx_v_events);
   __Pyx_INCREF(__pyx_v_recover);
@@ -154657,6 +164590,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             self._filename = source
  *             if python.IS_PYTHON2:
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(13, 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(13, 74, __pyx_L1_error)
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
@@ -154668,6 +164602,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             if python.IS_PYTHON2:
  *                 source = _encodeFilename(source)
  */
+    __Pyx_TraceLine(75,0,__PYX_ERR(13, 75, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_source);
     __Pyx_GIVEREF(__pyx_v_source);
     __Pyx_GOTREF(__pyx_v_self->_filename);
@@ -154681,6 +164616,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 source = _encodeFilename(source)
  *             source = open(source, 'rb')
  */
+    __Pyx_TraceLine(76,0,__PYX_ERR(13, 76, __pyx_L1_error))
     __pyx_t_2 = (IS_PYTHON2 != 0);
     if (__pyx_t_2) {
 
@@ -154691,6 +164627,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             source = open(source, 'rb')
  *             self._close_source_after_read = True
  */
+      __Pyx_TraceLine(77,0,__PYX_ERR(13, 77, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 77, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
@@ -154712,6 +164649,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             self._close_source_after_read = True
  *         else:
  */
+    __Pyx_TraceLine(78,0,__PYX_ERR(13, 78, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 78, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_source);
@@ -154733,6 +164671,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *         else:
  *             self._filename = _getFilenameForFile(source)
  */
+    __Pyx_TraceLine(79,0,__PYX_ERR(13, 79, __pyx_L1_error))
     __pyx_v_self->_close_source_after_read = 1;
 
     /* "src/lxml/iterparse.pxi":74
@@ -154752,6 +164691,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             self._close_source_after_read = False
  * 
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(13, 81, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 81, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -154768,6 +164708,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  * 
  *         if recover is None:
  */
+    __Pyx_TraceLine(82,0,__PYX_ERR(13, 82, __pyx_L1_error))
     __pyx_v_self->_close_source_after_read = 0;
   }
   __pyx_L3:;
@@ -154779,6 +164720,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             recover = html
  * 
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(13, 84, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_recover == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -154790,6 +164732,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  * 
  *         if html:
  */
+    __Pyx_TraceLine(85,0,__PYX_ERR(13, 85, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_html);
     __Pyx_DECREF_SET(__pyx_v_recover, __pyx_v_html);
 
@@ -154809,6 +164752,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             # make sure we're not looking for namespaces
  *             events = [event for event in events
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(13, 87, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_html); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(13, 87, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -154819,6 +164763,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                       if event not in ('start-ns', 'end-ns')]
  *             parser = HTMLPullParser(
  */
+    __Pyx_TraceLine(89,0,__PYX_ERR(13, 89, __pyx_L1_error))
     __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 89, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(__pyx_v_events)) || PyTuple_CheckExact(__pyx_v_events)) {
@@ -154870,6 +164815,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *             parser = HTMLPullParser(
  *                 events,
  */
+      __Pyx_TraceLine(90,0,__PYX_ERR(13, 90, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_event);
       __pyx_t_7 = __pyx_v_event;
       __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_kp_s_start_ns, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(13, 90, __pyx_L1_error)
@@ -154892,6 +164838,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                       if event not in ('start-ns', 'end-ns')]
  *             parser = HTMLPullParser(
  */
+        __Pyx_TraceLine(89,0,__PYX_ERR(13, 89, __pyx_L1_error))
         if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_event))) __PYX_ERR(13, 89, __pyx_L1_error)
 
         /* "src/lxml/iterparse.pxi":90
@@ -154910,6 +164857,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                       if event not in ('start-ns', 'end-ns')]
  *             parser = HTMLPullParser(
  */
+      __Pyx_TraceLine(89,0,__PYX_ERR(13, 89, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_events, __pyx_t_4);
@@ -154922,6 +164870,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 events,
  *                 tag=tag,
  */
+    __Pyx_TraceLine(91,0,__PYX_ERR(13, 91, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 91, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_events);
@@ -154935,6 +164884,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 recover=recover,
  *                 base_url=self._filename,
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(13, 93, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 93, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
@@ -154946,6 +164896,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 base_url=self._filename,
  *                 encoding=encoding,
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(13, 94, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":95
@@ -154955,6 +164906,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 encoding=encoding,
  *                 remove_blank_text=remove_blank_text,
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(13, 95, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":96
@@ -154964,6 +164916,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_blank_text=remove_blank_text,
  *                 remove_comments=remove_comments,
  */
+    __Pyx_TraceLine(96,0,__PYX_ERR(13, 96, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":97
@@ -154973,6 +164926,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_comments=remove_comments,
  *                 remove_pis=remove_pis,
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(13, 97, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":98
@@ -154982,6 +164936,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_pis=remove_pis,
  *                 strip_cdata=strip_cdata,
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(13, 98, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":99
@@ -154991,6 +164946,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 strip_cdata=strip_cdata,
  *                 no_network=no_network,
  */
+    __Pyx_TraceLine(99,0,__PYX_ERR(13, 99, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":100
@@ -155000,6 +164956,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 no_network=no_network,
  *                 target=None,  # TODO
  */
+    __Pyx_TraceLine(100,0,__PYX_ERR(13, 100, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":101
@@ -155009,6 +164966,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 target=None,  # TODO
  *                 schema=schema,
  */
+    __Pyx_TraceLine(101,0,__PYX_ERR(13, 101, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":102
@@ -155018,6 +164976,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 schema=schema,
  *                 compact=compact)
  */
+    __Pyx_TraceLine(102,0,__PYX_ERR(13, 102, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":103
@@ -155027,6 +164986,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 compact=compact)
  *         else:
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(13, 103, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":104
@@ -155036,6 +164996,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *         else:
  *             parser = XMLPullParser(
  */
+    __Pyx_TraceLine(104,0,__PYX_ERR(13, 104, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(13, 93, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":91
@@ -155045,6 +165006,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 events,
  *                 tag=tag,
  */
+    __Pyx_TraceLine(91,0,__PYX_ERR(13, 91, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLPullParser), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 91, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -155069,6 +165031,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 events,
  *                 tag=tag,
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(13, 106, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/iterparse.pxi":107
@@ -155078,6 +165041,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 tag=tag,
  *                 recover=recover,
  */
+    __Pyx_TraceLine(107,0,__PYX_ERR(13, 107, __pyx_L1_error))
     __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_INCREF(__pyx_v_events);
@@ -155091,6 +165055,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 recover=recover,
  *                 base_url=self._filename,
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(13, 108, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyDict_NewPresized(18); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 108, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
@@ -155102,6 +165067,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 base_url=self._filename,
  *                 encoding=encoding,
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(13, 109, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":110
@@ -155111,6 +165077,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 encoding=encoding,
  *                 attribute_defaults=attribute_defaults,
  */
+    __Pyx_TraceLine(110,0,__PYX_ERR(13, 110, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":111
@@ -155120,6 +165087,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 attribute_defaults=attribute_defaults,
  *                 dtd_validation=dtd_validation,
  */
+    __Pyx_TraceLine(111,0,__PYX_ERR(13, 111, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":112
@@ -155129,6 +165097,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 dtd_validation=dtd_validation,
  *                 load_dtd=load_dtd,
  */
+    __Pyx_TraceLine(112,0,__PYX_ERR(13, 112, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":113
@@ -155138,6 +165107,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 load_dtd=load_dtd,
  *                 no_network=no_network,
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(13, 113, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":114
@@ -155147,6 +165117,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 no_network=no_network,
  *                 schema=schema,
  */
+    __Pyx_TraceLine(114,0,__PYX_ERR(13, 114, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":115
@@ -155156,6 +165127,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 schema=schema,
  *                 huge_tree=huge_tree,
  */
+    __Pyx_TraceLine(115,0,__PYX_ERR(13, 115, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":116
@@ -155165,6 +165137,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 huge_tree=huge_tree,
  *                 remove_blank_text=remove_blank_text,
  */
+    __Pyx_TraceLine(116,0,__PYX_ERR(13, 116, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":117
@@ -155174,6 +165147,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_blank_text=remove_blank_text,
  *                 resolve_entities=resolve_entities,
  */
+    __Pyx_TraceLine(117,0,__PYX_ERR(13, 117, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":118
@@ -155183,6 +165157,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 resolve_entities=resolve_entities,
  *                 remove_comments=remove_comments,
  */
+    __Pyx_TraceLine(118,0,__PYX_ERR(13, 118, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":119
@@ -155192,6 +165167,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_comments=remove_comments,
  *                 remove_pis=remove_pis,
  */
+    __Pyx_TraceLine(119,0,__PYX_ERR(13, 119, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":120
@@ -155201,6 +165177,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 remove_pis=remove_pis,
  *                 strip_cdata=strip_cdata,
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(13, 120, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":121
@@ -155210,6 +165187,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 strip_cdata=strip_cdata,
  *                 collect_ids=True,
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(13, 121, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":122
@@ -155219,6 +165197,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 collect_ids=True,
  *                 target=None,  # TODO
  */
+    __Pyx_TraceLine(122,0,__PYX_ERR(13, 122, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":123
@@ -155228,6 +165207,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 target=None,  # TODO
  *                 compact=compact)
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(13, 123, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_collect_ids, Py_True) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":124
@@ -155237,6 +165217,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 compact=compact)
  * 
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(13, 124, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":125
@@ -155246,6 +165227,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  * 
  *         self._events = parser.read_events()
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(13, 125, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(13, 108, __pyx_L1_error)
 
     /* "src/lxml/iterparse.pxi":106
@@ -155255,6 +165237,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *                 events,
  *                 tag=tag,
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(13, 106, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLPullParser), __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -155271,6 +165254,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *         self._parser = parser
  *         self._source = source
  */
+  __Pyx_TraceLine(127,0,__PYX_ERR(13, 127, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_read_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 127, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_7 = NULL;
@@ -155304,6 +165288,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *         self._source = source
  * 
  */
+  __Pyx_TraceLine(128,0,__PYX_ERR(13, 128, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
   __Pyx_GOTREF(__pyx_v_self->_parser);
@@ -155317,6 +165302,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  * 
  *     property error_log:
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(13, 129, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_source);
   __Pyx_GIVEREF(__pyx_v_source);
   __Pyx_GOTREF(__pyx_v_self->_source);
@@ -155346,6 +165332,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
   __Pyx_XDECREF(__pyx_v_source);
   __Pyx_XDECREF(__pyx_v_events);
   __Pyx_XDECREF(__pyx_v_recover);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155373,9 +165360,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_9error_log_1__get__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[13], 134, 0, __PYX_ERR(13, 134, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":135
  *         """
@@ -155384,6 +165373,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
  * 
  *     property resolvers:
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(13, 135, __pyx_L1_error))
   __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(13, 135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -155406,6 +165396,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155433,9 +165424,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_9resolvers_1__get__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[13], 140, 0, __PYX_ERR(13, 140, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":141
  *         """
@@ -155444,6 +165437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
  * 
  *     property version:
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(13, 141, __pyx_L1_error))
   __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(13, 141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -155466,6 +165460,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155493,9 +165488,11 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_7version_1__get__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[13], 145, 0, __PYX_ERR(13, 145, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":146
  *         u"""The version of the underlying XML parser."""
@@ -155504,6 +165501,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(13, 146, __pyx_L1_error))
   __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(13, 146, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -155526,6 +165524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155603,12 +165602,15 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_3set_element_class_lookup(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__304)
   __Pyx_RefNannySetupContext("set_element_class_lookup", 0);
+  __Pyx_TraceCall("set_element_class_lookup", __pyx_f[13], 148, 0, __PYX_ERR(13, 148, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":155
  *         Reset it by passing None or nothing.
@@ -155617,6 +165619,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(13, 155, __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(13, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -155684,6 +165687,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155783,12 +165787,15 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_5makeelement(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self, PyObject *__pyx_v__tag, CYTHON_UNUSED PyObject *__pyx_v_attrib, CYTHON_UNUSED PyObject *__pyx_v_nsmap, PyObject *__pyx_v__extra) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__305)
   __Pyx_RefNannySetupContext("makeelement", 0);
+  __Pyx_TraceCall("makeelement", __pyx_f[13], 157, 0, __PYX_ERR(13, 157, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":162
  *         Creates a new element associated with this parser.
@@ -155797,6 +165804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
  *             _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(13, 162, __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(13, 162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -155807,6 +165815,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(13, 163, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v__tag);
@@ -155820,6 +165829,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
  *             _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(13, 162, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
@@ -155830,6 +165840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(13, 163, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrib, Py_None) < 0) __PYX_ERR(13, 163, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nsmap, Py_None) < 0) __PYX_ERR(13, 163, __pyx_L1_error)
   __pyx_t_3 = __pyx_t_4;
@@ -155843,6 +165854,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
  *             _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(13, 162, __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(13, 162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -155870,6 +165882,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -155885,6 +165898,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
 static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_v_close = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -155901,6 +165915,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   __Pyx_RefNannySetupContext("_close_source", 0);
+  __Pyx_TraceCall("_close_source", __pyx_f[13], 166, 0, __PYX_ERR(13, 166, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":167
  *     @cython.final
@@ -155909,6 +165924,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             return
  *         if not self._close_source_after_read:
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(13, 167, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_source == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -155920,6 +165936,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *         if not self._close_source_after_read:
  *             self._source = None
  */
+    __Pyx_TraceLine(168,0,__PYX_ERR(13, 168, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -155940,6 +165957,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             self._source = None
  *             return
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(13, 169, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_self->_close_source_after_read != 0)) != 0);
   if (__pyx_t_2) {
 
@@ -155950,6 +165968,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             return
  *         try:
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(13, 170, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_source);
@@ -155963,6 +165982,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *         try:
  *             close = self._source.close
  */
+    __Pyx_TraceLine(171,0,__PYX_ERR(13, 171, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -155983,6 +166003,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             close = self._source.close
  *         except AttributeError:
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(13, 172, __pyx_L6_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -156000,6 +166021,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *         except AttributeError:
  *             close = None
  */
+        __Pyx_TraceLine(173,0,__PYX_ERR(13, 173, __pyx_L8_error))
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_close); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 173, __pyx_L8_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_v_close = __pyx_t_6;
@@ -156027,6 +166049,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             close = None
  *         finally:
  */
+      __Pyx_TraceLine(174,0,__PYX_ERR(13, 174, __pyx_L10_except_error))
       __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
       if (__pyx_t_7) {
         __Pyx_AddTraceback("lxml.etree.iterparse._close_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -156042,6 +166065,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *         finally:
  *             self._source = None
  */
+        __Pyx_TraceLine(175,0,__PYX_ERR(13, 175, __pyx_L10_except_error))
         __Pyx_INCREF(Py_None);
         __Pyx_XDECREF_SET(__pyx_v_close, Py_None);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -156080,6 +166104,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *         if close is not None:
  *             close()
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(13, 177, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __Pyx_INCREF(Py_None);
@@ -156137,6 +166162,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  *             close()
  * 
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(13, 178, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_close != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -156148,6 +166174,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
  * 
  *     def __iter__(self):
  */
+    __Pyx_TraceLine(179,0,__PYX_ERR(13, 179, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_close);
     __pyx_t_8 = __pyx_v_close; __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
@@ -156198,6 +166225,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_close);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -156225,8 +166253,10 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_7__iter__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[13], 181, 0, __PYX_ERR(13, 181, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":182
  * 
@@ -156235,6 +166265,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lx
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(13, 182, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -156249,8 +166280,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lx
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.iterparse.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -156282,6 +166317,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
   PyObject *__pyx_v_e = NULL;
   PyObject *__pyx_v_error = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -156300,6 +166336,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
   PyObject *__pyx_t_15 = NULL;
   int __pyx_t_16;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[13], 184, 0, __PYX_ERR(13, 184, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":185
  * 
@@ -156308,6 +166345,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             return next(self._events)
  *         except StopIteration:
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(13, 185, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -156324,6 +166362,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *         except StopIteration:
  *             pass
  */
+      __Pyx_TraceLine(186,0,__PYX_ERR(13, 186, __pyx_L3_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = __pyx_v_self->_events;
       __Pyx_INCREF(__pyx_t_4);
@@ -156353,6 +166392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             pass
  *         context = <_SaxParserContext>self._parser._getPushParserContext()
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(13, 187, __pyx_L5_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
     if (__pyx_t_6) {
       __Pyx_ErrRestore(0,0,0);
@@ -156393,6 +166433,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *         if self._source is not None:
  *             done = False
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(13, 189, __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(13, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_4 = __pyx_t_5;
@@ -156408,6 +166449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             done = False
  *             while not done:
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(13, 190, __pyx_L1_error))
   __pyx_t_7 = (__pyx_v_self->_source != Py_None);
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
@@ -156419,6 +166461,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             while not done:
  *                 try:
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(13, 191, __pyx_L1_error))
     __pyx_v_done = 0;
 
     /* "src/lxml/iterparse.pxi":192
@@ -156428,6 +166471,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                 try:
  *                     done = self._read_more_events(context)
  */
+    __Pyx_TraceLine(192,0,__PYX_ERR(13, 192, __pyx_L1_error))
     while (1) {
       __pyx_t_8 = ((!(__pyx_v_done != 0)) != 0);
       if (!__pyx_t_8) break;
@@ -156439,6 +166483,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     done = self._read_more_events(context)
  *                     return next(self._events)
  */
+      __Pyx_TraceLine(193,0,__PYX_ERR(13, 193, __pyx_L12_error))
       {
         __Pyx_PyThreadState_declare
         __Pyx_PyThreadState_assign
@@ -156455,6 +166500,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     return next(self._events)
  *                 except StopIteration:
  */
+          __Pyx_TraceLine(194,0,__PYX_ERR(13, 194, __pyx_L12_error))
           __pyx_t_8 = __pyx_f_4lxml_5etree_9iterparse__read_more_events(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_8 == ((int)-123))) __PYX_ERR(13, 194, __pyx_L12_error)
           __pyx_v_done = __pyx_t_8;
 
@@ -156465,6 +166511,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                 except StopIteration:
  *                     pass  # no events yet
  */
+          __Pyx_TraceLine(195,0,__PYX_ERR(13, 195, __pyx_L12_error))
           __Pyx_XDECREF(__pyx_r);
           __pyx_t_4 = __pyx_v_self->_events;
           __Pyx_INCREF(__pyx_t_4);
@@ -156494,6 +166541,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     pass  # no events yet
  *                 except Exception as e:
  */
+        __Pyx_TraceLine(196,0,__PYX_ERR(13, 196, __pyx_L14_except_error))
         __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
         if (__pyx_t_6) {
           __Pyx_ErrRestore(0,0,0);
@@ -156507,6 +166555,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     self._error = e
  *                     self._close_source()
  */
+        __Pyx_TraceLine(198,0,__PYX_ERR(13, 198, __pyx_L14_except_error))
         __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);
@@ -156524,6 +166573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     self._close_source()
  *                     try:
  */
+          __Pyx_TraceLine(199,0,__PYX_ERR(13, 199, __pyx_L14_except_error))
           __Pyx_INCREF(__pyx_v_e);
           __Pyx_GIVEREF(__pyx_v_e);
           __Pyx_GOTREF(__pyx_v_self->_error);
@@ -156537,6 +166587,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     try:
  *                         return next(self._events)
  */
+          __Pyx_TraceLine(200,0,__PYX_ERR(13, 200, __pyx_L14_except_error))
           __pyx_t_10 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 200, __pyx_L14_except_error)
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -156548,6 +166599,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                         return next(self._events)
  *                     except StopIteration:
  */
+          __Pyx_TraceLine(201,0,__PYX_ERR(13, 201, __pyx_L22_error))
           {
             __Pyx_PyThreadState_declare
             __Pyx_PyThreadState_assign
@@ -156564,6 +166616,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                     except StopIteration:
  *                         break
  */
+              __Pyx_TraceLine(202,0,__PYX_ERR(13, 202, __pyx_L22_error))
               __Pyx_XDECREF(__pyx_r);
               __pyx_t_10 = __pyx_v_self->_events;
               __Pyx_INCREF(__pyx_t_10);
@@ -156596,6 +166649,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                         break
  *         # nothing left to read or return
  */
+            __Pyx_TraceLine(203,0,__PYX_ERR(13, 203, __pyx_L24_except_error))
             __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);
@@ -156611,6 +166665,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *         # nothing left to read or return
  *         if self._error is not None:
  */
+              __Pyx_TraceLine(204,0,__PYX_ERR(13, 204, __pyx_L24_except_error))
               goto __pyx_L30_except_break;
               __pyx_L30_except_break:;
               __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
@@ -156710,6 +166765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             error = self._error
  *             self._error = None
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(13, 206, __pyx_L1_error))
   __pyx_t_8 = (__pyx_v_self->_error != Py_None);
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (unlikely(__pyx_t_7)) {
@@ -156721,6 +166777,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             self._error = None
  *             raise error
  */
+    __Pyx_TraceLine(207,0,__PYX_ERR(13, 207, __pyx_L1_error))
     __pyx_t_9 = __pyx_v_self->_error;
     __Pyx_INCREF(__pyx_t_9);
     __pyx_v_error = __pyx_t_9;
@@ -156733,6 +166790,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             raise error
  *         if (context._validator is not None
  */
+    __Pyx_TraceLine(208,0,__PYX_ERR(13, 208, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_error);
@@ -156746,6 +166804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *         if (context._validator is not None
  *                 and not context._validator.isvalid()):
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(13, 209, __pyx_L1_error))
     __Pyx_Raise(__pyx_v_error, 0, 0, 0);
     __PYX_ERR(13, 209, __pyx_L1_error)
 
@@ -156765,6 +166824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                 and not context._validator.isvalid()):
  *             _raiseParseError(context._c_ctxt, self._filename,
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(13, 210, __pyx_L1_error))
   __pyx_t_8 = (((PyObject *)__pyx_v_context->__pyx_base._validator) != Py_None);
   __pyx_t_16 = (__pyx_t_8 != 0);
   if (__pyx_t_16) {
@@ -156780,6 +166840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *             _raiseParseError(context._c_ctxt, self._filename,
  *                              context._error_log)
  */
+  __Pyx_TraceLine(211,0,__PYX_ERR(13, 211, __pyx_L1_error))
   __pyx_t_16 = ((!(__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(__pyx_v_context->__pyx_base._validator) != 0)) != 0);
   __pyx_t_7 = __pyx_t_16;
   __pyx_L34_bool_binop_done:;
@@ -156791,6 +166852,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                 and not context._validator.isvalid()):
  *             _raiseParseError(context._c_ctxt, self._filename,
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(13, 210, __pyx_L1_error))
   if (__pyx_t_7) {
 
     /* "src/lxml/iterparse.pxi":212
@@ -156800,6 +166862,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                              context._error_log)
  *         # no errors => all done
  */
+    __Pyx_TraceLine(212,0,__PYX_ERR(13, 212, __pyx_L1_error))
     __pyx_t_9 = __pyx_v_self->_filename;
     __Pyx_INCREF(__pyx_t_9);
 
@@ -156810,6 +166873,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *         # no errors => all done
  *         raise StopIteration
  */
+    __Pyx_TraceLine(213,0,__PYX_ERR(13, 213, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_context->__pyx_base._error_log);
     __Pyx_INCREF(__pyx_t_4);
 
@@ -156820,6 +166884,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                              context._error_log)
  *         # no errors => all done
  */
+    __Pyx_TraceLine(212,0,__PYX_ERR(13, 212, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_context->__pyx_base._c_ctxt, __pyx_t_9, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_4)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(13, 212, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -156840,6 +166905,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(215,0,__PYX_ERR(13, 215, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
   __PYX_ERR(13, 215, __pyx_L1_error)
 
@@ -156866,6 +166932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
   __Pyx_XDECREF(__pyx_v_e);
   __Pyx_XDECREF(__pyx_v_error);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -156881,6 +166948,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
 static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context) {
   PyObject *__pyx_v_data = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -156896,6 +166964,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_read_more_events", 0);
+  __Pyx_TraceCall("_read_more_events", __pyx_f[13], 218, 0, __PYX_ERR(13, 218, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":219
  *     @cython.final
@@ -156904,9 +166973,10 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *         if not isinstance(data, bytes):
  *             self._close_source()
  */
+  __Pyx_TraceLine(219,0,__PYX_ERR(13, 219, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 219, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__306, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_data = __pyx_t_2;
@@ -156919,6 +166989,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *             self._close_source()
  *             raise TypeError("reading file objects must return bytes objects")
  */
+  __Pyx_TraceLine(220,0,__PYX_ERR(13, 220, __pyx_L1_error))
   __pyx_t_3 = PyBytes_Check(__pyx_v_data); 
   __pyx_t_4 = ((!(__pyx_t_3 != 0)) != 0);
   if (unlikely(__pyx_t_4)) {
@@ -156930,6 +167001,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *             raise TypeError("reading file objects must return bytes objects")
  *         if not data:
  */
+    __Pyx_TraceLine(221,0,__PYX_ERR(13, 221, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 221, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -156941,7 +167013,8 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *         if not data:
  *             try:
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 222, __pyx_L1_error)
+    __Pyx_TraceLine(222,0,__PYX_ERR(13, 222, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__307, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 222, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -156963,6 +167036,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *             try:
  *                 self.root = self._parser.close()
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(13, 223, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(13, 223, __pyx_L1_error)
   __pyx_t_3 = ((!__pyx_t_4) != 0);
   if (__pyx_t_3) {
@@ -156974,6 +167048,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *                 self.root = self._parser.close()
  *             finally:
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(13, 224, __pyx_L6_error))
     /*try:*/ {
 
       /* "src/lxml/iterparse.pxi":225
@@ -156983,6 +167058,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *             finally:
  *                 self._close_source()
  */
+      __Pyx_TraceLine(225,0,__PYX_ERR(13, 225, __pyx_L6_error))
       __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->close(__pyx_v_self->_parser, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 225, __pyx_L6_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_2);
@@ -156999,6 +167075,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *             return True
  *         self._parser.feed(data)
  */
+    __Pyx_TraceLine(227,0,__PYX_ERR(13, 227, __pyx_L1_error))
     /*finally:*/ {
       /*normal exit:*/{
         __pyx_t_2 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 227, __pyx_L1_error)
@@ -157063,6 +167140,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *         self._parser.feed(data)
  *         return False
  */
+    __Pyx_TraceLine(228,0,__PYX_ERR(13, 228, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -157082,6 +167160,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  *         return False
  * 
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(13, 229, __pyx_L1_error))
   __pyx_t_2 = ((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_2)) __PYX_ERR(13, 229, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -157093,6 +167172,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
  * 
  * 
  */
+  __Pyx_TraceLine(230,0,__PYX_ERR(13, 230, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -157112,6 +167192,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
   __pyx_r = -123;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_data);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -157139,16 +167220,22 @@ static PyObject *__pyx_pw_4lxml_5etree_9iterparse_4root_1__get__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4root___get__(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[13], 61, 0, __PYX_ERR(13, 61, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->root);
   __pyx_r = __pyx_v_self->root;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.iterparse.root.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -157173,7 +167260,7 @@ static int __pyx_pw_4lxml_5etree_8iterwalk_1__init__(PyObject *__pyx_v_self, PyO
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_element_or_tree,&__pyx_n_s_events,&__pyx_n_s_tag,0};
     PyObject* values[3] = {0,0,0};
-    values[1] = ((PyObject *)__pyx_tuple__111);
+    values[1] = ((PyObject *)__pyx_tuple__308);
     values[2] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
@@ -157243,6 +167330,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
   struct LxmlElement *__pyx_v_root = 0;
   int __pyx_v_ns_count;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -157252,6 +167340,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[13], 261, 0, __PYX_ERR(13, 261, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":264
  *         cdef _Element root
@@ -157260,6 +167349,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         self._event_filter = _buildParseEventFilter(events)
  *         if tag is None or tag == '*':
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(13, 264, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root = ((struct LxmlElement *)__pyx_t_1);
@@ -157272,6 +167362,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         if tag is None or tag == '*':
  *             self._matcher = None
  */
+  __Pyx_TraceLine(265,0,__PYX_ERR(13, 265, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 265, __pyx_L1_error)
   __pyx_v_self->_event_filter = __pyx_t_2;
 
@@ -157282,6 +167373,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *             self._matcher = None
  *         else:
  */
+  __Pyx_TraceLine(266,0,__PYX_ERR(13, 266, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_tag == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (!__pyx_t_5) {
@@ -157289,7 +167381,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
     __pyx_t_3 = __pyx_t_5;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__53, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(13, 266, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_kp_s__160, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(13, 266, __pyx_L1_error)
   __pyx_t_3 = __pyx_t_5;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_3) {
@@ -157301,6 +167393,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         else:
  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  */
+    __Pyx_TraceLine(267,0,__PYX_ERR(13, 267, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     __Pyx_GOTREF(__pyx_v_self->_matcher);
@@ -157324,6 +167417,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         self._node_stack  = []
  *         self._events = []
  */
+  __Pyx_TraceLine(269,0,__PYX_ERR(13, 269, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 269, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -157348,6 +167442,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         self._events = []
  *         self._pop_event = self._events.pop
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(13, 270, __pyx_L1_error))
   __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
@@ -157363,6 +167458,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         self._pop_event = self._events.pop
  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
  */
+  __Pyx_TraceLine(271,0,__PYX_ERR(13, 271, __pyx_L1_error))
   __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 271, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
@@ -157378,6 +167474,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
  * 
  */
+  __Pyx_TraceLine(272,0,__PYX_ERR(13, 272, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_events, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 272, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
@@ -157393,6 +167490,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  * 
  *         if self._event_filter:
  */
+  __Pyx_TraceLine(273,0,__PYX_ERR(13, 273, __pyx_L1_error))
   __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CANNOT_SKIP;
 
   /* "src/lxml/iterparse.pxi":275
@@ -157402,6 +167500,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *             self._index = 0
  *             if self._matcher is not None and self._event_filter & PARSE_EVENT_FILTER_START:
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(13, 275, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_event_filter != 0);
   if (__pyx_t_3) {
 
@@ -157412,6 +167511,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *             if self._matcher is not None and self._event_filter & PARSE_EVENT_FILTER_START:
  *                 self._matcher.cacheTags(root._doc)
  */
+    __Pyx_TraceLine(276,0,__PYX_ERR(13, 276, __pyx_L1_error))
     __pyx_v_self->_index = 0;
 
     /* "src/lxml/iterparse.pxi":277
@@ -157421,6 +167521,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *                 self._matcher.cacheTags(root._doc)
  *             ns_count = self._start_node(root)
  */
+    __Pyx_TraceLine(277,0,__PYX_ERR(13, 277, __pyx_L1_error))
     __pyx_t_5 = (((PyObject *)__pyx_v_self->_matcher) != Py_None);
     __pyx_t_4 = (__pyx_t_5 != 0);
     if (__pyx_t_4) {
@@ -157440,6 +167541,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *             ns_count = self._start_node(root)
  *             self._node_stack.append( (root, ns_count) )
  */
+      __Pyx_TraceLine(278,0,__PYX_ERR(13, 278, __pyx_L1_error))
       __pyx_t_6 = ((PyObject *)__pyx_v_root->_doc);
       __Pyx_INCREF(__pyx_t_6);
       __pyx_t_2 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_6), NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(13, 278, __pyx_L1_error)
@@ -157461,6 +167563,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *             self._node_stack.append( (root, ns_count) )
  *         else:
  */
+    __Pyx_TraceLine(279,0,__PYX_ERR(13, 279, __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(13, 279, __pyx_L1_error)
     __pyx_v_ns_count = __pyx_t_2;
 
@@ -157471,6 +167574,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  *         else:
  *             self._index = -1
  */
+    __Pyx_TraceLine(280,0,__PYX_ERR(13, 280, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(13, 280, __pyx_L1_error)
@@ -157505,6 +167609,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(282,0,__PYX_ERR(13, 282, __pyx_L1_error))
   /*else*/ {
     __pyx_v_self->_index = -1;
   }
@@ -157528,6 +167633,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_root);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -157555,8 +167661,10 @@ static PyObject *__pyx_pw_4lxml_5etree_8iterwalk_3__iter__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[13], 284, 0, __PYX_ERR(13, 284, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":285
  * 
@@ -157565,6 +167673,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxm
  * 
  *     def __next__(self):
  */
+  __Pyx_TraceLine(285,0,__PYX_ERR(13, 285, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -157579,8 +167688,12 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxm
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.iterwalk.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -157612,6 +167725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
   struct LxmlElement *__pyx_v_next_node = 0;
   int __pyx_v_ns_count;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -157622,6 +167736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("__next__", 0);
+  __Pyx_TraceCall("__next__", __pyx_f[13], 287, 0, __PYX_ERR(13, 287, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":291
  *         cdef _Element node
@@ -157630,6 +167745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *         if self._events:
  *             return self._next_event()
  */
+  __Pyx_TraceLine(291,0,__PYX_ERR(13, 291, __pyx_L1_error))
   __pyx_v_ns_count = 0;
 
   /* "src/lxml/iterparse.pxi":292
@@ -157639,6 +167755,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             return self._next_event()
  *         if self._matcher is not None and self._index >= 0:
  */
+  __Pyx_TraceLine(292,0,__PYX_ERR(13, 292, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
   if (__pyx_t_1) {
 
@@ -157649,6 +167766,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *         if self._matcher is not None and self._index >= 0:
  *             node = self._node_stack[self._index][0]
  */
+    __Pyx_TraceLine(293,0,__PYX_ERR(13, 293, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 293, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -157672,6 +167790,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             node = self._node_stack[self._index][0]
  *             self._matcher.cacheTags(node._doc)
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(13, 294, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_self->_matcher) != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -157691,6 +167810,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             self._matcher.cacheTags(node._doc)
  * 
  */
+    __Pyx_TraceLine(295,0,__PYX_ERR(13, 295, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(13, 295, __pyx_L1_error)
@@ -157711,6 +167831,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  * 
  *         # find next node
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(13, 296, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_5);
     __pyx_t_6 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_5), NULL); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(13, 296, __pyx_L1_error)
@@ -157732,6 +167853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             node = self._node_stack[self._index][0]
  * 
  */
+  __Pyx_TraceLine(299,0,__PYX_ERR(13, 299, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_self->_index >= 0) != 0);
     if (!__pyx_t_1) break;
@@ -157743,6 +167865,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  * 
  *             if self._skip_state == IWSKIP_SKIP_NEXT:
  */
+    __Pyx_TraceLine(300,0,__PYX_ERR(13, 300, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(13, 300, __pyx_L1_error)
@@ -157763,6 +167886,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 c_child = NULL
  *             else:
  */
+    __Pyx_TraceLine(302,0,__PYX_ERR(13, 302, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_SKIP_NEXT) != 0);
     if (__pyx_t_1) {
 
@@ -157773,6 +167897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             else:
  *                 c_child = _findChildForwards(node._c_node, 0)
  */
+      __Pyx_TraceLine(303,0,__PYX_ERR(13, 303, __pyx_L1_error))
       __pyx_v_c_child = NULL;
 
       /* "src/lxml/iterparse.pxi":302
@@ -157792,6 +167917,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             self._skip_state = IWSKIP_CANNOT_SKIP
  * 
  */
+    __Pyx_TraceLine(305,0,__PYX_ERR(13, 305, __pyx_L1_error))
     /*else*/ {
       __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0);
     }
@@ -157804,6 +167930,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  * 
  *             if c_child is not NULL:
  */
+    __Pyx_TraceLine(306,0,__PYX_ERR(13, 306, __pyx_L1_error))
     __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CANNOT_SKIP;
 
     /* "src/lxml/iterparse.pxi":308
@@ -157813,6 +167940,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 # try children
  *                 next_node = _elementFactory(node._doc, c_child)
  */
+    __Pyx_TraceLine(308,0,__PYX_ERR(13, 308, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -157823,6 +167951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             else:
  *                 # back off
  */
+      __Pyx_TraceLine(310,0,__PYX_ERR(13, 310, __pyx_L1_error))
       __pyx_t_2 = ((PyObject *)__pyx_v_node->_doc);
       __Pyx_INCREF(__pyx_t_2);
       __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_2), __pyx_v_c_child)); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 310, __pyx_L1_error)
@@ -157848,6 +167977,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 while next_node is None:
  *                     # back off through parents
  */
+    __Pyx_TraceLine(313,0,__PYX_ERR(13, 313, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(Py_None);
       __Pyx_XDECREF_SET(__pyx_v_next_node, ((struct LxmlElement *)Py_None));
@@ -157859,6 +167989,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                     # back off through parents
  *                     self._index -= 1
  */
+      __Pyx_TraceLine(314,0,__PYX_ERR(13, 314, __pyx_L1_error))
       while (1) {
         __pyx_t_1 = (((PyObject *)__pyx_v_next_node) == Py_None);
         __pyx_t_4 = (__pyx_t_1 != 0);
@@ -157871,6 +168002,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                     node = self._end_node()
  *                     if self._index < 0:
  */
+        __Pyx_TraceLine(316,0,__PYX_ERR(13, 316, __pyx_L1_error))
         __pyx_v_self->_index = (__pyx_v_self->_index - 1);
 
         /* "src/lxml/iterparse.pxi":317
@@ -157880,6 +168012,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                     if self._index < 0:
  *                         break
  */
+        __Pyx_TraceLine(317,0,__PYX_ERR(13, 317, __pyx_L1_error))
         __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree_8iterwalk__end_node(__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 317, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF_SET(__pyx_v_node, ((struct LxmlElement *)__pyx_t_5));
@@ -157892,6 +168025,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                         break
  *                     next_node = node.getnext()
  */
+        __Pyx_TraceLine(318,0,__PYX_ERR(13, 318, __pyx_L1_error))
         __pyx_t_4 = ((__pyx_v_self->_index < 0) != 0);
         if (__pyx_t_4) {
 
@@ -157902,6 +168036,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                     next_node = node.getnext()
  *             if next_node is not None:
  */
+          __Pyx_TraceLine(319,0,__PYX_ERR(13, 319, __pyx_L1_error))
           goto __pyx_L12_break;
 
           /* "src/lxml/iterparse.pxi":318
@@ -157920,6 +168055,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             if next_node is not None:
  *                 if self._event_filter & (PARSE_EVENT_FILTER_START |
  */
+        __Pyx_TraceLine(320,0,__PYX_ERR(13, 320, __pyx_L1_error))
         __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_n_s_getnext); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 320, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __pyx_t_7 = NULL;
@@ -157955,6 +168091,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 if self._event_filter & (PARSE_EVENT_FILTER_START |
  *                                          PARSE_EVENT_FILTER_START_NS):
  */
+    __Pyx_TraceLine(321,0,__PYX_ERR(13, 321, __pyx_L1_error))
     __pyx_t_4 = (((PyObject *)__pyx_v_next_node) != Py_None);
     __pyx_t_1 = (__pyx_t_4 != 0);
     if (__pyx_t_1) {
@@ -157966,6 +168103,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                                          PARSE_EVENT_FILTER_START_NS):
  *                     ns_count = self._start_node(next_node)
  */
+      __Pyx_TraceLine(322,0,__PYX_ERR(13, 322, __pyx_L1_error))
       __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) {
 
@@ -157976,6 +168114,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
  *                     ns_count = _countNsDefs(next_node._c_node)
  */
+        __Pyx_TraceLine(324,0,__PYX_ERR(13, 324, __pyx_L1_error))
         __pyx_t_6 = __pyx_f_4lxml_5etree_8iterwalk__start_node(__pyx_v_self, __pyx_v_next_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(13, 324, __pyx_L1_error)
         __pyx_v_ns_count = __pyx_t_6;
 
@@ -157996,6 +168135,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                     ns_count = _countNsDefs(next_node._c_node)
  *                 self._node_stack.append( (next_node, ns_count) )
  */
+      __Pyx_TraceLine(325,0,__PYX_ERR(13, 325, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
       if (__pyx_t_1) {
 
@@ -158006,6 +168146,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 self._node_stack.append( (next_node, ns_count) )
  *                 self._index += 1
  */
+        __Pyx_TraceLine(326,0,__PYX_ERR(13, 326, __pyx_L1_error))
         __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_next_node->_c_node);
 
         /* "src/lxml/iterparse.pxi":325
@@ -158025,6 +168166,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 self._index += 1
  *             if self._events:
  */
+      __Pyx_TraceLine(327,0,__PYX_ERR(13, 327, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(13, 327, __pyx_L1_error)
@@ -158049,6 +168191,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *             if self._events:
  *                 return self._next_event()
  */
+      __Pyx_TraceLine(328,0,__PYX_ERR(13, 328, __pyx_L1_error))
       __pyx_v_self->_index = (__pyx_v_self->_index + 1);
 
       /* "src/lxml/iterparse.pxi":321
@@ -158067,6 +168210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *                 return self._next_event()
  *         raise StopIteration
  */
+    __Pyx_TraceLine(329,0,__PYX_ERR(13, 329, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
     if (__pyx_t_1) {
 
@@ -158077,6 +168221,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  *         raise StopIteration
  * 
  */
+      __Pyx_TraceLine(330,0,__PYX_ERR(13, 330, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 330, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -158101,6 +168246,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(331,0,__PYX_ERR(13, 331, __pyx_L1_error))
   __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
   __PYX_ERR(13, 331, __pyx_L1_error)
 
@@ -158123,6 +168269,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XDECREF((PyObject *)__pyx_v_next_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158137,12 +168284,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
 
 static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_next_event", 0);
+  __Pyx_TraceCall("_next_event", __pyx_f[13], 334, 0, __PYX_ERR(13, 334, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":335
  *     @cython.final
@@ -158151,6 +168300,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
  *             if self._events[0][0] in ('start', 'start-ns'):
  *                 self._skip_state = IWSKIP_CAN_SKIP
  */
+  __Pyx_TraceLine(335,0,__PYX_ERR(13, 335, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START) != 0);
   if (__pyx_t_1) {
 
@@ -158161,6 +168311,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
  *                 self._skip_state = IWSKIP_CAN_SKIP
  *         return self._pop_event(0)
  */
+    __Pyx_TraceLine(336,0,__PYX_ERR(13, 336, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_events == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(13, 336, __pyx_L1_error)
@@ -158190,6 +168341,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
  *         return self._pop_event(0)
  * 
  */
+      __Pyx_TraceLine(337,0,__PYX_ERR(13, 337, __pyx_L1_error))
       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CAN_SKIP;
 
       /* "src/lxml/iterparse.pxi":336
@@ -158217,8 +168369,9 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
  * 
  *     def skip_subtree(self):
  */
+  __Pyx_TraceLine(338,0,__PYX_ERR(13, 338, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 338, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_pop_event, __pyx_tuple__309, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 338, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -158240,6 +168393,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158269,9 +168423,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8iterwalk_7skip_subtree(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__310)
   __Pyx_RefNannySetupContext("skip_subtree", 0);
+  __Pyx_TraceCall("skip_subtree", __pyx_f[13], 340, 0, __PYX_ERR(13, 340, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":347
  *         This has no effect right after an 'end' or 'end-ns' event.
@@ -158280,6 +168437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
  *             self._skip_state = IWSKIP_SKIP_NEXT
  * 
  */
+  __Pyx_TraceLine(347,0,__PYX_ERR(13, 347, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_CAN_SKIP) != 0);
   if (__pyx_t_1) {
 
@@ -158290,6 +168448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
  * 
  *     @cython.final
  */
+    __Pyx_TraceLine(348,0,__PYX_ERR(13, 348, __pyx_L1_error))
     __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_SKIP_NEXT;
 
     /* "src/lxml/iterparse.pxi":347
@@ -158311,7 +168470,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.iterwalk.skip_subtree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158327,6 +168492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
 static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self, struct LxmlElement *__pyx_v_node) {
   int __pyx_v_ns_count;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -158335,6 +168501,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
   int __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_start_node", 0);
+  __Pyx_TraceCall("_start_node", __pyx_f[13], 351, 0, __PYX_ERR(13, 351, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":353
  *     cdef int _start_node(self, _Element node) except -1:
@@ -158343,6 +168510,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *             ns_count = _appendStartNsEvents(node._c_node, self._events)
  *             if self._events:
  */
+  __Pyx_TraceLine(353,0,__PYX_ERR(13, 353, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS) != 0);
   if (__pyx_t_1) {
 
@@ -158353,6 +168521,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *             if self._events:
  *                 self._skip_state = IWSKIP_NEXT_IS_START
  */
+    __Pyx_TraceLine(354,0,__PYX_ERR(13, 354, __pyx_L1_error))
     __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(13, 354, __pyx_L1_error)
@@ -158366,6 +168535,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *                 self._skip_state = IWSKIP_NEXT_IS_START
  *         elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
  */
+    __Pyx_TraceLine(355,0,__PYX_ERR(13, 355, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
     if (__pyx_t_1) {
 
@@ -158376,6 +168546,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *         elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
  *             ns_count = _countNsDefs(node._c_node)
  */
+      __Pyx_TraceLine(356,0,__PYX_ERR(13, 356, __pyx_L1_error))
       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START;
 
       /* "src/lxml/iterparse.pxi":355
@@ -158404,6 +168575,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *             ns_count = _countNsDefs(node._c_node)
  *         else:
  */
+  __Pyx_TraceLine(357,0,__PYX_ERR(13, 357, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
   if (__pyx_t_1) {
 
@@ -158414,6 +168586,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *         else:
  *             ns_count = 0
  */
+    __Pyx_TraceLine(358,0,__PYX_ERR(13, 358, __pyx_L1_error))
     __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_node->_c_node);
 
     /* "src/lxml/iterparse.pxi":357
@@ -158433,6 +168606,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *         if self._event_filter & PARSE_EVENT_FILTER_START:
  *             if self._matcher is None or self._matcher.matches(node._c_node):
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(13, 360, __pyx_L1_error))
   /*else*/ {
     __pyx_v_ns_count = 0;
   }
@@ -158445,6 +168619,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *             if self._matcher is None or self._matcher.matches(node._c_node):
  *                 self._events.append( (u"start", node) )
  */
+  __Pyx_TraceLine(361,0,__PYX_ERR(13, 361, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START) != 0);
   if (__pyx_t_1) {
 
@@ -158455,6 +168630,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *                 self._events.append( (u"start", node) )
  *                 self._skip_state = IWSKIP_NEXT_IS_START
  */
+    __Pyx_TraceLine(362,0,__PYX_ERR(13, 362, __pyx_L1_error))
     __pyx_t_4 = (((PyObject *)__pyx_v_self->_matcher) == Py_None);
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (!__pyx_t_5) {
@@ -158474,6 +168650,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *                 self._skip_state = IWSKIP_NEXT_IS_START
  *         return ns_count
  */
+      __Pyx_TraceLine(363,0,__PYX_ERR(13, 363, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(13, 363, __pyx_L1_error)
@@ -158496,6 +168673,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  *         return ns_count
  * 
  */
+      __Pyx_TraceLine(364,0,__PYX_ERR(13, 364, __pyx_L1_error))
       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START;
 
       /* "src/lxml/iterparse.pxi":362
@@ -158523,6 +168701,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(365,0,__PYX_ERR(13, 365, __pyx_L1_error))
   __pyx_r = __pyx_v_ns_count;
   goto __pyx_L0;
 
@@ -158540,6 +168719,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
   __Pyx_AddTraceback("lxml.etree.iterwalk._start_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158558,6 +168738,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
   int __pyx_v_ns_count;
   PyObject *__pyx_v_event = NULL;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -158572,6 +168753,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
   int __pyx_t_11;
   int __pyx_t_12;
   __Pyx_RefNannySetupContext("_end_node", 0);
+  __Pyx_TraceCall("_end_node", __pyx_f[13], 368, 0, __PYX_ERR(13, 368, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":371
  *         cdef _Element node
@@ -158580,6 +168762,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *         if self._event_filter & PARSE_EVENT_FILTER_END:
  *             if self._matcher is None or self._matcher.matches(node._c_node):
  */
+  __Pyx_TraceLine(371,0,__PYX_ERR(13, 371, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
     __PYX_ERR(13, 371, __pyx_L1_error)
@@ -158646,6 +168829,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *             if self._matcher is None or self._matcher.matches(node._c_node):
  *                 self._events.append( (u"end", node) )
  */
+  __Pyx_TraceLine(372,0,__PYX_ERR(13, 372, __pyx_L1_error))
   __pyx_t_7 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END) != 0);
   if (__pyx_t_7) {
 
@@ -158656,6 +168840,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *                 self._events.append( (u"end", node) )
  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
  */
+    __Pyx_TraceLine(373,0,__PYX_ERR(13, 373, __pyx_L1_error))
     __pyx_t_8 = (((PyObject *)__pyx_v_self->_matcher) == Py_None);
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (!__pyx_t_9) {
@@ -158675,6 +168860,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
  *             event = (u"end-ns", None)
  */
+      __Pyx_TraceLine(374,0,__PYX_ERR(13, 374, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(13, 374, __pyx_L1_error)
@@ -158715,6 +168901,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *             event = (u"end-ns", None)
  *             for i in range(ns_count):
  */
+  __Pyx_TraceLine(375,0,__PYX_ERR(13, 375, __pyx_L1_error))
   __pyx_t_9 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
   if (__pyx_t_9) {
   } else {
@@ -158733,8 +168920,9 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *             for i in range(ns_count):
  *                 self._events.append(event)
  */
-    __Pyx_INCREF(__pyx_tuple__113);
-    __pyx_v_event = __pyx_tuple__113;
+    __Pyx_TraceLine(376,0,__PYX_ERR(13, 376, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_tuple__311);
+    __pyx_v_event = __pyx_tuple__311;
 
     /* "src/lxml/iterparse.pxi":377
  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
@@ -158743,6 +168931,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *                 self._events.append(event)
  *         return node
  */
+    __Pyx_TraceLine(377,0,__PYX_ERR(13, 377, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_ns_count;
     __pyx_t_11 = __pyx_t_6;
     for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
@@ -158755,6 +168944,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  *         return node
  * 
  */
+      __Pyx_TraceLine(378,0,__PYX_ERR(13, 378, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_events == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(13, 378, __pyx_L1_error)
@@ -158778,6 +168968,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
  * 
  * 
  */
+  __Pyx_TraceLine(379,0,__PYX_ERR(13, 379, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_node));
   __pyx_r = __pyx_v_node;
@@ -158803,6 +168994,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XDECREF(__pyx_v_event);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158819,10 +169011,12 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
   xmlNs *__pyx_v_c_ns;
   int __pyx_v_count;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNs *__pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_countNsDefs", 0);
+  __Pyx_TraceCall("_countNsDefs", __pyx_f[13], 382, 0, __PYX_ERR(13, 382, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":385
  *     cdef xmlNs* c_ns
@@ -158831,6 +169025,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  *     c_ns = c_node.nsDef
  *     while c_ns is not NULL:
  */
+  __Pyx_TraceLine(385,0,__PYX_ERR(13, 385, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/iterparse.pxi":386
@@ -158840,6 +169035,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  *     while c_ns is not NULL:
  *         count += 1
  */
+  __Pyx_TraceLine(386,0,__PYX_ERR(13, 386, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->nsDef;
   __pyx_v_c_ns = __pyx_t_1;
 
@@ -158850,6 +169046,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  *         count += 1
  *         c_ns = c_ns.next
  */
+  __Pyx_TraceLine(387,0,__PYX_ERR(13, 387, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_ns != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -158861,6 +169058,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  *         c_ns = c_ns.next
  *     return count
  */
+    __Pyx_TraceLine(388,0,__PYX_ERR(13, 388, __pyx_L1_error))
     __pyx_v_count = (__pyx_v_count + 1);
 
     /* "src/lxml/iterparse.pxi":389
@@ -158870,6 +169068,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  *     return count
  * 
  */
+    __Pyx_TraceLine(389,0,__PYX_ERR(13, 389, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_ns->next;
     __pyx_v_c_ns = __pyx_t_1;
   }
@@ -158881,6 +169080,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  * 
  * 
  */
+  __Pyx_TraceLine(390,0,__PYX_ERR(13, 390, __pyx_L1_error))
   __pyx_r = __pyx_v_count;
   goto __pyx_L0;
 
@@ -158893,7 +169093,11 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._countNsDefs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -158911,6 +169115,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
   int __pyx_v_count;
   PyObject *__pyx_v_ns_tuple = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNs *__pyx_t_1;
   int __pyx_t_2;
@@ -158919,6 +169124,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_appendStartNsEvents", 0);
+  __Pyx_TraceCall("_appendStartNsEvents", __pyx_f[13], 393, 0, __PYX_ERR(13, 393, __pyx_L1_error));
 
   /* "src/lxml/iterparse.pxi":396
  *     cdef xmlNs* c_ns
@@ -158927,6 +169133,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *     c_ns = c_node.nsDef
  *     while c_ns is not NULL:
  */
+  __Pyx_TraceLine(396,0,__PYX_ERR(13, 396, __pyx_L1_error))
   __pyx_v_count = 0;
 
   /* "src/lxml/iterparse.pxi":397
@@ -158936,6 +169143,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *     while c_ns is not NULL:
  *         ns_tuple = (funicode(c_ns.prefix) if c_ns.prefix is not NULL else '',
  */
+  __Pyx_TraceLine(397,0,__PYX_ERR(13, 397, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_node->nsDef;
   __pyx_v_c_ns = __pyx_t_1;
 
@@ -158946,6 +169154,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         ns_tuple = (funicode(c_ns.prefix) if c_ns.prefix is not NULL else '',
  *                     funicode(c_ns.href))
  */
+  __Pyx_TraceLine(398,0,__PYX_ERR(13, 398, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_ns != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -158957,14 +169166,15 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *                     funicode(c_ns.href))
  *         event_list.append( (u"start-ns", ns_tuple) )
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(13, 399, __pyx_L1_error))
     if (((__pyx_v_c_ns->prefix != NULL) != 0)) {
       __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 399, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_3 = __pyx_t_4;
       __pyx_t_4 = 0;
     } else {
-      __Pyx_INCREF(__pyx_kp_s__16);
-      __pyx_t_3 = __pyx_kp_s__16;
+      __Pyx_INCREF(__pyx_kp_s__23);
+      __pyx_t_3 = __pyx_kp_s__23;
     }
 
     /* "src/lxml/iterparse.pxi":400
@@ -158974,6 +169184,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         event_list.append( (u"start-ns", ns_tuple) )
  *         count += 1
  */
+    __Pyx_TraceLine(400,0,__PYX_ERR(13, 400, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 400, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
 
@@ -158984,6 +169195,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *                     funicode(c_ns.href))
  *         event_list.append( (u"start-ns", ns_tuple) )
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(13, 399, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 399, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -159002,6 +169214,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         count += 1
  *         c_ns = c_ns.next
  */
+    __Pyx_TraceLine(401,0,__PYX_ERR(13, 401, __pyx_L1_error))
     if (unlikely(__pyx_v_event_list == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(13, 401, __pyx_L1_error)
@@ -159024,6 +169237,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         c_ns = c_ns.next
  *     return count
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(13, 402, __pyx_L1_error))
     __pyx_v_count = (__pyx_v_count + 1);
 
     /* "src/lxml/iterparse.pxi":403
@@ -159032,6 +169246,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
  *     return count
  */
+    __Pyx_TraceLine(403,0,__PYX_ERR(13, 403, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_ns->next;
     __pyx_v_c_ns = __pyx_t_1;
   }
@@ -159041,6 +169256,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
  *         c_ns = c_ns.next
  *     return count             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(404,0,__PYX_ERR(13, 404, __pyx_L1_error))
   __pyx_r = __pyx_v_count;
   goto __pyx_L0;
 
@@ -159061,6 +169277,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns_tuple);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -159153,6 +169370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_v_elem = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -159162,7 +169380,9 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_t_6 = NULL;
   Py_ssize_t __pyx_t_7;
   PyObject *(*__pyx_t_8)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__312)
   __Pyx_RefNannySetupContext("XMLID", 0);
+  __Pyx_TraceCall("XMLID", __pyx_f[14], 3, 0, __PYX_ERR(14, 3, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":14
  *     cdef dict dic
@@ -159171,6 +169391,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *         _find_id_attributes = XPath(u'//[inserted by cython to avoid comment start]*[string(@id)]')
  * 
  */
+  __Pyx_TraceLine(14,0,__PYX_ERR(14, 14, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_4lxml_5etree__find_id_attributes == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -159182,7 +169403,8 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  *     # ElementTree compatible implementation: parse and look for 'id' attributes
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 15, __pyx_L1_error)
+    __Pyx_TraceLine(15,0,__PYX_ERR(14, 15, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__313, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 15, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XGOTREF(__pyx_v_4lxml_5etree__find_id_attributes);
     __Pyx_DECREF_SET(__pyx_v_4lxml_5etree__find_id_attributes, __pyx_t_3);
@@ -159205,6 +169427,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *     dic = {}
  *     for elem in _find_id_attributes(root):
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(14, 18, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XML); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 18, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 18, __pyx_L1_error)
@@ -159233,6 +169456,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *     for elem in _find_id_attributes(root):
  *         dic[elem.get(u'id')] = elem
  */
+  __Pyx_TraceLine(19,0,__PYX_ERR(14, 19, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_dic = ((PyObject*)__pyx_t_6);
@@ -159245,6 +169469,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *         dic[elem.get(u'id')] = elem
  *     return (root, dic)
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(14, 20, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree__find_id_attributes);
   __pyx_t_5 = __pyx_v_4lxml_5etree__find_id_attributes; __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -159339,9 +169564,10 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *     return (root, dic)
  * 
  */
+    __Pyx_TraceLine(21,0,__PYX_ERR(14, 21, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 21, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 21, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__314, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 21, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (unlikely(PyDict_SetItem(__pyx_v_dic, __pyx_t_3, __pyx_v_elem) < 0)) __PYX_ERR(14, 21, __pyx_L1_error)
@@ -159354,6 +169580,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  *         dic[elem.get(u'id')] = elem
  *     return (root, dic)
  */
+    __Pyx_TraceLine(20,0,__PYX_ERR(14, 20, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -159364,6 +169591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  * def XMLDTDID(text, parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(14, 22, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -159398,6 +169626,7 @@ static PyObject *__pyx_pf_4lxml_5etree_48XMLID(CYTHON_UNUSED PyObject *__pyx_sel
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XDECREF(__pyx_v_elem);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -159488,13 +169717,16 @@ static PyObject *__pyx_pw_4lxml_5etree_51XMLDTDID(PyObject *__pyx_self, PyObject
 static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text, PyObject *__pyx_v_parser, PyObject *__pyx_v_base_url) {
   struct LxmlElement *__pyx_v_root = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__315)
   __Pyx_RefNannySetupContext("XMLDTDID", 0);
+  __Pyx_TraceCall("XMLDTDID", __pyx_f[14], 24, 0, __PYX_ERR(14, 24, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":37
  *     """
@@ -159503,6 +169735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_
  *     # xml:id spec compatible implementation: use DTD ID attributes from libxml2
  *     if root._doc._c_doc.ids is NULL:
  */
+  __Pyx_TraceLine(37,0,__PYX_ERR(14, 37, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_XML); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 37, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 37, __pyx_L1_error)
@@ -159532,6 +169765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_
  *         return (root, {})
  *     else:
  */
+  __Pyx_TraceLine(39,0,__PYX_ERR(14, 39, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_root->_doc->_c_doc->ids == NULL) != 0);
   if (__pyx_t_5) {
 
@@ -159542,6 +169776,7 @@ static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_
  *     else:
  *         return (root, _IDDict(root))
  */
+    __Pyx_TraceLine(40,0,__PYX_ERR(14, 40, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 40, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -159573,6 +169808,7 @@ static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_
  * 
  * def parseid(source, parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(14, 42, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__IDDict), ((PyObject *)__pyx_v_root)); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 42, __pyx_L1_error)
@@ -159609,6 +169845,7 @@ static PyObject *__pyx_pf_4lxml_5etree_50XMLDTDID(CYTHON_UNUSED PyObject *__pyx_
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -159699,11 +169936,14 @@ static PyObject *__pyx_pw_4lxml_5etree_53parseid(PyObject *__pyx_self, PyObject
 static PyObject *__pyx_pf_4lxml_5etree_52parseid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_source, PyObject *__pyx_v_parser, PyObject *__pyx_v_base_url) {
   struct LxmlDocument *__pyx_v_doc = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__316)
   __Pyx_RefNannySetupContext("parseid", 0);
+  __Pyx_TraceCall("parseid", __pyx_f[14], 44, 0, __PYX_ERR(14, 44, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":55
  *     """
@@ -159712,6 +169952,7 @@ static PyObject *__pyx_pf_4lxml_5etree_52parseid(CYTHON_UNUSED PyObject *__pyx_s
  *     return (_elementTreeFactory(doc, None), _IDDict(doc))
  * 
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(14, 55, __pyx_L1_error))
   if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(14, 55, __pyx_L1_error)
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_base_url)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -159725,6 +169966,7 @@ static PyObject *__pyx_pf_4lxml_5etree_52parseid(CYTHON_UNUSED PyObject *__pyx_s
  * 
  * cdef class _IDDict:
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(14, 56, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 56, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -159760,6 +170002,7 @@ static PyObject *__pyx_pf_4lxml_5etree_52parseid(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -159825,10 +170068,12 @@ static int __pyx_pw_4lxml_5etree_7_IDDict_1__cinit__(PyObject *__pyx_v_self, PyO
 static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self, PyObject *__pyx_v_etree) {
   struct LxmlDocument *__pyx_v_doc = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[14], 69, 0, __PYX_ERR(14, 69, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":71
  *     def __cinit__(self, etree):
@@ -159837,6 +170082,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  *         if doc._c_doc.ids is NULL:
  *             raise ValueError, u"No ID dictionary available."
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(14, 71, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 71, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -159849,6 +170095,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  *             raise ValueError, u"No ID dictionary available."
  *         self._doc = doc
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(14, 72, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_doc->_c_doc->ids == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -159859,6 +170106,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  *         self._doc = doc
  *         self._keys  = None
  */
+    __Pyx_TraceLine(73,0,__PYX_ERR(14, 73, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_No_ID_dictionary_available, 0, 0);
     __PYX_ERR(14, 73, __pyx_L1_error)
 
@@ -159878,6 +170126,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  *         self._keys  = None
  *         self._items = None
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(14, 74, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_doc));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
   __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -159891,6 +170140,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  *         self._items = None
  * 
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(14, 75, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_keys);
@@ -159904,6 +170154,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
  * 
  *     def copy(self):
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(14, 76, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_items);
@@ -159927,6 +170178,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict___cinit__(struct __pyx_obj_4lxml_5etre
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -159955,9 +170207,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_3copy(PyObject *__pyx_v_self, CY
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_2copy(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__317)
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[14], 78, 0, __PYX_ERR(14, 78, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":79
  * 
@@ -159966,6 +170221,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_2copy(struct __pyx_obj_4lxml_5et
  * 
  *     def __getitem__(self, id_name):
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(14, 79, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__IDDict), ((PyObject *)__pyx_v_self->_doc)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -159988,6 +170244,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_2copy(struct __pyx_obj_4lxml_5et
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160019,6 +170276,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
   xmlAttr *__pyx_v_c_attr;
   PyObject *__pyx_v_id_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlHashTable *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -160027,6 +170285,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[14], 81, 0, __PYX_ERR(14, 81, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":85
  *         cdef tree.xmlID* c_id
@@ -160035,6 +170294,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         id_utf = _utf8(id_name)
  *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _xcstr(id_utf))
  */
+  __Pyx_TraceLine(85,0,__PYX_ERR(14, 85, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_doc->_c_doc->ids;
   __pyx_v_c_ids = __pyx_t_1;
 
@@ -160045,6 +170305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _xcstr(id_utf))
  *         if c_id is NULL:
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(14, 86, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_id_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 86, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_id_utf = ((PyObject*)__pyx_t_2);
@@ -160057,6 +170318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         if c_id is NULL:
  *             raise KeyError, u"key not found."
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(14, 87, __pyx_L1_error))
   __pyx_v_c_id = ((xmlID *)xmlHashLookup(__pyx_v_c_ids, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_id_utf)));
 
   /* "src/lxml/xmlid.pxi":88
@@ -160066,6 +170328,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *             raise KeyError, u"key not found."
  *         c_attr = c_id.attr
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(14, 88, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_id == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -160076,6 +170339,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         c_attr = c_id.attr
  *         if c_attr is NULL or c_attr.parent is NULL:
  */
+    __Pyx_TraceLine(89,0,__PYX_ERR(14, 89, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_kp_u_key_not_found, 0, 0);
     __PYX_ERR(14, 89, __pyx_L1_error)
 
@@ -160095,6 +170359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         if c_attr is NULL or c_attr.parent is NULL:
  *             raise KeyError, u"ID attribute not found."
  */
+  __Pyx_TraceLine(90,0,__PYX_ERR(14, 90, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_id->attr;
   __pyx_v_c_attr = __pyx_t_4;
 
@@ -160105,6 +170370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *             raise KeyError, u"ID attribute not found."
  *         return _elementFactory(self._doc, c_attr.parent)
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(14, 91, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_c_attr == NULL) != 0);
   if (!__pyx_t_5) {
   } else {
@@ -160123,6 +170389,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  *         return _elementFactory(self._doc, c_attr.parent)
  * 
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(14, 92, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_kp_u_ID_attribute_not_found, 0, 0);
     __PYX_ERR(14, 92, __pyx_L1_error)
 
@@ -160142,6 +170409,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
  * 
  *     def get(self, id_name):
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(14, 93, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_2);
@@ -160169,6 +170437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_4__getitem__(struct __pyx_obj_4l
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_id_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160197,9 +170466,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_7get(PyObject *__pyx_v_self, PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_6get(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self, PyObject *__pyx_v_id_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__318)
   __Pyx_RefNannySetupContext("get", 0);
+  __Pyx_TraceCall("get", __pyx_f[14], 95, 0, __PYX_ERR(14, 95, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":96
  * 
@@ -160208,6 +170480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_6get(struct __pyx_obj_4lxml_5etr
  * 
  *     def __contains__(self, id_name):
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(14, 96, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_id_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -160230,6 +170503,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_6get(struct __pyx_obj_4lxml_5etr
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160259,9 +170533,11 @@ static int __pyx_pf_4lxml_5etree_7_IDDict_8__contains__(struct __pyx_obj_4lxml_5
   xmlID *__pyx_v_c_id;
   PyObject *__pyx_v_id_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__contains__", 0);
+  __Pyx_TraceCall("__contains__", __pyx_f[14], 98, 0, __PYX_ERR(14, 98, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":100
  *     def __contains__(self, id_name):
@@ -160270,6 +170546,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict_8__contains__(struct __pyx_obj_4lxml_5
  *         c_id = <tree.xmlID*>tree.xmlHashLookup(
  *             self._doc._c_doc.ids, _xcstr(id_utf))
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(14, 100, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_id_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_id_utf = ((PyObject*)__pyx_t_1);
@@ -160282,6 +170559,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict_8__contains__(struct __pyx_obj_4lxml_5
  *             self._doc._c_doc.ids, _xcstr(id_utf))
  *         return c_id is not NULL
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(14, 101, __pyx_L1_error))
   __pyx_v_c_id = ((xmlID *)xmlHashLookup(__pyx_v_self->_doc->_c_doc->ids, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_id_utf)));
 
   /* "src/lxml/xmlid.pxi":103
@@ -160291,6 +170569,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict_8__contains__(struct __pyx_obj_4lxml_5
  * 
  *     def has_key(self, id_name):
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(14, 103, __pyx_L1_error))
   __pyx_r = (__pyx_v_c_id != NULL);
   goto __pyx_L0;
 
@@ -160309,6 +170588,7 @@ static int __pyx_pf_4lxml_5etree_7_IDDict_8__contains__(struct __pyx_obj_4lxml_5
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_id_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160337,10 +170617,13 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_11has_key(PyObject *__pyx_v_self
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_10has_key(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self, PyObject *__pyx_v_id_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__319)
   __Pyx_RefNannySetupContext("has_key", 0);
+  __Pyx_TraceCall("has_key", __pyx_f[14], 105, 0, __PYX_ERR(14, 105, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":106
  * 
@@ -160349,6 +170632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_10has_key(struct __pyx_obj_4lxml
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(14, 106, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_id_name, ((PyObject *)__pyx_v_self), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(14, 106, __pyx_L1_error)
   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 106, __pyx_L1_error)
@@ -160372,6 +170656,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_10has_key(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160399,10 +170684,12 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_13__repr__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_12__repr__(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[14], 108, 0, __PYX_ERR(14, 108, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":109
  * 
@@ -160411,6 +170698,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_12__repr__(struct __pyx_obj_4lxm
  * 
  *     def keys(self):
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(14, 109, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 109, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -160437,6 +170725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_12__repr__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160465,11 +170754,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_15keys(PyObject *__pyx_v_self, C
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__320)
   __Pyx_RefNannySetupContext("keys", 0);
+  __Pyx_TraceCall("keys", __pyx_f[14], 111, 0, __PYX_ERR(14, 111, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":112
  * 
@@ -160478,6 +170770,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5e
  *             self._keys = self._build_keys()
  *         return self._keys[:]
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(14, 112, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_keys == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -160489,6 +170782,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5e
  *         return self._keys[:]
  * 
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(14, 113, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_keys(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -160513,8 +170807,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5e
  * 
  *     def __iter__(self):
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(14, 114, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_keys, 0, 0, NULL, NULL, &__pyx_slice__116, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 114, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_keys, 0, 0, NULL, NULL, &__pyx_slice__321, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 114, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -160535,6 +170830,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_14keys(struct __pyx_obj_4lxml_5e
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160562,12 +170858,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_17__iter__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_16__iter__(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[14], 116, 0, __PYX_ERR(14, 116, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":117
  * 
@@ -160576,6 +170874,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_16__iter__(struct __pyx_obj_4lxm
  *             self._keys = self._build_keys()
  *         return iter(self._keys)
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(14, 117, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_keys == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -160587,6 +170886,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_16__iter__(struct __pyx_obj_4lxm
  *         return iter(self._keys)
  * 
  */
+    __Pyx_TraceLine(118,0,__PYX_ERR(14, 118, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_keys(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 118, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -160611,6 +170911,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_16__iter__(struct __pyx_obj_4lxm
  * 
  *     def iterkeys(self):
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(14, 119, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __pyx_v_self->_keys;
   __Pyx_INCREF(__pyx_t_3);
@@ -160637,6 +170938,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_16__iter__(struct __pyx_obj_4lxm
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160665,8 +170967,11 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_19iterkeys(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_18iterkeys(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__322)
   __Pyx_RefNannySetupContext("iterkeys", 0);
+  __Pyx_TraceCall("iterkeys", __pyx_f[14], 121, 0, __PYX_ERR(14, 121, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":122
  * 
@@ -160675,6 +170980,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_18iterkeys(struct __pyx_obj_4lxm
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(14, 122, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_r = ((PyObject *)__pyx_v_self);
@@ -160689,8 +170995,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_18iterkeys(struct __pyx_obj_4lxm
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._IDDict.iterkeys", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160718,12 +171028,14 @@ static Py_ssize_t __pyx_pw_4lxml_5etree_7_IDDict_21__len__(PyObject *__pyx_v_sel
 
 static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict_20__len__(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   Py_ssize_t __pyx_t_4;
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[14], 124, 0, __PYX_ERR(14, 124, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":125
  * 
@@ -160732,6 +171044,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict_20__len__(struct __pyx_obj_4lxm
  *             self._keys = self._build_keys()
  *         return len(self._keys)
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(14, 125, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_keys == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -160743,6 +171056,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict_20__len__(struct __pyx_obj_4lxm
  *         return len(self._keys)
  * 
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(14, 126, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_keys(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -160767,6 +171081,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict_20__len__(struct __pyx_obj_4lxm
  * 
  *     def items(self):
  */
+  __Pyx_TraceLine(127,0,__PYX_ERR(14, 127, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_keys;
   __Pyx_INCREF(__pyx_t_3);
   __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(14, 127, __pyx_L1_error)
@@ -160788,6 +171103,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict_20__len__(struct __pyx_obj_4lxm
   __Pyx_AddTraceback("lxml.etree._IDDict.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160816,11 +171132,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_23items(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__323)
   __Pyx_RefNannySetupContext("items", 0);
+  __Pyx_TraceCall("items", __pyx_f[14], 129, 0, __PYX_ERR(14, 129, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":130
  * 
@@ -160829,6 +171148,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5
  *             self._items = self._build_items()
  *         return self._items[:]
  */
+  __Pyx_TraceLine(130,0,__PYX_ERR(14, 130, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_items == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -160840,6 +171160,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5
  *         return self._items[:]
  * 
  */
+    __Pyx_TraceLine(131,0,__PYX_ERR(14, 131, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_items(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 131, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -160864,8 +171185,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5
  * 
  *     def iteritems(self):
  */
+  __Pyx_TraceLine(132,0,__PYX_ERR(14, 132, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_items, 0, 0, NULL, NULL, &__pyx_slice__117, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 132, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->_items, 0, 0, NULL, NULL, &__pyx_slice__324, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 132, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -160886,6 +171208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_22items(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -160914,12 +171237,15 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_25iteritems(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_24iteritems(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__325)
   __Pyx_RefNannySetupContext("iteritems", 0);
+  __Pyx_TraceCall("iteritems", __pyx_f[14], 134, 0, __PYX_ERR(14, 134, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":135
  * 
@@ -160928,6 +171254,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_24iteritems(struct __pyx_obj_4lx
  *             self._items = self._build_items()
  *         return iter(self._items)
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(14, 135, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_items == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -160939,6 +171266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_24iteritems(struct __pyx_obj_4lx
  *         return iter(self._items)
  * 
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(14, 136, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_items(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -160963,6 +171291,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_24iteritems(struct __pyx_obj_4lx
  * 
  *     def values(self):
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(14, 137, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __pyx_v_self->_items;
   __Pyx_INCREF(__pyx_t_3);
@@ -160989,6 +171318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_24iteritems(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161020,6 +171350,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -161028,7 +171359,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
   PyObject *(*__pyx_t_5)(PyObject *);
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__326)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[14], 139, 0, __PYX_ERR(14, 139, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":140
  * 
@@ -161037,6 +171370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *         if self._items is None:
  *             self._items = self._build_items()
  */
+  __Pyx_TraceLine(140,0,__PYX_ERR(14, 140, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_values = ((PyObject*)__pyx_t_1);
@@ -161049,6 +171383,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *             self._items = self._build_items()
  *         for item in self._items:
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(14, 141, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_items == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -161060,6 +171395,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *         for item in self._items:
  *             value = python.PyTuple_GET_ITEM(item, 1)
  */
+    __Pyx_TraceLine(142,0,__PYX_ERR(14, 142, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)__pyx_v_self->__pyx_vtab)->_build_items(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 142, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -161084,6 +171420,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *             value = python.PyTuple_GET_ITEM(item, 1)
  *             python.Py_INCREF(value)
  */
+  __Pyx_TraceLine(143,0,__PYX_ERR(14, 143, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_self->_items)) || PyTuple_CheckExact(__pyx_v_self->_items)) {
     __pyx_t_1 = __pyx_v_self->_items; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
@@ -161133,6 +171470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *             python.Py_INCREF(value)
  *             values.append(value)
  */
+    __Pyx_TraceLine(144,0,__PYX_ERR(14, 144, __pyx_L1_error))
     __pyx_t_6 = PyTuple_GET_ITEM(__pyx_v_item, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 144, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
@@ -161145,6 +171483,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *             values.append(value)
  *         return values
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(14, 145, __pyx_L1_error))
     Py_INCREF(__pyx_v_value);
 
     /* "src/lxml/xmlid.pxi":146
@@ -161154,6 +171493,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *         return values
  * 
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(14, 146, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_values, __pyx_v_value); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(14, 146, __pyx_L1_error)
 
     /* "src/lxml/xmlid.pxi":143
@@ -161163,6 +171503,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  *             value = python.PyTuple_GET_ITEM(item, 1)
  *             python.Py_INCREF(value)
  */
+    __Pyx_TraceLine(143,0,__PYX_ERR(14, 143, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -161173,6 +171514,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
  * 
  *     def itervalues(self):
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(14, 147, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_values);
   __pyx_r = __pyx_v_values;
@@ -161197,6 +171539,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_26values(struct __pyx_obj_4lxml_
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161225,11 +171568,14 @@ static PyObject *__pyx_pw_4lxml_5etree_7_IDDict_29itervalues(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_28itervalues(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__327)
   __Pyx_RefNannySetupContext("itervalues", 0);
+  __Pyx_TraceCall("itervalues", __pyx_f[14], 149, 0, __PYX_ERR(14, 149, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":150
  * 
@@ -161238,6 +171584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_28itervalues(struct __pyx_obj_4l
  * 
  *     cdef object _build_keys(self):
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(14, 150, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -161283,6 +171630,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_28itervalues(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161298,9 +171646,11 @@ static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_28itervalues(struct __pyx_obj_4l
 static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
   PyObject *__pyx_v_keys = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_build_keys", 0);
+  __Pyx_TraceCall("_build_keys", __pyx_f[14], 152, 0, __PYX_ERR(14, 152, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":153
  * 
@@ -161309,6 +171659,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxm
  *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
  *                          <tree.xmlHashScanner>_collectIdHashKeys, <python.PyObject*>keys)
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(14, 153, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 153, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_keys = ((PyObject*)__pyx_t_1);
@@ -161321,6 +171672,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxm
  *                          <tree.xmlHashScanner>_collectIdHashKeys, <python.PyObject*>keys)
  *         return keys
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(14, 154, __pyx_L1_error))
   xmlHashScan(((xmlHashTable *)__pyx_v_self->_doc->_c_doc->ids), ((xmlHashScanner)__pyx_f_4lxml_5etree__collectIdHashKeys), ((PyObject *)__pyx_v_keys));
 
   /* "src/lxml/xmlid.pxi":156
@@ -161330,6 +171682,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxm
  * 
  *     cdef object _build_items(self):
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(14, 156, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_keys);
   __pyx_r = __pyx_v_keys;
@@ -161351,6 +171704,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_keys);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161367,9 +171721,11 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
   PyObject *__pyx_v_items = NULL;
   PyObject *__pyx_v_context = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_build_items", 0);
+  __Pyx_TraceCall("_build_items", __pyx_f[14], 158, 0, __PYX_ERR(14, 158, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":159
  * 
@@ -161378,6 +171734,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
  *         context = (items, self._doc)
  *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
  */
+  __Pyx_TraceLine(159,0,__PYX_ERR(14, 159, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 159, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_items = ((PyObject*)__pyx_t_1);
@@ -161390,6 +171747,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
  *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
  *                          <tree.xmlHashScanner>_collectIdHashItemList, <python.PyObject*>context)
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(14, 160, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_items);
@@ -161408,6 +171766,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
  *                          <tree.xmlHashScanner>_collectIdHashItemList, <python.PyObject*>context)
  *         return items
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(14, 161, __pyx_L1_error))
   xmlHashScan(((xmlHashTable *)__pyx_v_self->_doc->_c_doc->ids), ((xmlHashScanner)__pyx_f_4lxml_5etree__collectIdHashItemList), ((PyObject *)__pyx_v_context));
 
   /* "src/lxml/xmlid.pxi":163
@@ -161417,6 +171776,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
  * 
  * cdef void _collectIdHashItemList(void* payload, void* context, xmlChar* name):
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(14, 163, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_items);
   __pyx_r = __pyx_v_items;
@@ -161439,6 +171799,7 @@ static PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lx
   __Pyx_XDECREF(__pyx_v_items);
   __Pyx_XDECREF(__pyx_v_context);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161456,6 +171817,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
   xmlID *__pyx_v_c_id;
   PyObject *__pyx_v_doc = NULL;
   struct LxmlElement *__pyx_v_element = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -161464,6 +171826,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_collectIdHashItemList", 0);
+  __Pyx_TraceCall("_collectIdHashItemList", __pyx_f[14], 165, 0, __PYX_ERR(14, 165, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":168
  *     # collect elements from ID attribute hash table
@@ -161472,6 +171835,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
  *         return
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(14, 168, __pyx_L1_error))
   __pyx_v_c_id = ((xmlID *)__pyx_v_payload);
 
   /* "src/lxml/xmlid.pxi":169
@@ -161481,6 +171845,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  *         return
  *     lst, doc = <tuple>context
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(14, 169, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_id == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -161505,6 +171870,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  *     lst, doc = <tuple>context
  *     element = _elementFactory(doc, c_id.attr.parent)
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(14, 170, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xmlid.pxi":169
@@ -161523,6 +171889,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  *     element = _elementFactory(doc, c_id.attr.parent)
  *     lst.append( (funicode(name), element) )
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(14, 171, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_context);
   __Pyx_INCREF(__pyx_t_3);
   if (likely(__pyx_t_3 != Py_None)) {
@@ -161561,6 +171928,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  *     lst.append( (funicode(name), element) )
  * 
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(14, 172, __pyx_L1_error))
   if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) __PYX_ERR(14, 172, __pyx_L1_error)
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_id->attr->parent)); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -161574,6 +171942,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
  * 
  * cdef void _collectIdHashKeys(void* payload, void* collect_list, xmlChar* name):
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(14, 173, __pyx_L1_error))
   if (unlikely(__pyx_v_lst == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(14, 173, __pyx_L1_error)
@@ -161610,6 +171979,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
   __Pyx_XDECREF(__pyx_v_lst);
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -161623,12 +171993,14 @@ static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, v
 
 static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void *__pyx_v_collect_list, xmlChar *__pyx_v_name) {
   xmlID *__pyx_v_c_id;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_collectIdHashKeys", 0);
+  __Pyx_TraceCall("_collectIdHashKeys", __pyx_f[14], 175, 0, __PYX_ERR(14, 175, __pyx_L1_error));
 
   /* "src/lxml/xmlid.pxi":176
  * 
@@ -161637,6 +172009,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void
  *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
  *         return
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(14, 176, __pyx_L1_error))
   __pyx_v_c_id = ((xmlID *)__pyx_v_payload);
 
   /* "src/lxml/xmlid.pxi":177
@@ -161646,6 +172019,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void
  *         return
  *     (<list>collect_list).append(funicode(name))
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(14, 177, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_id == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -161669,6 +172043,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void
  *         return             # <<<<<<<<<<<<<<
  *     (<list>collect_list).append(funicode(name))
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(14, 178, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xmlid.pxi":177
@@ -161685,6 +172060,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void
  *         return
  *     (<list>collect_list).append(funicode(name))             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(14, 179, __pyx_L1_error))
   if (unlikely(((PyObject *)__pyx_v_collect_list) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(14, 179, __pyx_L1_error)
@@ -161708,6 +172084,7 @@ static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_WriteUnraisable("lxml.etree._collectIdHashKeys", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -161737,9 +172114,11 @@ static int __pyx_pw_4lxml_5etree_8XInclude_1__init__(PyObject *__pyx_v_self, PyO
 
 static int __pyx_pf_4lxml_5etree_8XInclude___init__(struct __pyx_obj_4lxml_5etree_XInclude *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[15], 19, 0, __PYX_ERR(15, 19, __pyx_L1_error));
 
   /* "src/lxml/xinclude.pxi":20
  *     cdef _ErrorLog _error_log
@@ -161748,6 +172127,7 @@ static int __pyx_pf_4lxml_5etree_8XInclude___init__(struct __pyx_obj_4lxml_5etre
  * 
  *     property error_log:
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(15, 20, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 20, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -161772,6 +172152,7 @@ static int __pyx_pf_4lxml_5etree_8XInclude___init__(struct __pyx_obj_4lxml_5etre
   __Pyx_AddTraceback("lxml.etree.XInclude.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161799,10 +172180,12 @@ static PyObject *__pyx_pw_4lxml_5etree_8XInclude_9error_log_1__get__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx_obj_4lxml_5etree_XInclude *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[15], 23, 0, __PYX_ERR(15, 23, __pyx_L1_error));
 
   /* "src/lxml/xinclude.pxi":24
  *     property error_log:
@@ -161811,6 +172194,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
  *             return self._error_log.copy()
  * 
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(15, 24, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
@@ -161828,6 +172212,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
  * 
  *     def __call__(self, _Element node not None):
  */
+  __Pyx_TraceLine(25,0,__PYX_ERR(15, 25, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 25, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -161850,6 +172235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -161927,6 +172313,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
   struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context = NULL;
   void *__pyx_v_c_context;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -161934,6 +172321,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[15], 27, 0, __PYX_ERR(15, 27, __pyx_L1_error));
 
   /* "src/lxml/xinclude.pxi":37
  *         # i.e. as a sibling, which does not conflict with traversal.
@@ -161942,6 +172330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         assert self._error_log is not None, "XInclude processor not initialised"
  *         if node._doc._parser is not None:
  */
+  __Pyx_TraceLine(37,0,__PYX_ERR(15, 37, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 37, __pyx_L1_error)
 
   /* "src/lxml/xinclude.pxi":38
@@ -161951,6 +172340,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         if node._doc._parser is not None:
  *             parse_options = node._doc._parser._parse_options
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(15, 38, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_2 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
@@ -161968,6 +172358,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             parse_options = node._doc._parser._parse_options
  *             context = node._doc._parser._getParserContext()
  */
+  __Pyx_TraceLine(39,0,__PYX_ERR(15, 39, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_node->_doc->_parser) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -161979,6 +172370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             context = node._doc._parser._getParserContext()
  *             c_context = <void*>context
  */
+    __Pyx_TraceLine(40,0,__PYX_ERR(15, 40, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_node->_doc->_parser->_parse_options;
     __pyx_v_parse_options = __pyx_t_1;
 
@@ -161989,6 +172381,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             c_context = <void*>context
  *         else:
  */
+    __Pyx_TraceLine(41,0,__PYX_ERR(15, 41, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_node->_doc->_parser->__pyx_vtab)->_getParserContext(__pyx_v_node->_doc->_parser)); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 41, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
@@ -162001,6 +172394,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         else:
  *             parse_options = 0
  */
+    __Pyx_TraceLine(42,0,__PYX_ERR(15, 42, __pyx_L1_error))
     __pyx_v_c_context = ((void *)__pyx_v_context);
 
     /* "src/lxml/xinclude.pxi":39
@@ -162020,6 +172414,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             context = None
  *             c_context = NULL
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(15, 44, __pyx_L1_error))
   /*else*/ {
     __pyx_v_parse_options = 0;
 
@@ -162030,6 +172425,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             c_context = NULL
  * 
  */
+    __Pyx_TraceLine(45,0,__PYX_ERR(15, 45, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None);
 
@@ -162040,6 +172436,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  * 
  *         self._error_log.connect()
  */
+    __Pyx_TraceLine(46,0,__PYX_ERR(15, 46, __pyx_L1_error))
     __pyx_v_c_context = NULL;
   }
   __pyx_L3:;
@@ -162051,6 +172448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         if tree.LIBXML_VERSION < 20704 or not c_context:
  *             __GLOBAL_PARSER_CONTEXT.pushImpliedContext(context)
  */
+  __Pyx_TraceLine(48,0,__PYX_ERR(15, 48, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_connect(__pyx_v_self->_error_log); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 48, __pyx_L1_error)
 
   /* "src/lxml/xinclude.pxi":49
@@ -162060,6 +172458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             __GLOBAL_PARSER_CONTEXT.pushImpliedContext(context)
  *         with nogil:
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(15, 49, __pyx_L1_error))
   __pyx_t_2 = ((LIBXML_VERSION < 0x50E0) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -162078,6 +172477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         with nogil:
  *             if c_context:
  */
+    __Pyx_TraceLine(50,0,__PYX_ERR(15, 50, __pyx_L1_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_context);
 
     /* "src/lxml/xinclude.pxi":49
@@ -162096,6 +172496,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             if c_context:
  *                 result = xinclude.xmlXIncludeProcessTreeFlagsData(
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(15, 51, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -162111,6 +172512,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *                 result = xinclude.xmlXIncludeProcessTreeFlagsData(
  *                     node._c_node, parse_options, c_context)
  */
+        __Pyx_TraceLine(52,1,__PYX_ERR(15, 52, __pyx_L8_error))
         __pyx_t_3 = (__pyx_v_c_context != 0);
         if (__pyx_t_3) {
 
@@ -162121,6 +172523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *                     node._c_node, parse_options, c_context)
  *             else:
  */
+          __Pyx_TraceLine(53,1,__PYX_ERR(15, 53, __pyx_L8_error))
           __pyx_v_result = xmlXIncludeProcessTreeFlagsData(__pyx_v_node->_c_node, __pyx_v_parse_options, __pyx_v_c_context);
 
           /* "src/lxml/xinclude.pxi":52
@@ -162140,6 +172543,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         if tree.LIBXML_VERSION < 20704 or not c_context:
  *             __GLOBAL_PARSER_CONTEXT.popImpliedContext()
  */
+        __Pyx_TraceLine(56,1,__PYX_ERR(15, 56, __pyx_L8_error))
         /*else*/ {
           __pyx_v_result = xmlXIncludeProcessTree(__pyx_v_node->_c_node);
         }
@@ -162153,6 +172557,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             if c_context:
  *                 result = xinclude.xmlXIncludeProcessTreeFlagsData(
  */
+      __Pyx_TraceLine(51,1,__PYX_ERR(15, 51, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -162161,6 +172566,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
           #endif
           goto __pyx_L9;
         }
+        __pyx_L8_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L9:;
       }
   }
@@ -162172,6 +172584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             __GLOBAL_PARSER_CONTEXT.popImpliedContext()
  *         self._error_log.disconnect()
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(15, 57, __pyx_L1_error))
   __pyx_t_2 = ((LIBXML_VERSION < 0x50E0) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -162190,6 +172603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *         self._error_log.disconnect()
  * 
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(15, 58, __pyx_L1_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);
 
     /* "src/lxml/xinclude.pxi":57
@@ -162208,6 +172622,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  * 
  *         if result == -1:
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(15, 59, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(__pyx_v_self->_error_log); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 59, __pyx_L1_error)
 
   /* "src/lxml/xinclude.pxi":61
@@ -162217,6 +172632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *             raise XIncludeError(
  *                 self._error_log._buildExceptionMessage(
  */
+  __Pyx_TraceLine(61,0,__PYX_ERR(15, 61, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_result == -1L) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -162227,6 +172643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *                     u"XInclude processing failed"),
  *                 self._error_log)
  */
+    __Pyx_TraceLine(63,0,__PYX_ERR(15, 63, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_XInclude_processing_failed); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 63, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
 
@@ -162237,6 +172654,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
  *                 self._error_log._buildExceptionMessage(
  *                     u"XInclude processing failed"),
  */
+    __Pyx_TraceLine(62,0,__PYX_ERR(15, 62, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 62, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4);
@@ -162280,6 +172698,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -162378,6 +172797,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
   struct LxmlDocument *__pyx_v_doc = NULL;
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlNode *__pyx_t_2;
@@ -162388,7 +172808,9 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
   Py_ssize_t __pyx_t_7;
   PyObject *(*__pyx_t_8)(PyObject *);
   PyObject *__pyx_t_9 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__328)
   __Pyx_RefNannySetupContext("cleanup_namespaces", 0);
+  __Pyx_TraceCall("cleanup_namespaces", __pyx_f[16], 3, 0, __PYX_ERR(16, 3, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_keep_ns_prefixes);
 
   /* "src/lxml/cleanup.pxi":17
@@ -162398,6 +172820,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  *     c_element = element._c_node
  * 
  */
+  __Pyx_TraceLine(17,0,__PYX_ERR(16, 17, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 17, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -162410,6 +172833,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  * 
  *     if top_nsmap:
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(16, 18, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_element->_c_node;
   __pyx_v_c_element = __pyx_t_2;
 
@@ -162420,6 +172844,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  *         doc = element._doc
  *         # declare namespaces from nsmap, then apply them to the subtree
  */
+  __Pyx_TraceLine(20,0,__PYX_ERR(16, 20, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_top_nsmap); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(16, 20, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -162430,6 +172855,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  *         # declare namespaces from nsmap, then apply them to the subtree
  *         _setNodeNamespaces(c_element, doc, None, top_nsmap)
  */
+    __Pyx_TraceLine(21,0,__PYX_ERR(16, 21, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_v_element->_doc);
     __Pyx_INCREF(__pyx_t_1);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -162442,6 +172868,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  *         moveNodeToDocument(doc, c_element.doc, c_element)
  * 
  */
+    __Pyx_TraceLine(23,0,__PYX_ERR(16, 23, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__setNodeNamespaces(__pyx_v_c_element, __pyx_v_doc, Py_None, __pyx_v_top_nsmap); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 23, __pyx_L1_error)
 
     /* "src/lxml/cleanup.pxi":24
@@ -162451,6 +172878,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  * 
  *     keep_ns_prefixes = (
  */
+    __Pyx_TraceLine(24,0,__PYX_ERR(16, 24, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_c_element->doc, __pyx_v_c_element); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 24, __pyx_L1_error)
 
     /* "src/lxml/cleanup.pxi":20
@@ -162469,6 +172897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  * 
  *     _removeUnusedNamespaceDeclarations(c_element, keep_ns_prefixes)
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(16, 28, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_keep_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(16, 28, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -162479,6 +172908,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  *         if keep_ns_prefixes else None)
  * 
  */
+    __Pyx_TraceLine(27,0,__PYX_ERR(16, 27, __pyx_L1_error))
     __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 27, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (likely(PyList_CheckExact(__pyx_v_keep_ns_prefixes)) || PyTuple_CheckExact(__pyx_v_keep_ns_prefixes)) {
@@ -162542,6 +172972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  * 
  *     _removeUnusedNamespaceDeclarations(c_element, keep_ns_prefixes)
  */
+    __Pyx_TraceLine(28,0,__PYX_ERR(16, 28, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_t_1 = Py_None;
   }
@@ -162555,6 +172986,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
  * 
  * 
  */
+  __Pyx_TraceLine(30,0,__PYX_ERR(16, 30, __pyx_L1_error))
   if (!(likely(PySet_CheckExact(__pyx_v_keep_ns_prefixes))||((__pyx_v_keep_ns_prefixes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_keep_ns_prefixes)->tp_name), 0))) __PYX_ERR(16, 30, __pyx_L1_error)
   __pyx_t_4 = __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(__pyx_v_c_element, ((PyObject*)__pyx_v_keep_ns_prefixes)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 30, __pyx_L1_error)
 
@@ -162582,6 +173014,7 @@ static PyObject *__pyx_pf_4lxml_5etree_54cleanup_namespaces(CYTHON_UNUSED PyObje
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XDECREF(__pyx_v_keep_ns_prefixes);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -162664,13 +173097,16 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
   struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_matcher = 0;
   struct LxmlElement *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__329)
   __Pyx_RefNannySetupContext("strip_attributes", 0);
+  __Pyx_TraceCall("strip_attributes", __pyx_f[16], 33, 0, __PYX_ERR(16, 33, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":49
  *     """
@@ -162679,6 +173115,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *     if not attribute_names:
  *         return
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(16, 49, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 49, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -162691,6 +173128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *         return
  * 
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(16, 50, __pyx_L1_error))
   __pyx_t_2 = (PyTuple_GET_SIZE(__pyx_v_attribute_names) != 0);
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (__pyx_t_3) {
@@ -162702,6 +173140,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  * 
  *     matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, attribute_names)
  */
+    __Pyx_TraceLine(51,0,__PYX_ERR(16, 51, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -162722,6 +173161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *     matcher.cacheTags(element._doc)
  *     if matcher.rejectsAllAttributes():
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(16, 53, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 53, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_attribute_names);
@@ -162740,6 +173180,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *     if matcher.rejectsAllAttributes():
  *         return
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(16, 54, __pyx_L1_error))
   __pyx_t_4 = ((PyObject *)__pyx_v_element->_doc);
   __Pyx_INCREF(__pyx_t_4);
   __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_matcher, ((struct LxmlDocument *)__pyx_t_4), NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 54, __pyx_L1_error)
@@ -162752,6 +173193,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *         return
  *     _strip_attributes(element._c_node, matcher)
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(16, 55, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(__pyx_v_matcher) != 0);
   if (__pyx_t_3) {
 
@@ -162762,6 +173204,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  *     _strip_attributes(element._c_node, matcher)
  * 
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(16, 56, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -162782,6 +173225,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
  * 
  * 
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(16, 57, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__strip_attributes(__pyx_v_element->_c_node, __pyx_v_matcher); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -162806,6 +173250,7 @@ static PyObject *__pyx_pf_4lxml_5etree_56strip_attributes(CYTHON_UNUSED PyObject
   __Pyx_XDECREF((PyObject *)__pyx_v_matcher);
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -162822,10 +173267,12 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
   xmlAttr *__pyx_v_c_attr;
   xmlAttr *__pyx_v_c_next_attr;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlAttr *__pyx_t_2;
   __Pyx_RefNannySetupContext("_strip_attributes", 0);
+  __Pyx_TraceCall("_strip_attributes", __pyx_f[16], 60, 0, __PYX_ERR(16, 60, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":63
  *     cdef xmlAttr* c_attr
@@ -162834,6 +173281,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         c_attr = c_node.properties
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(16, 63, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
   /* "src/lxml/cleanup.pxi":64
@@ -162843,6 +173291,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *         c_attr = c_node.properties
  *         while c_attr is not NULL:
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(16, 64, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -162853,6 +173302,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *         while c_attr is not NULL:
  *             c_next_attr = c_attr.next
  */
+    __Pyx_TraceLine(65,0,__PYX_ERR(16, 65, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->properties;
     __pyx_v_c_attr = __pyx_t_2;
 
@@ -162863,6 +173313,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *             c_next_attr = c_attr.next
  *             if matcher.matchesAttribute(c_attr):
  */
+    __Pyx_TraceLine(66,0,__PYX_ERR(16, 66, __pyx_L1_error))
     while (1) {
       __pyx_t_1 = ((__pyx_v_c_attr != NULL) != 0);
       if (!__pyx_t_1) break;
@@ -162874,6 +173325,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *             if matcher.matchesAttribute(c_attr):
  *                 tree.xmlRemoveProp(c_attr)
  */
+      __Pyx_TraceLine(67,0,__PYX_ERR(16, 67, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_attr->next;
       __pyx_v_c_next_attr = __pyx_t_2;
 
@@ -162884,6 +173336,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *                 tree.xmlRemoveProp(c_attr)
  *             c_attr = c_next_attr
  */
+      __Pyx_TraceLine(68,0,__PYX_ERR(16, 68, __pyx_L1_error))
       __pyx_t_1 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribute(__pyx_v_matcher, __pyx_v_c_attr) != 0);
       if (__pyx_t_1) {
 
@@ -162894,6 +173347,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *             c_attr = c_next_attr
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+        __Pyx_TraceLine(69,0,__PYX_ERR(16, 69, __pyx_L1_error))
         (void)(xmlRemoveProp(__pyx_v_c_attr));
 
         /* "src/lxml/cleanup.pxi":68
@@ -162912,6 +173366,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  */
+      __Pyx_TraceLine(70,0,__PYX_ERR(16, 70, __pyx_L1_error))
       __pyx_v_c_attr = __pyx_v_c_next_attr;
     }
 
@@ -162931,6 +173386,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
  * 
  * 
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(16, 71, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "src/lxml/cleanup.pxi":60
@@ -162943,7 +173399,13 @@ static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node,
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._strip_attributes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -163038,13 +173500,16 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
   struct LxmlDocument *__pyx_v_doc = NULL;
   struct LxmlElement *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__330)
   __Pyx_RefNannySetupContext("strip_elements", 0);
+  __Pyx_TraceCall("strip_elements", __pyx_f[16], 74, 0, __PYX_ERR(16, 74, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":100
  *     """
@@ -163053,6 +173518,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *     element = _rootNodeOrRaise(tree_or_element)
  *     if not tag_names:
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(16, 100, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -163065,6 +173531,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *     if not tag_names:
  *         return
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(16, 101, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 101, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -163077,6 +173544,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *         return
  * 
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(16, 102, __pyx_L1_error))
   __pyx_t_2 = (PyTuple_GET_SIZE(__pyx_v_tag_names) != 0);
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (__pyx_t_3) {
@@ -163088,6 +173556,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  * 
  *     matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag_names)
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(16, 103, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -163108,6 +173577,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *     matcher.cacheTags(doc)
  *     if matcher.rejectsAll():
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(16, 105, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_tag_names);
@@ -163126,6 +173596,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *     if matcher.rejectsAll():
  *         return
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(16, 106, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_matcher, __pyx_v_doc, NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 106, __pyx_L1_error)
 
   /* "src/lxml/cleanup.pxi":107
@@ -163135,6 +173606,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *         return
  * 
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(16, 107, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(__pyx_v_matcher) != 0);
   if (__pyx_t_3) {
 
@@ -163145,6 +173617,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  * 
  *     if isinstance(tree_or_element, _ElementTree):
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(16, 108, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -163165,6 +173638,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *         # include PIs and comments next to the root node
  *         if matcher.matchesType(tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(16, 110, __pyx_L1_error))
   __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_tree_or_element, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -163176,6 +173650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail)
  *         if matcher.matchesType(tree.XML_PI_NODE):
  */
+    __Pyx_TraceLine(112,0,__PYX_ERR(16, 112, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(__pyx_v_matcher, XML_COMMENT_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -163186,6 +173661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *         if matcher.matchesType(tree.XML_PI_NODE):
  *             _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail)
  */
+      __Pyx_TraceLine(113,0,__PYX_ERR(16, 113, __pyx_L1_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_COMMENT_NODE, __pyx_v_with_tail); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 113, __pyx_L1_error)
 
       /* "src/lxml/cleanup.pxi":112
@@ -163204,6 +173680,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *             _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail)
  *     _strip_elements(doc, element._c_node, matcher, with_tail)
  */
+    __Pyx_TraceLine(114,0,__PYX_ERR(16, 114, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(__pyx_v_matcher, XML_PI_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -163214,6 +173691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  *     _strip_elements(doc, element._c_node, matcher, with_tail)
  * 
  */
+      __Pyx_TraceLine(115,0,__PYX_ERR(16, 115, __pyx_L1_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_PI_NODE, __pyx_v_with_tail); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 115, __pyx_L1_error)
 
       /* "src/lxml/cleanup.pxi":114
@@ -163241,6 +173719,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
  * 
  * cdef _strip_elements(_Document doc, xmlNode* c_node, _MultiTagMatcher matcher,
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(16, 116, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__strip_elements(__pyx_v_doc, __pyx_v_element->_c_node, __pyx_v_matcher, __pyx_v_with_tail); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 116, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -163266,6 +173745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_58strip_elements(CYTHON_UNUSED PyObject *
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -163282,10 +173762,12 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
   xmlNode *__pyx_v_c_child;
   xmlNode *__pyx_v_c_next;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_strip_elements", 0);
+  __Pyx_TraceCall("_strip_elements", __pyx_f[16], 118, 0, __PYX_ERR(16, 118, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":123
  *     cdef xmlNode* c_next
@@ -163294,6 +173776,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         # we run through the children here to prevent any problems
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(16, 123, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
   /* "src/lxml/cleanup.pxi":124
@@ -163303,6 +173786,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *         # we run through the children here to prevent any problems
  *         # with the tree iteration which would occur if we unlinked the
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(16, 124, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -163313,6 +173797,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *         while c_child is not NULL:
  *             c_next = _nextElement(c_child)
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(16, 128, __pyx_L1_error))
     __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, 0);
 
     /* "src/lxml/cleanup.pxi":129
@@ -163322,6 +173807,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *             c_next = _nextElement(c_child)
  *             if matcher.matches(c_child):
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(16, 129, __pyx_L1_error))
     while (1) {
       __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_1) break;
@@ -163333,6 +173819,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *             if matcher.matches(c_child):
  *                 if c_child.type == tree.XML_ELEMENT_NODE:
  */
+      __Pyx_TraceLine(130,0,__PYX_ERR(16, 130, __pyx_L1_error))
       __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);
 
       /* "src/lxml/cleanup.pxi":131
@@ -163342,6 +173829,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                 if c_child.type == tree.XML_ELEMENT_NODE:
  *                     if not with_tail:
  */
+      __Pyx_TraceLine(131,0,__PYX_ERR(16, 131, __pyx_L1_error))
       __pyx_t_1 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(__pyx_v_matcher, __pyx_v_c_child) != 0);
       if (__pyx_t_1) {
 
@@ -163352,6 +173840,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                     if not with_tail:
  *                         tree.xmlUnlinkNode(c_child)
  */
+        __Pyx_TraceLine(132,0,__PYX_ERR(16, 132, __pyx_L1_error))
         __pyx_t_1 = ((__pyx_v_c_child->type == XML_ELEMENT_NODE) != 0);
         if (__pyx_t_1) {
 
@@ -163362,6 +173851,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                         tree.xmlUnlinkNode(c_child)
  *                     _removeNode(doc, c_child)
  */
+          __Pyx_TraceLine(133,0,__PYX_ERR(16, 133, __pyx_L1_error))
           __pyx_t_1 = ((!(__pyx_v_with_tail != 0)) != 0);
           if (__pyx_t_1) {
 
@@ -163372,6 +173862,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                     _removeNode(doc, c_child)
  *                 else:
  */
+            __Pyx_TraceLine(134,0,__PYX_ERR(16, 134, __pyx_L1_error))
             xmlUnlinkNode(__pyx_v_c_child);
 
             /* "src/lxml/cleanup.pxi":133
@@ -163390,6 +173881,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                 else:
  *                     if with_tail:
  */
+          __Pyx_TraceLine(135,0,__PYX_ERR(16, 135, __pyx_L1_error))
           __pyx_t_2 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_child); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(16, 135, __pyx_L1_error)
 
           /* "src/lxml/cleanup.pxi":132
@@ -163409,6 +173901,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                         _removeText(c_child.next)
  *                     tree.xmlUnlinkNode(c_child)
  */
+        __Pyx_TraceLine(137,0,__PYX_ERR(16, 137, __pyx_L1_error))
         /*else*/ {
           __pyx_t_1 = (__pyx_v_with_tail != 0);
           if (__pyx_t_1) {
@@ -163420,6 +173913,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                     tree.xmlUnlinkNode(c_child)
  *                     attemptDeallocation(c_child)
  */
+            __Pyx_TraceLine(138,0,__PYX_ERR(16, 138, __pyx_L1_error))
             __pyx_f_4lxml_5etree__removeText(__pyx_v_c_child->next);
 
             /* "src/lxml/cleanup.pxi":137
@@ -163438,6 +173932,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *                     attemptDeallocation(c_child)
  *             c_child = c_next
  */
+          __Pyx_TraceLine(139,0,__PYX_ERR(16, 139, __pyx_L1_error))
           xmlUnlinkNode(__pyx_v_c_child);
 
           /* "src/lxml/cleanup.pxi":140
@@ -163447,6 +173942,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *             c_child = c_next
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+          __Pyx_TraceLine(140,0,__PYX_ERR(16, 140, __pyx_L1_error))
           (void)(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child));
         }
         __pyx_L7:;
@@ -163467,6 +173963,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  */
+      __Pyx_TraceLine(141,0,__PYX_ERR(16, 141, __pyx_L1_error))
       __pyx_v_c_child = __pyx_v_c_next;
     }
 
@@ -163486,6 +173983,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
  * 
  * 
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(16, 142, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "src/lxml/cleanup.pxi":118
@@ -163504,6 +174002,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -163587,13 +174086,16 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
   struct LxmlDocument *__pyx_v_doc = NULL;
   struct LxmlElement *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__331)
   __Pyx_RefNannySetupContext("strip_tags", 0);
+  __Pyx_TraceCall("strip_tags", __pyx_f[16], 145, 0, __PYX_ERR(16, 145, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":170
  *     """
@@ -163602,6 +174104,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *     element = _rootNodeOrRaise(tree_or_element)
  *     if not tag_names:
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(16, 170, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 170, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -163614,6 +174117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *     if not tag_names:
  *         return
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(16, 171, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -163626,6 +174130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *         return
  * 
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(16, 172, __pyx_L1_error))
   __pyx_t_2 = (PyTuple_GET_SIZE(__pyx_v_tag_names) != 0);
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (__pyx_t_3) {
@@ -163637,6 +174142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  * 
  *     matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag_names)
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(16, 173, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -163657,6 +174163,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *     matcher.cacheTags(doc)
  *     if matcher.rejectsAll():
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(16, 175, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 175, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_tag_names);
@@ -163675,6 +174182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *     if matcher.rejectsAll():
  *         return
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(16, 176, __pyx_L1_error))
   __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_matcher, __pyx_v_doc, NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 176, __pyx_L1_error)
 
   /* "src/lxml/cleanup.pxi":177
@@ -163684,6 +174192,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *         return
  * 
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(16, 177, __pyx_L1_error))
   __pyx_t_3 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(__pyx_v_matcher) != 0);
   if (__pyx_t_3) {
 
@@ -163694,6 +174203,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  * 
  *     if isinstance(tree_or_element, _ElementTree):
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(16, 178, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -163714,6 +174224,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *         # include PIs and comments next to the root node
  *         if matcher.matchesType(tree.XML_COMMENT_NODE):
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(16, 180, __pyx_L1_error))
   __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_tree_or_element, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -163725,6 +174236,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0)
  *         if matcher.matchesType(tree.XML_PI_NODE):
  */
+    __Pyx_TraceLine(182,0,__PYX_ERR(16, 182, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(__pyx_v_matcher, XML_COMMENT_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -163735,6 +174247,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *         if matcher.matchesType(tree.XML_PI_NODE):
  *             _removeSiblings(element._c_node, tree.XML_PI_NODE, 0)
  */
+      __Pyx_TraceLine(183,0,__PYX_ERR(16, 183, __pyx_L1_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_COMMENT_NODE, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 183, __pyx_L1_error)
 
       /* "src/lxml/cleanup.pxi":182
@@ -163753,6 +174266,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *             _removeSiblings(element._c_node, tree.XML_PI_NODE, 0)
  *     _strip_tags(doc, element._c_node, matcher)
  */
+    __Pyx_TraceLine(184,0,__PYX_ERR(16, 184, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(__pyx_v_matcher, XML_PI_NODE) != 0);
     if (__pyx_t_2) {
 
@@ -163763,6 +174277,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  *     _strip_tags(doc, element._c_node, matcher)
  * 
  */
+      __Pyx_TraceLine(185,0,__PYX_ERR(16, 185, __pyx_L1_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_PI_NODE, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(16, 185, __pyx_L1_error)
 
       /* "src/lxml/cleanup.pxi":184
@@ -163790,6 +174305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
  * 
  * cdef _strip_tags(_Document doc, xmlNode* c_node, _MultiTagMatcher matcher):
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(16, 186, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__strip_tags(__pyx_v_doc, __pyx_v_element->_c_node, __pyx_v_matcher); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 186, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -163815,6 +174331,7 @@ static PyObject *__pyx_pf_4lxml_5etree_60strip_tags(CYTHON_UNUSED PyObject *__py
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -163831,12 +174348,14 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
   xmlNode *__pyx_v_c_child;
   xmlNode *__pyx_v_c_next;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   xmlNode *__pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_strip_tags", 0);
+  __Pyx_TraceCall("_strip_tags", __pyx_f[16], 188, 0, __PYX_ERR(16, 188, __pyx_L1_error));
 
   /* "src/lxml/cleanup.pxi":192
  *     cdef xmlNode* c_next
@@ -163845,6 +174364,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         # we run through the children here to prevent any problems
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(16, 192, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
   /* "src/lxml/cleanup.pxi":193
@@ -163854,6 +174374,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *         # we run through the children here to prevent any problems
  *         # with the tree iteration which would occur if we unlinked the
  */
+  __Pyx_TraceLine(193,0,__PYX_ERR(16, 193, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -163864,6 +174385,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *         while c_child is not NULL:
  *             if not matcher.matches(c_child):
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(16, 197, __pyx_L1_error))
     __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, 0);
 
     /* "src/lxml/cleanup.pxi":198
@@ -163873,6 +174395,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *             if not matcher.matches(c_child):
  *                 c_child = _nextElement(c_child)
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(16, 198, __pyx_L1_error))
     while (1) {
       __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_1) break;
@@ -163884,6 +174407,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_child = _nextElement(c_child)
  *                 continue
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(16, 199, __pyx_L1_error))
       __pyx_t_1 = ((!(__pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(__pyx_v_matcher, __pyx_v_c_child) != 0)) != 0);
       if (__pyx_t_1) {
 
@@ -163894,6 +174418,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 continue
  *             if c_child.type == tree.XML_ELEMENT_NODE:
  */
+        __Pyx_TraceLine(200,0,__PYX_ERR(16, 200, __pyx_L1_error))
         __pyx_v_c_child = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);
 
         /* "src/lxml/cleanup.pxi":201
@@ -163903,6 +174428,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *             if c_child.type == tree.XML_ELEMENT_NODE:
  *                 c_next = _findChildForwards(c_child, 0) or _nextElement(c_child)
  */
+        __Pyx_TraceLine(201,0,__PYX_ERR(16, 201, __pyx_L1_error))
         goto __pyx_L4_continue;
 
         /* "src/lxml/cleanup.pxi":199
@@ -163921,6 +174447,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_next = _findChildForwards(c_child, 0) or _nextElement(c_child)
  *                 _replaceNodeByChildren(doc, c_child)
  */
+      __Pyx_TraceLine(202,0,__PYX_ERR(16, 202, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_child->type == XML_ELEMENT_NODE) != 0);
       if (__pyx_t_1) {
 
@@ -163931,6 +174458,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 _replaceNodeByChildren(doc, c_child)
  *                 if not attemptDeallocation(c_child):
  */
+        __Pyx_TraceLine(203,0,__PYX_ERR(16, 203, __pyx_L1_error))
         __pyx_t_3 = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_child, 0);
         if (!__pyx_t_3) {
         } else {
@@ -163949,6 +174477,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 if not attemptDeallocation(c_child):
  *                     if c_child.nsDef is not NULL:
  */
+        __Pyx_TraceLine(204,0,__PYX_ERR(16, 204, __pyx_L1_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__replaceNodeByChildren(__pyx_v_doc, __pyx_v_c_child); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 204, __pyx_L1_error)
 
         /* "src/lxml/cleanup.pxi":205
@@ -163958,6 +174487,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                     if c_child.nsDef is not NULL:
  *                         # make namespaces absolute
  */
+        __Pyx_TraceLine(205,0,__PYX_ERR(16, 205, __pyx_L1_error))
         __pyx_t_1 = ((!(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child) != 0)) != 0);
         if (__pyx_t_1) {
 
@@ -163968,6 +174498,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                         # make namespaces absolute
  *                         moveNodeToDocument(doc, doc._c_doc, c_child)
  */
+          __Pyx_TraceLine(206,0,__PYX_ERR(16, 206, __pyx_L1_error))
           __pyx_t_1 = ((__pyx_v_c_child->nsDef != NULL) != 0);
           if (__pyx_t_1) {
 
@@ -163978,6 +174509,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_child = c_next
  *             else:
  */
+            __Pyx_TraceLine(208,0,__PYX_ERR(16, 208, __pyx_L1_error))
             __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_doc->_c_doc, __pyx_v_c_child); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(16, 208, __pyx_L1_error)
 
             /* "src/lxml/cleanup.pxi":206
@@ -164005,6 +174537,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *             else:
  *                 c_next = _nextElement(c_child)
  */
+        __Pyx_TraceLine(209,0,__PYX_ERR(16, 209, __pyx_L1_error))
         __pyx_v_c_child = __pyx_v_c_next;
 
         /* "src/lxml/cleanup.pxi":202
@@ -164024,6 +174557,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 tree.xmlUnlinkNode(c_child)
  *                 attemptDeallocation(c_child)
  */
+      __Pyx_TraceLine(211,0,__PYX_ERR(16, 211, __pyx_L1_error))
       /*else*/ {
         __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);
 
@@ -164034,6 +174568,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 attemptDeallocation(c_child)
  *                 c_child = c_next
  */
+        __Pyx_TraceLine(212,0,__PYX_ERR(16, 212, __pyx_L1_error))
         xmlUnlinkNode(__pyx_v_c_child);
 
         /* "src/lxml/cleanup.pxi":213
@@ -164043,6 +174578,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_child = c_next
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+        __Pyx_TraceLine(213,0,__PYX_ERR(16, 213, __pyx_L1_error))
         (void)(__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child));
 
         /* "src/lxml/cleanup.pxi":214
@@ -164051,6 +174587,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_child = c_next             # <<<<<<<<<<<<<<
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  */
+        __Pyx_TraceLine(214,0,__PYX_ERR(16, 214, __pyx_L1_error))
         __pyx_v_c_child = __pyx_v_c_next;
       }
       __pyx_L7:;
@@ -164071,6 +174608,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
  *                 c_child = c_next
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(215,0,__PYX_ERR(16, 215, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "src/lxml/cleanup.pxi":188
@@ -164089,6 +174627,7 @@ static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_d
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -164119,8 +174658,10 @@ static int __pyx_pw_4lxml_5etree_12_BaseContext_1__cinit__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_12_BaseContext___cinit__(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[17], 45, 0, __PYX_ERR(17, 45, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":46
  * 
@@ -164129,6 +174670,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext___cinit__(struct __pyx_obj_4lxml
  * 
  *     def __init__(self, namespaces, extensions, error_log, enable_regexp,
  */
+  __Pyx_TraceLine(46,0,__PYX_ERR(17, 46, __pyx_L1_error))
   __pyx_v_self->_xpathCtxt = NULL;
 
   /* "src/lxml/extensions.pxi":45
@@ -164141,6 +174683,12 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext___cinit__(struct __pyx_obj_4lxml
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -164261,6 +174809,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
   PyObject *__pyx_v_prefix_utf = NULL;
   PyObject *__pyx_v_ns_uri_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -164280,6 +174829,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
   int __pyx_t_16;
   int __pyx_t_17;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[17], 48, 0, __PYX_ERR(17, 48, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_namespaces);
   __Pyx_INCREF(__pyx_v_extensions);
 
@@ -164290,6 +174840,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._global_namespaces = []
  *         self._function_cache = {}
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(17, 53, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 53, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -164305,6 +174856,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._function_cache = {}
  *         self._eval_context_dict = None
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(17, 54, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 54, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -164320,6 +174872,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._eval_context_dict = None
  *         self._error_log = error_log
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(17, 55, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -164335,6 +174888,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._error_log = error_log
  * 
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(17, 56, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_eval_context_dict);
@@ -164348,6 +174902,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  * 
  *         if extensions is not None:
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(17, 57, __pyx_L1_error))
   if (!(likely(((__pyx_v_error_log) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_error_log, __pyx_ptype_4lxml_5etree__ErrorLog))))) __PYX_ERR(17, 57, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_error_log;
   __Pyx_INCREF(__pyx_t_1);
@@ -164364,6 +174919,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             # convert extensions to UTF-8
  *             if isinstance(extensions, dict):
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(17, 59, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_extensions != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -164375,6 +174931,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 extensions = (extensions,)
  *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(17, 61, __pyx_L1_error))
     __pyx_t_3 = PyDict_Check(__pyx_v_extensions); 
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -164386,6 +174943,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
  *             new_extensions = {}
  */
+      __Pyx_TraceLine(62,0,__PYX_ERR(17, 62, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 62, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_extensions);
@@ -164410,6 +174968,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             for extension in extensions:
  *                 for (ns_uri, name), function in extension.items():
  */
+    __Pyx_TraceLine(64,0,__PYX_ERR(17, 64, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 64, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_new_extensions = ((PyObject*)__pyx_t_1);
@@ -164422,6 +174981,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 for (ns_uri, name), function in extension.items():
  *                     if name is None:
  */
+    __Pyx_TraceLine(65,0,__PYX_ERR(17, 65, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_extensions)) || PyTuple_CheckExact(__pyx_v_extensions)) {
       __pyx_t_1 = __pyx_v_extensions; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
       __pyx_t_5 = NULL;
@@ -164471,6 +175031,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     if name is None:
  *                         raise ValueError, u"extensions must have non empty names"
  */
+      __Pyx_TraceLine(66,0,__PYX_ERR(17, 66, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_extension, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 66, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
@@ -164637,6 +175198,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                         raise ValueError, u"extensions must have non empty names"
  *                     ns_utf   = self._to_utf(ns_uri)
  */
+        __Pyx_TraceLine(67,0,__PYX_ERR(17, 67, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_name == Py_None);
         __pyx_t_3 = (__pyx_t_2 != 0);
         if (unlikely(__pyx_t_3)) {
@@ -164648,6 +175210,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     ns_utf   = self._to_utf(ns_uri)
  *                     name_utf = self._to_utf(name)
  */
+          __Pyx_TraceLine(68,0,__PYX_ERR(17, 68, __pyx_L1_error))
           __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_extensions_must_have_non_empty_n, 0, 0);
           __PYX_ERR(17, 68, __pyx_L1_error)
 
@@ -164667,6 +175230,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     name_utf = self._to_utf(name)
  *                     new_extensions[(ns_utf, name_utf)] = function
  */
+        __Pyx_TraceLine(69,0,__PYX_ERR(17, 69, __pyx_L1_error))
         __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 69, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_XDECREF_SET(__pyx_v_ns_utf, ((PyObject*)__pyx_t_6));
@@ -164679,6 +175243,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     new_extensions[(ns_utf, name_utf)] = function
  *             extensions = new_extensions or None
  */
+        __Pyx_TraceLine(70,0,__PYX_ERR(17, 70, __pyx_L1_error))
         __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 70, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_XDECREF_SET(__pyx_v_name_utf, ((PyObject*)__pyx_t_6));
@@ -164691,6 +175256,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             extensions = new_extensions or None
  * 
  */
+        __Pyx_TraceLine(71,0,__PYX_ERR(17, 71, __pyx_L1_error))
         __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 71, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_v_ns_utf);
@@ -164709,6 +175275,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     if name is None:
  *                         raise ValueError, u"extensions must have non empty names"
  */
+        __Pyx_TraceLine(66,0,__PYX_ERR(17, 66, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -164719,6 +175286,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 for (ns_uri, name), function in extension.items():
  *                     if name is None:
  */
+      __Pyx_TraceLine(65,0,__PYX_ERR(17, 65, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -164729,6 +175297,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  * 
  *         if namespaces is not None:
  */
+    __Pyx_TraceLine(72,0,__PYX_ERR(17, 72, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_new_extensions); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(17, 72, __pyx_L1_error)
     if (!__pyx_t_3) {
     } else {
@@ -164758,6 +175327,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             if isinstance(namespaces, dict):
  *                 namespaces = namespaces.items()
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(17, 74, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_namespaces != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -164769,6 +175339,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 namespaces = namespaces.items()
  *             if namespaces:
  */
+    __Pyx_TraceLine(75,0,__PYX_ERR(17, 75, __pyx_L1_error))
     __pyx_t_2 = PyDict_Check(__pyx_v_namespaces); 
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -164780,6 +175351,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             if namespaces:
  *                 ns = []
  */
+      __Pyx_TraceLine(76,0,__PYX_ERR(17, 76, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_namespaces, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 76, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_6 = NULL;
@@ -164819,6 +175391,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 ns = []
  *                 for prefix, ns_uri in namespaces:
  */
+    __Pyx_TraceLine(77,0,__PYX_ERR(17, 77, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_namespaces); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(17, 77, __pyx_L1_error)
     if (__pyx_t_3) {
 
@@ -164829,6 +175402,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 for prefix, ns_uri in namespaces:
  *                     if prefix is None or not prefix:
  */
+      __Pyx_TraceLine(78,0,__PYX_ERR(17, 78, __pyx_L1_error))
       __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 78, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_ns = ((PyObject*)__pyx_t_1);
@@ -164841,6 +175415,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     if prefix is None or not prefix:
  *                         raise TypeError, \
  */
+      __Pyx_TraceLine(79,0,__PYX_ERR(17, 79, __pyx_L1_error))
       if (likely(PyList_CheckExact(__pyx_v_namespaces)) || PyTuple_CheckExact(__pyx_v_namespaces)) {
         __pyx_t_1 = __pyx_v_namespaces; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
         __pyx_t_5 = NULL;
@@ -164938,6 +175513,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                         raise TypeError, \
  *                             u"empty namespace prefix is not supported in XPath"
  */
+        __Pyx_TraceLine(80,0,__PYX_ERR(17, 80, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_prefix == Py_None);
         __pyx_t_16 = (__pyx_t_2 != 0);
         if (!__pyx_t_16) {
@@ -164958,6 +175534,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                             u"empty namespace prefix is not supported in XPath"
  *                     if ns_uri is None or not ns_uri:
  */
+          __Pyx_TraceLine(81,0,__PYX_ERR(17, 81, __pyx_L1_error))
           __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_empty_namespace_prefix_is_not_su, 0, 0);
           __PYX_ERR(17, 81, __pyx_L1_error)
 
@@ -164977,6 +175554,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                         raise TypeError, \
  *                             u"setting default namespace is not supported in XPath"
  */
+        __Pyx_TraceLine(83,0,__PYX_ERR(17, 83, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_ns_uri == Py_None);
         __pyx_t_16 = (__pyx_t_2 != 0);
         if (!__pyx_t_16) {
@@ -164997,6 +175575,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                             u"setting default namespace is not supported in XPath"
  *                     prefix_utf = self._to_utf(prefix)
  */
+          __Pyx_TraceLine(84,0,__PYX_ERR(17, 84, __pyx_L1_error))
           __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_setting_default_namespace_is_not, 0, 0);
           __PYX_ERR(17, 84, __pyx_L1_error)
 
@@ -165016,6 +175595,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     ns_uri_utf = self._to_utf(ns_uri)
  *                     ns.append( (prefix_utf, ns_uri_utf) )
  */
+        __Pyx_TraceLine(86,0,__PYX_ERR(17, 86, __pyx_L1_error))
         __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_prefix); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 86, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_XDECREF_SET(__pyx_v_prefix_utf, ((PyObject*)__pyx_t_7));
@@ -165028,6 +175608,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     ns.append( (prefix_utf, ns_uri_utf) )
  *                 namespaces = ns
  */
+        __Pyx_TraceLine(87,0,__PYX_ERR(17, 87, __pyx_L1_error))
         __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 87, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_XDECREF_SET(__pyx_v_ns_uri_utf, ((PyObject*)__pyx_t_7));
@@ -165040,6 +175621,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                 namespaces = ns
  *             else:
  */
+        __Pyx_TraceLine(88,0,__PYX_ERR(17, 88, __pyx_L1_error))
         __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 88, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(__pyx_v_prefix_utf);
@@ -165058,6 +175640,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *                     if prefix is None or not prefix:
  *                         raise TypeError, \
  */
+        __Pyx_TraceLine(79,0,__PYX_ERR(17, 79, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -165068,6 +175651,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             else:
  *                 namespaces = None
  */
+      __Pyx_TraceLine(89,0,__PYX_ERR(17, 89, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_ns);
       __Pyx_DECREF_SET(__pyx_v_namespaces, __pyx_v_ns);
 
@@ -165088,6 +175672,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  * 
  *         self._doc        = None
  */
+    __Pyx_TraceLine(91,0,__PYX_ERR(17, 91, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(Py_None);
       __Pyx_DECREF_SET(__pyx_v_namespaces, Py_None);
@@ -165110,6 +175695,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._exc        = _ExceptionContext()
  *         self._extensions = extensions
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(17, 93, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -165123,6 +175709,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._extensions = extensions
  *         self._namespaces = namespaces
  */
+  __Pyx_TraceLine(94,0,__PYX_ERR(17, 94, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 94, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -165138,6 +175725,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._namespaces = namespaces
  *         self._temp_refs  = _TempStore()
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(17, 95, __pyx_L1_error))
   if (!(likely(PyDict_CheckExact(__pyx_v_extensions))||((__pyx_v_extensions) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_extensions)->tp_name), 0))) __PYX_ERR(17, 95, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_extensions;
   __Pyx_INCREF(__pyx_t_1);
@@ -165154,6 +175742,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._temp_refs  = _TempStore()
  *         self._temp_documents  = set()
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(17, 96, __pyx_L1_error))
   if (!(likely(PyList_CheckExact(__pyx_v_namespaces))||((__pyx_v_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_namespaces)->tp_name), 0))) __PYX_ERR(17, 96, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_namespaces;
   __Pyx_INCREF(__pyx_t_1);
@@ -165170,6 +175759,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._temp_documents  = set()
  *         self._build_smart_strings = build_smart_strings
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(17, 97, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__TempStore)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 97, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -165185,6 +175775,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *         self._build_smart_strings = build_smart_strings
  * 
  */
+  __Pyx_TraceLine(98,0,__PYX_ERR(17, 98, __pyx_L1_error))
   __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 98, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -165200,6 +175791,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  * 
  *         if enable_regexp:
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(17, 99, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_build_smart_strings); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 99, __pyx_L1_error)
   __pyx_v_self->_build_smart_strings = __pyx_t_3;
 
@@ -165210,6 +175802,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             _regexp = _ExsltRegExp()
  *             _regexp._register_in_context(self)
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(17, 101, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_enable_regexp); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(17, 101, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -165220,6 +175813,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  *             _regexp._register_in_context(self)
  * 
  */
+    __Pyx_TraceLine(102,0,__PYX_ERR(17, 102, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExsltRegExp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 102, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v__regexp = ((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_t_1);
@@ -165232,6 +175826,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
  * 
  *     cdef _BaseContext _copy(self):
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(17, 103, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(__pyx_v__regexp, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 103, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -165282,6 +175877,7 @@ static int __pyx_pf_4lxml_5etree_12_BaseContext_2__init__(struct __pyx_obj_4lxml
   __Pyx_XDECREF(__pyx_v_ns_uri_utf);
   __Pyx_XDECREF(__pyx_v_namespaces);
   __Pyx_XDECREF(__pyx_v_extensions);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -165298,6 +175894,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
   struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context = 0;
   PyObject *__pyx_v_namespaces = NULL;
   struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -165308,6 +175905,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[17], 105, 0, __PYX_ERR(17, 105, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":107
  *     cdef _BaseContext _copy(self):
@@ -165316,6 +175914,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *             namespaces = self._namespaces[:]
  *         else:
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(17, 107, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_namespaces != ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -165327,6 +175926,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *         else:
  *             namespaces = None
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(17, 108, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_namespaces == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(17, 108, __pyx_L1_error)
@@ -165353,6 +175953,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *         context = self.__class__(namespaces, None, self._error_log, False,
  *                                  self._build_smart_strings)
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(17, 110, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __pyx_v_namespaces = ((PyObject*)Py_None);
@@ -165366,6 +175967,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *                                  self._build_smart_strings)
  *         if self._extensions is not None:
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(17, 111, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
@@ -165376,6 +175978,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *         if self._extensions is not None:
  *             context._extensions = self._extensions.copy()
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(17, 112, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->_build_smart_strings); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
@@ -165442,6 +176045,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *                                  self._build_smart_strings)
  *         if self._extensions is not None:
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(17, 111, __pyx_L1_error))
   if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__BaseContext))))) __PYX_ERR(17, 111, __pyx_L1_error)
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_t_3);
   __pyx_t_3 = 0;
@@ -165453,6 +176057,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *             context._extensions = self._extensions.copy()
  *         return context
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(17, 113, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_extensions != ((PyObject*)Py_None));
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -165464,6 +176069,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  *         return context
  * 
  */
+    __Pyx_TraceLine(114,0,__PYX_ERR(17, 114, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_extensions == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "copy");
       __PYX_ERR(17, 114, __pyx_L1_error)
@@ -165492,6 +176098,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
  * 
  *     cdef bytes _to_utf(self, s):
  */
+  __Pyx_TraceLine(115,0,__PYX_ERR(17, 115, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = __pyx_v_context;
@@ -165518,6 +176125,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseC
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_namespaces);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -165534,11 +176142,13 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
   PyObject *__pyx_v_dict_result;
   PyObject *__pyx_v_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_to_utf", 0);
+  __Pyx_TraceCall("_to_utf", __pyx_f[17], 117, 0, __PYX_ERR(17, 117, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":120
  *         u"Convert to UTF-8 and keep a reference to the encoded string"
@@ -165547,6 +176157,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *             return None
  *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(17, 120, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_s == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -165558,6 +176169,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
  *         if dict_result is not NULL:
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(17, 121, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -165578,6 +176190,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         if dict_result is not NULL:
  *             return <bytes>dict_result
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(17, 122, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_utf_refs;
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_dict_result = PyDict_GetItem(__pyx_t_3, __pyx_v_s);
@@ -165590,6 +176203,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *             return <bytes>dict_result
  *         utf = _utf8(s)
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(17, 123, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_dict_result != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -165600,6 +176214,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         utf = _utf8(s)
  *         self._utf_refs[s] = utf
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(17, 124, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject*)__pyx_v_dict_result));
     __pyx_r = ((PyObject*)__pyx_v_dict_result);
@@ -165621,6 +176236,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         self._utf_refs[s] = utf
  *         if python.IS_PYPY:
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(17, 125, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_utf = ((PyObject*)__pyx_t_3);
@@ -165633,6 +176249,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         if python.IS_PYPY:
  *             # use C level refs, PyPy refs are not enough!
  */
+  __Pyx_TraceLine(126,0,__PYX_ERR(17, 126, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_utf_refs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(17, 126, __pyx_L1_error)
@@ -165646,6 +176263,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *             # use C level refs, PyPy refs are not enough!
  *             python.Py_INCREF(utf)
  */
+  __Pyx_TraceLine(127,0,__PYX_ERR(17, 127, __pyx_L1_error))
   __pyx_t_2 = (IS_PYPY != 0);
   if (__pyx_t_2) {
 
@@ -165656,6 +176274,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  *         return utf
  * 
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(17, 129, __pyx_L1_error))
     Py_INCREF(__pyx_v_utf);
 
     /* "src/lxml/extensions.pxi":127
@@ -165674,6 +176293,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  * 
  *     cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt):
  */
+  __Pyx_TraceLine(130,0,__PYX_ERR(17, 130, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_utf);
   __pyx_r = __pyx_v_utf;
@@ -165695,6 +176315,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -165708,8 +176329,10 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4l
  */
 
 static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_set_xpath_context", 0);
+  __Pyx_TraceCall("_set_xpath_context", __pyx_f[17], 132, 0, __PYX_ERR(17, 132, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":133
  * 
@@ -165718,6 +176341,7 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_
  *         xpathCtxt.userData = <void*>self
  *         xpathCtxt.error = _receiveXPathError
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(17, 133, __pyx_L1_error))
   __pyx_v_self->_xpathCtxt = __pyx_v_xpathCtxt;
 
   /* "src/lxml/extensions.pxi":134
@@ -165727,6 +176351,7 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_
  *         xpathCtxt.error = _receiveXPathError
  * 
  */
+  __Pyx_TraceLine(134,0,__PYX_ERR(17, 134, __pyx_L1_error))
   __pyx_v_xpathCtxt->userData = ((void *)__pyx_v_self);
 
   /* "src/lxml/extensions.pxi":135
@@ -165736,6 +176361,7 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(17, 135, __pyx_L1_error))
   __pyx_v_xpathCtxt->error = __pyx_f_4lxml_5etree__receiveXPathError;
 
   /* "src/lxml/extensions.pxi":132
@@ -165747,6 +176373,11 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._BaseContext._set_xpath_context", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -165760,9 +176391,11 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_
 
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, struct LxmlDocument *__pyx_v_doc) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_register_context", 0);
+  __Pyx_TraceCall("_register_context", __pyx_f[17], 138, 0, __PYX_ERR(17, 138, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":139
  *     @cython.final
@@ -165771,6 +176404,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __
  *         self._exc.clear()
  * 
  */
+  __Pyx_TraceLine(139,0,__PYX_ERR(17, 139, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_doc));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
   __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -165784,6 +176418,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(140,0,__PYX_ERR(17, 140, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc->__pyx_vtab)->clear(__pyx_v_self->_exc); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 140, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":138
@@ -165802,6 +176437,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -165817,6 +176453,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   PyObject *__pyx_v_ref = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -165827,6 +176464,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
   int __pyx_t_7;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_cleanup_context", 0);
+  __Pyx_TraceCall("_cleanup_context", __pyx_f[17], 143, 0, __PYX_ERR(17, 143, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":146
  *         #xpath.xmlXPathRegisteredNsCleanup(self._xpathCtxt)
@@ -165835,6 +176473,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  *             # clean up double refs in PyPy (see "_to_utf()" method)
  *             for ref in self._utf_refs.itervalues():
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(17, 146, __pyx_L1_error))
   __pyx_t_1 = (IS_PYPY != 0);
   if (__pyx_t_1) {
 
@@ -165845,6 +176484,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  *                 python.Py_DECREF(ref)
  *         self._utf_refs.clear()
  */
+    __Pyx_TraceLine(148,0,__PYX_ERR(17, 148, __pyx_L1_error))
     __pyx_t_3 = 0;
     if (unlikely(__pyx_v_self->_utf_refs == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "itervalues");
@@ -165870,6 +176510,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  *         self._utf_refs.clear()
  *         self._eval_context_dict = None
  */
+      __Pyx_TraceLine(149,0,__PYX_ERR(17, 149, __pyx_L1_error))
       Py_DECREF(__pyx_v_ref);
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -165890,6 +176531,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  *         self._eval_context_dict = None
  *         self._doc = None
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(17, 150, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_utf_refs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
     __PYX_ERR(17, 150, __pyx_L1_error)
@@ -165903,6 +176545,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  *         self._doc = None
  * 
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(17, 151, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_eval_context_dict);
@@ -165916,6 +176559,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(17, 152, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_doc);
@@ -165941,6 +176585,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ref);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -165955,9 +176600,11 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __p
 
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_release_context", 0);
+  __Pyx_TraceCall("_release_context", __pyx_f[17], 155, 0, __PYX_ERR(17, 155, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":156
  *     @cython.final
@@ -165966,6 +176613,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __p
  *             self._xpathCtxt.userData = NULL
  *             self._xpathCtxt = NULL
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(17, 156, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_xpathCtxt != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -165976,6 +176624,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __p
  *             self._xpathCtxt = NULL
  * 
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(17, 157, __pyx_L1_error))
     __pyx_v_self->_xpathCtxt->userData = NULL;
 
     /* "src/lxml/extensions.pxi":158
@@ -165985,6 +176634,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __p
  * 
  *     # namespaces (internal UTF-8 methods with leading '_')
  */
+    __Pyx_TraceLine(158,0,__PYX_ERR(17, 158, __pyx_L1_error))
     __pyx_v_self->_xpathCtxt = NULL;
 
     /* "src/lxml/extensions.pxi":156
@@ -166006,7 +176656,13 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __p
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._BaseContext._release_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166026,6 +176682,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
   PyObject *__pyx_v_new_item = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -166034,6 +176691,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("addNamespace", 0);
+  __Pyx_TraceCall("addNamespace", __pyx_f[17], 162, 0, __PYX_ERR(17, 162, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":164
  *     cdef addNamespace(self, prefix, ns_uri):
@@ -166042,6 +176700,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             raise TypeError, u"empty prefix is not supported in XPath"
  *         prefix_utf = self._to_utf(prefix)
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(17, 164, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_prefix == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -166053,6 +176712,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         prefix_utf = self._to_utf(prefix)
  *         ns_uri_utf = self._to_utf(ns_uri)
  */
+    __Pyx_TraceLine(165,0,__PYX_ERR(17, 165, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_empty_prefix_is_not_supported_in, 0, 0);
     __PYX_ERR(17, 165, __pyx_L1_error)
 
@@ -166072,6 +176732,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         ns_uri_utf = self._to_utf(ns_uri)
  *         new_item = (prefix_utf, ns_uri_utf)
  */
+  __Pyx_TraceLine(166,0,__PYX_ERR(17, 166, __pyx_L1_error))
   __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 166, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_prefix_utf = ((PyObject*)__pyx_t_3);
@@ -166084,6 +176745,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         new_item = (prefix_utf, ns_uri_utf)
  *         if self._namespaces is None:
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(17, 167, __pyx_L1_error))
   __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_ns_uri_utf = ((PyObject*)__pyx_t_3);
@@ -166096,6 +176758,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         if self._namespaces is None:
  *             self._namespaces = [new_item]
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(17, 168, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 168, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_prefix_utf);
@@ -166114,6 +176777,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             self._namespaces = [new_item]
  *         else:
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(17, 169, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_namespaces == ((PyObject*)Py_None));
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -166125,6 +176789,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         else:
  *             namespaces = []
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(17, 170, __pyx_L1_error))
     __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 170, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_new_item);
@@ -166153,6 +176818,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             for item in self._namespaces:
  *                 if item[0] == prefix_utf:
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(17, 172, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 172, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -166166,6 +176832,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                 if item[0] == prefix_utf:
  *                     item = new_item
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(17, 173, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_namespaces == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(17, 173, __pyx_L1_error)
@@ -166189,6 +176856,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                     item = new_item
  *                     new_item = None
  */
+      __Pyx_TraceLine(174,0,__PYX_ERR(17, 174, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 174, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_5, __pyx_v_prefix_utf, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(17, 174, __pyx_L1_error)
@@ -166202,6 +176870,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                     new_item = None
  *                 namespaces.append(item)
  */
+        __Pyx_TraceLine(175,0,__PYX_ERR(17, 175, __pyx_L1_error))
         __Pyx_INCREF(__pyx_v_new_item);
         __Pyx_DECREF_SET(__pyx_v_item, __pyx_v_new_item);
 
@@ -166212,6 +176881,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                 namespaces.append(item)
  *             if new_item is not None:
  */
+        __Pyx_TraceLine(176,0,__PYX_ERR(17, 176, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_new_item, ((PyObject*)Py_None));
 
@@ -166231,6 +176901,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             if new_item is not None:
  *                 namespaces.append(new_item)
  */
+      __Pyx_TraceLine(177,0,__PYX_ERR(17, 177, __pyx_L1_error))
       __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_namespaces, __pyx_v_item); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(17, 177, __pyx_L1_error)
 
       /* "src/lxml/extensions.pxi":173
@@ -166240,6 +176911,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                 if item[0] == prefix_utf:
  *                     item = new_item
  */
+      __Pyx_TraceLine(173,0,__PYX_ERR(17, 173, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -166250,6 +176922,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                 namespaces.append(new_item)
  *             self._namespaces = namespaces
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(17, 178, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_new_item != ((PyObject*)Py_None));
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -166261,6 +176934,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             self._namespaces = namespaces
  *         if self._xpathCtxt is not NULL:
  */
+      __Pyx_TraceLine(179,0,__PYX_ERR(17, 179, __pyx_L1_error))
       __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_namespaces, __pyx_v_new_item); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(17, 179, __pyx_L1_error)
 
       /* "src/lxml/extensions.pxi":178
@@ -166279,6 +176953,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *         if self._xpathCtxt is not NULL:
  *             xpath.xmlXPathRegisterNs(
  */
+    __Pyx_TraceLine(180,0,__PYX_ERR(17, 180, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     __Pyx_GOTREF(__pyx_v_self->_namespaces);
@@ -166294,6 +176969,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *             xpath.xmlXPathRegisterNs(
  *                 self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  */
+  __Pyx_TraceLine(181,0,__PYX_ERR(17, 181, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_xpathCtxt != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -166304,6 +176980,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
  *                 self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  * 
  */
+    __Pyx_TraceLine(182,0,__PYX_ERR(17, 182, __pyx_L1_error))
     (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_uri_utf)));
 
     /* "src/lxml/extensions.pxi":181
@@ -166338,6 +177015,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_o
   __Pyx_XDECREF(__pyx_v_new_item);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166354,12 +177032,14 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
   PyObject *__pyx_v_prefix_utf = NULL;
   PyObject *__pyx_v_ns_uri_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("registerNamespace", 0);
+  __Pyx_TraceCall("registerNamespace", __pyx_f[17], 185, 0, __PYX_ERR(17, 185, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":186
  * 
@@ -166368,6 +177048,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *             raise TypeError, u"empty prefix is not supported in XPath"
  *         prefix_utf = self._to_utf(prefix)
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(17, 186, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_prefix == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -166379,6 +177060,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *         prefix_utf = self._to_utf(prefix)
  *         ns_uri_utf = self._to_utf(ns_uri)
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(17, 187, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_empty_prefix_is_not_supported_in, 0, 0);
     __PYX_ERR(17, 187, __pyx_L1_error)
 
@@ -166398,6 +177080,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *         ns_uri_utf = self._to_utf(ns_uri)
  *         self._global_namespaces.append(prefix_utf)
  */
+  __Pyx_TraceLine(188,0,__PYX_ERR(17, 188, __pyx_L1_error))
   __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 188, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_prefix_utf = ((PyObject*)__pyx_t_3);
@@ -166410,6 +177093,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *         self._global_namespaces.append(prefix_utf)
  *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(17, 189, __pyx_L1_error))
   __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_ns_uri_utf = ((PyObject*)__pyx_t_3);
@@ -166422,6 +177106,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
  *                                  _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(17, 190, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(17, 190, __pyx_L1_error)
@@ -166435,6 +177120,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
  *                                  _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  * 
  */
+  __Pyx_TraceLine(191,0,__PYX_ERR(17, 191, __pyx_L1_error))
   (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_uri_utf)));
 
   /* "src/lxml/extensions.pxi":185
@@ -166456,6 +177142,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __
   __Pyx_XDECREF(__pyx_v_prefix_utf);
   __Pyx_XDECREF(__pyx_v_ns_uri_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166472,6 +177159,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
   PyObject *__pyx_v_prefix_utf = NULL;
   PyObject *__pyx_v_ns_uri_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -166483,6 +177171,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
   PyObject *__pyx_t_8 = NULL;
   PyObject *(*__pyx_t_9)(PyObject *);
   __Pyx_RefNannySetupContext("registerLocalNamespaces", 0);
+  __Pyx_TraceCall("registerLocalNamespaces", __pyx_f[17], 194, 0, __PYX_ERR(17, 194, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":195
  * 
@@ -166491,6 +177180,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
  *             return
  *         for prefix_utf, ns_uri_utf in self._namespaces:
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(17, 195, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_namespaces == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -166502,6 +177192,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
  *         for prefix_utf, ns_uri_utf in self._namespaces:
  *             xpath.xmlXPathRegisterNs(
  */
+    __Pyx_TraceLine(196,0,__PYX_ERR(17, 196, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -166522,6 +177213,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
  *             xpath.xmlXPathRegisterNs(
  *                 self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(17, 197, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_namespaces == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(17, 197, __pyx_L1_error)
@@ -166593,6 +177285,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
  *                 self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  * 
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(17, 198, __pyx_L1_error))
     (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_uri_utf)));
 
     /* "src/lxml/extensions.pxi":197
@@ -166602,6 +177295,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
  *             xpath.xmlXPathRegisterNs(
  *                 self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(17, 197, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -166628,6 +177322,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(str
   __Pyx_XDECREF(__pyx_v_prefix_utf);
   __Pyx_XDECREF(__pyx_v_ns_uri_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166645,6 +177340,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
   PyObject *__pyx_v_prefix_utf = NULL;
   PyObject *__pyx_v_ns_uri_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -166656,6 +177352,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
   PyObject *(*__pyx_t_8)(PyObject *);
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("registerGlobalNamespaces", 0);
+  __Pyx_TraceCall("registerGlobalNamespaces", __pyx_f[17], 201, 0, __PYX_ERR(17, 201, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":202
  * 
@@ -166664,6 +177361,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *         if python.PyList_GET_SIZE(ns_prefixes) > 0:
  *             for prefix_utf, ns_uri_utf in ns_prefixes:
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(17, 202, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__find_all_extension_prefixes(); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 202, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_ns_prefixes = ((PyObject*)__pyx_t_1);
@@ -166676,6 +177374,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *             for prefix_utf, ns_uri_utf in ns_prefixes:
  *                 self._global_namespaces.append(prefix_utf)
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(17, 203, __pyx_L1_error))
   __pyx_t_2 = ((PyList_GET_SIZE(__pyx_v_ns_prefixes) > 0) != 0);
   if (__pyx_t_2) {
 
@@ -166686,6 +177385,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *                 self._global_namespaces.append(prefix_utf)
  *                 xpath.xmlXPathRegisterNs(
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(17, 204, __pyx_L1_error))
     if (unlikely(__pyx_v_ns_prefixes == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(17, 204, __pyx_L1_error)
@@ -166757,6 +177457,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *                 xpath.xmlXPathRegisterNs(
  *                     self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  */
+      __Pyx_TraceLine(205,0,__PYX_ERR(17, 205, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(17, 205, __pyx_L1_error)
@@ -166770,6 +177471,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *                     self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf))
  * 
  */
+      __Pyx_TraceLine(206,0,__PYX_ERR(17, 206, __pyx_L1_error))
       (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_uri_utf)));
 
       /* "src/lxml/extensions.pxi":204
@@ -166779,6 +177481,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
  *                 self._global_namespaces.append(prefix_utf)
  *                 xpath.xmlXPathRegisterNs(
  */
+      __Pyx_TraceLine(204,0,__PYX_ERR(17, 204, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -166815,6 +177518,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
   __Pyx_XDECREF(__pyx_v_prefix_utf);
   __Pyx_XDECREF(__pyx_v_ns_uri_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166830,12 +177534,14 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(st
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   PyObject *__pyx_v_prefix_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   Py_ssize_t __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("unregisterGlobalNamespaces", 0);
+  __Pyx_TraceCall("unregisterGlobalNamespaces", __pyx_f[17], 209, 0, __PYX_ERR(17, 209, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":210
  * 
@@ -166844,6 +177550,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  *             for prefix_utf in self._global_namespaces:
  *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(17, 210, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_global_namespaces;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = ((PyList_GET_SIZE(__pyx_t_1) > 0) != 0);
@@ -166857,6 +177564,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
  *                                          _xcstr(prefix_utf), NULL)
  */
+    __Pyx_TraceLine(211,0,__PYX_ERR(17, 211, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(17, 211, __pyx_L1_error)
@@ -166880,6 +177588,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  *                                          _xcstr(prefix_utf), NULL)
  *             del self._global_namespaces[:]
  */
+      __Pyx_TraceLine(212,0,__PYX_ERR(17, 212, __pyx_L1_error))
       (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), NULL));
 
       /* "src/lxml/extensions.pxi":211
@@ -166889,6 +177598,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
  *                                          _xcstr(prefix_utf), NULL)
  */
+      __Pyx_TraceLine(211,0,__PYX_ERR(17, 211, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -166899,6 +177609,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  * 
  *     cdef void _unregisterNamespace(self, prefix_utf):
  */
+    __Pyx_TraceLine(214,0,__PYX_ERR(17, 214, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(17, 214, __pyx_L1_error)
@@ -166933,6 +177644,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_prefix_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -166946,8 +177658,10 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(
  */
 
 static void __pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_prefix_utf) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_unregisterNamespace", 0);
+  __Pyx_TraceCall("_unregisterNamespace", __pyx_f[17], 216, 0, __PYX_ERR(17, 216, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":217
  * 
@@ -166956,6 +177670,7 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace(struct __py
  *                                  _xcstr(prefix_utf), NULL)
  * 
  */
+  __Pyx_TraceLine(217,0,__PYX_ERR(17, 217, __pyx_L1_error))
   (void)(xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix_utf), NULL));
 
   /* "src/lxml/extensions.pxi":216
@@ -166967,6 +177682,11 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace(struct __py
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._BaseContext._unregisterNamespace", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -166980,11 +177700,13 @@ static void __pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace(struct __py
 
 static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_ns_utf, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_function) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_addLocalExtensionFunction", 0);
+  __Pyx_TraceCall("_addLocalExtensionFunction", __pyx_f[17], 222, 0, __PYX_ERR(17, 222, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":223
  * 
@@ -166993,6 +177715,7 @@ static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct
  *             self._extensions = {}
  *         self._extensions[(ns_utf, name_utf)] = function
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(17, 223, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_extensions == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -167004,6 +177727,7 @@ static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct
  *         self._extensions[(ns_utf, name_utf)] = function
  *         return 0
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(17, 224, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 224, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -167028,6 +177752,7 @@ static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct
  *         return 0
  * 
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(17, 225, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_extensions == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(17, 225, __pyx_L1_error)
@@ -167050,6 +177775,7 @@ static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct
  * 
  *     cdef registerGlobalFunctions(self, void* ctxt,
  */
+  __Pyx_TraceLine(226,0,__PYX_ERR(17, 226, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -167067,6 +177793,7 @@ static int __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct
   __Pyx_AddTraceback("lxml.etree._BaseContext._addLocalExtensionFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -167087,6 +177814,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_v_function = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -167101,6 +177829,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
   PyObject *__pyx_t_11 = NULL;
   int __pyx_t_12;
   __Pyx_RefNannySetupContext("registerGlobalFunctions", 0);
+  __Pyx_TraceCall("registerGlobalFunctions", __pyx_f[17], 228, 0, __PYX_ERR(17, 228, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":232
  *         cdef python.PyObject* dict_result
@@ -167109,6 +177838,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *             dict_result = python.PyDict_GetItem(
  *                 self._function_cache, ns_utf)
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(17, 232, __pyx_L1_error))
   __pyx_t_2 = 0;
   if (unlikely(__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -167137,6 +177867,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *             if dict_result is not NULL:
  *                 d = <dict>dict_result
  */
+    __Pyx_TraceLine(234,0,__PYX_ERR(17, 234, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_self->_function_cache;
     __Pyx_INCREF(__pyx_t_6);
 
@@ -167147,6 +177878,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *                 self._function_cache, ns_utf)
  *             if dict_result is not NULL:
  */
+    __Pyx_TraceLine(233,0,__PYX_ERR(17, 233, __pyx_L1_error))
     __pyx_v_dict_result = PyDict_GetItem(__pyx_t_6, __pyx_v_ns_utf);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -167157,6 +177889,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *                 d = <dict>dict_result
  *             else:
  */
+    __Pyx_TraceLine(235,0,__PYX_ERR(17, 235, __pyx_L1_error))
     __pyx_t_8 = ((__pyx_v_dict_result != NULL) != 0);
     if (__pyx_t_8) {
 
@@ -167167,6 +177900,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *             else:
  *                 d = {}
  */
+      __Pyx_TraceLine(236,0,__PYX_ERR(17, 236, __pyx_L1_error))
       __pyx_t_6 = ((PyObject *)__pyx_v_dict_result);
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_XDECREF_SET(__pyx_v_d, ((PyObject*)__pyx_t_6));
@@ -167189,6 +177923,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *                 self._function_cache[ns_utf] = d
  *             for name_utf, function in ns_functions.iteritems():
  */
+    __Pyx_TraceLine(238,0,__PYX_ERR(17, 238, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 238, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -167202,6 +177937,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *             for name_utf, function in ns_functions.iteritems():
  *                 d[name_utf] = function
  */
+      __Pyx_TraceLine(239,0,__PYX_ERR(17, 239, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_function_cache == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(17, 239, __pyx_L1_error)
@@ -167217,6 +177953,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *                 d[name_utf] = function
  *                 reg_func(ctxt, name_utf, ns_utf)
  */
+    __Pyx_TraceLine(240,0,__PYX_ERR(17, 240, __pyx_L1_error))
     __pyx_t_9 = 0;
     if (unlikely(__pyx_v_ns_functions == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -167245,6 +177982,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  *                 reg_func(ctxt, name_utf, ns_utf)
  * 
  */
+      __Pyx_TraceLine(241,0,__PYX_ERR(17, 241, __pyx_L1_error))
       if (unlikely(__pyx_v_d == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(17, 241, __pyx_L1_error)
@@ -167258,6 +177996,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
  * 
  *     cdef registerLocalFunctions(self, void* ctxt,
  */
+      __Pyx_TraceLine(242,0,__PYX_ERR(17, 242, __pyx_L1_error))
       (void)(__pyx_v_reg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf));
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -167289,6 +178028,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(str
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XDECREF(__pyx_v_function);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -167309,6 +178049,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_v_function = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -167325,6 +178066,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
   PyObject *(*__pyx_t_13)(PyObject *);
   int __pyx_t_14;
   __Pyx_RefNannySetupContext("registerLocalFunctions", 0);
+  __Pyx_TraceCall("registerLocalFunctions", __pyx_f[17], 244, 0, __PYX_ERR(17, 244, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":248
  *         cdef python.PyObject* dict_result
@@ -167333,6 +178075,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *             return # done
  *         last_ns = None
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(17, 248, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_extensions == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -167344,6 +178087,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *         last_ns = None
  *         d = None
  */
+    __Pyx_TraceLine(249,0,__PYX_ERR(17, 249, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -167364,6 +178108,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *         d = None
  *         for (ns_utf, name_utf), function in self._extensions.iteritems():
  */
+  __Pyx_TraceLine(250,0,__PYX_ERR(17, 250, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_last_ns = Py_None;
 
@@ -167374,6 +178119,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *         for (ns_utf, name_utf), function in self._extensions.iteritems():
  *             if ns_utf is not last_ns or d is None:
  */
+  __Pyx_TraceLine(251,0,__PYX_ERR(17, 251, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_d = ((PyObject*)Py_None);
 
@@ -167384,6 +178130,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *             if ns_utf is not last_ns or d is None:
  *                 last_ns = ns_utf
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(17, 252, __pyx_L1_error))
   __pyx_t_4 = 0;
   if (unlikely(__pyx_v_self->_extensions == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -167460,6 +178207,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                 last_ns = ns_utf
  *                 dict_result = python.PyDict_GetItem(
  */
+    __Pyx_TraceLine(253,0,__PYX_ERR(17, 253, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_ns_utf != __pyx_v_last_ns);
     __pyx_t_14 = (__pyx_t_1 != 0);
     if (!__pyx_t_14) {
@@ -167480,6 +178228,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                 dict_result = python.PyDict_GetItem(
  *                     self._function_cache, ns_utf)
  */
+      __Pyx_TraceLine(254,0,__PYX_ERR(17, 254, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_ns_utf);
       __Pyx_DECREF_SET(__pyx_v_last_ns, __pyx_v_ns_utf);
 
@@ -167490,6 +178239,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                 if dict_result is not NULL:
  *                     d = <dict>dict_result
  */
+      __Pyx_TraceLine(256,0,__PYX_ERR(17, 256, __pyx_L1_error))
       __pyx_t_8 = __pyx_v_self->_function_cache;
       __Pyx_INCREF(__pyx_t_8);
 
@@ -167500,6 +178250,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                     self._function_cache, ns_utf)
  *                 if dict_result is not NULL:
  */
+      __Pyx_TraceLine(255,0,__PYX_ERR(17, 255, __pyx_L1_error))
       __pyx_v_dict_result = PyDict_GetItem(__pyx_t_8, __pyx_v_ns_utf);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -167510,6 +178261,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                     d = <dict>dict_result
  *                 else:
  */
+      __Pyx_TraceLine(257,0,__PYX_ERR(17, 257, __pyx_L1_error))
       __pyx_t_2 = ((__pyx_v_dict_result != NULL) != 0);
       if (__pyx_t_2) {
 
@@ -167520,6 +178272,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                 else:
  *                     d = {}
  */
+        __Pyx_TraceLine(258,0,__PYX_ERR(17, 258, __pyx_L1_error))
         __pyx_t_8 = ((PyObject *)__pyx_v_dict_result);
         __Pyx_INCREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v_d, ((PyObject*)__pyx_t_8));
@@ -167542,6 +178295,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *                     self._function_cache[ns_utf] = d
  *             d[name_utf] = function
  */
+      __Pyx_TraceLine(260,0,__PYX_ERR(17, 260, __pyx_L1_error))
       /*else*/ {
         __pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 260, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
@@ -167555,6 +178309,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *             d[name_utf] = function
  *             reg_func(ctxt, name_utf, ns_utf)
  */
+        __Pyx_TraceLine(261,0,__PYX_ERR(17, 261, __pyx_L1_error))
         if (unlikely(__pyx_v_self->_function_cache == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
           __PYX_ERR(17, 261, __pyx_L1_error)
@@ -167579,6 +178334,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  *             reg_func(ctxt, name_utf, ns_utf)
  * 
  */
+    __Pyx_TraceLine(262,0,__PYX_ERR(17, 262, __pyx_L1_error))
     if (unlikely(__pyx_v_d == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(17, 262, __pyx_L1_error)
@@ -167592,6 +178348,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
  * 
  *     cdef unregisterAllFunctions(self, void* ctxt,
  */
+    __Pyx_TraceLine(263,0,__PYX_ERR(17, 263, __pyx_L1_error))
     (void)(__pyx_v_reg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf));
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -167623,6 +178380,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(stru
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XDECREF(__pyx_v_function);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -167640,6 +178398,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
   PyObject *__pyx_v_functions = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -167651,6 +178410,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
   Py_ssize_t __pyx_t_8;
   PyObject *(*__pyx_t_9)(PyObject *);
   __Pyx_RefNannySetupContext("unregisterAllFunctions", 0);
+  __Pyx_TraceCall("unregisterAllFunctions", __pyx_f[17], 265, 0, __PYX_ERR(17, 265, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":267
  *     cdef unregisterAllFunctions(self, void* ctxt,
@@ -167659,6 +178419,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
  *             for name_utf in functions:
  *                 unreg_func(ctxt, name_utf, ns_utf)
  */
+  __Pyx_TraceLine(267,0,__PYX_ERR(17, 267, __pyx_L1_error))
   __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->_function_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -167687,6 +178448,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
  *                 unreg_func(ctxt, name_utf, ns_utf)
  * 
  */
+    __Pyx_TraceLine(268,0,__PYX_ERR(17, 268, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_functions)) || PyTuple_CheckExact(__pyx_v_functions)) {
       __pyx_t_6 = __pyx_v_functions; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
@@ -167736,6 +178498,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
  * 
  *     cdef unregisterGlobalFunctions(self, void* ctxt,
  */
+      __Pyx_TraceLine(269,0,__PYX_ERR(17, 269, __pyx_L1_error))
       (void)(__pyx_v_unreg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf));
 
       /* "src/lxml/extensions.pxi":268
@@ -167745,6 +178508,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
  *                 unreg_func(ctxt, name_utf, ns_utf)
  * 
  */
+      __Pyx_TraceLine(268,0,__PYX_ERR(17, 268, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -167772,6 +178536,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(stru
   __Pyx_XDECREF(__pyx_v_functions);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -167789,6 +178554,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
   PyObject *__pyx_v_functions = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -167804,6 +178570,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
   int __pyx_t_12;
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("unregisterGlobalFunctions", 0);
+  __Pyx_TraceCall("unregisterGlobalFunctions", __pyx_f[17], 271, 0, __PYX_ERR(17, 271, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":273
  *     cdef unregisterGlobalFunctions(self, void* ctxt,
@@ -167812,6 +178579,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *             for name_utf in functions:
  *                 if self._extensions is None or \
  */
+  __Pyx_TraceLine(273,0,__PYX_ERR(17, 273, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_function_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
     __PYX_ERR(17, 273, __pyx_L1_error)
@@ -167916,6 +178684,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *                 if self._extensions is None or \
  *                        (ns_utf, name_utf) not in self._extensions:
  */
+    __Pyx_TraceLine(274,0,__PYX_ERR(17, 274, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_functions)) || PyTuple_CheckExact(__pyx_v_functions)) {
       __pyx_t_1 = __pyx_v_functions; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0;
       __pyx_t_10 = NULL;
@@ -167965,6 +178734,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *                        (ns_utf, name_utf) not in self._extensions:
  *                     unreg_func(ctxt, name_utf, ns_utf)
  */
+      __Pyx_TraceLine(275,0,__PYX_ERR(17, 275, __pyx_L1_error))
       __pyx_t_12 = (__pyx_v_self->_extensions == ((PyObject*)Py_None));
       __pyx_t_13 = (__pyx_t_12 != 0);
       if (!__pyx_t_13) {
@@ -167980,6 +178750,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *                     unreg_func(ctxt, name_utf, ns_utf)
  * 
  */
+      __Pyx_TraceLine(276,0,__PYX_ERR(17, 276, __pyx_L1_error))
       __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 276, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_v_ns_utf);
@@ -168005,6 +178776,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *                        (ns_utf, name_utf) not in self._extensions:
  *                     unreg_func(ctxt, name_utf, ns_utf)
  */
+      __Pyx_TraceLine(275,0,__PYX_ERR(17, 275, __pyx_L1_error))
       if (__pyx_t_11) {
 
         /* "src/lxml/extensions.pxi":277
@@ -168014,6 +178786,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  * 
  *     @cython.final
  */
+        __Pyx_TraceLine(277,0,__PYX_ERR(17, 277, __pyx_L1_error))
         (void)(__pyx_v_unreg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf));
 
         /* "src/lxml/extensions.pxi":275
@@ -168032,6 +178805,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *                 if self._extensions is None or \
  *                        (ns_utf, name_utf) not in self._extensions:
  */
+      __Pyx_TraceLine(274,0,__PYX_ERR(17, 274, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -168042,6 +178816,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
  *             for name_utf in functions:
  *                 if self._extensions is None or \
  */
+    __Pyx_TraceLine(273,0,__PYX_ERR(17, 273, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -168069,6 +178844,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(s
   __Pyx_XDECREF(__pyx_v_functions);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168085,12 +178861,14 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
   PyObject *__pyx_v_c_dict;
   PyObject *__pyx_v_dict_result;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_find_cached_function", 0);
+  __Pyx_TraceCall("_find_cached_function", __pyx_f[17], 280, 0, __PYX_ERR(17, 280, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":288
  *         cdef python.PyObject* dict_result
@@ -168099,6 +178877,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *         if c_dict is not NULL:
  *             dict_result = python.PyDict_GetItem(
  */
+  __Pyx_TraceLine(288,0,__PYX_ERR(17, 288, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_function_cache;
   __Pyx_INCREF(__pyx_t_1);
   if (((__pyx_v_c_ns_uri == NULL) != 0)) {
@@ -168118,6 +178897,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *             self._function_cache, None if c_ns_uri is NULL else c_ns_uri)
  *         if c_dict is not NULL:
  */
+  __Pyx_TraceLine(287,0,__PYX_ERR(17, 287, __pyx_L1_error))
   __pyx_v_c_dict = PyDict_GetItem(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -168129,6 +178909,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *             dict_result = python.PyDict_GetItem(
  *                 <object>c_dict, <unsigned char*>c_name)
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(17, 289, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_dict != NULL) != 0);
   if (__pyx_t_4) {
 
@@ -168139,6 +178920,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *             if dict_result is not NULL:
  *                 return <object>dict_result
  */
+    __Pyx_TraceLine(291,0,__PYX_ERR(17, 291, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_name)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 291, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
 
@@ -168149,6 +178931,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *                 <object>c_dict, <unsigned char*>c_name)
  *             if dict_result is not NULL:
  */
+    __Pyx_TraceLine(290,0,__PYX_ERR(17, 290, __pyx_L1_error))
     __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_c_dict), __pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -168159,6 +178942,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *                 return <object>dict_result
  *         return None
  */
+    __Pyx_TraceLine(292,0,__PYX_ERR(17, 292, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_dict_result != NULL) != 0);
     if (__pyx_t_4) {
 
@@ -168169,6 +178953,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  *         return None
  * 
  */
+      __Pyx_TraceLine(293,0,__PYX_ERR(17, 293, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
       __pyx_r = ((PyObject *)__pyx_v_dict_result);
@@ -168199,6 +178984,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
  * 
  *     # Python access to the XPath context for extension functions
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(17, 294, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -168220,6 +179006,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168248,6 +179035,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_BaseContext_12context_node_1__get__(Py
 static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -168255,6 +179043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 299, 0, __PYX_ERR(17, 299, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":301
  *         def __get__(self):
@@ -168263,6 +179052,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                 raise XPathError, \
  *                     u"XPath context is only usable during the evaluation"
  */
+  __Pyx_TraceLine(301,0,__PYX_ERR(17, 301, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_xpathCtxt == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -168273,6 +179063,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                     u"XPath context is only usable during the evaluation"
  *             c_node = self._xpathCtxt.node
  */
+    __Pyx_TraceLine(302,0,__PYX_ERR(17, 302, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_XPath_context_is_only_usable_dur, 0, 0);
     __PYX_ERR(17, 302, __pyx_L1_error)
 
@@ -168292,6 +179083,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *             if c_node is NULL:
  *                 raise XPathError, u"no context node"
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(17, 304, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_xpathCtxt->node;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -168302,6 +179094,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                 raise XPathError, u"no context node"
  *             if c_node.doc != self._xpathCtxt.doc:
  */
+  __Pyx_TraceLine(305,0,__PYX_ERR(17, 305, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -168312,6 +179105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *             if c_node.doc != self._xpathCtxt.doc:
  *                 raise XPathError, \
  */
+    __Pyx_TraceLine(306,0,__PYX_ERR(17, 306, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_no_context_node, 0, 0);
     __PYX_ERR(17, 306, __pyx_L1_error)
 
@@ -168331,6 +179125,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                 raise XPathError, \
  *                     u"document-external context nodes are not supported"
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(17, 307, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->doc != __pyx_v_self->_xpathCtxt->doc) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -168341,6 +179136,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                     u"document-external context nodes are not supported"
  *             if self._doc is None:
  */
+    __Pyx_TraceLine(308,0,__PYX_ERR(17, 308, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_document_external_context_nodes, 0, 0);
     __PYX_ERR(17, 308, __pyx_L1_error)
 
@@ -168360,6 +179156,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *                 raise XPathError, u"document context is missing"
  *             return _elementFactory(self._doc, c_node)
  */
+  __Pyx_TraceLine(310,0,__PYX_ERR(17, 310, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -168371,6 +179168,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  *             return _elementFactory(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(311,0,__PYX_ERR(17, 311, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_document_context_is_missing, 0, 0);
     __PYX_ERR(17, 311, __pyx_L1_error)
 
@@ -168390,6 +179188,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
  * 
  *     property eval_context:
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(17, 312, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_4);
@@ -168416,6 +179215,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168443,11 +179243,13 @@ static PyObject *__pyx_pw_4lxml_5etree_12_BaseContext_12eval_context_1__get__(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 315, 0, __PYX_ERR(17, 315, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":316
  *     property eval_context:
@@ -168456,6 +179258,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
  *                 self._eval_context_dict = {}
  *             return self._eval_context_dict
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(17, 316, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_eval_context_dict == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -168467,6 +179270,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
  *             return self._eval_context_dict
  * 
  */
+    __Pyx_TraceLine(317,0,__PYX_ERR(17, 317, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 317, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -168491,6 +179295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
  * 
  *     # Python reference keeping during XPath function evaluation
  */
+  __Pyx_TraceLine(318,0,__PYX_ERR(17, 318, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_eval_context_dict);
   __pyx_r = __pyx_v_self->_eval_context_dict;
@@ -168511,6 +179316,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168525,10 +179331,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
 
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_release_temp_refs", 0);
+  __Pyx_TraceCall("_release_temp_refs", __pyx_f[17], 323, 0, __PYX_ERR(17, 323, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":325
  *     cdef _release_temp_refs(self):
@@ -168537,6 +179345,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct _
  *         self._temp_documents.clear()
  * 
  */
+  __Pyx_TraceLine(325,0,__PYX_ERR(17, 325, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_10_TempStore_clear(__pyx_v_self->_temp_refs); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 325, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":326
@@ -168546,6 +179355,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct _
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(326,0,__PYX_ERR(17, 326, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_temp_documents == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
     __PYX_ERR(17, 326, __pyx_L1_error)
@@ -168568,6 +179378,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct _
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168583,6 +179394,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct _
 static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_obj) {
   PyObject *__pyx_v_o = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -168593,6 +179405,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
   PyObject *(*__pyx_t_7)(PyObject *);
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_hold", 0);
+  __Pyx_TraceCall("_hold", __pyx_f[17], 329, 0, __PYX_ERR(17, 329, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":337
  *         """
@@ -168601,6 +179414,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             self._temp_refs.add(obj)
  *             self._temp_documents.add((<_Element>obj)._doc)
  */
+  __Pyx_TraceLine(337,0,__PYX_ERR(17, 337, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -168612,6 +179426,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             self._temp_documents.add((<_Element>obj)._doc)
  *             return
  */
+    __Pyx_TraceLine(338,0,__PYX_ERR(17, 338, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_10_TempStore_add(__pyx_v_self->_temp_refs, __pyx_v_obj); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 338, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":339
@@ -168621,6 +179436,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             return
  *         elif _isString(obj) or not python.PySequence_Check(obj):
  */
+    __Pyx_TraceLine(339,0,__PYX_ERR(17, 339, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_temp_documents == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
       __PYX_ERR(17, 339, __pyx_L1_error)
@@ -168637,6 +179453,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *         elif _isString(obj) or not python.PySequence_Check(obj):
  *             return
  */
+    __Pyx_TraceLine(340,0,__PYX_ERR(17, 340, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -168657,6 +179474,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             return
  *         for o in obj:
  */
+  __Pyx_TraceLine(341,0,__PYX_ERR(17, 341, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_obj) != 0);
   if (!__pyx_t_1) {
   } else {
@@ -168675,6 +179493,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *         for o in obj:
  *             if isinstance(o, _Element):
  */
+    __Pyx_TraceLine(342,0,__PYX_ERR(17, 342, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -168695,6 +179514,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             if isinstance(o, _Element):
  *                 #print "Holding element:", <int>element._c_node
  */
+  __Pyx_TraceLine(343,0,__PYX_ERR(17, 343, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_obj)) || PyTuple_CheckExact(__pyx_v_obj)) {
     __pyx_t_4 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
@@ -168744,6 +179564,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *                 #print "Holding element:", <int>element._c_node
  *                 self._temp_refs.add(o)
  */
+    __Pyx_TraceLine(344,0,__PYX_ERR(17, 344, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_o, __pyx_ptype_4lxml_5etree__Element); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -168755,6 +179576,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *                 #print "Holding document:", <int>element._doc._c_doc
  *                 self._temp_documents.add((<_Element>o)._doc)
  */
+      __Pyx_TraceLine(346,0,__PYX_ERR(17, 346, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_5etree_10_TempStore_add(__pyx_v_self->_temp_refs, __pyx_v_o); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(17, 346, __pyx_L1_error)
 
       /* "src/lxml/extensions.pxi":348
@@ -168764,6 +179586,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  * 
  *     @cython.final
  */
+      __Pyx_TraceLine(348,0,__PYX_ERR(17, 348, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_temp_documents == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
         __PYX_ERR(17, 348, __pyx_L1_error)
@@ -168789,6 +179612,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
  *             if isinstance(o, _Element):
  *                 #print "Holding element:", <int>element._c_node
  */
+    __Pyx_TraceLine(343,0,__PYX_ERR(17, 343, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -168811,6 +179635,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_o);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168826,6 +179651,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxm
 static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentForNode(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, xmlNode *__pyx_v_c_node) {
   struct LxmlDocument *__pyx_v_doc = 0;
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -168837,6 +179663,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
   int __pyx_t_8;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_findDocumentForNode", 0);
+  __Pyx_TraceCall("_findDocumentForNode", __pyx_f[17], 351, 0, __PYX_ERR(17, 351, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":358
  *         """
@@ -168845,6 +179672,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
  *             if doc is not None and doc._c_doc is c_node.doc:
  *                 return doc
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(17, 358, __pyx_L1_error))
   __pyx_t_2 = 0;
   __pyx_t_5 = __Pyx_set_iterator(__pyx_v_self->_temp_documents, 1, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 358, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -168867,6 +179695,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
  *                 return doc
  *         return None
  */
+    __Pyx_TraceLine(359,0,__PYX_ERR(17, 359, __pyx_L1_error))
     __pyx_t_8 = (((PyObject *)__pyx_v_doc) != Py_None);
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
@@ -168886,6 +179715,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
  *         return None
  * 
  */
+      __Pyx_TraceLine(360,0,__PYX_ERR(17, 360, __pyx_L1_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __Pyx_INCREF(((PyObject *)__pyx_v_doc));
       __pyx_r = __pyx_v_doc;
@@ -168910,6 +179740,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
  * 
  * 
  */
+  __Pyx_TraceLine(361,0,__PYX_ERR(17, 361, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -168931,6 +179762,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -168946,6 +179778,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentFor
 static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlError *__pyx_v_c_error) {
   xmlError __pyx_v_error;
   int __pyx_v_xpath_code;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   char *__pyx_t_2;
@@ -168958,6 +179791,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_forwardXPathError", 0);
+  __Pyx_TraceCall("_forwardXPathError", __pyx_f[17], 396, 0, __PYX_ERR(17, 396, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":399
  *     cdef xmlerror.xmlError error
@@ -168966,6 +179800,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *         error.message = c_error.message
  *     else:
  */
+  __Pyx_TraceLine(399,0,__PYX_ERR(17, 399, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_error->message != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -168976,6 +179811,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     else:
  *         xpath_code = c_error.code - xmlerror.XML_XPATH_EXPRESSION_OK
  */
+    __Pyx_TraceLine(400,0,__PYX_ERR(17, 400, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_error->message;
     __pyx_v_error.message = __pyx_t_2;
 
@@ -168996,6 +179832,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *         if 0 <= xpath_code < len(LIBXML2_XPATH_ERROR_MESSAGES):
  *             error.message = _cstr(LIBXML2_XPATH_ERROR_MESSAGES[xpath_code])
  */
+  __Pyx_TraceLine(402,0,__PYX_ERR(17, 402, __pyx_L1_error))
   /*else*/ {
     __pyx_v_xpath_code = (__pyx_v_c_error->code - XML_XPATH_EXPRESSION_OK);
 
@@ -169006,6 +179843,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *             error.message = _cstr(LIBXML2_XPATH_ERROR_MESSAGES[xpath_code])
  *         else:
  */
+    __Pyx_TraceLine(403,0,__PYX_ERR(17, 403, __pyx_L1_error))
     __pyx_t_1 = (0 <= __pyx_v_xpath_code);
     if (__pyx_t_1) {
       __pyx_t_3 = __pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES;
@@ -169028,6 +179866,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *         else:
  *             error.message = b"unknown error"
  */
+      __Pyx_TraceLine(404,0,__PYX_ERR(17, 404, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(17, 404, __pyx_L1_error)
@@ -169054,6 +179893,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.domain = c_error.domain
  *     error.code = c_error.code
  */
+    __Pyx_TraceLine(406,0,__PYX_ERR(17, 406, __pyx_L1_error))
     /*else*/ {
       __pyx_v_error.message = ((char *)"unknown error");
     }
@@ -169068,6 +179908,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.code = c_error.code
  *     error.level = c_error.level
  */
+  __Pyx_TraceLine(407,0,__PYX_ERR(17, 407, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_c_error->domain;
   __pyx_v_error.domain = __pyx_t_6;
 
@@ -169078,6 +179919,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.level = c_error.level
  *     error.line = c_error.line
  */
+  __Pyx_TraceLine(408,0,__PYX_ERR(17, 408, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_c_error->code;
   __pyx_v_error.code = __pyx_t_6;
 
@@ -169088,6 +179930,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.line = c_error.line
  *     error.int2 = c_error.int1 # column
  */
+  __Pyx_TraceLine(409,0,__PYX_ERR(17, 409, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_c_error->level;
   __pyx_v_error.level = __pyx_t_7;
 
@@ -169098,6 +179941,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.int2 = c_error.int1 # column
  *     error.file = c_error.file
  */
+  __Pyx_TraceLine(410,0,__PYX_ERR(17, 410, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_c_error->line;
   __pyx_v_error.line = __pyx_t_6;
 
@@ -169108,6 +179952,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.file = c_error.file
  *     error.node = NULL
  */
+  __Pyx_TraceLine(411,0,__PYX_ERR(17, 411, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_c_error->int1;
   __pyx_v_error.int2 = __pyx_t_6;
 
@@ -169118,6 +179963,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  *     error.node = NULL
  * 
  */
+  __Pyx_TraceLine(412,0,__PYX_ERR(17, 412, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_error->file;
   __pyx_v_error.file = __pyx_t_2;
 
@@ -169128,6 +179974,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  * 
  *     (<_BaseContext>c_ctxt)._error_log._receive(&error)
  */
+  __Pyx_TraceLine(413,0,__PYX_ERR(17, 413, __pyx_L1_error))
   __pyx_v_error.node = NULL;
 
   /* "src/lxml/extensions.pxi":415
@@ -169137,6 +179984,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  * 
  * cdef void _receiveXPathError(void* c_context, xmlerror.xmlError* error) nogil:
  */
+  __Pyx_TraceLine(415,0,__PYX_ERR(17, 415, __pyx_L1_error))
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_c_ctxt)->_error_log), (&__pyx_v_error));
 
   /* "src/lxml/extensions.pxi":396
@@ -169153,6 +180001,7 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_WriteUnraisable("lxml.etree._forwardXPathError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -169168,7 +180017,9 @@ static void __pyx_f_4lxml_5etree__forwardXPathError(void *__pyx_v_c_ctxt, xmlErr
  */
 
 static void __pyx_f_4lxml_5etree__receiveXPathError(void *__pyx_v_c_context, xmlError *__pyx_v_error) {
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
+  __Pyx_TraceCall("_receiveXPathError", __pyx_f[17], 417, 1, __PYX_ERR(17, 417, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":420
  *     if not __DEBUG:
@@ -169177,6 +180028,7 @@ static void __pyx_f_4lxml_5etree__receiveXPathError(void *__pyx_v_c_context, xml
  *         _forwardError(NULL, error)
  *     else:
  */
+  __Pyx_TraceLine(420,1,__PYX_ERR(17, 420, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_context == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -169187,6 +180039,7 @@ static void __pyx_f_4lxml_5etree__receiveXPathError(void *__pyx_v_c_context, xml
  *     else:
  *         _forwardXPathError(c_context, error)
  */
+    __Pyx_TraceLine(421,1,__PYX_ERR(17, 421, __pyx_L1_error))
     __pyx_f_4lxml_5etree__forwardError(NULL, __pyx_v_error);
 
     /* "src/lxml/extensions.pxi":420
@@ -169206,6 +180059,7 @@ static void __pyx_f_4lxml_5etree__receiveXPathError(void *__pyx_v_c_context, xml
  * 
  * 
  */
+  __Pyx_TraceLine(423,1,__PYX_ERR(17, 423, __pyx_L1_error))
   /*else*/ {
     __pyx_f_4lxml_5etree__forwardXPathError(__pyx_v_c_context, __pyx_v_error);
   }
@@ -169220,6 +180074,11 @@ static void __pyx_f_4lxml_5etree__receiveXPathError(void *__pyx_v_c_context, xml
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._receiveXPathError", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
 }
 
 /* "src/lxml/extensions.pxi":426
@@ -169311,6 +180170,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_v_xpath_name = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -169322,7 +180182,9 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   PyObject *(*__pyx_t_10)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__332)
   __Pyx_RefNannySetupContext("Extension", 0);
+  __Pyx_TraceCall("Extension", __pyx_f[17], 426, 0, __PYX_ERR(17, 426, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_function_mapping);
 
   /* "src/lxml/extensions.pxi":439
@@ -169332,6 +180194,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *     if isinstance(function_mapping, dict):
  *         for function_name, xpath_name in function_mapping.items():
  */
+  __Pyx_TraceLine(439,0,__PYX_ERR(17, 439, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 439, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_functions = ((PyObject*)__pyx_t_1);
@@ -169344,6 +180207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *         for function_name, xpath_name in function_mapping.items():
  *             functions[(ns, xpath_name)] = getattr(module, function_name)
  */
+  __Pyx_TraceLine(440,0,__PYX_ERR(17, 440, __pyx_L1_error))
   __pyx_t_2 = PyDict_Check(__pyx_v_function_mapping); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -169355,6 +180219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *             functions[(ns, xpath_name)] = getattr(module, function_name)
  *     else:
  */
+    __Pyx_TraceLine(441,0,__PYX_ERR(17, 441, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_function_mapping, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -169473,6 +180338,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *     else:
  *         if function_mapping is None:
  */
+      __Pyx_TraceLine(442,0,__PYX_ERR(17, 442, __pyx_L1_error))
       __pyx_t_1 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_function_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 442, __pyx_L1_error)
@@ -169494,6 +180360,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *             functions[(ns, xpath_name)] = getattr(module, function_name)
  *     else:
  */
+      __Pyx_TraceLine(441,0,__PYX_ERR(17, 441, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -169514,6 +180381,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *             function_mapping = [ name for name in dir(module)
  *                                  if not name.startswith(u'_') ]
  */
+  __Pyx_TraceLine(444,0,__PYX_ERR(17, 444, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = (__pyx_v_function_mapping == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
@@ -169526,6 +180394,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *                                  if not name.startswith(u'_') ]
  *         for function_name in function_mapping:
  */
+      __Pyx_TraceLine(445,0,__PYX_ERR(17, 445, __pyx_L1_error))
       __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 445, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_1 = PyObject_Dir(__pyx_v_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 445, __pyx_L1_error)
@@ -169580,9 +180449,10 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *         for function_name in function_mapping:
  *             functions[(ns, function_name)] = getattr(module, function_name)
  */
+        __Pyx_TraceLine(446,0,__PYX_ERR(17, 446, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 446, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 446, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__333, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 446, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 446, __pyx_L1_error)
@@ -169597,6 +180467,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *                                  if not name.startswith(u'_') ]
  *         for function_name in function_mapping:
  */
+          __Pyx_TraceLine(445,0,__PYX_ERR(17, 445, __pyx_L1_error))
           if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_name))) __PYX_ERR(17, 445, __pyx_L1_error)
 
           /* "src/lxml/extensions.pxi":446
@@ -169615,6 +180486,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *                                  if not name.startswith(u'_') ]
  *         for function_name in function_mapping:
  */
+        __Pyx_TraceLine(445,0,__PYX_ERR(17, 445, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF_SET(__pyx_v_function_mapping, __pyx_t_4);
@@ -169636,6 +180508,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *             functions[(ns, function_name)] = getattr(module, function_name)
  *     return functions
  */
+    __Pyx_TraceLine(447,0,__PYX_ERR(17, 447, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_function_mapping)) || PyTuple_CheckExact(__pyx_v_function_mapping)) {
       __pyx_t_4 = __pyx_v_function_mapping; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
@@ -169685,6 +180558,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *     return functions
  * 
  */
+      __Pyx_TraceLine(448,0,__PYX_ERR(17, 448, __pyx_L1_error))
       __pyx_t_8 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_function_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(17, 448, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 448, __pyx_L1_error)
@@ -169706,6 +180580,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  *             functions[(ns, function_name)] = getattr(module, function_name)
  *     return functions
  */
+      __Pyx_TraceLine(447,0,__PYX_ERR(17, 447, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -169718,6 +180593,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(17, 449, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_functions);
   __pyx_r = __pyx_v_functions;
@@ -169747,6 +180623,7 @@ static PyObject *__pyx_pf_4lxml_5etree_62Extension(CYTHON_UNUSED PyObject *__pyx
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_function_mapping);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -169777,9 +180654,11 @@ static int __pyx_pw_4lxml_5etree_12_ExsltRegExp_1__cinit__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_12_ExsltRegExp___cinit__(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[17], 458, 0, __PYX_ERR(17, 458, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":459
  *     cdef dict _compile_map
@@ -169788,6 +180667,7 @@ static int __pyx_pf_4lxml_5etree_12_ExsltRegExp___cinit__(struct __pyx_obj_4lxml
  * 
  *     cdef _make_string(self, value):
  */
+  __Pyx_TraceLine(459,0,__PYX_ERR(17, 459, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 459, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -169812,6 +180692,7 @@ static int __pyx_pf_4lxml_5etree_12_ExsltRegExp___cinit__(struct __pyx_obj_4lxml
   __Pyx_AddTraceback("lxml.etree._ExsltRegExp.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -169828,6 +180709,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
   PyObject *__pyx_v_firstnode = NULL;
   xmlChar *__pyx_v_c_text;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -169842,6 +180724,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_make_string", 0);
+  __Pyx_TraceCall("_make_string", __pyx_f[17], 461, 0, __PYX_ERR(17, 461, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":462
  * 
@@ -169850,6 +180733,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             return value
  *         elif isinstance(value, list):
  */
+  __Pyx_TraceLine(462,0,__PYX_ERR(17, 462, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_value) != 0);
   if (__pyx_t_1) {
 
@@ -169860,6 +180744,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *         elif isinstance(value, list):
  *             # node set: take recursive text concatenation of first element
  */
+    __Pyx_TraceLine(463,0,__PYX_ERR(17, 463, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_value);
     __pyx_r = __pyx_v_value;
@@ -169881,6 +180766,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             # node set: take recursive text concatenation of first element
  *             if python.PyList_GET_SIZE(value) == 0:
  */
+  __Pyx_TraceLine(464,0,__PYX_ERR(17, 464, __pyx_L1_error))
   __pyx_t_1 = PyList_Check(__pyx_v_value); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -169892,6 +180778,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 return u''
  *             firstnode = value[0]
  */
+    __Pyx_TraceLine(466,0,__PYX_ERR(17, 466, __pyx_L1_error))
     __pyx_t_2 = ((PyList_GET_SIZE(__pyx_v_value) == 0) != 0);
     if (__pyx_t_2) {
 
@@ -169902,9 +180789,10 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             firstnode = value[0]
  *             if _isString(firstnode):
  */
+      __Pyx_TraceLine(467,0,__PYX_ERR(17, 467, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
-      __Pyx_INCREF(__pyx_kp_u__16);
-      __pyx_r = __pyx_kp_u__16;
+      __Pyx_INCREF(__pyx_kp_u__23);
+      __pyx_r = __pyx_kp_u__23;
       goto __pyx_L0;
 
       /* "src/lxml/extensions.pxi":466
@@ -169923,6 +180811,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             if _isString(firstnode):
  *                 return firstnode
  */
+    __Pyx_TraceLine(468,0,__PYX_ERR(17, 468, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_value, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 468, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_firstnode = __pyx_t_3;
@@ -169935,6 +180824,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 return firstnode
  *             elif isinstance(firstnode, _Element):
  */
+    __Pyx_TraceLine(469,0,__PYX_ERR(17, 469, __pyx_L1_error))
     __pyx_t_2 = (_isString(__pyx_v_firstnode) != 0);
     if (__pyx_t_2) {
 
@@ -169945,6 +180835,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             elif isinstance(firstnode, _Element):
  *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
  */
+      __Pyx_TraceLine(470,0,__PYX_ERR(17, 470, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_firstnode);
       __pyx_r = __pyx_v_firstnode;
@@ -169966,6 +180857,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
  *                 if c_text is NULL:
  */
+    __Pyx_TraceLine(471,0,__PYX_ERR(17, 471, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_firstnode, __pyx_ptype_4lxml_5etree__Element); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -169977,6 +180869,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 if c_text is NULL:
  *                     raise MemoryError()
  */
+      __Pyx_TraceLine(472,0,__PYX_ERR(17, 472, __pyx_L1_error))
       __pyx_v_c_text = xmlNodeGetContent(((struct LxmlElement *)__pyx_v_firstnode)->_c_node);
 
       /* "src/lxml/extensions.pxi":473
@@ -169986,6 +180879,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                     raise MemoryError()
  *                 try:
  */
+      __Pyx_TraceLine(473,0,__PYX_ERR(17, 473, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_text == NULL) != 0);
       if (unlikely(__pyx_t_1)) {
 
@@ -169996,6 +180890,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 try:
  *                     return funicode(c_text)
  */
+        __Pyx_TraceLine(474,0,__PYX_ERR(17, 474, __pyx_L1_error))
         PyErr_NoMemory(); __PYX_ERR(17, 474, __pyx_L1_error)
 
         /* "src/lxml/extensions.pxi":473
@@ -170014,6 +180909,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                     return funicode(c_text)
  *                 finally:
  */
+      __Pyx_TraceLine(475,0,__PYX_ERR(17, 475, __pyx_L8_error))
       /*try:*/ {
 
         /* "src/lxml/extensions.pxi":476
@@ -170023,6 +180919,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *                 finally:
  *                     tree.xmlFree(c_text)
  */
+        __Pyx_TraceLine(476,0,__PYX_ERR(17, 476, __pyx_L8_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 476, __pyx_L8_error)
         __Pyx_GOTREF(__pyx_t_3);
@@ -170038,6 +180935,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *             else:
  *                 return unicode(firstnode)
  */
+      __Pyx_TraceLine(478,0,__PYX_ERR(17, 478, __pyx_L1_error))
       /*finally:*/ {
         __pyx_L8_error:;
         /*exception exit:*/{
@@ -170097,6 +180995,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  *         else:
  *             return unicode(value)
  */
+    __Pyx_TraceLine(480,0,__PYX_ERR(17, 480, __pyx_L1_error))
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_firstnode); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 480, __pyx_L1_error)
@@ -170122,6 +181021,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
  * 
  *     cdef _compile(self, rexp, ignore_case):
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(17, 482, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 482, __pyx_L1_error)
@@ -170147,6 +181047,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(CYTHON_UNUSED
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_firstnode);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -170165,6 +181066,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
   PyObject *__pyx_v_py_flags = NULL;
   PyObject *__pyx_v_rexp_compiled = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -170173,6 +181075,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_compile", 0);
+  __Pyx_TraceCall("_compile", __pyx_f[17], 484, 0, __PYX_ERR(17, 484, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_rexp);
 
   /* "src/lxml/extensions.pxi":486
@@ -170182,6 +181085,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         key = (rexp, ignore_case)
  *         c_result = python.PyDict_GetItem(self._compile_map, key)
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(17, 486, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_rexp); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 486, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_rexp, __pyx_t_1);
@@ -170194,6 +181098,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         c_result = python.PyDict_GetItem(self._compile_map, key)
  *         if c_result is not NULL:
  */
+  __Pyx_TraceLine(487,0,__PYX_ERR(17, 487, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_rexp);
@@ -170212,6 +181117,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         if c_result is not NULL:
  *             return <object>c_result
  */
+  __Pyx_TraceLine(488,0,__PYX_ERR(17, 488, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_compile_map;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_c_result = PyDict_GetItem(__pyx_t_1, __pyx_v_key);
@@ -170224,6 +181130,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *             return <object>c_result
  *         py_flags = re.UNICODE
  */
+  __Pyx_TraceLine(489,0,__PYX_ERR(17, 489, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_result != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -170234,6 +181141,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         py_flags = re.UNICODE
  *         if ignore_case:
  */
+    __Pyx_TraceLine(490,0,__PYX_ERR(17, 490, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_c_result));
     __pyx_r = ((PyObject *)__pyx_v_c_result);
@@ -170255,6 +181163,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         if ignore_case:
  *             py_flags = py_flags | re.IGNORECASE
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(17, 491, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_UNICODE); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 491, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_py_flags = __pyx_t_1;
@@ -170267,6 +181176,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *             py_flags = py_flags | re.IGNORECASE
  *         rexp_compiled = re.compile(rexp, py_flags)
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(17, 492, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_case); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 492, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -170277,6 +181187,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         rexp_compiled = re.compile(rexp, py_flags)
  *         self._compile_map[key] = rexp_compiled
  */
+    __Pyx_TraceLine(493,0,__PYX_ERR(17, 493, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_IGNORECASE); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_3 = PyNumber_Or(__pyx_v_py_flags, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 493, __pyx_L1_error)
@@ -170301,6 +181212,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         self._compile_map[key] = rexp_compiled
  *         return rexp_compiled
  */
+  __Pyx_TraceLine(494,0,__PYX_ERR(17, 494, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = NULL;
@@ -170358,6 +181270,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  *         return rexp_compiled
  * 
  */
+  __Pyx_TraceLine(495,0,__PYX_ERR(17, 495, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_compile_map == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(17, 495, __pyx_L1_error)
@@ -170371,6 +181284,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
  * 
  *     def test(self, ctxt, s, rexp, flags=u''):
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(17, 496, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_rexp_compiled);
   __pyx_r = __pyx_v_rexp_compiled;
@@ -170398,6 +181312,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4
   __Pyx_XDECREF(__pyx_v_rexp_compiled);
   __Pyx_XDECREF(__pyx_v_rexp);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -170424,7 +181339,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ExsltRegExp_3test(PyObject *__pyx_v_se
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ctxt,&__pyx_n_s_s_4,&__pyx_n_s_rexp,&__pyx_n_s_flags,0};
     PyObject* values[4] = {0,0,0,0};
-    values[3] = ((PyObject *)__pyx_kp_u__16);
+    values[3] = ((PyObject *)__pyx_kp_u__23);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -170501,6 +181416,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ExsltRegExp_3test(PyObject *__pyx_v_se
 static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_ctxt, PyObject *__pyx_v_s, PyObject *__pyx_v_rexp, PyObject *__pyx_v_flags) {
   PyObject *__pyx_v_rexpc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -170508,7 +181424,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__334)
   __Pyx_RefNannySetupContext("test", 0);
+  __Pyx_TraceCall("test", __pyx_f[17], 498, 0, __PYX_ERR(17, 498, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_s);
   __Pyx_INCREF(__pyx_v_flags);
 
@@ -170519,6 +181437,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  *         s = self._make_string(s)
  *         rexpc = self._compile(rexp, u'i' in flags)
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(17, 499, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_flags, __pyx_t_1);
@@ -170531,6 +181450,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  *         rexpc = self._compile(rexp, u'i' in flags)
  *         if rexpc.search(s) is None:
  */
+  __Pyx_TraceLine(500,0,__PYX_ERR(17, 500, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 500, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
@@ -170543,6 +181463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  *         if rexpc.search(s) is None:
  *             return False
  */
+  __Pyx_TraceLine(501,0,__PYX_ERR(17, 501, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_i, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 501, __pyx_L1_error)
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -170559,6 +181480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  *             return False
  *         else:
  */
+  __Pyx_TraceLine(502,0,__PYX_ERR(17, 502, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rexpc, __pyx_n_s_search); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = NULL;
@@ -170616,6 +181538,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  *         else:
  *             return True
  */
+    __Pyx_TraceLine(503,0,__PYX_ERR(17, 503, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
     __pyx_r = Py_False;
@@ -170637,6 +181560,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
  * 
  *     def match(self, ctxt, s, rexp, flags=u''):
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(17, 505, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
@@ -170665,6 +181589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_2test(struct __pyx_obj_4lx
   __Pyx_XDECREF(__pyx_v_s);
   __Pyx_XDECREF(__pyx_v_flags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -170691,7 +181616,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ExsltRegExp_5match(PyObject *__pyx_v_s
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ctxt,&__pyx_n_s_s_4,&__pyx_n_s_rexp,&__pyx_n_s_flags,0};
     PyObject* values[4] = {0,0,0,0};
-    values[3] = ((PyObject *)__pyx_kp_u__16);
+    values[3] = ((PyObject *)__pyx_kp_u__23);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -170775,6 +181700,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
   PyObject *__pyx_v_s_match = NULL;
   PyObject *__pyx_v_elem = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -170787,7 +181713,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
   PyObject *(*__pyx_t_9)(PyObject *);
   int __pyx_t_10;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__335)
   __Pyx_RefNannySetupContext("match", 0);
+  __Pyx_TraceCall("match", __pyx_f[17], 507, 0, __PYX_ERR(17, 507, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_s);
   __Pyx_INCREF(__pyx_v_flags);
 
@@ -170798,6 +181726,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         s = self._make_string(s)
  *         rexpc = self._compile(rexp, u'i' in flags)
  */
+  __Pyx_TraceLine(509,0,__PYX_ERR(17, 509, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 509, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_flags, __pyx_t_1);
@@ -170810,6 +181739,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         rexpc = self._compile(rexp, u'i' in flags)
  *         if u'g' in flags:
  */
+  __Pyx_TraceLine(510,0,__PYX_ERR(17, 510, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 510, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
@@ -170822,6 +181752,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         if u'g' in flags:
  *             results = rexpc.findall(s)
  */
+  __Pyx_TraceLine(511,0,__PYX_ERR(17, 511, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_i, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 511, __pyx_L1_error)
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 511, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -170838,6 +181769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             results = rexpc.findall(s)
  *             if not results:
  */
+  __Pyx_TraceLine(512,0,__PYX_ERR(17, 512, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_g, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 512, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_2 != 0);
   if (__pyx_t_4) {
@@ -170849,6 +181781,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             if not results:
  *                 return ()
  */
+    __Pyx_TraceLine(513,0,__PYX_ERR(17, 513, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rexpc, __pyx_n_s_findall); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 513, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = NULL;
@@ -170904,6 +181837,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *                 return ()
  *         else:
  */
+    __Pyx_TraceLine(514,0,__PYX_ERR(17, 514, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_results); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(17, 514, __pyx_L1_error)
     __pyx_t_2 = ((!__pyx_t_4) != 0);
     if (__pyx_t_2) {
@@ -170915,6 +181849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         else:
  *             result = rexpc.search(s)
  */
+      __Pyx_TraceLine(515,0,__PYX_ERR(17, 515, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_empty_tuple);
       __pyx_r = __pyx_empty_tuple;
@@ -170946,6 +181881,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             if not result:
  *                 return ()
  */
+  __Pyx_TraceLine(517,0,__PYX_ERR(17, 517, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rexpc, __pyx_n_s_search); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 517, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -171002,6 +181938,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *                 return ()
  *             results = [ result.group() ]
  */
+    __Pyx_TraceLine(518,0,__PYX_ERR(17, 518, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 518, __pyx_L1_error)
     __pyx_t_4 = ((!__pyx_t_2) != 0);
     if (__pyx_t_4) {
@@ -171013,6 +181950,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             results = [ result.group() ]
  *             results.extend( result.groups(u'') )
  */
+      __Pyx_TraceLine(519,0,__PYX_ERR(17, 519, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_empty_tuple);
       __pyx_r = __pyx_empty_tuple;
@@ -171034,6 +181972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             results.extend( result.groups(u'') )
  *         result_list = []
  */
+    __Pyx_TraceLine(520,0,__PYX_ERR(17, 520, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_group); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 520, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = NULL;
@@ -171069,11 +182008,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         result_list = []
  *         root = Element(u'matches')
  */
+    __Pyx_TraceLine(521,0,__PYX_ERR(17, 521, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_results, __pyx_n_s_extend); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 521, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_groups); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 521, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 521, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__336, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 521, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -171133,6 +182073,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         root = Element(u'matches')
  *         join_groups = u''.join
  */
+  __Pyx_TraceLine(522,0,__PYX_ERR(17, 522, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 522, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result_list = ((PyObject*)__pyx_t_1);
@@ -171145,9 +182086,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         join_groups = u''.join
  *         for s_match in results:
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(17, 523, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Element); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 523, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__120, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 523, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__337, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 523, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_root = __pyx_t_3;
@@ -171160,7 +182102,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         for s_match in results:
  *             if python.PyTuple_CheckExact(s_match):
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__16, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 524, __pyx_L1_error)
+  __Pyx_TraceLine(524,0,__PYX_ERR(17, 524, __pyx_L1_error))
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u__23, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 524, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_join_groups = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -171172,6 +182115,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             if python.PyTuple_CheckExact(s_match):
  *                 s_match = join_groups(s_match)
  */
+  __Pyx_TraceLine(525,0,__PYX_ERR(17, 525, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_results)) || PyTuple_CheckExact(__pyx_v_results)) {
     __pyx_t_3 = __pyx_v_results; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
     __pyx_t_9 = NULL;
@@ -171221,6 +182165,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *                 s_match = join_groups(s_match)
  *             elem = SubElement(root, u'match')
  */
+    __Pyx_TraceLine(526,0,__PYX_ERR(17, 526, __pyx_L1_error))
     __pyx_t_4 = (PyTuple_CheckExact(__pyx_v_s_match) != 0);
     if (__pyx_t_4) {
 
@@ -171231,6 +182176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             elem = SubElement(root, u'match')
  *             elem.text = s_match
  */
+      __Pyx_TraceLine(527,0,__PYX_ERR(17, 527, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_join_groups);
       __pyx_t_7 = __pyx_v_join_groups; __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -171294,6 +182240,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             elem.text = s_match
  *             result_list.append(elem)
  */
+    __Pyx_TraceLine(528,0,__PYX_ERR(17, 528, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_SubElement); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 528, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_5 = NULL;
@@ -171351,6 +182298,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             result_list.append(elem)
  *         return result_list
  */
+    __Pyx_TraceLine(529,0,__PYX_ERR(17, 529, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_elem, __pyx_n_s_text, __pyx_v_s_match) < 0) __PYX_ERR(17, 529, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":530
@@ -171360,6 +182308,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *         return result_list
  * 
  */
+    __Pyx_TraceLine(530,0,__PYX_ERR(17, 530, __pyx_L1_error))
     __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result_list, __pyx_v_elem); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(17, 530, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":525
@@ -171369,6 +182318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  *             if python.PyTuple_CheckExact(s_match):
  *                 s_match = join_groups(s_match)
  */
+    __Pyx_TraceLine(525,0,__PYX_ERR(17, 525, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -171379,6 +182329,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
  * 
  *     def replace(self, ctxt, s, rexp, flags, replacement):
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(17, 531, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result_list);
   __pyx_r = __pyx_v_result_list;
@@ -171413,6 +182364,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_4match(struct __pyx_obj_4l
   __Pyx_XDECREF(__pyx_v_s);
   __Pyx_XDECREF(__pyx_v_flags);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -171524,6 +182476,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
   PyObject *__pyx_v_rexpc = NULL;
   long __pyx_v_count;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -171533,7 +182486,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__338)
   __Pyx_RefNannySetupContext("replace", 0);
+  __Pyx_TraceCall("replace", __pyx_f[17], 533, 0, __PYX_ERR(17, 533, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_s);
   __Pyx_INCREF(__pyx_v_flags);
   __Pyx_INCREF(__pyx_v_replacement);
@@ -171545,6 +182500,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         flags = self._make_string(flags)
  *         s = self._make_string(s)
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(17, 534, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_replacement); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 534, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_replacement, __pyx_t_1);
@@ -171557,6 +182513,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         s = self._make_string(s)
  *         rexpc = self._compile(rexp, u'i' in flags)
  */
+  __Pyx_TraceLine(535,0,__PYX_ERR(17, 535, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 535, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_flags, __pyx_t_1);
@@ -171569,6 +182526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         rexpc = self._compile(rexp, u'i' in flags)
  *         if u'g' in flags:
  */
+  __Pyx_TraceLine(536,0,__PYX_ERR(17, 536, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(__pyx_v_self, __pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
@@ -171581,6 +182539,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         if u'g' in flags:
  *             count = 0
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(17, 537, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_i, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 537, __pyx_L1_error)
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 537, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -171597,6 +182556,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *             count = 0
  *         else:
  */
+  __Pyx_TraceLine(538,0,__PYX_ERR(17, 538, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_g, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(17, 538, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_2 != 0);
   if (__pyx_t_4) {
@@ -171608,6 +182568,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         else:
  *             count = 1
  */
+    __Pyx_TraceLine(539,0,__PYX_ERR(17, 539, __pyx_L1_error))
     __pyx_v_count = 0;
 
     /* "src/lxml/extensions.pxi":538
@@ -171627,6 +182588,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  *         return rexpc.sub(replacement, s, count)
  * 
  */
+  __Pyx_TraceLine(541,0,__PYX_ERR(17, 541, __pyx_L1_error))
   /*else*/ {
     __pyx_v_count = 1;
   }
@@ -171639,6 +182601,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
  * 
  *     cdef _register_in_context(self, _BaseContext context):
  */
+  __Pyx_TraceLine(542,0,__PYX_ERR(17, 542, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rexpc, __pyx_n_s_sub); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 542, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -171721,6 +182684,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
   __Pyx_XDECREF(__pyx_v_flags);
   __Pyx_XDECREF(__pyx_v_replacement);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -171736,10 +182700,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_6replace(struct __pyx_obj_
 static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
   PyObject *__pyx_v_ns = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_register_in_context", 0);
+  __Pyx_TraceCall("_register_in_context", __pyx_f[17], 544, 0, __PYX_ERR(17, 544, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":545
  * 
@@ -171748,6 +182714,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct
  *         context._addLocalExtensionFunction(ns, b"test",    self.test)
  *         context._addLocalExtensionFunction(ns, b"match",   self.match)
  */
+  __Pyx_TraceLine(545,0,__PYX_ERR(17, 545, __pyx_L1_error))
   __Pyx_INCREF(__pyx_kp_b_http_exslt_org_regular_expressio);
   __pyx_v_ns = __pyx_kp_b_http_exslt_org_regular_expressio;
 
@@ -171758,6 +182725,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct
  *         context._addLocalExtensionFunction(ns, b"match",   self.match)
  *         context._addLocalExtensionFunction(ns, b"replace", self.replace)
  */
+  __Pyx_TraceLine(546,0,__PYX_ERR(17, 546, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_test); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, __pyx_n_b_test, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 546, __pyx_L1_error)
@@ -171770,6 +182738,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct
  *         context._addLocalExtensionFunction(ns, b"replace", self.replace)
  * 
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(17, 547, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_match); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, __pyx_n_b_match, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 547, __pyx_L1_error)
@@ -171782,6 +182751,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct
  * 
  * 
  */
+  __Pyx_TraceLine(548,0,__PYX_ERR(17, 548, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, __pyx_n_b_replace, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(17, 548, __pyx_L1_error)
@@ -171805,6 +182775,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -171823,6 +182794,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_v_value = NULL;
   xmlXPathObject *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -171839,6 +182811,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
   PyObject *__pyx_t_13 = NULL;
   const char *__pyx_t_14;
   __Pyx_RefNannySetupContext("_wrapXPathObject", 0);
+  __Pyx_TraceCall("_wrapXPathObject", __pyx_f[17], 554, 0, __PYX_ERR(17, 554, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_obj);
 
   /* "src/lxml/extensions.pxi":557
@@ -171848,6 +182821,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     cdef xmlNode* c_node
  * 
  */
+  __Pyx_TraceLine(557,0,__PYX_ERR(17, 557, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_fake_node = ((struct LxmlElement *)Py_None);
 
@@ -171858,6 +182832,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         obj = _utf8(obj)
  *     if isinstance(obj, bytes):
  */
+  __Pyx_TraceLine(560,0,__PYX_ERR(17, 560, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -171869,6 +182844,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     if isinstance(obj, bytes):
  *         # libxml2 copies the string value
  */
+    __Pyx_TraceLine(561,0,__PYX_ERR(17, 561, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 561, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
@@ -171890,6 +182866,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         # libxml2 copies the string value
  *         return xpath.xmlXPathNewCString(_cstr(obj))
  */
+  __Pyx_TraceLine(562,0,__PYX_ERR(17, 562, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v_obj); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -171901,6 +182878,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     if isinstance(obj, bool):
  *         return xpath.xmlXPathNewBoolean(obj)
  */
+    __Pyx_TraceLine(564,0,__PYX_ERR(17, 564, __pyx_L1_error))
     __pyx_r = xmlXPathNewCString(PyBytes_AS_STRING(__pyx_v_obj));
     goto __pyx_L0;
 
@@ -171920,6 +182898,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         return xpath.xmlXPathNewBoolean(obj)
  *     if python.PyNumber_Check(obj):
  */
+  __Pyx_TraceLine(565,0,__PYX_ERR(17, 565, __pyx_L1_error))
   __pyx_t_3 = ((PyObject*)&PyBool_Type);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 565, __pyx_L1_error)
@@ -171934,6 +182913,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     if python.PyNumber_Check(obj):
  *         return xpath.xmlXPathNewFloat(obj)
  */
+    __Pyx_TraceLine(566,0,__PYX_ERR(17, 566, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_obj); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(17, 566, __pyx_L1_error)
     __pyx_r = xmlXPathNewBoolean(__pyx_t_4);
     goto __pyx_L0;
@@ -171954,6 +182934,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         return xpath.xmlXPathNewFloat(obj)
  *     if obj is None:
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(17, 567, __pyx_L1_error))
   __pyx_t_2 = (PyNumber_Check(__pyx_v_obj) != 0);
   if (__pyx_t_2) {
 
@@ -171964,6 +182945,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     if obj is None:
  *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
  */
+    __Pyx_TraceLine(568,0,__PYX_ERR(17, 568, __pyx_L1_error))
     __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_obj); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 568, __pyx_L1_error)
     __pyx_r = xmlXPathNewFloat(__pyx_t_5);
     goto __pyx_L0;
@@ -171984,6 +182966,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
  *     elif isinstance(obj, _Element):
  */
+  __Pyx_TraceLine(569,0,__PYX_ERR(17, 569, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_obj == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -171995,6 +182978,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     elif isinstance(obj, _Element):
  *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
  */
+    __Pyx_TraceLine(570,0,__PYX_ERR(17, 570, __pyx_L1_error))
     __pyx_v_resultSet = xmlXPathNodeSetCreate(NULL);
 
     /* "src/lxml/extensions.pxi":569
@@ -172014,6 +182998,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
  *     elif python.PySequence_Check(obj):
  */
+  __Pyx_TraceLine(571,0,__PYX_ERR(17, 571, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_ptype_4lxml_5etree__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -172025,6 +183010,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     elif python.PySequence_Check(obj):
  *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
  */
+    __Pyx_TraceLine(572,0,__PYX_ERR(17, 572, __pyx_L1_error))
     __pyx_v_resultSet = xmlXPathNodeSetCreate(((struct LxmlElement *)__pyx_v_obj)->_c_node);
 
     /* "src/lxml/extensions.pxi":571
@@ -172044,6 +183030,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
  *         try:
  */
+  __Pyx_TraceLine(573,0,__PYX_ERR(17, 573, __pyx_L1_error))
   __pyx_t_2 = (PySequence_Check(__pyx_v_obj) != 0);
   if (likely(__pyx_t_2)) {
 
@@ -172054,6 +183041,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         try:
  *             for value in obj:
  */
+    __Pyx_TraceLine(574,0,__PYX_ERR(17, 574, __pyx_L1_error))
     __pyx_v_resultSet = xmlXPathNodeSetCreate(NULL);
 
     /* "src/lxml/extensions.pxi":575
@@ -172063,6 +183051,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *             for value in obj:
  *                 if isinstance(value, _Element):
  */
+    __Pyx_TraceLine(575,0,__PYX_ERR(17, 575, __pyx_L8_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -172079,6 +183068,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                 if isinstance(value, _Element):
  *                     if context is not None:
  */
+        __Pyx_TraceLine(576,0,__PYX_ERR(17, 576, __pyx_L8_error))
         if (likely(PyList_CheckExact(__pyx_v_obj)) || PyTuple_CheckExact(__pyx_v_obj)) {
           __pyx_t_3 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
           __pyx_t_10 = NULL;
@@ -172128,6 +183118,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                     if context is not None:
  *                         context._hold(value)
  */
+          __Pyx_TraceLine(577,0,__PYX_ERR(17, 577, __pyx_L8_error))
           __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree__Element); 
           __pyx_t_1 = (__pyx_t_2 != 0);
           if (__pyx_t_1) {
@@ -172139,6 +183130,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         context._hold(value)
  *                     xpath.xmlXPathNodeSetAdd(resultSet, (<_Element>value)._c_node)
  */
+            __Pyx_TraceLine(578,0,__PYX_ERR(17, 578, __pyx_L8_error))
             __pyx_t_1 = (((PyObject *)__pyx_v_context) != Py_None);
             __pyx_t_2 = (__pyx_t_1 != 0);
             if (__pyx_t_2) {
@@ -172150,6 +183142,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                     xpath.xmlXPathNodeSetAdd(resultSet, (<_Element>value)._c_node)
  *                 else:
  */
+              __Pyx_TraceLine(579,0,__PYX_ERR(17, 579, __pyx_L8_error))
               __pyx_t_11 = __pyx_f_4lxml_5etree_12_BaseContext__hold(__pyx_v_context, __pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 579, __pyx_L8_error)
               __Pyx_GOTREF(__pyx_t_11);
               __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -172170,6 +183163,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                 else:
  *                     if context is None or doc is None:
  */
+            __Pyx_TraceLine(580,0,__PYX_ERR(17, 580, __pyx_L8_error))
             xmlXPathNodeSetAdd(__pyx_v_resultSet, ((struct LxmlElement *)__pyx_v_value)->_c_node);
 
             /* "src/lxml/extensions.pxi":577
@@ -172189,6 +183183,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         raise XPathResultError, \
  *                               f"Non-Element values not supported at this point - got {value!r}"
  */
+          __Pyx_TraceLine(582,0,__PYX_ERR(17, 582, __pyx_L8_error))
           /*else*/ {
             __pyx_t_1 = (((PyObject *)__pyx_v_context) == Py_None);
             __pyx_t_12 = (__pyx_t_1 != 0);
@@ -172210,6 +183205,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                     # support strings by appending text nodes to an Element
  *                     if isinstance(value, unicode):
  */
+              __Pyx_TraceLine(584,0,__PYX_ERR(17, 584, __pyx_L8_error))
               __pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 584, __pyx_L8_error)
               __Pyx_GOTREF(__pyx_t_11);
               __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Non_Element_values_not_supported, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 584, __pyx_L8_error)
@@ -172235,6 +183231,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         value = _utf8(value)
  *                     if isinstance(value, bytes):
  */
+            __Pyx_TraceLine(586,0,__PYX_ERR(17, 586, __pyx_L8_error))
             __pyx_t_2 = PyUnicode_Check(__pyx_v_value); 
             __pyx_t_1 = (__pyx_t_2 != 0);
             if (__pyx_t_1) {
@@ -172246,6 +183243,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                     if isinstance(value, bytes):
  *                         if fake_node is None:
  */
+              __Pyx_TraceLine(587,0,__PYX_ERR(17, 587, __pyx_L8_error))
               __pyx_t_13 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 587, __pyx_L8_error)
               __Pyx_GOTREF(__pyx_t_13);
               __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_13);
@@ -172267,6 +183265,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         if fake_node is None:
  *                             fake_node = _makeElement("text-root", NULL, doc, None,
  */
+            __Pyx_TraceLine(588,0,__PYX_ERR(17, 588, __pyx_L8_error))
             __pyx_t_1 = PyBytes_Check(__pyx_v_value); 
             __pyx_t_2 = (__pyx_t_1 != 0);
             if (likely(__pyx_t_2)) {
@@ -172278,6 +183277,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                             fake_node = _makeElement("text-root", NULL, doc, None,
  *                                                      None, None, None, None, None)
  */
+              __Pyx_TraceLine(589,0,__PYX_ERR(17, 589, __pyx_L8_error))
               __pyx_t_2 = (((PyObject *)__pyx_v_fake_node) == Py_None);
               __pyx_t_1 = (__pyx_t_2 != 0);
               if (__pyx_t_1) {
@@ -172289,6 +183289,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                                                      None, None, None, None, None)
  *                             context._hold(fake_node)
  */
+                __Pyx_TraceLine(590,0,__PYX_ERR(17, 590, __pyx_L8_error))
                 __pyx_t_13 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_kp_s_text_root, NULL, __pyx_v_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, Py_None, Py_None, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 590, __pyx_L8_error)
                 __Pyx_GOTREF(__pyx_t_13);
                 __Pyx_DECREF_SET(__pyx_v_fake_node, ((struct LxmlElement *)__pyx_t_13));
@@ -172301,6 +183302,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         else:
  *                             # append a comment node to keep the text nodes separate
  */
+                __Pyx_TraceLine(592,0,__PYX_ERR(17, 592, __pyx_L8_error))
                 __pyx_t_13 = __pyx_f_4lxml_5etree_12_BaseContext__hold(__pyx_v_context, ((PyObject *)__pyx_v_fake_node)); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 592, __pyx_L8_error)
                 __Pyx_GOTREF(__pyx_t_13);
                 __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -172322,6 +183324,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                             if c_node is NULL:
  *                                 raise MemoryError()
  */
+              __Pyx_TraceLine(595,0,__PYX_ERR(17, 595, __pyx_L8_error))
               /*else*/ {
                 __pyx_v_c_node = xmlNewDocComment(__pyx_v_doc->_c_doc, ((unsigned char *)((unsigned char *)((char const *)""))));
 
@@ -172332,6 +183335,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                                 raise MemoryError()
  *                             tree.xmlAddChild(fake_node._c_node, c_node)
  */
+                __Pyx_TraceLine(596,0,__PYX_ERR(17, 596, __pyx_L8_error))
                 __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
                 if (unlikely(__pyx_t_1)) {
 
@@ -172342,6 +183346,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                             tree.xmlAddChild(fake_node._c_node, c_node)
  *                         context._hold(value)
  */
+                  __Pyx_TraceLine(597,0,__PYX_ERR(17, 597, __pyx_L8_error))
                   PyErr_NoMemory(); __PYX_ERR(17, 597, __pyx_L8_error)
 
                   /* "src/lxml/extensions.pxi":596
@@ -172360,6 +183365,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         context._hold(value)
  *                         c_node = tree.xmlNewDocText(doc._c_doc, _xcstr(value))
  */
+                __Pyx_TraceLine(598,0,__PYX_ERR(17, 598, __pyx_L8_error))
                 (void)(xmlAddChild(__pyx_v_fake_node->_c_node, __pyx_v_c_node));
               }
               __pyx_L23:;
@@ -172371,6 +183377,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         c_node = tree.xmlNewDocText(doc._c_doc, _xcstr(value))
  *                         if c_node is NULL:
  */
+              __Pyx_TraceLine(599,0,__PYX_ERR(17, 599, __pyx_L8_error))
               __pyx_t_13 = __pyx_f_4lxml_5etree_12_BaseContext__hold(__pyx_v_context, __pyx_v_value); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 599, __pyx_L8_error)
               __Pyx_GOTREF(__pyx_t_13);
               __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -172382,6 +183389,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         if c_node is NULL:
  *                             raise MemoryError()
  */
+              __Pyx_TraceLine(600,0,__PYX_ERR(17, 600, __pyx_L8_error))
               __pyx_v_c_node = xmlNewDocText(__pyx_v_doc->_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value));
 
               /* "src/lxml/extensions.pxi":601
@@ -172391,6 +183399,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                             raise MemoryError()
  *                         tree.xmlAddChild(fake_node._c_node, c_node)
  */
+              __Pyx_TraceLine(601,0,__PYX_ERR(17, 601, __pyx_L8_error))
               __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
               if (unlikely(__pyx_t_1)) {
 
@@ -172401,6 +183410,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         tree.xmlAddChild(fake_node._c_node, c_node)
  *                         xpath.xmlXPathNodeSetAdd(resultSet, c_node)
  */
+                __Pyx_TraceLine(602,0,__PYX_ERR(17, 602, __pyx_L8_error))
                 PyErr_NoMemory(); __PYX_ERR(17, 602, __pyx_L8_error)
 
                 /* "src/lxml/extensions.pxi":601
@@ -172419,6 +183429,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                         xpath.xmlXPathNodeSetAdd(resultSet, c_node)
  *                     else:
  */
+              __Pyx_TraceLine(603,0,__PYX_ERR(17, 603, __pyx_L8_error))
               (void)(xmlAddChild(__pyx_v_fake_node->_c_node, __pyx_v_c_node));
 
               /* "src/lxml/extensions.pxi":604
@@ -172428,6 +183439,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                     else:
  *                         raise XPathResultError, \
  */
+              __Pyx_TraceLine(604,0,__PYX_ERR(17, 604, __pyx_L8_error))
               xmlXPathNodeSetAdd(__pyx_v_resultSet, __pyx_v_c_node);
 
               /* "src/lxml/extensions.pxi":588
@@ -172447,6 +183459,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                               f"This is not a supported node-set result: {value!r}"
  *         except:
  */
+            __Pyx_TraceLine(606,0,__PYX_ERR(17, 606, __pyx_L8_error))
             /*else*/ {
 
               /* "src/lxml/extensions.pxi":607
@@ -172456,6 +183469,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *         except:
  *             xpath.xmlXPathFreeNodeSet(resultSet)
  */
+              __Pyx_TraceLine(607,0,__PYX_ERR(17, 607, __pyx_L8_error))
               __pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 607, __pyx_L8_error)
               __Pyx_GOTREF(__pyx_t_13);
               __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u_This_is_not_a_supported_node_set, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(17, 607, __pyx_L8_error)
@@ -172476,6 +183490,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *                 if isinstance(value, _Element):
  *                     if context is not None:
  */
+          __Pyx_TraceLine(576,0,__PYX_ERR(17, 576, __pyx_L8_error))
         }
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -172503,6 +183518,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *             xpath.xmlXPathFreeNodeSet(resultSet)
  *             raise
  */
+      __Pyx_TraceLine(608,0,__PYX_ERR(17, 608, __pyx_L10_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._wrapXPathObject", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_11, &__pyx_t_13) < 0) __PYX_ERR(17, 608, __pyx_L10_except_error)
@@ -172517,6 +183533,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *             raise
  *     else:
  */
+        __Pyx_TraceLine(609,0,__PYX_ERR(17, 609, __pyx_L10_except_error))
         xmlXPathFreeNodeSet(__pyx_v_resultSet);
 
         /* "src/lxml/extensions.pxi":610
@@ -172526,6 +183543,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     else:
  *         raise XPathResultError, f"Unknown return type: {python._fqtypename(obj).decode('utf8')}"
  */
+        __Pyx_TraceLine(610,0,__PYX_ERR(17, 610, __pyx_L10_except_error))
         __Pyx_GIVEREF(__pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_11);
         __Pyx_XGIVEREF(__pyx_t_13);
@@ -172567,6 +183585,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  *     return xpath.xmlXPathWrapNodeSet(resultSet)
  * 
  */
+  __Pyx_TraceLine(612,0,__PYX_ERR(17, 612, __pyx_L1_error))
   /*else*/ {
     __pyx_t_14 = _fqtypename(__pyx_v_obj);
     __pyx_t_13 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_13)) __PYX_ERR(17, 612, __pyx_L1_error)
@@ -172587,6 +183606,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
  * 
  * cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj,
  */
+  __Pyx_TraceLine(613,0,__PYX_ERR(17, 613, __pyx_L1_error))
   __pyx_r = xmlXPathWrapNodeSet(__pyx_v_resultSet);
   goto __pyx_L0;
 
@@ -172609,6 +183629,7 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
   __Pyx_XDECREF((PyObject *)__pyx_v_fake_node);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_obj);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -172624,11 +183645,13 @@ static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_o
 static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v_xpathObj, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
   PyObject *__pyx_v_stringval = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_unwrapXPathObject", 0);
+  __Pyx_TraceCall("_unwrapXPathObject", __pyx_f[17], 615, 0, __PYX_ERR(17, 615, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":617
  * cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj,
@@ -172637,6 +183660,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         raise XPathResultError, u"Undefined xpath result"
  *     elif xpathObj.type == xpath.XPATH_NODESET:
  */
+  __Pyx_TraceLine(617,0,__PYX_ERR(17, 617, __pyx_L1_error))
   switch (__pyx_v_xpathObj->type) {
     case XPATH_UNDEFINED:
 
@@ -172647,6 +183671,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_NODESET:
  *         return _createNodeSetResult(xpathObj, doc, context)
  */
+    __Pyx_TraceLine(618,0,__PYX_ERR(17, 618, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathResultError), __pyx_kp_u_Undefined_xpath_result, 0, 0);
     __PYX_ERR(17, 618, __pyx_L1_error)
 
@@ -172666,6 +183691,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         return _createNodeSetResult(xpathObj, doc, context)
  *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
  */
+    __Pyx_TraceLine(619,0,__PYX_ERR(17, 619, __pyx_L1_error))
     case XPATH_NODESET:
 
     /* "src/lxml/extensions.pxi":620
@@ -172675,6 +183701,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
  *         return xpathObj.boolval
  */
+    __Pyx_TraceLine(620,0,__PYX_ERR(17, 620, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __pyx_f_4lxml_5etree__createNodeSetResult(__pyx_v_xpathObj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 620, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -172698,6 +183725,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         return xpathObj.boolval
  *     elif xpathObj.type == xpath.XPATH_NUMBER:
  */
+    __Pyx_TraceLine(621,0,__PYX_ERR(17, 621, __pyx_L1_error))
     case XPATH_BOOLEAN:
 
     /* "src/lxml/extensions.pxi":622
@@ -172707,6 +183735,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_NUMBER:
  *         return xpathObj.floatval
  */
+    __Pyx_TraceLine(622,0,__PYX_ERR(17, 622, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_xpathObj->boolval); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 622, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -172730,6 +183759,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         return xpathObj.floatval
  *     elif xpathObj.type == xpath.XPATH_STRING:
  */
+    __Pyx_TraceLine(623,0,__PYX_ERR(17, 623, __pyx_L1_error))
     case XPATH_NUMBER:
 
     /* "src/lxml/extensions.pxi":624
@@ -172739,6 +183769,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_STRING:
  *         stringval = funicode(xpathObj.stringval)
  */
+    __Pyx_TraceLine(624,0,__PYX_ERR(17, 624, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyFloat_FromDouble(__pyx_v_xpathObj->floatval); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 624, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -172762,6 +183793,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         stringval = funicode(xpathObj.stringval)
  *         if context._build_smart_strings:
  */
+    __Pyx_TraceLine(625,0,__PYX_ERR(17, 625, __pyx_L1_error))
     case XPATH_STRING:
 
     /* "src/lxml/extensions.pxi":626
@@ -172771,6 +183803,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         if context._build_smart_strings:
  *             stringval = _elementStringResultFactory(
  */
+    __Pyx_TraceLine(626,0,__PYX_ERR(17, 626, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_xpathObj->stringval); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_stringval = __pyx_t_1;
@@ -172783,6 +183816,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *             stringval = _elementStringResultFactory(
  *                 stringval, None, None, 0)
  */
+    __Pyx_TraceLine(627,0,__PYX_ERR(17, 627, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_context->_build_smart_strings != 0);
     if (__pyx_t_2) {
 
@@ -172793,6 +183827,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *                 stringval, None, None, 0)
  *         return stringval
  */
+      __Pyx_TraceLine(628,0,__PYX_ERR(17, 628, __pyx_L1_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree__elementStringResultFactory(__pyx_v_stringval, ((struct LxmlElement *)Py_None), Py_None, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 628, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_stringval, __pyx_t_1);
@@ -172814,6 +183849,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_POINT:
  *         raise NotImplementedError, u"XPATH_POINT"
  */
+    __Pyx_TraceLine(630,0,__PYX_ERR(17, 630, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_stringval);
     __pyx_r = __pyx_v_stringval;
@@ -172835,6 +183871,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         raise NotImplementedError, u"XPATH_POINT"
  *     elif xpathObj.type == xpath.XPATH_RANGE:
  */
+    __Pyx_TraceLine(631,0,__PYX_ERR(17, 631, __pyx_L1_error))
     case XPATH_POINT:
 
     /* "src/lxml/extensions.pxi":632
@@ -172844,6 +183881,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_RANGE:
  *         raise NotImplementedError, u"XPATH_RANGE"
  */
+    __Pyx_TraceLine(632,0,__PYX_ERR(17, 632, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_NotImplementedError, __pyx_n_u_XPATH_POINT, 0, 0);
     __PYX_ERR(17, 632, __pyx_L1_error)
 
@@ -172863,6 +183901,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         raise NotImplementedError, u"XPATH_RANGE"
  *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
  */
+    __Pyx_TraceLine(633,0,__PYX_ERR(17, 633, __pyx_L1_error))
     case XPATH_RANGE:
 
     /* "src/lxml/extensions.pxi":634
@@ -172872,6 +183911,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
  *         raise NotImplementedError, u"XPATH_LOCATIONSET"
  */
+    __Pyx_TraceLine(634,0,__PYX_ERR(17, 634, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_NotImplementedError, __pyx_n_u_XPATH_RANGE, 0, 0);
     __PYX_ERR(17, 634, __pyx_L1_error)
 
@@ -172891,6 +183931,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         raise NotImplementedError, u"XPATH_LOCATIONSET"
  *     elif xpathObj.type == xpath.XPATH_USERS:
  */
+    __Pyx_TraceLine(635,0,__PYX_ERR(17, 635, __pyx_L1_error))
     case XPATH_LOCATIONSET:
 
     /* "src/lxml/extensions.pxi":636
@@ -172900,6 +183941,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_USERS:
  *         raise NotImplementedError, u"XPATH_USERS"
  */
+    __Pyx_TraceLine(636,0,__PYX_ERR(17, 636, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_NotImplementedError, __pyx_n_u_XPATH_LOCATIONSET, 0, 0);
     __PYX_ERR(17, 636, __pyx_L1_error)
 
@@ -172919,6 +183961,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         raise NotImplementedError, u"XPATH_USERS"
  *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:
  */
+    __Pyx_TraceLine(637,0,__PYX_ERR(17, 637, __pyx_L1_error))
     case XPATH_USERS:
 
     /* "src/lxml/extensions.pxi":638
@@ -172928,6 +183971,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:
  *         return _createNodeSetResult(xpathObj, doc, context)
  */
+    __Pyx_TraceLine(638,0,__PYX_ERR(17, 638, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_NotImplementedError, __pyx_n_u_XPATH_USERS, 0, 0);
     __PYX_ERR(17, 638, __pyx_L1_error)
 
@@ -172947,6 +183991,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *         return _createNodeSetResult(xpathObj, doc, context)
  *     else:
  */
+    __Pyx_TraceLine(639,0,__PYX_ERR(17, 639, __pyx_L1_error))
     case XPATH_XSLT_TREE:
 
     /* "src/lxml/extensions.pxi":640
@@ -172956,6 +184001,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  *     else:
  *         raise XPathResultError, f"Unknown xpath result {xpathObj.type}"
  */
+    __Pyx_TraceLine(640,0,__PYX_ERR(17, 640, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __pyx_f_4lxml_5etree__createNodeSetResult(__pyx_v_xpathObj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 640, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -172980,6 +184026,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
  * 
  * cdef object _createNodeSetResult(xpath.xmlXPathObject* xpathObj, _Document doc,
  */
+    __Pyx_TraceLine(642,0,__PYX_ERR(17, 642, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyUnicode_From_xmlXPathObjectType(__pyx_v_xpathObj->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unknown_xpath_result, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 642, __pyx_L1_error)
@@ -173008,6 +184055,7 @@ static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_stringval);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173025,6 +184073,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
   int __pyx_v_i;
   PyObject *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -173032,6 +184081,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
   int __pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_createNodeSetResult", 0);
+  __Pyx_TraceCall("_createNodeSetResult", __pyx_f[17], 644, 0, __PYX_ERR(17, 644, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":649
  *     cdef int i
@@ -173040,6 +184090,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *     if xpathObj.nodesetval is NULL:
  *         return result
  */
+  __Pyx_TraceLine(649,0,__PYX_ERR(17, 649, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 649, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((PyObject*)__pyx_t_1);
@@ -173052,6 +184103,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *         return result
  *     for i in range(xpathObj.nodesetval.nodeNr):
  */
+  __Pyx_TraceLine(650,0,__PYX_ERR(17, 650, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_xpathObj->nodesetval == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -173062,6 +184114,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *     for i in range(xpathObj.nodesetval.nodeNr):
  *         c_node = xpathObj.nodesetval.nodeTab[i]
  */
+    __Pyx_TraceLine(651,0,__PYX_ERR(17, 651, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
     __pyx_r = __pyx_v_result;
@@ -173083,6 +184136,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *         c_node = xpathObj.nodesetval.nodeTab[i]
  *         _unpackNodeSetEntry(result, c_node, doc, context,
  */
+  __Pyx_TraceLine(652,0,__PYX_ERR(17, 652, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_xpathObj->nodesetval->nodeNr;
   __pyx_t_4 = __pyx_t_3;
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
@@ -173095,6 +184149,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *         _unpackNodeSetEntry(result, c_node, doc, context,
  *                             xpathObj.type == xpath.XPATH_XSLT_TREE)
  */
+    __Pyx_TraceLine(653,0,__PYX_ERR(17, 653, __pyx_L1_error))
     __pyx_v_c_node = (__pyx_v_xpathObj->nodesetval->nodeTab[__pyx_v_i]);
 
     /* "src/lxml/extensions.pxi":654
@@ -173104,6 +184159,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  *                             xpathObj.type == xpath.XPATH_XSLT_TREE)
  *     return result
  */
+    __Pyx_TraceLine(654,0,__PYX_ERR(17, 654, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__unpackNodeSetEntry(__pyx_v_result, __pyx_v_c_node, __pyx_v_doc, __pyx_v_context, (__pyx_v_xpathObj->type == XPATH_XSLT_TREE)); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 654, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -173116,6 +184172,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
  * 
  * cdef _unpackNodeSetEntry(list results, xmlNode* c_node, _Document doc,
  */
+  __Pyx_TraceLine(656,0,__PYX_ERR(17, 656, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -173137,6 +184194,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173152,6 +184210,7 @@ static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx
 static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_results, xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context, int __pyx_v_is_fragment) {
   xmlNode *__pyx_v_c_child;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -173161,6 +184220,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
   PyObject *__pyx_t_6 = NULL;
   xmlNode *__pyx_t_7;
   __Pyx_RefNannySetupContext("_unpackNodeSetEntry", 0);
+  __Pyx_TraceCall("_unpackNodeSetEntry", __pyx_f[17], 658, 0, __PYX_ERR(17, 658, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":661
  *                          _BaseContext context, bint is_fragment):
@@ -173169,6 +184229,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *         if c_node.doc != doc._c_doc and c_node.doc._private is NULL:
  *             # XXX: works, but maybe not always the right thing to do?
  */
+  __Pyx_TraceLine(661,0,__PYX_ERR(17, 661, __pyx_L1_error))
   __pyx_t_1 = (_isElement(__pyx_v_c_node) != 0);
   if (__pyx_t_1) {
 
@@ -173179,6 +184240,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             # XXX: works, but maybe not always the right thing to do?
  *             # XPath: only runs when extensions create or copy trees
  */
+    __Pyx_TraceLine(662,0,__PYX_ERR(17, 662, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->doc != __pyx_v_doc->_c_doc) != 0);
     if (__pyx_t_2) {
     } else {
@@ -173197,6 +184259,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             # FIXME: call _instantiateElementFromXPath() instead?
  *         results.append(
  */
+      __Pyx_TraceLine(667,0,__PYX_ERR(17, 667, __pyx_L1_error))
       __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_doc->_c_doc, 1);
 
       /* "src/lxml/extensions.pxi":662
@@ -173215,6 +184278,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             _fakeDocElementFactory(doc, c_node))
  *     elif c_node.type == tree.XML_TEXT_NODE or \
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(17, 669, __pyx_L1_error))
     if (unlikely(__pyx_v_results == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(17, 669, __pyx_L1_error)
@@ -173227,6 +184291,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *     elif c_node.type == tree.XML_TEXT_NODE or \
  *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
  */
+    __Pyx_TraceLine(670,0,__PYX_ERR(17, 670, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__fakeDocElementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 670, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
 
@@ -173237,6 +184302,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             _fakeDocElementFactory(doc, c_node))
  *     elif c_node.type == tree.XML_TEXT_NODE or \
  */
+    __Pyx_TraceLine(669,0,__PYX_ERR(17, 669, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_results, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(17, 669, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -173257,6 +184323,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
  *              c_node.type == tree.XML_ATTRIBUTE_NODE:
  */
+  __Pyx_TraceLine(671,0,__PYX_ERR(17, 671, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_TEXT_NODE:
 
@@ -173267,6 +184334,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *              c_node.type == tree.XML_ATTRIBUTE_NODE:
  *         results.append(
  */
+    __Pyx_TraceLine(672,0,__PYX_ERR(17, 672, __pyx_L1_error))
     case XML_CDATA_SECTION_NODE:
 
     /* "src/lxml/extensions.pxi":673
@@ -173276,6 +184344,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *         results.append(
  *             _buildElementStringResult(doc, c_node, context))
  */
+    __Pyx_TraceLine(673,0,__PYX_ERR(17, 673, __pyx_L1_error))
     case XML_ATTRIBUTE_NODE:
 
     /* "src/lxml/extensions.pxi":671
@@ -173285,6 +184354,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
  *              c_node.type == tree.XML_ATTRIBUTE_NODE:
  */
+    __Pyx_TraceLine(671,0,__PYX_ERR(17, 671, __pyx_L1_error))
     __pyx_t_1 = 1;
     break;
     default:
@@ -173300,6 +184370,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             _buildElementStringResult(doc, c_node, context))
  *     elif c_node.type == tree.XML_NAMESPACE_DECL:
  */
+    __Pyx_TraceLine(674,0,__PYX_ERR(17, 674, __pyx_L1_error))
     if (unlikely(__pyx_v_results == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(17, 674, __pyx_L1_error)
@@ -173312,6 +184383,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *     elif c_node.type == tree.XML_NAMESPACE_DECL:
  *         results.append( (funicodeOrNone((<xmlNs*>c_node).prefix),
  */
+    __Pyx_TraceLine(675,0,__PYX_ERR(17, 675, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__buildElementStringResult(__pyx_v_doc, __pyx_v_c_node, __pyx_v_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 675, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
 
@@ -173322,6 +184394,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             _buildElementStringResult(doc, c_node, context))
  *     elif c_node.type == tree.XML_NAMESPACE_DECL:
  */
+    __Pyx_TraceLine(674,0,__PYX_ERR(17, 674, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_results, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(17, 674, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -173342,6 +184415,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *         results.append( (funicodeOrNone((<xmlNs*>c_node).prefix),
  *                          funicodeOrNone((<xmlNs*>c_node).href)) )
  */
+  __Pyx_TraceLine(676,0,__PYX_ERR(17, 676, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_NAMESPACE_DECL) != 0);
   if (__pyx_t_1) {
 
@@ -173352,6 +184426,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *                          funicodeOrNone((<xmlNs*>c_node).href)) )
  *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
  */
+    __Pyx_TraceLine(677,0,__PYX_ERR(17, 677, __pyx_L1_error))
     if (unlikely(__pyx_v_results == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(17, 677, __pyx_L1_error)
@@ -173366,6 +184441,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
  *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
  */
+    __Pyx_TraceLine(678,0,__PYX_ERR(17, 678, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_5etree_funicodeOrNone(((xmlNs *)__pyx_v_c_node)->href); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 678, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
 
@@ -173376,6 +184452,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *                          funicodeOrNone((<xmlNs*>c_node).href)) )
  *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
  */
+    __Pyx_TraceLine(677,0,__PYX_ERR(17, 677, __pyx_L1_error))
     __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 677, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -173404,6 +184481,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
  *         # ignored for everything but result tree fragments
  */
+  __Pyx_TraceLine(679,0,__PYX_ERR(17, 679, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_DOCUMENT_NODE:
 
@@ -173414,6 +184492,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *         # ignored for everything but result tree fragments
  *         if is_fragment:
  */
+    __Pyx_TraceLine(680,0,__PYX_ERR(17, 680, __pyx_L1_error))
     case XML_HTML_DOCUMENT_NODE:
 
     /* "src/lxml/extensions.pxi":679
@@ -173423,6 +184502,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
  *         # ignored for everything but result tree fragments
  */
+    __Pyx_TraceLine(679,0,__PYX_ERR(17, 679, __pyx_L1_error))
     __pyx_t_1 = 1;
     break;
     default:
@@ -173438,6 +184518,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             c_child = c_node.children
  *             while c_child is not NULL:
  */
+    __Pyx_TraceLine(682,0,__PYX_ERR(17, 682, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_is_fragment != 0);
     if (__pyx_t_1) {
 
@@ -173448,6 +184529,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             while c_child is not NULL:
  *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
  */
+      __Pyx_TraceLine(683,0,__PYX_ERR(17, 683, __pyx_L1_error))
       __pyx_t_7 = __pyx_v_c_node->children;
       __pyx_v_c_child = __pyx_t_7;
 
@@ -173458,6 +184540,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
  *                 c_child = c_child.next
  */
+      __Pyx_TraceLine(684,0,__PYX_ERR(17, 684, __pyx_L1_error))
       while (1) {
         __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
         if (!__pyx_t_1) break;
@@ -173469,6 +184552,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *                 c_child = c_child.next
  *     elif c_node.type == tree.XML_XINCLUDE_START or \
  */
+        __Pyx_TraceLine(685,0,__PYX_ERR(17, 685, __pyx_L1_error))
         __pyx_t_6 = __pyx_f_4lxml_5etree__unpackNodeSetEntry(__pyx_v_results, __pyx_v_c_child, __pyx_v_doc, __pyx_v_context, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 685, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -173480,6 +184564,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *     elif c_node.type == tree.XML_XINCLUDE_START or \
  *             c_node.type == tree.XML_XINCLUDE_END:
  */
+        __Pyx_TraceLine(686,0,__PYX_ERR(17, 686, __pyx_L1_error))
         __pyx_t_7 = __pyx_v_c_child->next;
         __pyx_v_c_child = __pyx_t_7;
       }
@@ -173510,6 +184595,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             c_node.type == tree.XML_XINCLUDE_END:
  *         pass
  */
+  __Pyx_TraceLine(687,0,__PYX_ERR(17, 687, __pyx_L1_error))
   switch (__pyx_v_c_node->type) {
     case XML_XINCLUDE_START:
 
@@ -173520,6 +184606,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *         pass
  *     else:
  */
+    __Pyx_TraceLine(688,0,__PYX_ERR(17, 688, __pyx_L1_error))
     case XML_XINCLUDE_END:
 
     /* "src/lxml/extensions.pxi":687
@@ -173529,6 +184616,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             c_node.type == tree.XML_XINCLUDE_END:
  *         pass
  */
+    __Pyx_TraceLine(687,0,__PYX_ERR(17, 687, __pyx_L1_error))
     __pyx_t_1 = 1;
     break;
     default:
@@ -173546,6 +184634,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  *             f"Not yet implemented result node type: {c_node.type}"
  * 
  */
+  __Pyx_TraceLine(691,0,__PYX_ERR(17, 691, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/extensions.pxi":692
@@ -173555,6 +184644,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  * 
  * cdef void _freeXPathObject(xpath.xmlXPathObject* xpathObj):
  */
+    __Pyx_TraceLine(692,0,__PYX_ERR(17, 692, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 692, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Not_yet_implemented_result_node, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 692, __pyx_L1_error)
@@ -173585,6 +184675,7 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173598,9 +184689,11 @@ static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_resu
  */
 
 static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathObj) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_freeXPathObject", 0);
+  __Pyx_TraceCall("_freeXPathObject", __pyx_f[17], 694, 0, __PYX_ERR(17, 694, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":698
  *     Python dealloc will do that for us.
@@ -173609,6 +184702,7 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
  *         xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval)
  *         xpathObj.nodesetval = NULL
  */
+  __Pyx_TraceLine(698,0,__PYX_ERR(17, 698, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_xpathObj->nodesetval != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -173619,6 +184713,7 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
  *         xpathObj.nodesetval = NULL
  *     xpath.xmlXPathFreeObject(xpathObj)
  */
+    __Pyx_TraceLine(699,0,__PYX_ERR(17, 699, __pyx_L1_error))
     xmlXPathFreeNodeSet(__pyx_v_xpathObj->nodesetval);
 
     /* "src/lxml/extensions.pxi":700
@@ -173628,6 +184723,7 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
  *     xpath.xmlXPathFreeObject(xpathObj)
  * 
  */
+    __Pyx_TraceLine(700,0,__PYX_ERR(17, 700, __pyx_L1_error))
     __pyx_v_xpathObj->nodesetval = NULL;
 
     /* "src/lxml/extensions.pxi":698
@@ -173646,6 +184742,7 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
  * 
  * cdef _Element _instantiateElementFromXPath(xmlNode* c_node, _Document doc,
  */
+  __Pyx_TraceLine(701,0,__PYX_ERR(17, 701, __pyx_L1_error))
   xmlXPathFreeObject(__pyx_v_xpathObj);
 
   /* "src/lxml/extensions.pxi":694
@@ -173657,6 +184754,11 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._freeXPathObject", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -173671,11 +184773,13 @@ static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathO
 static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
   struct LxmlDocument *__pyx_v_node_doc = NULL;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_instantiateElementFromXPath", 0);
+  __Pyx_TraceCall("_instantiateElementFromXPath", __pyx_f[17], 703, 0, __PYX_ERR(17, 703, __pyx_L1_error));
   __Pyx_INCREF((PyObject *)__pyx_v_doc);
 
   /* "src/lxml/extensions.pxi":706
@@ -173685,6 +184789,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  *         # not from the context document and not from a fake document
  *         # either => may still be from a known document, e.g. one
  */
+  __Pyx_TraceLine(706,0,__PYX_ERR(17, 706, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->doc != __pyx_v_doc->_c_doc) != 0);
   if (__pyx_t_2) {
   } else {
@@ -173703,6 +184808,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  *         if node_doc is None:
  *             # not from a known document at all! => can only make a
  */
+    __Pyx_TraceLine(710,0,__PYX_ERR(17, 710, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree_12_BaseContext__findDocumentForNode(__pyx_v_context, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 710, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_node_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -173715,6 +184821,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  *             # not from a known document at all! => can only make a
  *             # safety copy here
  */
+    __Pyx_TraceLine(711,0,__PYX_ERR(17, 711, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_node_doc) == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -173726,6 +184833,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  *         else:
  *             doc = node_doc
  */
+      __Pyx_TraceLine(714,0,__PYX_ERR(17, 714, __pyx_L1_error))
       __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_doc->_c_doc, 1);
 
       /* "src/lxml/extensions.pxi":711
@@ -173745,6 +184853,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  *     return _fakeDocElementFactory(doc, c_node)
  * 
  */
+    __Pyx_TraceLine(716,0,__PYX_ERR(17, 716, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(((PyObject *)__pyx_v_node_doc));
       __Pyx_DECREF_SET(__pyx_v_doc, __pyx_v_node_doc);
@@ -173767,6 +184876,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(717,0,__PYX_ERR(17, 717, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__fakeDocElementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 717, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -173791,6 +184901,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xml
   __Pyx_XDECREF((PyObject *)__pyx_v_node_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173819,8 +184930,11 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementUnicodeResult_1getparent(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__339)
   __Pyx_RefNannySetupContext("getparent", 0);
+  __Pyx_TraceCall("getparent", __pyx_f[17], 730, 0, __PYX_ERR(17, 730, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":731
  * 
@@ -173829,6 +184943,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent(struct
  * 
  * cdef object _PyElementUnicodeResult
  */
+  __Pyx_TraceLine(731,0,__PYX_ERR(17, 731, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_parent));
   __pyx_r = ((PyObject *)__pyx_v_self->_parent);
@@ -173843,8 +184958,12 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent(struct
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementUnicodeResult.getparent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173872,16 +184991,22 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementUnicodeResult_8attrname_1__get_
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_8attrname___get__(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 725, 0, __PYX_ERR(17, 725, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->attrname);
   __pyx_r = __pyx_v_self->attrname;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ElementUnicodeResult.attrname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173909,9 +185034,11 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementUnicodeResult_7is_tail_1__get__
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_7is_tail___get__(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 726, 0, __PYX_ERR(17, 726, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 726, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -173926,6 +185053,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_7is_tail___get__(
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173953,9 +185081,11 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementUnicodeResult_7is_text_1__get__
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_7is_text___get__(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 727, 0, __PYX_ERR(17, 727, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 727, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -173970,6 +185100,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_7is_text___get__(
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -173997,9 +185128,11 @@ static PyObject *__pyx_pw_4lxml_5etree_21_ElementUnicodeResult_12is_attribute_1_
 
 static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_12is_attribute___get__(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[17], 728, 0, __PYX_ERR(17, 728, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_attribute); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 728, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -174014,6 +185147,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_12is_attribute___
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -174042,9 +185176,12 @@ static PyObject *__pyx_pw_4lxml_5etree_23_PyElementUnicodeResult_1getparent(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_23_PyElementUnicodeResult_getparent(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__340)
   __Pyx_RefNannySetupContext("getparent", 0);
+  __Pyx_TraceCall("getparent", __pyx_f[17], 738, 0, __PYX_ERR(17, 738, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":739
  *         # https://bitbucket.org/pypy/pypy/issues/2021/pypy3-pytype_ready-crashes-for-extension
@@ -174053,6 +185190,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_PyElementUnicodeResult_getparent(CYTHO
  * 
  * class _ElementStringResult(bytes):
  */
+  __Pyx_TraceLine(739,0,__PYX_ERR(17, 739, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -174075,6 +185213,7 @@ static PyObject *__pyx_pf_4lxml_5etree_23_PyElementUnicodeResult_getparent(CYTHO
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -174103,9 +185242,12 @@ static PyObject *__pyx_pw_4lxml_5etree_20_ElementStringResult_1getparent(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__341)
   __Pyx_RefNannySetupContext("getparent", 0);
+  __Pyx_TraceCall("getparent", __pyx_f[17], 744, 0, __PYX_ERR(17, 744, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":745
  *     # in Pyrex/Cython
@@ -174114,6 +185256,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent(CYTHON_U
  * 
  * cdef object _elementStringResultFactory(string_value, _Element parent,
  */
+  __Pyx_TraceLine(745,0,__PYX_ERR(17, 745, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -174136,6 +185279,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent(CYTHON_U
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -174154,6 +185298,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
   int __pyx_v_is_attribute;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -174162,6 +185307,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_elementStringResultFactory", 0);
+  __Pyx_TraceCall("_elementStringResultFactory", __pyx_f[17], 747, 0, __PYX_ERR(17, 747, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":751
  *     cdef _ElementUnicodeResult uresult
@@ -174170,6 +185316,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *     if parent is None:
  *         is_text = 0
  */
+  __Pyx_TraceLine(751,0,__PYX_ERR(17, 751, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attrname != Py_None);
   __pyx_v_is_attribute = __pyx_t_1;
 
@@ -174180,6 +185327,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         is_text = 0
  *     else:
  */
+  __Pyx_TraceLine(752,0,__PYX_ERR(17, 752, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_parent) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -174191,6 +185339,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *     else:
  *         is_text = not (is_tail or is_attribute)
  */
+    __Pyx_TraceLine(753,0,__PYX_ERR(17, 753, __pyx_L1_error))
     __pyx_v_is_text = 0;
 
     /* "src/lxml/extensions.pxi":752
@@ -174210,6 +185359,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  * 
  *     if type(string_value) is bytes:
  */
+  __Pyx_TraceLine(755,0,__PYX_ERR(17, 755, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = (__pyx_v_is_tail != 0);
     if (!__pyx_t_1) {
@@ -174231,6 +185381,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result = _ElementStringResult(string_value)
  *         result._parent = parent
  */
+  __Pyx_TraceLine(757,0,__PYX_ERR(17, 757, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_string_value)) == ((PyObject *)(&PyBytes_Type)));
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -174242,6 +185393,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result._parent = parent
  *         result.is_attribute = is_attribute
  */
+    __Pyx_TraceLine(758,0,__PYX_ERR(17, 758, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ElementStringResult); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -174297,6 +185449,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_attribute = is_attribute
  *         result.is_tail = is_tail
  */
+    __Pyx_TraceLine(759,0,__PYX_ERR(17, 759, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_parent, ((PyObject *)__pyx_v_parent)) < 0) __PYX_ERR(17, 759, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":760
@@ -174306,6 +185459,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_tail = is_tail
  *         result.is_text = is_text
  */
+    __Pyx_TraceLine(760,0,__PYX_ERR(17, 760, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_attribute); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 760, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_attribute, __pyx_t_3) < 0) __PYX_ERR(17, 760, __pyx_L1_error)
@@ -174318,6 +185472,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_text = is_text
  *         result.attrname = attrname
  */
+    __Pyx_TraceLine(761,0,__PYX_ERR(17, 761, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 761, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_tail, __pyx_t_3) < 0) __PYX_ERR(17, 761, __pyx_L1_error)
@@ -174330,6 +185485,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.attrname = attrname
  *         return result
  */
+    __Pyx_TraceLine(762,0,__PYX_ERR(17, 762, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_text, __pyx_t_3) < 0) __PYX_ERR(17, 762, __pyx_L1_error)
@@ -174342,6 +185498,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         return result
  *     elif python.IS_PYPY:
  */
+    __Pyx_TraceLine(763,0,__PYX_ERR(17, 763, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_attrname, __pyx_v_attrname) < 0) __PYX_ERR(17, 763, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":764
@@ -174351,6 +185508,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *     elif python.IS_PYPY:
  *         result = _PyElementUnicodeResult(string_value)
  */
+    __Pyx_TraceLine(764,0,__PYX_ERR(17, 764, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
     __pyx_r = __pyx_v_result;
@@ -174372,6 +185530,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result = _PyElementUnicodeResult(string_value)
  *         result._parent = parent
  */
+  __Pyx_TraceLine(765,0,__PYX_ERR(17, 765, __pyx_L1_error))
   __pyx_t_1 = (IS_PYPY != 0);
   if (__pyx_t_1) {
 
@@ -174382,6 +185541,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result._parent = parent
  *         result.is_attribute = is_attribute
  */
+    __Pyx_TraceLine(766,0,__PYX_ERR(17, 766, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_5etree__PyElementUnicodeResult);
     __pyx_t_4 = __pyx_v_4lxml_5etree__PyElementUnicodeResult; __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -174436,6 +185596,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_attribute = is_attribute
  *         result.is_tail = is_tail
  */
+    __Pyx_TraceLine(767,0,__PYX_ERR(17, 767, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_parent, ((PyObject *)__pyx_v_parent)) < 0) __PYX_ERR(17, 767, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":768
@@ -174445,6 +185606,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_tail = is_tail
  *         result.is_text = is_text
  */
+    __Pyx_TraceLine(768,0,__PYX_ERR(17, 768, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_attribute); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 768, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_attribute, __pyx_t_3) < 0) __PYX_ERR(17, 768, __pyx_L1_error)
@@ -174457,6 +185619,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.is_text = is_text
  *         result.attrname = attrname
  */
+    __Pyx_TraceLine(769,0,__PYX_ERR(17, 769, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_tail, __pyx_t_3) < 0) __PYX_ERR(17, 769, __pyx_L1_error)
@@ -174469,6 +185632,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         result.attrname = attrname
  *         return result
  */
+    __Pyx_TraceLine(770,0,__PYX_ERR(17, 770, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_is_text, __pyx_t_3) < 0) __PYX_ERR(17, 770, __pyx_L1_error)
@@ -174481,6 +185645,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         return result
  *     else:
  */
+    __Pyx_TraceLine(771,0,__PYX_ERR(17, 771, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_result, __pyx_n_s_attrname, __pyx_v_attrname) < 0) __PYX_ERR(17, 771, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":772
@@ -174490,6 +185655,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *     else:
  *         uresult = _ElementUnicodeResult(string_value)
  */
+    __Pyx_TraceLine(772,0,__PYX_ERR(17, 772, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
     __pyx_r = __pyx_v_result;
@@ -174511,6 +185677,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         uresult._parent = parent
  *         uresult.is_attribute = is_attribute
  */
+  __Pyx_TraceLine(774,0,__PYX_ERR(17, 774, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__ElementUnicodeResult), __pyx_v_string_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 774, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -174524,6 +185691,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         uresult.is_attribute = is_attribute
  *         uresult.is_tail = is_tail
  */
+    __Pyx_TraceLine(775,0,__PYX_ERR(17, 775, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_parent));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_parent));
     __Pyx_GOTREF(__pyx_v_uresult->_parent);
@@ -174537,6 +185705,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         uresult.is_tail = is_tail
  *         uresult.is_text = is_text
  */
+    __Pyx_TraceLine(776,0,__PYX_ERR(17, 776, __pyx_L1_error))
     __pyx_v_uresult->is_attribute = __pyx_v_is_attribute;
 
     /* "src/lxml/extensions.pxi":777
@@ -174546,6 +185715,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         uresult.is_text = is_text
  *         uresult.attrname = attrname
  */
+    __Pyx_TraceLine(777,0,__PYX_ERR(17, 777, __pyx_L1_error))
     __pyx_v_uresult->is_tail = __pyx_v_is_tail;
 
     /* "src/lxml/extensions.pxi":778
@@ -174555,6 +185725,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         uresult.attrname = attrname
  *         return uresult
  */
+    __Pyx_TraceLine(778,0,__PYX_ERR(17, 778, __pyx_L1_error))
     __pyx_v_uresult->is_text = __pyx_v_is_text;
 
     /* "src/lxml/extensions.pxi":779
@@ -174564,6 +185735,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  *         return uresult
  * 
  */
+    __Pyx_TraceLine(779,0,__PYX_ERR(17, 779, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_attrname);
     __Pyx_GIVEREF(__pyx_v_attrname);
     __Pyx_GOTREF(__pyx_v_uresult->attrname);
@@ -174577,6 +185749,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
  * 
  * cdef object _buildElementStringResult(_Document doc, xmlNode* c_node,
  */
+    __Pyx_TraceLine(780,0,__PYX_ERR(17, 780, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_uresult));
     __pyx_r = ((PyObject *)__pyx_v_uresult);
@@ -174603,6 +185776,7 @@ static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__py
   __Pyx_XDECREF((PyObject *)__pyx_v_uresult);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -174623,6 +185797,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
   xmlChar *__pyx_v_s;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -174638,6 +185813,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
   xmlNode *__pyx_t_12;
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("_buildElementStringResult", 0);
+  __Pyx_TraceCall("_buildElementStringResult", __pyx_f[17], 782, 0, __PYX_ERR(17, 782, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":784
  * cdef object _buildElementStringResult(_Document doc, xmlNode* c_node,
@@ -174646,6 +185822,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *     cdef object attrname = None
  *     cdef xmlNode* c_element
  */
+  __Pyx_TraceLine(784,0,__PYX_ERR(17, 784, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_parent = ((struct LxmlElement *)Py_None);
 
@@ -174656,6 +185833,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *     cdef xmlNode* c_element
  *     cdef bint is_tail
  */
+  __Pyx_TraceLine(785,0,__PYX_ERR(17, 785, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_attrname = Py_None;
 
@@ -174666,6 +185844,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         attrname = _namespacedName(c_node)
  *         is_tail = 0
  */
+  __Pyx_TraceLine(789,0,__PYX_ERR(17, 789, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ATTRIBUTE_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -174676,6 +185855,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         is_tail = 0
  *         s = tree.xmlNodeGetContent(c_node)
  */
+    __Pyx_TraceLine(790,0,__PYX_ERR(17, 790, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(__pyx_v_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 790, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_attrname, __pyx_t_2);
@@ -174688,6 +185868,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         s = tree.xmlNodeGetContent(c_node)
  *         try:
  */
+    __Pyx_TraceLine(791,0,__PYX_ERR(17, 791, __pyx_L1_error))
     __pyx_v_is_tail = 0;
 
     /* "src/lxml/extensions.pxi":792
@@ -174697,6 +185878,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         try:
  *             value = funicode(s)
  */
+    __Pyx_TraceLine(792,0,__PYX_ERR(17, 792, __pyx_L1_error))
     __pyx_v_s = xmlNodeGetContent(__pyx_v_c_node);
 
     /* "src/lxml/extensions.pxi":793
@@ -174706,6 +185888,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *             value = funicode(s)
  *         finally:
  */
+    __Pyx_TraceLine(793,0,__PYX_ERR(17, 793, __pyx_L5_error))
     /*try:*/ {
 
       /* "src/lxml/extensions.pxi":794
@@ -174715,6 +185898,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         finally:
  *             tree.xmlFree(s)
  */
+      __Pyx_TraceLine(794,0,__PYX_ERR(17, 794, __pyx_L5_error))
       __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 794, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_v_value = __pyx_t_2;
@@ -174728,6 +185912,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         c_element = NULL
  *     else:
  */
+    __Pyx_TraceLine(796,0,__PYX_ERR(17, 796, __pyx_L1_error))
     /*finally:*/ {
       /*normal exit:*/{
         xmlFree(__pyx_v_s);
@@ -174775,6 +185960,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *     else:
  *         #assert c_node.type == tree.XML_TEXT_NODE or c_node.type == tree.XML_CDATA_SECTION_NODE, "invalid node type"
  */
+    __Pyx_TraceLine(797,0,__PYX_ERR(17, 797, __pyx_L1_error))
     __pyx_v_c_element = NULL;
 
     /* "src/lxml/extensions.pxi":789
@@ -174794,6 +185980,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         c_element = _previousElement(c_node)
  *         is_tail = c_element is not NULL
  */
+  __Pyx_TraceLine(801,0,__PYX_ERR(17, 801, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->content); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 801, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -174807,6 +185994,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         is_tail = c_element is not NULL
  * 
  */
+    __Pyx_TraceLine(802,0,__PYX_ERR(17, 802, __pyx_L1_error))
     __pyx_v_c_element = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
 
     /* "src/lxml/extensions.pxi":803
@@ -174816,6 +186004,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  * 
  *     if not context._build_smart_strings:
  */
+    __Pyx_TraceLine(803,0,__PYX_ERR(17, 803, __pyx_L1_error))
     __pyx_v_is_tail = (__pyx_v_c_element != NULL);
   }
   __pyx_L3:;
@@ -174827,6 +186016,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         return value
  * 
  */
+  __Pyx_TraceLine(805,0,__PYX_ERR(17, 805, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_context->_build_smart_strings != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -174837,6 +186027,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  * 
  *     if c_element is NULL:
  */
+    __Pyx_TraceLine(806,0,__PYX_ERR(17, 806, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_value);
     __pyx_r = __pyx_v_value;
@@ -174858,6 +186049,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         # non-tail text or attribute text
  *         c_element = c_node.parent
  */
+  __Pyx_TraceLine(808,0,__PYX_ERR(17, 808, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_element == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -174868,6 +186060,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         while c_element is not NULL and not _isElement(c_element):
  *             c_element = c_element.parent
  */
+    __Pyx_TraceLine(810,0,__PYX_ERR(17, 810, __pyx_L1_error))
     __pyx_t_12 = __pyx_v_c_node->parent;
     __pyx_v_c_element = __pyx_t_12;
 
@@ -174878,6 +186071,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *             c_element = c_element.parent
  * 
  */
+    __Pyx_TraceLine(811,0,__PYX_ERR(17, 811, __pyx_L1_error))
     while (1) {
       __pyx_t_13 = ((__pyx_v_c_element != NULL) != 0);
       if (__pyx_t_13) {
@@ -174897,6 +186091,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  * 
  *     if c_element is not NULL:
  */
+      __Pyx_TraceLine(812,0,__PYX_ERR(17, 812, __pyx_L1_error))
       __pyx_t_12 = __pyx_v_c_element->parent;
       __pyx_v_c_element = __pyx_t_12;
     }
@@ -174917,6 +186112,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         parent = _instantiateElementFromXPath(c_element, doc, context)
  * 
  */
+  __Pyx_TraceLine(814,0,__PYX_ERR(17, 814, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_element != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -174927,6 +186123,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  * 
  *     return _elementStringResultFactory(
  */
+    __Pyx_TraceLine(815,0,__PYX_ERR(17, 815, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__instantiateElementFromXPath(__pyx_v_c_element, __pyx_v_doc, __pyx_v_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 815, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_parent, ((struct LxmlElement *)__pyx_t_2));
@@ -174948,6 +186145,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  *         value, parent, attrname, is_tail)
  * 
  */
+  __Pyx_TraceLine(817,0,__PYX_ERR(17, 817, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "src/lxml/extensions.pxi":818
@@ -174957,6 +186155,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(818,0,__PYX_ERR(17, 818, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__elementStringResultFactory(__pyx_v_value, __pyx_v_parent, __pyx_v_attrname, __pyx_v_is_tail); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
@@ -174981,6 +186180,7 @@ static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocum
   __Pyx_XDECREF(__pyx_v_attrname);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -175000,6 +186200,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
   CYTHON_UNUSED int __pyx_v_i;
   PyObject *__pyx_v_o = NULL;
   PyObject *__pyx_v_res = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -175016,6 +186217,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   __Pyx_RefNannySetupContext("_extension_function_call", 0);
+  __Pyx_TraceCall("_extension_function_call", __pyx_f[17], 823, 0, __PYX_ERR(17, 823, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":829
  *     cdef list args
@@ -175024,6 +186226,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *     try:
  *         args = []
  */
+  __Pyx_TraceLine(829,0,__PYX_ERR(17, 829, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_context->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -175036,6 +186239,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         args = []
  *         for i in range(nargs):
  */
+  __Pyx_TraceLine(830,0,__PYX_ERR(17, 830, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -175053,6 +186257,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         for i in range(nargs):
  *             obj = xpath.valuePop(ctxt)
  */
+        __Pyx_TraceLine(831,0,__PYX_ERR(17, 831, __pyx_L6_error))
         __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 831, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_v_args = ((PyObject*)__pyx_t_1);
@@ -175065,6 +186270,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *             obj = xpath.valuePop(ctxt)
  *             o = _unwrapXPathObject(obj, doc, context)
  */
+        __Pyx_TraceLine(832,0,__PYX_ERR(17, 832, __pyx_L6_error))
         __pyx_t_5 = __pyx_v_nargs;
         __pyx_t_6 = __pyx_t_5;
         for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
@@ -175077,6 +186283,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *             o = _unwrapXPathObject(obj, doc, context)
  *             _freeXPathObject(obj)
  */
+          __Pyx_TraceLine(833,0,__PYX_ERR(17, 833, __pyx_L6_error))
           __pyx_v_obj = valuePop(__pyx_v_ctxt);
 
           /* "src/lxml/extensions.pxi":834
@@ -175086,6 +186293,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *             _freeXPathObject(obj)
  *             args.append(o)
  */
+          __Pyx_TraceLine(834,0,__PYX_ERR(17, 834, __pyx_L6_error))
           __pyx_t_1 = __pyx_f_4lxml_5etree__unwrapXPathObject(__pyx_v_obj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 834, __pyx_L6_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_1);
@@ -175098,6 +186306,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *             args.append(o)
  *         args.reverse()
  */
+          __Pyx_TraceLine(835,0,__PYX_ERR(17, 835, __pyx_L6_error))
           __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_obj);
 
           /* "src/lxml/extensions.pxi":836
@@ -175107,6 +186316,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         args.reverse()
  * 
  */
+          __Pyx_TraceLine(836,0,__PYX_ERR(17, 836, __pyx_L6_error))
           __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_o); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(17, 836, __pyx_L6_error)
         }
 
@@ -175117,6 +186327,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  * 
  *         res = function(context, *args)
  */
+        __Pyx_TraceLine(837,0,__PYX_ERR(17, 837, __pyx_L6_error))
         __pyx_t_8 = PyList_Reverse(__pyx_v_args); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(17, 837, __pyx_L6_error)
 
         /* "src/lxml/extensions.pxi":839
@@ -175126,6 +186337,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         # wrap result for XPath consumption
  *         obj = _wrapXPathObject(res, doc, context)
  */
+        __Pyx_TraceLine(839,0,__PYX_ERR(17, 839, __pyx_L6_error))
         __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 839, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_INCREF(((PyObject *)__pyx_v_context));
@@ -175150,6 +186362,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         # prevent Python from deallocating elements handed to libxml2
  *         context._hold(res)
  */
+        __Pyx_TraceLine(841,0,__PYX_ERR(17, 841, __pyx_L6_error))
         __pyx_t_11 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_res, __pyx_v_doc, __pyx_v_context); if (unlikely(__pyx_t_11 == ((xmlXPathObject *)NULL))) __PYX_ERR(17, 841, __pyx_L6_error)
         __pyx_v_obj = __pyx_t_11;
 
@@ -175160,6 +186373,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         xpath.valuePush(ctxt, obj)
  *     except:
  */
+        __Pyx_TraceLine(843,0,__PYX_ERR(17, 843, __pyx_L6_error))
         __pyx_t_9 = __pyx_f_4lxml_5etree_12_BaseContext__hold(__pyx_v_context, __pyx_v_res); if (unlikely(!__pyx_t_9)) __PYX_ERR(17, 843, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -175171,6 +186385,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *     except:
  *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)
  */
+        __Pyx_TraceLine(844,0,__PYX_ERR(17, 844, __pyx_L6_error))
         (void)(valuePush(__pyx_v_ctxt, __pyx_v_obj));
 
         /* "src/lxml/extensions.pxi":830
@@ -175197,6 +186412,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)
  *         context._exc._store_raised()
  */
+      __Pyx_TraceLine(845,0,__PYX_ERR(17, 845, __pyx_L8_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._extension_function_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_1) < 0) __PYX_ERR(17, 845, __pyx_L8_except_error)
@@ -175211,6 +186427,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *         context._exc._store_raised()
  *     finally:
  */
+        __Pyx_TraceLine(846,0,__PYX_ERR(17, 846, __pyx_L8_except_error))
         xmlXPathErr(__pyx_v_ctxt, XPATH_EXPR_ERROR);
 
         /* "src/lxml/extensions.pxi":847
@@ -175220,6 +186437,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(847,0,__PYX_ERR(17, 847, __pyx_L8_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->_exc->__pyx_vtab)->_store_raised(__pyx_v_context->_exc);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -175256,6 +186474,7 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  * 
  * # lookup the function by name and call it
  */
+  __Pyx_TraceLine(849,0,__PYX_ERR(17, 849, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -175303,11 +186522,17 @@ static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_WriteUnraisable("lxml.etree._extension_function_call", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_args);
   __Pyx_XDECREF(__pyx_v_o);
   __Pyx_XDECREF(__pyx_v_res);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -175323,6 +186548,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
   struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context = 0;
   xmlXPathContext *__pyx_v_rctxt;
   PyObject *__pyx_v_function = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlXPathContext *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -175343,6 +186569,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_xpath_function_call", 0);
+  __Pyx_TraceCall("_xpath_function_call", __pyx_f[17], 853, 0, __PYX_ERR(17, 853, __pyx_L1_error));
 
   /* "src/lxml/extensions.pxi":856
  *                                int nargs) with gil:
@@ -175351,6 +186578,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *     context = <_BaseContext> rctxt.userData
  *     try:
  */
+  __Pyx_TraceLine(856,0,__PYX_ERR(17, 856, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_ctxt->context;
   __pyx_v_rctxt = __pyx_t_1;
 
@@ -175361,6 +186589,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *     try:
  *         function = context._find_cached_function(rctxt.functionURI, rctxt.function)
  */
+  __Pyx_TraceLine(857,0,__PYX_ERR(17, 857, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_rctxt->userData);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_t_2);
@@ -175373,6 +186602,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *         function = context._find_cached_function(rctxt.functionURI, rctxt.function)
  *         if function is not None:
  */
+  __Pyx_TraceLine(858,0,__PYX_ERR(17, 858, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -175390,6 +186620,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *         if function is not None:
  *             _extension_function_call(context, function, ctxt, nargs)
  */
+        __Pyx_TraceLine(859,0,__PYX_ERR(17, 859, __pyx_L6_error))
         __pyx_t_2 = __pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(__pyx_v_context, __pyx_v_rctxt->functionURI, __pyx_v_rctxt->function); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 859, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_2);
         __pyx_v_function = __pyx_t_2;
@@ -175402,6 +186633,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *             _extension_function_call(context, function, ctxt, nargs)
  *         else:
  */
+        __Pyx_TraceLine(860,0,__PYX_ERR(17, 860, __pyx_L6_error))
         __pyx_t_6 = (__pyx_v_function != Py_None);
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
@@ -175413,6 +186645,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *         else:
  *             xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)
  */
+          __Pyx_TraceLine(861,0,__PYX_ERR(17, 861, __pyx_L6_error))
           __pyx_f_4lxml_5etree__extension_function_call(__pyx_v_context, __pyx_v_function, __pyx_v_ctxt, __pyx_v_nargs);
 
           /* "src/lxml/extensions.pxi":860
@@ -175432,6 +186665,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *             context._exc._store_exception(XPathFunctionError(
  *                 f"XPath function '{_namespacedNameFromNsName(rctxt.functionURI, rctxt.function)}' not found"))
  */
+        __Pyx_TraceLine(863,0,__PYX_ERR(17, 863, __pyx_L6_error))
         /*else*/ {
           xmlXPathErr(__pyx_v_ctxt, XPATH_UNKNOWN_FUNC_ERROR);
 
@@ -175442,6 +186676,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *     except:
  *         # may not be the right error, but we need to tell libxml2 *something*
  */
+          __Pyx_TraceLine(865,0,__PYX_ERR(17, 865, __pyx_L6_error))
           __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 865, __pyx_L6_error)
           __Pyx_GOTREF(__pyx_t_2);
           __pyx_t_8 = 0;
@@ -175475,6 +186710,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *                 f"XPath function '{_namespacedNameFromNsName(rctxt.functionURI, rctxt.function)}' not found"))
  *     except:
  */
+          __Pyx_TraceLine(864,0,__PYX_ERR(17, 864, __pyx_L6_error))
           __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_XPathFunctionError), __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 864, __pyx_L6_error)
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -175507,6 +186743,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *         # may not be the right error, but we need to tell libxml2 *something*
  *         xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)
  */
+      __Pyx_TraceLine(866,0,__PYX_ERR(17, 866, __pyx_L8_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._xpath_function_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_11, &__pyx_t_10) < 0) __PYX_ERR(17, 866, __pyx_L8_except_error)
@@ -175521,6 +186758,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *         context._exc._store_raised()
  *     finally:
  */
+        __Pyx_TraceLine(868,0,__PYX_ERR(17, 868, __pyx_L8_except_error))
         xmlXPathErr(__pyx_v_ctxt, XPATH_UNKNOWN_FUNC_ERROR);
 
         /* "src/lxml/extensions.pxi":869
@@ -175530,6 +186768,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(869,0,__PYX_ERR(17, 869, __pyx_L8_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->_exc->__pyx_vtab)->_store_raised(__pyx_v_context->_exc);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -175564,6 +186803,7 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(871,0,__PYX_ERR(17, 871, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -175611,9 +186851,15 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_WriteUnraisable("lxml.etree._xpath_function_call", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF(__pyx_v_function);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -175630,10 +186876,12 @@ static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__p
 
 static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_register_xpath_function", 0);
+  __Pyx_TraceCall("_register_xpath_function", __pyx_f[18], 31, 0, __PYX_ERR(18, 31, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":32
  * 
@@ -175642,6 +186890,7 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
  *         return xpath.xmlXPathRegisterFunc(
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf),
  */
+  __Pyx_TraceLine(32,0,__PYX_ERR(18, 32, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -175653,6 +186902,7 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf),
  *             _xpath_function_call)
  */
+    __Pyx_TraceLine(33,0,__PYX_ERR(18, 33, __pyx_L1_error))
     __pyx_r = xmlXPathRegisterFunc(((xmlXPathContext *)__pyx_v_ctxt), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), __pyx_f_4lxml_5etree__xpath_function_call);
     goto __pyx_L0;
 
@@ -175672,6 +186922,7 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf), _xcstr(ns_utf),
  *             _xpath_function_call)
  */
+  __Pyx_TraceLine(37,0,__PYX_ERR(18, 37, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/xpath.pxi":39
@@ -175681,6 +186932,7 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
  * 
  * cdef int _unregister_xpath_function(void* ctxt, name_utf, ns_utf):
  */
+    __Pyx_TraceLine(39,0,__PYX_ERR(18, 39, __pyx_L1_error))
     __pyx_r = xmlXPathRegisterFuncNS(((xmlXPathContext *)__pyx_v_ctxt), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_utf), __pyx_f_4lxml_5etree__xpath_function_call);
     goto __pyx_L0;
   }
@@ -175694,7 +186946,11 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._register_xpath_function", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -175709,10 +186965,12 @@ static int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyO
 
 static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_unregister_xpath_function", 0);
+  __Pyx_TraceCall("_unregister_xpath_function", __pyx_f[18], 41, 0, __PYX_ERR(18, 41, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":42
  * 
@@ -175721,6 +186979,7 @@ static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, P
  *         return xpath.xmlXPathRegisterFunc(
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf), NULL)
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(18, 42, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -175732,6 +186991,7 @@ static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, P
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf), NULL)
  *     else:
  */
+    __Pyx_TraceLine(43,0,__PYX_ERR(18, 43, __pyx_L1_error))
     __pyx_r = xmlXPathRegisterFunc(((xmlXPathContext *)__pyx_v_ctxt), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), NULL);
     goto __pyx_L0;
 
@@ -175751,6 +187011,7 @@ static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, P
  *             <xpath.xmlXPathContext*>ctxt, _xcstr(name_utf), _xcstr(ns_utf), NULL)
  * 
  */
+  __Pyx_TraceLine(46,0,__PYX_ERR(18, 46, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/xpath.pxi":47
@@ -175760,6 +187021,7 @@ static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, P
  * 
  * 
  */
+    __Pyx_TraceLine(47,0,__PYX_ERR(18, 47, __pyx_L1_error))
     __pyx_r = xmlXPathRegisterFuncNS(((xmlXPathContext *)__pyx_v_ctxt), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_utf), NULL);
     goto __pyx_L0;
   }
@@ -175773,7 +187035,11 @@ static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, P
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._unregister_xpath_function", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -175893,6 +187159,7 @@ static int __pyx_pw_4lxml_5etree_13_XPathContext_1__init__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_error_log, PyObject *__pyx_v_enable_regexp, PyObject *__pyx_v_variables, PyObject *__pyx_v_build_smart_strings) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -175900,6 +187167,7 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 54, 0, __PYX_ERR(18, 54, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":56
  *     def __init__(self, namespaces, extensions, error_log, enable_regexp, variables,
@@ -175908,6 +187176,7 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
  *         _BaseContext.__init__(self, namespaces, extensions, error_log, enable_regexp,
  *                               build_smart_strings)
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(18, 56, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_variables);
   __Pyx_GIVEREF(__pyx_v_variables);
   __Pyx_GOTREF(__pyx_v_self->_variables);
@@ -175921,6 +187190,7 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
  *                               build_smart_strings)
  * 
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(18, 57, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseContext), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -175931,6 +187201,7 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
  * 
  *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(18, 58, __pyx_L1_error))
   __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -176009,6 +187280,7 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
   __Pyx_AddTraceback("lxml.etree._XPathContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176023,9 +187295,11 @@ static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(struct __pyx_obj_4lxml
 
 static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("set_context", 0);
+  __Pyx_TraceCall("set_context", __pyx_f[18], 60, 0, __PYX_ERR(18, 60, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":61
  * 
@@ -176034,6 +187308,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_o
  *         # This would be a good place to set up the XPath parser dict, but
  *         # we cannot use the current thread dict as we do not know which
  */
+  __Pyx_TraceLine(61,0,__PYX_ERR(18, 61, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_xpath_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xpathCtxt);
 
   /* "src/lxml/xpath.pxi":65
@@ -176043,6 +187318,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_o
  *         self.registerLocalFunctions(xpathCtxt, _register_xpath_function)
  * 
  */
+  __Pyx_TraceLine(65,0,__PYX_ERR(18, 65, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 65, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176054,6 +187330,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_o
  * 
  *     cdef register_context(self, _Document doc):
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(18, 66, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xpathCtxt, __pyx_f_4lxml_5etree__register_xpath_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 66, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176075,6 +187352,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_o
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176089,12 +187367,14 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_o
 
 static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, struct LxmlDocument *__pyx_v_doc) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("register_context", 0);
+  __Pyx_TraceCall("register_context", __pyx_f[18], 68, 0, __PYX_ERR(18, 68, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":69
  * 
@@ -176103,6 +187383,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  *         self.registerGlobalNamespaces()
  *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(18, 69, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__register_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176114,6 +187395,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
  *         self.registerExsltFunctions()
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(18, 70, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 70, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176125,6 +187407,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  *         self.registerExsltFunctions()
  *         if self._variables is not None:
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(18, 71, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_self->__pyx_base._xpathCtxt, __pyx_f_4lxml_5etree__register_xpath_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 71, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176136,6 +187419,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  *         if self._variables is not None:
  *             self.registerVariables(self._variables)
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(18, 72, __pyx_L1_error))
   __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(__pyx_v_self);
 
   /* "src/lxml/xpath.pxi":73
@@ -176145,6 +187429,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  *             self.registerVariables(self._variables)
  * 
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(18, 73, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_variables != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -176156,6 +187441,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
  * 
  *     cdef unregister_context(self):
  */
+    __Pyx_TraceLine(74,0,__PYX_ERR(18, 74, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_self->_variables;
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_4 = __pyx_f_4lxml_5etree_13_XPathContext_registerVariables(__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 74, __pyx_L1_error)
@@ -176190,6 +187476,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176204,9 +187491,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __
 
 static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("unregister_context", 0);
+  __Pyx_TraceCall("unregister_context", __pyx_f[18], 76, 0, __PYX_ERR(18, 76, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":77
  * 
@@ -176215,6 +187504,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
  *             self._xpathCtxt, _unregister_xpath_function)
  *         self.unregisterGlobalNamespaces()
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(18, 77, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.unregisterGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_self->__pyx_base._xpathCtxt, __pyx_f_4lxml_5etree__unregister_xpath_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176226,6 +187516,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
  *         xpath.xmlXPathRegisteredVariablesCleanup(self._xpathCtxt)
  *         self._cleanup_context()
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(18, 79, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.unregisterGlobalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176237,6 +187528,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
  *         self._cleanup_context()
  * 
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(18, 80, __pyx_L1_error))
   xmlXPathRegisteredVariablesCleanup(__pyx_v_self->__pyx_base._xpathCtxt);
 
   /* "src/lxml/xpath.pxi":81
@@ -176246,6 +187538,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
  * 
  *     cdef void registerExsltFunctions(self):
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(18, 81, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -176267,6 +187560,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176280,9 +187574,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct
  */
 
 static void __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("registerExsltFunctions", 0);
+  __Pyx_TraceCall("registerExsltFunctions", __pyx_f[18], 83, 0, __PYX_ERR(18, 83, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":84
  * 
@@ -176291,6 +187587,7 @@ static void __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(struct _
  *             # we'd only execute dummy functions anyway
  *             return
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(18, 84, __pyx_L1_error))
   __pyx_t_1 = ((LIBXSLT_VERSION < 0x278D) != 0);
   if (__pyx_t_1) {
 
@@ -176301,6 +187598,7 @@ static void __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(struct _
  *         tree.xmlHashScan(
  *             self._xpathCtxt.nsHash, _registerExsltFunctionsForNamespaces,
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(18, 86, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xpath.pxi":84
@@ -176319,6 +187617,7 @@ static void __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(struct _
  *             self._xpathCtxt.nsHash, _registerExsltFunctionsForNamespaces,
  *             self._xpathCtxt)
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(18, 87, __pyx_L1_error))
   xmlHashScan(__pyx_v_self->__pyx_base._xpathCtxt->nsHash, __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces, __pyx_v_self->__pyx_base._xpathCtxt);
 
   /* "src/lxml/xpath.pxi":83
@@ -176330,7 +187629,11 @@ static void __pyx_f_4lxml_5etree_13_XPathContext_registerExsltFunctions(struct _
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._XPathContext.registerExsltFunctions", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -176347,6 +187650,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -176358,6 +187662,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
   PyObject *(*__pyx_t_8)(PyObject *);
   xmlXPathObject *__pyx_t_9;
   __Pyx_RefNannySetupContext("registerVariables", 0);
+  __Pyx_TraceCall("registerVariables", __pyx_f[18], 91, 0, __PYX_ERR(18, 91, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":92
  * 
@@ -176366,6 +187671,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
  *             name_utf = self._to_utf(name)
  *             xpath.xmlXPathRegisterVariable(
  */
+  __Pyx_TraceLine(92,0,__PYX_ERR(18, 92, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_variable_dict, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 92, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -176484,6 +187790,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
  *             xpath.xmlXPathRegisterVariable(
  *                 self._xpathCtxt, _xcstr(name_utf), _wrapXPathObject(value, None, None))
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(18, 93, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 93, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_name_utf, ((PyObject*)__pyx_t_1));
@@ -176496,6 +187803,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
  * 
  *     cdef registerVariable(self, name, value):
  */
+    __Pyx_TraceLine(95,0,__PYX_ERR(18, 95, __pyx_L1_error))
     __pyx_t_9 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_value, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None)); if (unlikely(__pyx_t_9 == ((xmlXPathObject *)NULL))) __PYX_ERR(18, 95, __pyx_L1_error)
 
     /* "src/lxml/xpath.pxi":94
@@ -176505,6 +187813,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
  *                 self._xpathCtxt, _xcstr(name_utf), _wrapXPathObject(value, None, None))
  * 
  */
+    __Pyx_TraceLine(94,0,__PYX_ERR(18, 94, __pyx_L1_error))
     (void)(xmlXPathRegisterVariable(__pyx_v_self->__pyx_base._xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), __pyx_t_9));
 
     /* "src/lxml/xpath.pxi":92
@@ -176514,6 +187823,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
  *             name_utf = self._to_utf(name)
  *             xpath.xmlXPathRegisterVariable(
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(18, 92, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -176541,6 +187851,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176556,10 +187867,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct _
 static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlXPathObject *__pyx_t_2;
   __Pyx_RefNannySetupContext("registerVariable", 0);
+  __Pyx_TraceCall("registerVariable", __pyx_f[18], 97, 0, __PYX_ERR(18, 97, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":98
  * 
@@ -176568,6 +187881,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __
  *         xpath.xmlXPathRegisterVariable(
  *             self._xpathCtxt, _xcstr(name_utf), _wrapXPathObject(value, None, None))
  */
+  __Pyx_TraceLine(98,0,__PYX_ERR(18, 98, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 98, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_name_utf = ((PyObject*)__pyx_t_1);
@@ -176580,6 +187894,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __
  * 
  * 
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(18, 100, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_value, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None)); if (unlikely(__pyx_t_2 == ((xmlXPathObject *)NULL))) __PYX_ERR(18, 100, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":99
@@ -176589,6 +187904,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __
  *             self._xpathCtxt, _xcstr(name_utf), _wrapXPathObject(value, None, None))
  * 
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(18, 99, __pyx_L1_error))
   (void)(xmlXPathRegisterVariable(__pyx_v_self->__pyx_base._xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), __pyx_t_2));
 
   /* "src/lxml/xpath.pxi":97
@@ -176609,6 +187925,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176624,9 +187941,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __
 static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__pyx_v__c_href, void *__pyx_v__ctxt, xmlChar *__pyx_v_c_prefix) {
   const xmlChar *__pyx_v_c_href;
   xmlXPathContext *__pyx_v_ctxt;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_registerExsltFunctionsForNamespaces", 0);
+  __Pyx_TraceCall("_registerExsltFunctionsForNamespaces", __pyx_f[18], 103, 0, __PYX_ERR(18, 103, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":105
  * cdef void _registerExsltFunctionsForNamespaces(
@@ -176635,6 +187954,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *     ctxt = <xpath.xmlXPathContext*> _ctxt
  * 
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(18, 105, __pyx_L1_error))
   __pyx_v_c_href = ((const xmlChar *)__pyx_v__c_href);
 
   /* "src/lxml/xpath.pxi":106
@@ -176644,6 +187964,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  * 
  *     if tree.xmlStrcmp(c_href, xslt.EXSLT_DATE_NAMESPACE) == 0:
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(18, 106, __pyx_L1_error))
   __pyx_v_ctxt = ((xmlXPathContext *)__pyx_v__ctxt);
 
   /* "src/lxml/xpath.pxi":108
@@ -176653,6 +187974,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *         xslt.exsltDateXpathCtxtRegister(ctxt, c_prefix)
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_SETS_NAMESPACE) == 0:
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(18, 108, __pyx_L1_error))
   __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_href, EXSLT_DATE_NAMESPACE) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -176663,6 +187985,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_SETS_NAMESPACE) == 0:
  *         xslt.exsltSetsXpathCtxtRegister(ctxt, c_prefix)
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(18, 109, __pyx_L1_error))
     (void)(exsltDateXpathCtxtRegister(__pyx_v_ctxt, __pyx_v_c_prefix));
 
     /* "src/lxml/xpath.pxi":108
@@ -176682,6 +188005,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *         xslt.exsltSetsXpathCtxtRegister(ctxt, c_prefix)
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_MATH_NAMESPACE) == 0:
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(18, 110, __pyx_L1_error))
   __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_href, EXSLT_SETS_NAMESPACE) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -176692,6 +188016,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_MATH_NAMESPACE) == 0:
  *         xslt.exsltMathXpathCtxtRegister(ctxt, c_prefix)
  */
+    __Pyx_TraceLine(111,0,__PYX_ERR(18, 111, __pyx_L1_error))
     (void)(exsltSetsXpathCtxtRegister(__pyx_v_ctxt, __pyx_v_c_prefix));
 
     /* "src/lxml/xpath.pxi":110
@@ -176711,6 +188036,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *         xslt.exsltMathXpathCtxtRegister(ctxt, c_prefix)
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_STRINGS_NAMESPACE) == 0:
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(18, 112, __pyx_L1_error))
   __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_href, EXSLT_MATH_NAMESPACE) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -176721,6 +188047,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *     elif tree.xmlStrcmp(c_href, xslt.EXSLT_STRINGS_NAMESPACE) == 0:
  *         xslt.exsltStrXpathCtxtRegister(ctxt, c_prefix)
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(18, 113, __pyx_L1_error))
     (void)(exsltMathXpathCtxtRegister(__pyx_v_ctxt, __pyx_v_c_prefix));
 
     /* "src/lxml/xpath.pxi":112
@@ -176740,6 +188067,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  *         xslt.exsltStrXpathCtxtRegister(ctxt, c_prefix)
  * 
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(18, 114, __pyx_L1_error))
   __pyx_t_1 = ((xmlStrcmp(__pyx_v_c_href, EXSLT_STRINGS_NAMESPACE) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -176750,6 +188078,7 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  * 
  * 
  */
+    __Pyx_TraceLine(115,0,__PYX_ERR(18, 115, __pyx_L1_error))
     (void)(exsltStrXpathCtxtRegister(__pyx_v_ctxt, __pyx_v_c_prefix));
 
     /* "src/lxml/xpath.pxi":114
@@ -176771,6 +188100,11 @@ static void __pyx_f_4lxml_5etree__registerExsltFunctionsForNamespaces(void *__py
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._registerExsltFunctionsForNamespaces", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -176800,10 +188134,12 @@ static int __pyx_pw_4lxml_5etree_19_XPathEvaluatorBase_1__cinit__(PyObject *__py
 
 static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[18], 123, 0, __PYX_ERR(18, 123, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":124
  *     cdef _ErrorLog _error_log
@@ -176812,6 +188148,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  *         if config.ENABLE_THREADING:
  *             self._eval_lock = python.PyThread_allocate_lock()
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(18, 124, __pyx_L1_error))
   __pyx_v_self->_xpathCtxt = NULL;
 
   /* "src/lxml/xpath.pxi":125
@@ -176821,6 +188158,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  *             self._eval_lock = python.PyThread_allocate_lock()
  *             if self._eval_lock is NULL:
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(18, 125, __pyx_L1_error))
   __pyx_t_1 = (ENABLE_THREADING != 0);
   if (__pyx_t_1) {
 
@@ -176831,6 +188169,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  *             if self._eval_lock is NULL:
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(18, 126, __pyx_L1_error))
     __pyx_v_self->_eval_lock = PyThread_allocate_lock();
 
     /* "src/lxml/xpath.pxi":127
@@ -176840,6 +188179,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  *                 raise MemoryError()
  *         self._error_log = _ErrorLog()
  */
+    __Pyx_TraceLine(127,0,__PYX_ERR(18, 127, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_eval_lock == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -176850,6 +188190,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  *         self._error_log = _ErrorLog()
  * 
  */
+      __Pyx_TraceLine(128,0,__PYX_ERR(18, 128, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(18, 128, __pyx_L1_error)
 
       /* "src/lxml/xpath.pxi":127
@@ -176877,6 +188218,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
  * 
  *     def __init__(self, namespaces, extensions, enable_regexp,
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(18, 129, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -176901,6 +188243,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___cinit__(struct __pyx_ob
   __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -176998,10 +188341,12 @@ static int __pyx_pw_4lxml_5etree_19_XPathEvaluatorBase_3__init__(PyObject *__pyx
 
 static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_2__init__(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_enable_regexp, PyObject *__pyx_v_smart_strings) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 131, 0, __PYX_ERR(18, 131, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":133
  *     def __init__(self, namespaces, extensions, enable_regexp,
@@ -177010,6 +188355,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_2__init__(struct __pyx_ob
  *                                       enable_regexp, None, smart_strings)
  * 
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(18, 133, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_namespaces);
@@ -177056,6 +188402,7 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_2__init__(struct __pyx_ob
   __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177083,10 +188430,12 @@ static PyObject *__pyx_pw_4lxml_5etree_19_XPathEvaluatorBase_9error_log_1__get__
 
 static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[18], 137, 0, __PYX_ERR(18, 137, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":138
  *     property error_log:
@@ -177095,6 +188444,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
  *             return self._error_log.copy()
  * 
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(18, 138, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
@@ -177112,6 +188462,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(139,0,__PYX_ERR(18, 139, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -177134,6 +188485,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177158,9 +188510,11 @@ static void __pyx_pw_4lxml_5etree_19_XPathEvaluatorBase_5__dealloc__(PyObject *_
 }
 
 static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[18], 141, 0, __PYX_ERR(18, 141, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":142
  * 
@@ -177169,6 +188523,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  *             xpath.xmlXPathFreeContext(self._xpathCtxt)
  *         if config.ENABLE_THREADING:
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(18, 142, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_xpathCtxt != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -177179,6 +188534,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  *         if config.ENABLE_THREADING:
  *             if self._eval_lock is not NULL:
  */
+    __Pyx_TraceLine(143,0,__PYX_ERR(18, 143, __pyx_L1_error))
     xmlXPathFreeContext(__pyx_v_self->_xpathCtxt);
 
     /* "src/lxml/xpath.pxi":142
@@ -177197,6 +188553,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  *             if self._eval_lock is not NULL:
  *                 python.PyThread_free_lock(self._eval_lock)
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(18, 144, __pyx_L1_error))
   __pyx_t_1 = (ENABLE_THREADING != 0);
   if (__pyx_t_1) {
 
@@ -177207,6 +188564,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  *                 python.PyThread_free_lock(self._eval_lock)
  * 
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(18, 145, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_eval_lock != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -177217,6 +188575,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  * 
  *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
  */
+      __Pyx_TraceLine(146,0,__PYX_ERR(18, 146, __pyx_L1_error))
       PyThread_free_lock(__pyx_v_self->_eval_lock);
 
       /* "src/lxml/xpath.pxi":145
@@ -177246,6 +188605,11 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._XPathEvaluatorBase.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -177259,9 +188623,11 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
 
 static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("set_context", 0);
+  __Pyx_TraceCall("set_context", __pyx_f[18], 148, 0, __PYX_ERR(18, 148, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":149
  * 
@@ -177270,6 +188636,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context(struct _
  *         self._context.set_context(xpathCtxt)
  * 
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(18, 149, __pyx_L1_error))
   __pyx_v_self->_xpathCtxt = __pyx_v_xpathCtxt;
 
   /* "src/lxml/xpath.pxi":150
@@ -177279,6 +188646,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context(struct _
  * 
  *     def evaluate(self, _eval_arg, **_variables):
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(18, 150, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_set_context(__pyx_v_self->_context, __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -177300,6 +188668,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context(struct _
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177371,10 +188740,13 @@ static PyObject *__pyx_pw_4lxml_5etree_19_XPathEvaluatorBase_7evaluate(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_6evaluate(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, PyObject *__pyx_v__eval_arg, PyObject *__pyx_v__variables) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__342)
   __Pyx_RefNannySetupContext("evaluate", 0);
+  __Pyx_TraceCall("evaluate", __pyx_f[18], 152, 0, __PYX_ERR(18, 152, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":165
  *         :deprecated: call the object, not its method.
@@ -177383,6 +188755,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_6evaluate(struct __
  * 
  *     cdef bint _checkAbsolutePath(self, char* path):
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(18, 165, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 165, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -177412,6 +188785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_6evaluate(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177427,9 +188801,11 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_6evaluate(struct __
 static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, char *__pyx_v_path) {
   char __pyx_v_c;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_checkAbsolutePath", 0);
+  __Pyx_TraceCall("_checkAbsolutePath", __pyx_f[18], 167, 0, __PYX_ERR(18, 167, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":169
  *     cdef bint _checkAbsolutePath(self, char* path):
@@ -177438,6 +188814,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *             return 0
  *         c = path[0]
  */
+  __Pyx_TraceLine(169,0,__PYX_ERR(18, 169, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_path == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -177448,6 +188825,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *         c = path[0]
  *         while c == c' ' or c == c'\t':
  */
+    __Pyx_TraceLine(170,0,__PYX_ERR(18, 170, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -177467,6 +188845,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *         while c == c' ' or c == c'\t':
  *             path = path + 1
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(18, 171, __pyx_L1_error))
   __pyx_v_c = (__pyx_v_path[0]);
 
   /* "src/lxml/xpath.pxi":172
@@ -177476,6 +188855,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *             path = path + 1
  *             c = path[0]
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(18, 172, __pyx_L1_error))
   while (1) {
     switch (__pyx_v_c) {
       case ' ':
@@ -177495,6 +188875,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *             c = path[0]
  *         return c == c'/'
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(18, 173, __pyx_L1_error))
     __pyx_v_path = (__pyx_v_path + 1);
 
     /* "src/lxml/xpath.pxi":174
@@ -177504,6 +188885,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  *         return c == c'/'
  * 
  */
+    __Pyx_TraceLine(174,0,__PYX_ERR(18, 174, __pyx_L1_error))
     __pyx_v_c = (__pyx_v_path[0]);
   }
 
@@ -177514,6 +188896,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(18, 175, __pyx_L1_error))
   __pyx_r = (__pyx_v_c == '/');
   goto __pyx_L0;
 
@@ -177526,7 +188909,11 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._XPathEvaluatorBase._checkAbsolutePath", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177542,10 +188929,12 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(CYTHON_
 static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
   int __pyx_v_result;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_lock", 0);
+  __Pyx_TraceCall("_lock", __pyx_f[18], 178, 0, __PYX_ERR(18, 178, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":180
  *     cdef int _lock(self) except -1:
@@ -177554,6 +188943,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *             with nogil:
  *                 result = python.PyThread_acquire_lock(
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(18, 180, __pyx_L1_error))
   __pyx_t_2 = (ENABLE_THREADING != 0);
   if (__pyx_t_2) {
   } else {
@@ -177572,6 +188962,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *                 result = python.PyThread_acquire_lock(
  *                     self._eval_lock, python.WAIT_LOCK)
  */
+    __Pyx_TraceLine(181,0,__PYX_ERR(18, 181, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -177587,6 +188978,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *                     self._eval_lock, python.WAIT_LOCK)
  *             if result == 0:
  */
+          __Pyx_TraceLine(182,1,__PYX_ERR(18, 182, __pyx_L7_error))
           __pyx_v_result = PyThread_acquire_lock(__pyx_v_self->_eval_lock, WAIT_LOCK);
         }
 
@@ -177597,6 +188989,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *                 result = python.PyThread_acquire_lock(
  *                     self._eval_lock, python.WAIT_LOCK)
  */
+        __Pyx_TraceLine(181,1,__PYX_ERR(18, 181, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -177605,6 +188998,13 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
             #endif
             goto __pyx_L8;
           }
+          __pyx_L7_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L8:;
         }
     }
@@ -177616,6 +189016,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *                 raise XPathError, u"XPath evaluator locking failed"
  *         return 0
  */
+    __Pyx_TraceLine(184,0,__PYX_ERR(18, 184, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_result == 0) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -177626,6 +189027,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  *         return 0
  * 
  */
+      __Pyx_TraceLine(185,0,__PYX_ERR(18, 185, __pyx_L1_error))
       __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_XPath_evaluator_locking_failed, 0, 0);
       __PYX_ERR(18, 185, __pyx_L1_error)
 
@@ -177654,6 +189056,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(18, 186, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -177670,6 +189073,7 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
   __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase._lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -177683,10 +189087,12 @@ static int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lx
  */
 
 static void __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_unlock", 0);
+  __Pyx_TraceCall("_unlock", __pyx_f[18], 189, 0, __PYX_ERR(18, 189, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":190
  *     @cython.final
@@ -177695,6 +189101,7 @@ static void __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(struct __pyx_obj_
  *             python.PyThread_release_lock(self._eval_lock)
  * 
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(18, 190, __pyx_L1_error))
   __pyx_t_2 = (ENABLE_THREADING != 0);
   if (__pyx_t_2) {
   } else {
@@ -177713,6 +189120,7 @@ static void __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(struct __pyx_obj_
  * 
  *     cdef _build_parse_error(self):
  */
+    __Pyx_TraceLine(191,0,__PYX_ERR(18, 191, __pyx_L1_error))
     PyThread_release_lock(__pyx_v_self->_eval_lock);
 
     /* "src/lxml/xpath.pxi":190
@@ -177733,6 +189141,11 @@ static void __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(struct __pyx_obj_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._XPathEvaluatorBase._unlock", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -177748,6 +189161,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_entries = 0;
   PyObject *__pyx_v_message = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -177758,6 +189172,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_build_parse_error", 0);
+  __Pyx_TraceCall("_build_parse_error", __pyx_f[18], 193, 0, __PYX_ERR(18, 193, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":195
  *     cdef _build_parse_error(self):
@@ -177766,6 +189181,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *         if entries:
  *             message = entries._buildExceptionMessage(None)
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(18, 195, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s_filter_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 195, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -177822,6 +189238,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *             message = entries._buildExceptionMessage(None)
  *             if message is not None:
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(18, 196, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(18, 196, __pyx_L1_error)
   if (__pyx_t_5) {
 
@@ -177832,6 +189249,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *             if message is not None:
  *                 return XPathSyntaxError(message, self._error_log)
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(18, 197, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(__pyx_v_entries, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 197, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_message = __pyx_t_1;
@@ -177844,6 +189262,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *                 return XPathSyntaxError(message, self._error_log)
  *         return XPathSyntaxError(
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(18, 198, __pyx_L1_error))
     __pyx_t_5 = (__pyx_v_message != Py_None);
     __pyx_t_6 = (__pyx_t_5 != 0);
     if (__pyx_t_6) {
@@ -177855,6 +189274,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *         return XPathSyntaxError(
  *             self._error_log._buildExceptionMessage(u"Error in xpath expression"),
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(18, 199, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XPathSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 199, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -177932,6 +189352,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *             self._error_log._buildExceptionMessage(u"Error in xpath expression"),
  *             self._error_log)
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(18, 200, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_XPathSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 200, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -177943,6 +189364,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  *             self._error_log)
  * 
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(18, 201, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Error_in_xpath_expression); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 201, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
@@ -177953,6 +189375,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
  * 
  *     cdef _build_eval_error(self):
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(18, 202, __pyx_L1_error))
   __pyx_t_4 = NULL;
   __pyx_t_7 = 0;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -178025,6 +189448,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_parse_error(s
   __Pyx_XDECREF((PyObject *)__pyx_v_entries);
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -178041,6 +189465,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
   struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_entries = 0;
   PyObject *__pyx_v_message = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -178049,6 +189474,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
   int __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_build_eval_error", 0);
+  __Pyx_TraceCall("_build_eval_error", __pyx_f[18], 204, 0, __PYX_ERR(18, 204, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":206
  *     cdef _build_eval_error(self):
@@ -178057,6 +189483,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *         if not entries:
  *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(18, 206, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s_filter_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 206, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -178113,6 +189540,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
  *         if entries:
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(18, 207, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(18, 207, __pyx_L1_error)
   __pyx_t_6 = ((!__pyx_t_5) != 0);
   if (__pyx_t_6) {
@@ -178124,6 +189552,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *         if entries:
  *             message = entries._buildExceptionMessage(None)
  */
+    __Pyx_TraceLine(208,0,__PYX_ERR(18, 208, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s_filter_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 208, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = NULL;
@@ -178189,6 +189618,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             message = entries._buildExceptionMessage(None)
  *             if message is not None:
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(18, 209, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(18, 209, __pyx_L1_error)
   if (__pyx_t_6) {
 
@@ -178199,6 +189629,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             if message is not None:
  *                 return XPathEvalError(message, self._error_log)
  */
+    __Pyx_TraceLine(210,0,__PYX_ERR(18, 210, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(__pyx_v_entries, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 210, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_message = __pyx_t_1;
@@ -178211,6 +189642,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *                 return XPathEvalError(message, self._error_log)
  *         return XPathEvalError(
  */
+    __Pyx_TraceLine(211,0,__PYX_ERR(18, 211, __pyx_L1_error))
     __pyx_t_6 = (__pyx_v_message != Py_None);
     __pyx_t_5 = (__pyx_t_6 != 0);
     if (__pyx_t_5) {
@@ -178222,6 +189654,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *         return XPathEvalError(
  *             self._error_log._buildExceptionMessage(u"Error in xpath expression"),
  */
+      __Pyx_TraceLine(212,0,__PYX_ERR(18, 212, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 212, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -178263,6 +189696,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             self._error_log._buildExceptionMessage(u"Error in xpath expression"),
  *             self._error_log)
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(18, 213, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "src/lxml/xpath.pxi":214
@@ -178272,6 +189706,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             self._error_log)
  * 
  */
+  __Pyx_TraceLine(214,0,__PYX_ERR(18, 214, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Error_in_xpath_expression); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 214, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -178282,6 +189717,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
  *             self._error_log._buildExceptionMessage(u"Error in xpath expression"),
  *             self._error_log)
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(18, 213, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 213, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -178317,6 +189753,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
   __Pyx_XDECREF((PyObject *)__pyx_v_entries);
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -178332,6 +189769,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__build_eval_error(st
 static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, xmlXPathObject *__pyx_v_xpathObj, struct LxmlDocument *__pyx_v_doc) {
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -178347,6 +189785,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_handle_result", 0);
+  __Pyx_TraceCall("_handle_result", __pyx_f[18], 217, 0, __PYX_ERR(18, 217, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":218
  * 
@@ -178355,6 +189794,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             if xpathObj is not NULL:
  *                 _freeXPathObject(xpathObj)
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(18, 218, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_context->__pyx_base._exc->__pyx_vtab)->_has_raised(__pyx_v_self->_context->__pyx_base._exc); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 218, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -178366,6 +189806,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *                 _freeXPathObject(xpathObj)
  *                 xpathObj = NULL
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(18, 219, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_xpathObj != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -178376,6 +189817,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *                 xpathObj = NULL
  *             self._context._release_temp_refs()
  */
+      __Pyx_TraceLine(220,0,__PYX_ERR(18, 220, __pyx_L1_error))
       __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_xpathObj);
 
       /* "src/lxml/xpath.pxi":221
@@ -178385,6 +189827,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             self._context._release_temp_refs()
  *             self._context._exc._raise_if_stored()
  */
+      __Pyx_TraceLine(221,0,__PYX_ERR(18, 221, __pyx_L1_error))
       __pyx_v_xpathObj = NULL;
 
       /* "src/lxml/xpath.pxi":219
@@ -178403,6 +189846,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             self._context._exc._raise_if_stored()
  * 
  */
+    __Pyx_TraceLine(222,0,__PYX_ERR(18, 222, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 222, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -178414,6 +189858,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  * 
  *         if xpathObj is NULL:
  */
+    __Pyx_TraceLine(223,0,__PYX_ERR(18, 223, __pyx_L1_error))
     __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_context->__pyx_base._exc->__pyx_vtab)->_raise_if_stored(__pyx_v_self->_context->__pyx_base._exc); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(18, 223, __pyx_L1_error)
 
     /* "src/lxml/xpath.pxi":218
@@ -178432,6 +189877,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             self._context._release_temp_refs()
  *             raise self._build_eval_error()
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(18, 225, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_xpathObj == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -178442,6 +189888,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             raise self._build_eval_error()
  * 
  */
+    __Pyx_TraceLine(226,0,__PYX_ERR(18, 226, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 226, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -178453,6 +189900,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  * 
  *         try:
  */
+    __Pyx_TraceLine(227,0,__PYX_ERR(18, 227, __pyx_L1_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self->__pyx_vtab)->_build_eval_error(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 227, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
@@ -178475,6 +189923,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             result = _unwrapXPathObject(xpathObj, doc, self._context)
  *         finally:
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(18, 229, __pyx_L7_error))
   /*try:*/ {
 
     /* "src/lxml/xpath.pxi":230
@@ -178484,6 +189933,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *         finally:
  *             _freeXPathObject(xpathObj)
  */
+    __Pyx_TraceLine(230,0,__PYX_ERR(18, 230, __pyx_L7_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_context);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_5 = __pyx_f_4lxml_5etree__unwrapXPathObject(__pyx_v_xpathObj, __pyx_v_doc, ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 230, __pyx_L7_error)
@@ -178500,6 +189950,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             self._context._release_temp_refs()
  * 
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(18, 232, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_xpathObj);
@@ -178511,6 +189962,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  * 
  *         return result
  */
+      __Pyx_TraceLine(233,0,__PYX_ERR(18, 233, __pyx_L1_error))
       __pyx_t_5 = __pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 233, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -178541,6 +189993,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  *             self._context._release_temp_refs()
  * 
  */
+        __Pyx_TraceLine(232,0,__PYX_ERR(18, 232, __pyx_L10_error))
         __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_xpathObj);
 
         /* "src/lxml/xpath.pxi":233
@@ -178550,6 +190003,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  * 
  *         return result
  */
+        __Pyx_TraceLine(233,0,__PYX_ERR(18, 233, __pyx_L10_error))
         __pyx_t_5 = __pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 233, __pyx_L10_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -178590,6 +190044,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
  * 
  * 
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(18, 235, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -178612,6 +190067,7 @@ static PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struc
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -178718,6 +190174,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
   xmlXPathContext *__pyx_v_xpathCtxt;
   struct LxmlDocument *__pyx_v_doc = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -178726,6 +190183,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 252, 0, __PYX_ERR(18, 252, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":257
  *         cdef int ns_register_status
@@ -178734,6 +190192,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         _assertValidDoc(element._doc)
  *         self._element = element
  */
+  __Pyx_TraceLine(257,0,__PYX_ERR(18, 257, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 257, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":258
@@ -178743,6 +190202,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         self._element = element
  *         doc = element._doc
  */
+  __Pyx_TraceLine(258,0,__PYX_ERR(18, 258, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_element->_doc);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_2)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 258, __pyx_L1_error)
@@ -178755,6 +190215,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         doc = element._doc
  *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(18, 259, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
   __Pyx_GOTREF(__pyx_v_self->_element);
@@ -178768,6 +190229,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
  *                                      regexp, smart_strings)
  */
+  __Pyx_TraceLine(260,0,__PYX_ERR(18, 260, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_element->_doc);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
@@ -178780,6 +190242,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *                                      regexp, smart_strings)
  *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(18, 261, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__XPathEvaluatorBase), __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
@@ -178790,6 +190253,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
  *         if xpathCtxt is NULL:
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(18, 262, __pyx_L1_error))
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -178853,6 +190317,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         if xpathCtxt is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(263,0,__PYX_ERR(18, 263, __pyx_L1_error))
   __pyx_v_xpathCtxt = xmlXPathNewContext(__pyx_v_doc->_c_doc);
 
   /* "src/lxml/xpath.pxi":264
@@ -178862,6 +190327,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *             raise MemoryError()
  *         self.set_context(xpathCtxt)
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(18, 264, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_xpathCtxt == NULL) != 0);
   if (unlikely(__pyx_t_6)) {
 
@@ -178872,6 +190338,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  *         self.set_context(xpathCtxt)
  * 
  */
+    __Pyx_TraceLine(265,0,__PYX_ERR(18, 265, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(18, 265, __pyx_L1_error)
 
     /* "src/lxml/xpath.pxi":264
@@ -178890,6 +190357,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
  * 
  *     def register_namespace(self, prefix, uri):
  */
+  __Pyx_TraceLine(266,0,__PYX_ERR(18, 266, __pyx_L1_error))
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_context(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -178914,6 +190382,7 @@ static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(struct __pyx_o
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -178991,9 +190460,12 @@ static PyObject *__pyx_pw_4lxml_5etree_21XPathElementEvaluator_3register_namespa
 
 static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_2register_namespace(struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *__pyx_v_self, PyObject *__pyx_v_prefix, PyObject *__pyx_v_uri) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__343)
   __Pyx_RefNannySetupContext("register_namespace", 0);
+  __Pyx_TraceCall("register_namespace", __pyx_f[18], 268, 0, __PYX_ERR(18, 268, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":271
  *         u"""Register a namespace with the XPath context.
@@ -179002,6 +190474,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_2register_namespa
  *         self._context.addNamespace(prefix, uri)
  * 
  */
+  __Pyx_TraceLine(271,0,__PYX_ERR(18, 271, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base._xpathCtxt != NULL) != 0))) {
@@ -179018,6 +190491,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_2register_namespa
  * 
  *     def register_namespaces(self, namespaces):
  */
+  __Pyx_TraceLine(272,0,__PYX_ERR(18, 272, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base._context->__pyx_base.__pyx_vtab)->__pyx_base.addNamespace(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_base._context), __pyx_v_prefix, __pyx_v_uri); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 272, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179039,6 +190513,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_2register_namespa
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -179070,6 +190545,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
   PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_v_uri = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -179079,7 +190555,9 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__344)
   __Pyx_RefNannySetupContext("register_namespaces", 0);
+  __Pyx_TraceCall("register_namespaces", __pyx_f[18], 274, 0, __PYX_ERR(18, 274, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":277
  *         u"""Register a prefix -> uri dict.
@@ -179088,6 +190566,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
  *         for prefix, uri in namespaces.items():
  *             self._context.addNamespace(prefix, uri)
  */
+  __Pyx_TraceLine(277,0,__PYX_ERR(18, 277, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base._xpathCtxt != NULL) != 0))) {
@@ -179104,6 +190583,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
  *             self._context.addNamespace(prefix, uri)
  * 
  */
+  __Pyx_TraceLine(278,0,__PYX_ERR(18, 278, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_namespaces, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 278, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -179222,6 +190702,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
  * 
  *     def __call__(self, _path, **_variables):
  */
+    __Pyx_TraceLine(279,0,__PYX_ERR(18, 279, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base._context->__pyx_base.__pyx_vtab)->__pyx_base.addNamespace(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_base._context), __pyx_v_prefix, __pyx_v_uri); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 279, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179233,6 +190714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
  *             self._context.addNamespace(prefix, uri)
  * 
  */
+    __Pyx_TraceLine(278,0,__PYX_ERR(18, 278, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -179259,6 +190741,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_4register_namespa
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XDECREF(__pyx_v_uri);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -179337,6 +190820,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
   const xmlChar *__pyx_v_c_path;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -179350,6 +190834,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[18], 281, 0, __PYX_ERR(18, 281, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":294
  *         cdef xpath.xmlXPathObject*  xpathObj
@@ -179358,6 +190843,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *         path = _utf8(_path)
  *         doc = self._element._doc
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(18, 294, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base._xpathCtxt != NULL) != 0))) {
@@ -179374,6 +190860,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *         doc = self._element._doc
  * 
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(18, 295, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v__path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 295, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_path = ((PyObject*)__pyx_t_1);
@@ -179386,6 +190873,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  * 
  *         self._lock()
  */
+  __Pyx_TraceLine(296,0,__PYX_ERR(18, 296, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_element->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -179398,6 +190886,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *         self._xpathCtxt.node = self._element._c_node
  *         try:
  */
+  __Pyx_TraceLine(298,0,__PYX_ERR(18, 298, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 298, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":299
@@ -179407,6 +190896,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *         try:
  *             self._context.register_context(doc)
  */
+  __Pyx_TraceLine(299,0,__PYX_ERR(18, 299, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_element->_c_node;
   __pyx_v_self->__pyx_base._xpathCtxt->node = __pyx_t_3;
 
@@ -179417,6 +190907,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             self._context.register_context(doc)
  *             self._context.registerVariables(_variables)
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(18, 300, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/xpath.pxi":301
@@ -179426,6 +190917,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             self._context.registerVariables(_variables)
  *             c_path = _xcstr(path)
  */
+    __Pyx_TraceLine(301,0,__PYX_ERR(18, 301, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_register_context(__pyx_v_self->__pyx_base._context, __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 301, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179437,6 +190929,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             c_path = _xcstr(path)
  *             with nogil:
  */
+    __Pyx_TraceLine(302,0,__PYX_ERR(18, 302, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_registerVariables(__pyx_v_self->__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 302, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179448,6 +190941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             with nogil:
  *                 xpathObj = xpath.xmlXPathEvalExpression(
  */
+    __Pyx_TraceLine(303,0,__PYX_ERR(18, 303, __pyx_L4_error))
     __pyx_v_c_path = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_path);
 
     /* "src/lxml/xpath.pxi":304
@@ -179457,6 +190951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *                 xpathObj = xpath.xmlXPathEvalExpression(
  *                     c_path, self._xpathCtxt)
  */
+    __Pyx_TraceLine(304,0,__PYX_ERR(18, 304, __pyx_L4_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -179472,6 +190967,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *                     c_path, self._xpathCtxt)
  *             result = self._handle_result(xpathObj, doc)
  */
+          __Pyx_TraceLine(305,1,__PYX_ERR(18, 305, __pyx_L7_error))
           __pyx_v_xpathObj = xmlXPathEvalExpression(__pyx_v_c_path, __pyx_v_self->__pyx_base._xpathCtxt);
         }
 
@@ -179482,6 +190978,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *                 xpathObj = xpath.xmlXPathEvalExpression(
  *                     c_path, self._xpathCtxt)
  */
+        __Pyx_TraceLine(304,1,__PYX_ERR(18, 304, __pyx_L4_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -179490,6 +190987,13 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
             #endif
             goto __pyx_L8;
           }
+          __pyx_L7_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L4_error;
+          }
           __pyx_L8:;
         }
     }
@@ -179501,6 +191005,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *         finally:
  *             self._context.unregister_context()
  */
+    __Pyx_TraceLine(307,0,__PYX_ERR(18, 307, __pyx_L4_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 307, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
@@ -179514,6 +191019,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             self._unlock()
  * 
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(18, 309, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 309, __pyx_L1_error)
@@ -179527,6 +191033,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  * 
  *         return result
  */
+      __Pyx_TraceLine(310,0,__PYX_ERR(18, 310, __pyx_L1_error))
       __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
       goto __pyx_L5;
     }
@@ -179554,6 +191061,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  *             self._unlock()
  * 
  */
+        __Pyx_TraceLine(309,0,__PYX_ERR(18, 309, __pyx_L10_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 309, __pyx_L10_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179565,6 +191073,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  * 
  *         return result
  */
+        __Pyx_TraceLine(310,0,__PYX_ERR(18, 310, __pyx_L10_error))
         __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
       }
       if (PY_MAJOR_VERSION >= 3) {
@@ -179603,6 +191112,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
  * 
  * 
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(18, 312, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -179626,6 +191136,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_6__call__(struct
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -179730,12 +191241,14 @@ static int __pyx_pw_4lxml_5etree_22XPathDocumentEvaluator_1__init__(PyObject *__
 
 static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *__pyx_v_self, struct LxmlElementTree *__pyx_v_etree, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_regexp, PyObject *__pyx_v_smart_strings) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 325, 0, __PYX_ERR(18, 325, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":327
  *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
@@ -179744,6 +191257,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
  *             self, etree._context_node, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp,
  */
+  __Pyx_TraceLine(327,0,__PYX_ERR(18, 327, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XPathElementEvaluator), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -179754,6 +191268,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
  *             extensions=extensions, regexp=regexp,
  *             smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(328,0,__PYX_ERR(18, 328, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
@@ -179773,6 +191288,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
  *             smart_strings=smart_strings)
  * 
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(18, 329, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(18, 328, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_regexp, __pyx_v_regexp) < 0) __PYX_ERR(18, 328, __pyx_L1_error)
 
@@ -179783,6 +191299,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
  * 
  *     def __call__(self, _path, **_variables):
  */
+  __Pyx_TraceLine(330,0,__PYX_ERR(18, 330, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(18, 328, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":327
@@ -179792,6 +191309,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
  *             self, etree._context_node, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp,
  */
+  __Pyx_TraceLine(327,0,__PYX_ERR(18, 327, __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(18, 327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179818,6 +191336,7 @@ static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(struct __pyx_
   __Pyx_AddTraceback("lxml.etree.XPathDocumentEvaluator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -179897,6 +191416,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
   const xmlChar *__pyx_v_c_path;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -179911,6 +191431,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
   PyObject *__pyx_t_11 = NULL;
   char const *__pyx_t_12;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[18], 332, 0, __PYX_ERR(18, 332, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":343
  *         cdef xmlDoc* c_doc
@@ -179919,6 +191440,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *         path = _utf8(_path)
  *         doc = self._element._doc
  */
+  __Pyx_TraceLine(343,0,__PYX_ERR(18, 343, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base.__pyx_base._xpathCtxt != NULL) != 0))) {
@@ -179935,6 +191457,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *         doc = self._element._doc
  * 
  */
+  __Pyx_TraceLine(344,0,__PYX_ERR(18, 344, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v__path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 344, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_path = ((PyObject*)__pyx_t_1);
@@ -179947,6 +191470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  * 
  *         self._lock()
  */
+  __Pyx_TraceLine(345,0,__PYX_ERR(18, 345, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base._element->_doc);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -179959,6 +191483,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *         try:
  *             self._context.register_context(doc)
  */
+  __Pyx_TraceLine(347,0,__PYX_ERR(18, 347, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 347, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":348
@@ -179968,6 +191493,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *             self._context.register_context(doc)
  *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
  */
+  __Pyx_TraceLine(348,0,__PYX_ERR(18, 348, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/xpath.pxi":349
@@ -179977,6 +191503,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
  *             try:
  */
+    __Pyx_TraceLine(349,0,__PYX_ERR(18, 349, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_register_context(__pyx_v_self->__pyx_base.__pyx_base._context, __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 349, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -179988,6 +191515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *             try:
  *                 self._context.registerVariables(_variables)
  */
+    __Pyx_TraceLine(350,0,__PYX_ERR(18, 350, __pyx_L4_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_self->__pyx_base._element->_c_node); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(18, 350, __pyx_L4_error)
     __pyx_v_c_doc = __pyx_t_3;
 
@@ -179998,6 +191526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                 self._context.registerVariables(_variables)
  *                 c_path = _xcstr(path)
  */
+    __Pyx_TraceLine(351,0,__PYX_ERR(18, 351, __pyx_L7_error))
     /*try:*/ {
 
       /* "src/lxml/xpath.pxi":352
@@ -180007,6 +191536,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                 c_path = _xcstr(path)
  *                 with nogil:
  */
+      __Pyx_TraceLine(352,0,__PYX_ERR(18, 352, __pyx_L7_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_registerVariables(__pyx_v_self->__pyx_base.__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 352, __pyx_L7_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -180018,6 +191548,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                 with nogil:
  *                     self._xpathCtxt.doc  = c_doc
  */
+      __Pyx_TraceLine(353,0,__PYX_ERR(18, 353, __pyx_L7_error))
       __pyx_v_c_path = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_path);
 
       /* "src/lxml/xpath.pxi":354
@@ -180027,6 +191558,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                     self._xpathCtxt.doc  = c_doc
  *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
  */
+      __Pyx_TraceLine(354,0,__PYX_ERR(18, 354, __pyx_L7_error))
       {
           #ifdef WITH_THREAD
           PyThreadState *_save;
@@ -180042,6 +191574,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
  *                     xpathObj = xpath.xmlXPathEvalExpression(
  */
+            __Pyx_TraceLine(355,1,__PYX_ERR(18, 355, __pyx_L10_error))
             __pyx_v_self->__pyx_base.__pyx_base._xpathCtxt->doc = __pyx_v_c_doc;
 
             /* "src/lxml/xpath.pxi":356
@@ -180051,6 +191584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                     xpathObj = xpath.xmlXPathEvalExpression(
  *                         c_path, self._xpathCtxt)
  */
+            __Pyx_TraceLine(356,1,__PYX_ERR(18, 356, __pyx_L10_error))
             __pyx_v_self->__pyx_base.__pyx_base._xpathCtxt->node = xmlDocGetRootElement(__pyx_v_c_doc);
 
             /* "src/lxml/xpath.pxi":357
@@ -180060,6 +191594,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                         c_path, self._xpathCtxt)
  *                 result = self._handle_result(xpathObj, doc)
  */
+            __Pyx_TraceLine(357,1,__PYX_ERR(18, 357, __pyx_L10_error))
             __pyx_v_xpathObj = xmlXPathEvalExpression(__pyx_v_c_path, __pyx_v_self->__pyx_base.__pyx_base._xpathCtxt);
           }
 
@@ -180070,6 +191605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                     self._xpathCtxt.doc  = c_doc
  *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
  */
+          __Pyx_TraceLine(354,1,__PYX_ERR(18, 354, __pyx_L7_error))
           /*finally:*/ {
             /*normal exit:*/{
               #ifdef WITH_THREAD
@@ -180078,6 +191614,13 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
               #endif
               goto __pyx_L11;
             }
+            __pyx_L10_error: {
+              #ifdef WITH_THREAD
+              __Pyx_FastGIL_Forget();
+              Py_BLOCK_THREADS
+              #endif
+              goto __pyx_L7_error;
+            }
             __pyx_L11:;
           }
       }
@@ -180089,6 +191632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *             finally:
  *                 _destroyFakeDoc(doc._c_doc, c_doc)
  */
+      __Pyx_TraceLine(359,0,__PYX_ERR(18, 359, __pyx_L7_error))
       __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 359, __pyx_L7_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_result = __pyx_t_1;
@@ -180102,6 +191646,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                 self._context.unregister_context()
  *         finally:
  */
+    __Pyx_TraceLine(361,0,__PYX_ERR(18, 361, __pyx_L4_error))
     /*finally:*/ {
       /*normal exit:*/{
         __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
@@ -180113,6 +191658,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *         finally:
  *             self._unlock()
  */
+        __Pyx_TraceLine(362,0,__PYX_ERR(18, 362, __pyx_L4_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base.__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 362, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -180142,6 +191688,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *                 self._context.unregister_context()
  *         finally:
  */
+          __Pyx_TraceLine(361,0,__PYX_ERR(18, 361, __pyx_L13_error))
           __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
 
           /* "src/lxml/xpath.pxi":362
@@ -180151,6 +191698,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  *         finally:
  *             self._unlock()
  */
+          __Pyx_TraceLine(362,0,__PYX_ERR(18, 362, __pyx_L13_error))
           __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base.__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 362, __pyx_L13_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -180192,6 +191740,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  * 
  *         return result
  */
+  __Pyx_TraceLine(364,0,__PYX_ERR(18, 364, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
@@ -180239,6 +191788,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
  * 
  * 
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(18, 366, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -180262,6 +191812,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator_2__call__(struct
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -180363,13 +191914,16 @@ static PyObject *__pyx_pw_4lxml_5etree_65XPathEvaluator(PyObject *__pyx_self, Py
 
 static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_etree_or_element, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_regexp, PyObject *__pyx_v_smart_strings) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__345)
   __Pyx_RefNannySetupContext("XPathEvaluator", 0);
+  __Pyx_TraceCall("XPathEvaluator", __pyx_f[18], 369, 0, __PYX_ERR(18, 369, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":384
  *     you pass ``smart_strings=False``.
@@ -180378,6 +191932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *         return XPathDocumentEvaluator(
  *             etree_or_element, namespaces=namespaces,
  */
+  __Pyx_TraceLine(384,0,__PYX_ERR(18, 384, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_etree_or_element, __pyx_ptype_4lxml_5etree__ElementTree); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -180389,6 +191944,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             etree_or_element, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  */
+    __Pyx_TraceLine(385,0,__PYX_ERR(18, 385, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "src/lxml/xpath.pxi":386
@@ -180398,6 +191954,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  *     else:
  */
+    __Pyx_TraceLine(386,0,__PYX_ERR(18, 386, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_etree_or_element);
@@ -180414,6 +191971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *     else:
  *         return XPathElementEvaluator(
  */
+    __Pyx_TraceLine(387,0,__PYX_ERR(18, 387, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(18, 386, __pyx_L1_error)
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_regexp, __pyx_v_regexp) < 0) __PYX_ERR(18, 386, __pyx_L1_error)
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(18, 386, __pyx_L1_error)
@@ -180425,6 +191983,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             etree_or_element, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  */
+    __Pyx_TraceLine(385,0,__PYX_ERR(18, 385, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPathDocumentEvaluator), __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -180449,6 +192008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             etree_or_element, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(389,0,__PYX_ERR(18, 389, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
 
@@ -180459,6 +192019,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  * 
  */
+    __Pyx_TraceLine(390,0,__PYX_ERR(18, 390, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 389, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_v_etree_or_element);
@@ -180475,6 +192036,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  * 
  * 
  */
+    __Pyx_TraceLine(391,0,__PYX_ERR(18, 391, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(18, 390, __pyx_L1_error)
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_regexp, __pyx_v_regexp) < 0) __PYX_ERR(18, 390, __pyx_L1_error)
     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(18, 390, __pyx_L1_error)
@@ -180486,6 +192048,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
  *             etree_or_element, namespaces=namespaces,
  *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
  */
+    __Pyx_TraceLine(389,0,__PYX_ERR(18, 389, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPathElementEvaluator), __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 389, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -180512,6 +192075,7 @@ static PyObject *__pyx_pf_4lxml_5etree_64XPathEvaluator(CYTHON_UNUSED PyObject *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -180542,8 +192106,10 @@ static int __pyx_pw_4lxml_5etree_5XPath_1__cinit__(PyObject *__pyx_v_self, PyObj
 
 static int __pyx_pf_4lxml_5etree_5XPath___cinit__(struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[18], 408, 0, __PYX_ERR(18, 408, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":409
  *     cdef bytes _path
@@ -180552,6 +192118,7 @@ static int __pyx_pf_4lxml_5etree_5XPath___cinit__(struct __pyx_obj_4lxml_5etree_
  * 
  *     def __init__(self, path, *, namespaces=None, extensions=None,
  */
+  __Pyx_TraceLine(409,0,__PYX_ERR(18, 409, __pyx_L1_error))
   __pyx_v_self->_xpath = NULL;
 
   /* "src/lxml/xpath.pxi":408
@@ -180564,6 +192131,12 @@ static int __pyx_pf_4lxml_5etree_5XPath___cinit__(struct __pyx_obj_4lxml_5etree_
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XPath.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -180664,6 +192237,7 @@ static int __pyx_pw_4lxml_5etree_5XPath_3__init__(PyObject *__pyx_v_self, PyObje
 static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_namespaces, PyObject *__pyx_v_extensions, PyObject *__pyx_v_regexp, PyObject *__pyx_v_smart_strings) {
   xmlXPathContext *__pyx_v_xpathCtxt;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -180672,6 +192246,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 411, 0, __PYX_ERR(18, 411, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":414
  *                  regexp=True, smart_strings=True):
@@ -180680,6 +192255,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *                                      regexp, smart_strings)
  *         self._path = _utf8(path)
  */
+  __Pyx_TraceLine(414,0,__PYX_ERR(18, 414, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__XPathEvaluatorBase), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 414, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -180690,6 +192266,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         self._path = _utf8(path)
  *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
  */
+  __Pyx_TraceLine(415,0,__PYX_ERR(18, 415, __pyx_L1_error))
   __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -180753,6 +192330,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
  *         if xpathCtxt is NULL:
  */
+  __Pyx_TraceLine(416,0,__PYX_ERR(18, 416, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 416, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -180768,6 +192346,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         if xpathCtxt is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(18, 417, __pyx_L1_error))
   __pyx_v_xpathCtxt = xmlXPathNewContext(NULL);
 
   /* "src/lxml/xpath.pxi":418
@@ -180777,6 +192356,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *             raise MemoryError()
  *         self.set_context(xpathCtxt)
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(18, 418, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_xpathCtxt == NULL) != 0);
   if (unlikely(__pyx_t_6)) {
 
@@ -180787,6 +192367,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         self.set_context(xpathCtxt)
  *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _xcstr(self._path))
  */
+    __Pyx_TraceLine(419,0,__PYX_ERR(18, 419, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(18, 419, __pyx_L1_error)
 
     /* "src/lxml/xpath.pxi":418
@@ -180805,6 +192386,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _xcstr(self._path))
  *         if self._xpath is NULL:
  */
+  __Pyx_TraceLine(420,0,__PYX_ERR(18, 420, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.set_context(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 420, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -180816,6 +192398,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *         if self._xpath is NULL:
  *             raise self._build_parse_error()
  */
+  __Pyx_TraceLine(421,0,__PYX_ERR(18, 421, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_path;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_self->_xpath = xmlXPathCtxtCompile(__pyx_v_xpathCtxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_t_1));
@@ -180828,6 +192411,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  *             raise self._build_parse_error()
  * 
  */
+  __Pyx_TraceLine(422,0,__PYX_ERR(18, 422, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_xpath == NULL) != 0);
   if (unlikely(__pyx_t_6)) {
 
@@ -180838,6 +192422,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
  * 
  *     def __call__(self, _etree_or_element, **_variables):
  */
+    __Pyx_TraceLine(423,0,__PYX_ERR(18, 423, __pyx_L1_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._build_parse_error(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
@@ -180872,6 +192457,7 @@ static int __pyx_pf_4lxml_5etree_5XPath_2__init__(struct __pyx_obj_4lxml_5etree_
   __Pyx_AddTraceback("lxml.etree.XPath.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -180949,6 +192535,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
   struct LxmlElement *__pyx_v_element = 0;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -180963,6 +192550,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[18], 425, 0, __PYX_ERR(18, 425, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":431
  *         cdef _Element element
@@ -180971,6 +192559,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         document = _documentOrRaise(_etree_or_element)
  *         element  = _rootNodeOrRaise(_etree_or_element)
  */
+  __Pyx_TraceLine(431,0,__PYX_ERR(18, 431, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->__pyx_base._xpathCtxt != NULL) != 0))) {
@@ -180987,6 +192576,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         element  = _rootNodeOrRaise(_etree_or_element)
  * 
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(18, 432, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v__etree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_document = ((struct LxmlDocument *)__pyx_t_1);
@@ -180999,6 +192589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  * 
  *         self._lock()
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(18, 433, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v__etree_or_element)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 433, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -181011,6 +192602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         self._xpathCtxt.doc  = document._c_doc
  *         self._xpathCtxt.node = element._c_node
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(18, 435, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 435, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":436
@@ -181020,6 +192612,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         self._xpathCtxt.node = element._c_node
  * 
  */
+  __Pyx_TraceLine(436,0,__PYX_ERR(18, 436, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_document->_c_doc;
   __pyx_v_self->__pyx_base._xpathCtxt->doc = __pyx_t_3;
 
@@ -181030,6 +192623,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  * 
  *         try:
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(18, 437, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_element->_c_node;
   __pyx_v_self->__pyx_base._xpathCtxt->node = __pyx_t_4;
 
@@ -181040,6 +192634,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             self._context.register_context(document)
  *             self._context.registerVariables(_variables)
  */
+  __Pyx_TraceLine(439,0,__PYX_ERR(18, 439, __pyx_L4_error))
   /*try:*/ {
 
     /* "src/lxml/xpath.pxi":440
@@ -181049,6 +192644,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             self._context.registerVariables(_variables)
  *             with nogil:
  */
+    __Pyx_TraceLine(440,0,__PYX_ERR(18, 440, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_register_context(__pyx_v_self->__pyx_base._context, __pyx_v_document); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 440, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -181060,6 +192656,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             with nogil:
  *                 xpathObj = xpath.xmlXPathCompiledEval(
  */
+    __Pyx_TraceLine(441,0,__PYX_ERR(18, 441, __pyx_L4_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_registerVariables(__pyx_v_self->__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 441, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -181071,6 +192668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *                 xpathObj = xpath.xmlXPathCompiledEval(
  *                     self._xpath, self._xpathCtxt)
  */
+    __Pyx_TraceLine(442,0,__PYX_ERR(18, 442, __pyx_L4_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -181086,6 +192684,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *                     self._xpath, self._xpathCtxt)
  *             result = self._handle_result(xpathObj, document)
  */
+          __Pyx_TraceLine(443,1,__PYX_ERR(18, 443, __pyx_L7_error))
           __pyx_v_xpathObj = xmlXPathCompiledEval(__pyx_v_self->_xpath, __pyx_v_self->__pyx_base._xpathCtxt);
         }
 
@@ -181096,6 +192695,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *                 xpathObj = xpath.xmlXPathCompiledEval(
  *                     self._xpath, self._xpathCtxt)
  */
+        __Pyx_TraceLine(442,1,__PYX_ERR(18, 442, __pyx_L4_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -181104,6 +192704,13 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
             #endif
             goto __pyx_L8;
           }
+          __pyx_L7_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L4_error;
+          }
           __pyx_L8:;
         }
     }
@@ -181115,6 +192722,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         finally:
  *             self._context.unregister_context()
  */
+    __Pyx_TraceLine(445,0,__PYX_ERR(18, 445, __pyx_L4_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_document); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 445, __pyx_L4_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_result = __pyx_t_1;
@@ -181128,6 +192736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             self._unlock()
  *         return result
  */
+  __Pyx_TraceLine(447,0,__PYX_ERR(18, 447, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 447, __pyx_L1_error)
@@ -181141,6 +192750,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         return result
  * 
  */
+      __Pyx_TraceLine(448,0,__PYX_ERR(18, 448, __pyx_L1_error))
       __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
       goto __pyx_L5;
     }
@@ -181168,6 +192778,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             self._unlock()
  *         return result
  */
+        __Pyx_TraceLine(447,0,__PYX_ERR(18, 447, __pyx_L10_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree_13_XPathContext_unregister_context(__pyx_v_self->__pyx_base._context); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 447, __pyx_L10_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -181179,6 +192790,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *         return result
  * 
  */
+        __Pyx_TraceLine(448,0,__PYX_ERR(18, 448, __pyx_L10_error))
         __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
       }
       if (PY_MAJOR_VERSION >= 3) {
@@ -181217,6 +192829,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  * 
  *     property path:
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(18, 449, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -181240,6 +192853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -181267,9 +192881,11 @@ static PyObject *__pyx_pw_4lxml_5etree_5XPath_4path_1__get__(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[18], 454, 0, __PYX_ERR(18, 454, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":455
  *         """
@@ -181278,6 +192894,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lx
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(455,0,__PYX_ERR(18, 455, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->_path == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
@@ -181304,6 +192921,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -181328,9 +192946,11 @@ static void __pyx_pw_4lxml_5etree_5XPath_7__dealloc__(PyObject *__pyx_v_self) {
 }
 
 static void __pyx_pf_4lxml_5etree_5XPath_6__dealloc__(struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[18], 457, 0, __PYX_ERR(18, 457, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":458
  * 
@@ -181339,6 +192959,7 @@ static void __pyx_pf_4lxml_5etree_5XPath_6__dealloc__(struct __pyx_obj_4lxml_5et
  *             xpath.xmlXPathFreeCompExpr(self._xpath)
  * 
  */
+  __Pyx_TraceLine(458,0,__PYX_ERR(18, 458, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_xpath != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -181349,6 +192970,7 @@ static void __pyx_pf_4lxml_5etree_5XPath_6__dealloc__(struct __pyx_obj_4lxml_5et
  * 
  *     def __repr__(self):
  */
+    __Pyx_TraceLine(459,0,__PYX_ERR(18, 459, __pyx_L1_error))
     xmlXPathFreeCompExpr(__pyx_v_self->_xpath);
 
     /* "src/lxml/xpath.pxi":458
@@ -181369,6 +192991,11 @@ static void __pyx_pf_4lxml_5etree_5XPath_6__dealloc__(struct __pyx_obj_4lxml_5et
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.XPath.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -181395,9 +193022,11 @@ static PyObject *__pyx_pw_4lxml_5etree_5XPath_9__repr__(PyObject *__pyx_v_self)
 
 static PyObject *__pyx_pf_4lxml_5etree_5XPath_8__repr__(struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[18], 461, 0, __PYX_ERR(18, 461, __pyx_L1_error));
 
   /* "src/lxml/xpath.pxi":462
  * 
@@ -181406,6 +193035,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_8__repr__(struct __pyx_obj_4lxml_5
  * 
  * 
  */
+  __Pyx_TraceLine(462,0,__PYX_ERR(18, 462, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 462, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -181428,6 +193058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_8__repr__(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -181525,6 +193156,7 @@ static int __pyx_pw_4lxml_5etree_7ETXPath_1__init__(PyObject *__pyx_v_self, PyOb
 static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree_ETXPath *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_extensions, PyObject *__pyx_v_regexp, PyObject *__pyx_v_smart_strings) {
   PyObject *__pyx_v_namespaces = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -181532,6 +193164,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
   PyObject *__pyx_t_4 = NULL;
   PyObject *(*__pyx_t_5)(PyObject *);
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[18], 479, 0, __PYX_ERR(18, 479, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "src/lxml/xpath.pxi":481
@@ -181541,6 +193174,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
  *         XPath.__init__(self, path, namespaces=namespaces,
  *                        extensions=extensions, regexp=regexp,
  */
+  __Pyx_TraceLine(481,0,__PYX_ERR(18, 481, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_ETXPath *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_nsextract_path(__pyx_v_self, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 481, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -181601,6 +193235,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
  *                        extensions=extensions, regexp=regexp,
  *                        smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(18, 482, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 482, __pyx_L1_error)
@@ -181622,6 +193257,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
  *                        smart_strings=smart_strings)
  * 
  */
+  __Pyx_TraceLine(483,0,__PYX_ERR(18, 483, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(18, 482, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_regexp, __pyx_v_regexp) < 0) __PYX_ERR(18, 482, __pyx_L1_error)
 
@@ -181632,6 +193268,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
  * 
  *     cdef _nsextract_path(self, path):
  */
+  __Pyx_TraceLine(484,0,__PYX_ERR(18, 484, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(18, 482, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":482
@@ -181641,6 +193278,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
  *                        extensions=extensions, regexp=regexp,
  *                        smart_strings=smart_strings)
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(18, 482, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -181669,6 +193307,7 @@ static int __pyx_pf_4lxml_5etree_7ETXPath___init__(struct __pyx_obj_4lxml_5etree
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_namespaces);
   __Pyx_XDECREF(__pyx_v_path);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -181692,6 +193331,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
   PyObject *__pyx_v_namespace = NULL;
   PyObject *__pyx_v_prefix_str = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -181705,6 +193345,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
   int __pyx_t_10;
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("_nsextract_path", 0);
+  __Pyx_TraceCall("_nsextract_path", __pyx_f[18], 486, 0, __PYX_ERR(18, 486, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_path);
 
   /* "src/lxml/xpath.pxi":488
@@ -181714,6 +193355,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         cdef list namespace_defs = []
  *         cdef int i
  */
+  __Pyx_TraceLine(488,0,__PYX_ERR(18, 488, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_namespaces = ((PyObject*)__pyx_t_1);
@@ -181726,6 +193368,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         cdef int i
  *         path_utf = _utf8(path)
  */
+  __Pyx_TraceLine(489,0,__PYX_ERR(18, 489, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 489, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_namespace_defs = ((PyObject*)__pyx_t_1);
@@ -181738,6 +193381,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         stripped_path = _replace_strings(b'', path_utf) # remove string literals
  *         i = 1
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(18, 491, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 491, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_path_utf = __pyx_t_1;
@@ -181750,6 +193394,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         i = 1
  *         for namespace_def in _find_namespaces(stripped_path):
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(18, 492, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree__replace_strings);
   __pyx_t_2 = __pyx_v_4lxml_5etree__replace_strings; __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
@@ -181765,7 +193410,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_b__16, __pyx_v_path_utf};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_b__23, __pyx_v_path_utf};
     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 492, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -181773,7 +193418,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_b__16, __pyx_v_path_utf};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_b__23, __pyx_v_path_utf};
     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 492, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -181785,9 +193430,9 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_b__16);
-    __Pyx_GIVEREF(__pyx_kp_b__16);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_b__16);
+    __Pyx_INCREF(__pyx_kp_b__23);
+    __Pyx_GIVEREF(__pyx_kp_b__23);
+    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_b__23);
     __Pyx_INCREF(__pyx_v_path_utf);
     __Pyx_GIVEREF(__pyx_v_path_utf);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_path_utf);
@@ -181806,6 +193451,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         for namespace_def in _find_namespaces(stripped_path):
  *             if namespace_def not in namespace_defs:
  */
+  __Pyx_TraceLine(493,0,__PYX_ERR(18, 493, __pyx_L1_error))
   __pyx_v_i = 1;
 
   /* "src/lxml/xpath.pxi":494
@@ -181815,6 +193461,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *             if namespace_def not in namespace_defs:
  *                 prefix = python.PyBytes_FromFormat("__xpp%02d", i)
  */
+  __Pyx_TraceLine(494,0,__PYX_ERR(18, 494, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree__find_namespaces);
   __pyx_t_2 = __pyx_v_4lxml_5etree__find_namespaces; __pyx_t_5 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -181909,6 +193556,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 prefix = python.PyBytes_FromFormat("__xpp%02d", i)
  *                 i += 1
  */
+    __Pyx_TraceLine(495,0,__PYX_ERR(18, 495, __pyx_L1_error))
     __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_namespace_def, __pyx_v_namespace_defs, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(18, 495, __pyx_L1_error)
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
@@ -181920,6 +193568,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 i += 1
  *                 namespace_defs.append(namespace_def)
  */
+      __Pyx_TraceLine(496,0,__PYX_ERR(18, 496, __pyx_L1_error))
       __pyx_t_1 = PyBytes_FromFormat(((char *)"__xpp%02d"), __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 496, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_prefix, ((PyObject*)__pyx_t_1));
@@ -181932,6 +193581,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 namespace_defs.append(namespace_def)
  *                 namespace = namespace_def[1:-1] # remove '{}'
  */
+      __Pyx_TraceLine(497,0,__PYX_ERR(18, 497, __pyx_L1_error))
       __pyx_v_i = (__pyx_v_i + 1);
 
       /* "src/lxml/xpath.pxi":498
@@ -181941,6 +193591,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 namespace = namespace_def[1:-1] # remove '{}'
  *                 namespace = (<bytes>namespace).decode('utf8')
  */
+      __Pyx_TraceLine(498,0,__PYX_ERR(18, 498, __pyx_L1_error))
       __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_namespace_defs, __pyx_v_namespace_def); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(18, 498, __pyx_L1_error)
 
       /* "src/lxml/xpath.pxi":499
@@ -181950,7 +193601,8 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 namespace = (<bytes>namespace).decode('utf8')
  *                 namespaces[prefix.decode('utf8')] = namespace
  */
-      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_namespace_def, 1, -1L, NULL, NULL, &__pyx_slice__121, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 499, __pyx_L1_error)
+      __Pyx_TraceLine(499,0,__PYX_ERR(18, 499, __pyx_L1_error))
+      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_namespace_def, 1, -1L, NULL, NULL, &__pyx_slice__346, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 499, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_namespace, __pyx_t_1);
       __pyx_t_1 = 0;
@@ -181962,6 +193614,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 namespaces[prefix.decode('utf8')] = namespace
  *                 prefix_str = prefix + b':'
  */
+      __Pyx_TraceLine(500,0,__PYX_ERR(18, 500, __pyx_L1_error))
       if (unlikely(__pyx_v_namespace == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
         __PYX_ERR(18, 500, __pyx_L1_error)
@@ -181978,6 +193631,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 prefix_str = prefix + b':'
  *                 # FIXME: this also replaces {namespaces} within strings!
  */
+      __Pyx_TraceLine(501,0,__PYX_ERR(18, 501, __pyx_L1_error))
       if (unlikely(__pyx_v_prefix == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
         __PYX_ERR(18, 501, __pyx_L1_error)
@@ -181994,7 +193648,8 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *                 # FIXME: this also replaces {namespaces} within strings!
  *                 path_utf = path_utf.replace(namespace_def, prefix_str)
  */
-      __pyx_t_1 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_b__24); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 502, __pyx_L1_error)
+      __Pyx_TraceLine(502,0,__PYX_ERR(18, 502, __pyx_L1_error))
+      __pyx_t_1 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_b__31); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 502, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_prefix_str, ((PyObject*)__pyx_t_1));
       __pyx_t_1 = 0;
@@ -182006,6 +193661,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         path = path_utf.decode('utf8')
  *         return path, namespaces
  */
+      __Pyx_TraceLine(504,0,__PYX_ERR(18, 504, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_utf, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 504, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
@@ -182072,6 +193728,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *             if namespace_def not in namespace_defs:
  *                 prefix = python.PyBytes_FromFormat("__xpp%02d", i)
  */
+    __Pyx_TraceLine(494,0,__PYX_ERR(18, 494, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -182081,9 +193738,10 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         path = path_utf.decode('utf8')             # <<<<<<<<<<<<<<
  *         return path, namespaces
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(18, 505, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_utf, __pyx_n_s_decode); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 505, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__347, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_1);
@@ -182094,6 +193752,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
  *         path = path_utf.decode('utf8')
  *         return path, namespaces             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(18, 506, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -182135,6 +193794,7 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
   __Pyx_XDECREF(__pyx_v_prefix_str);
   __Pyx_XDECREF(__pyx_v_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -182150,11 +193810,13 @@ static PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(CYTHON_UNUSED str
 static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   xmlDoc *__pyx_t_3;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[3], 53, 0, __PYX_ERR(3, 53, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":55
  *     cdef _XSLTResolverContext _copy(self):
@@ -182163,6 +193825,7 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
  *         _initXSLTResolverContext(context, self._parser)
  *         context._c_style_doc = self._c_style_doc
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(3, 55, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTResolverContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
@@ -182175,6 +193838,7 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
  *         context._c_style_doc = self._c_style_doc
  *         return context
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(3, 56, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_parser);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__initXSLTResolverContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 56, __pyx_L1_error)
@@ -182189,6 +193853,7 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
  *         return context
  * 
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(3, 57, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_c_style_doc;
   __pyx_v_context->_c_style_doc = __pyx_t_3;
 
@@ -182199,6 +193864,7 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
  * 
  * cdef _initXSLTResolverContext(_XSLTResolverContext context,
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(3, 58, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = __pyx_v_context;
@@ -182221,6 +193887,7 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -182235,10 +193902,12 @@ static struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_
 
 static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_initXSLTResolverContext", 0);
+  __Pyx_TraceCall("_initXSLTResolverContext", __pyx_f[3], 60, 0, __PYX_ERR(3, 60, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":62
  * cdef _initXSLTResolverContext(_XSLTResolverContext context,
@@ -182247,6 +193916,7 @@ static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_
  *     context._parser = parser
  *     context._c_style_doc = NULL
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(3, 62, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 62, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ResolverRegistry))))) __PYX_ERR(3, 62, __pyx_L1_error)
@@ -182262,6 +193932,7 @@ static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_
  *     context._c_style_doc = NULL
  * 
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(3, 63, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_parser));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
   __Pyx_GOTREF(__pyx_v_context->_parser);
@@ -182275,6 +193946,7 @@ static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_
  * 
  * cdef xmlDoc* _xslt_resolve_from_python(const_xmlChar* c_uri, void* c_context,
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(3, 64, __pyx_L1_error))
   __pyx_v_context->_c_style_doc = NULL;
 
   /* "src/lxml/xslt.pxi":60
@@ -182295,6 +193967,7 @@ static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -182315,6 +193988,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
   xmlDoc *__pyx_v_c_return_doc;
   PyObject *__pyx_v_uri = NULL;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlDoc *__pyx_t_2;
@@ -182334,6 +194008,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_xslt_resolve_from_python", 0);
+  __Pyx_TraceCall("_xslt_resolve_from_python", __pyx_f[3], 66, 0, __PYX_ERR(3, 66, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":73
  *     cdef _InputDocument doc_ref
@@ -182342,6 +194017,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  * 
  *     error[0] = 0
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(3, 73, __pyx_L1_error))
   __pyx_v_c_return_doc = NULL;
 
   /* "src/lxml/xslt.pxi":75
@@ -182351,6 +194027,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *     context = <_XSLTResolverContext>c_context
  * 
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(3, 75, __pyx_L1_error))
   (__pyx_v_error[0]) = 0;
 
   /* "src/lxml/xslt.pxi":76
@@ -182360,6 +194037,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  * 
  *     # shortcut if we resolve the stylesheet itself
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(3, 76, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_c_context);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
@@ -182372,6 +194050,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *     try:
  *         if c_doc is not NULL and c_doc.URL is not NULL:
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(3, 79, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_context->_c_style_doc;
   __pyx_v_c_doc = __pyx_t_2;
 
@@ -182382,6 +194061,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         if c_doc is not NULL and c_doc.URL is not NULL:
  *             if tree.xmlStrcmp(c_uri, c_doc.URL) == 0:
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(3, 80, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -182399,6 +194079,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             if tree.xmlStrcmp(c_uri, c_doc.URL) == 0:
  *                 c_return_doc = _copyDoc(c_doc, 1)
  */
+        __Pyx_TraceLine(81,0,__PYX_ERR(3, 81, __pyx_L6_error))
         __pyx_t_7 = ((__pyx_v_c_doc != NULL) != 0);
         if (__pyx_t_7) {
         } else {
@@ -182417,6 +194098,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc = _copyDoc(c_doc, 1)
  *                 return c_return_doc  # 'goto', see 'finally' below
  */
+          __Pyx_TraceLine(82,0,__PYX_ERR(3, 82, __pyx_L6_error))
           __pyx_t_6 = ((xmlStrcmp(__pyx_v_c_uri, __pyx_v_c_doc->URL) == 0) != 0);
           if (__pyx_t_6) {
 
@@ -182427,6 +194109,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 return c_return_doc  # 'goto', see 'finally' below
  * 
  */
+            __Pyx_TraceLine(83,0,__PYX_ERR(3, 83, __pyx_L6_error))
             __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_doc, 1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 83, __pyx_L6_error)
             __pyx_v_c_return_doc = __pyx_t_2;
 
@@ -182437,6 +194120,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  * 
  *         # delegate to the Python resolvers
  */
+            __Pyx_TraceLine(84,0,__PYX_ERR(3, 84, __pyx_L6_error))
             __pyx_r = __pyx_v_c_return_doc;
             goto __pyx_L10_try_return;
 
@@ -182465,6 +194149,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         if tree.xmlStrncmp(<unsigned char*>'string://__STRING__XSLT__/', c_uri, 26) == 0:
  *             c_uri += 26
  */
+        __Pyx_TraceLine(87,0,__PYX_ERR(3, 87, __pyx_L6_error))
         __pyx_t_1 = ((PyObject *)__pyx_v_context->__pyx_base._resolvers);
         __Pyx_INCREF(__pyx_t_1);
         __pyx_v_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1);
@@ -182477,6 +194162,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             c_uri += 26
  *         uri = _decodeFilename(c_uri)
  */
+        __Pyx_TraceLine(88,0,__PYX_ERR(3, 88, __pyx_L6_error))
         __pyx_t_6 = ((xmlStrncmp(((unsigned char *)((unsigned char *)((char const *)"string://__STRING__XSLT__/"))), __pyx_v_c_uri, 26) == 0) != 0);
         if (__pyx_t_6) {
 
@@ -182487,6 +194173,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         uri = _decodeFilename(c_uri)
  *         doc_ref = resolvers.resolve(uri, None, context)
  */
+          __Pyx_TraceLine(89,0,__PYX_ERR(3, 89, __pyx_L6_error))
           __pyx_v_c_uri = (__pyx_v_c_uri + 26);
 
           /* "src/lxml/xslt.pxi":88
@@ -182505,6 +194192,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         doc_ref = resolvers.resolve(uri, None, context)
  * 
  */
+        __Pyx_TraceLine(90,0,__PYX_ERR(3, 90, __pyx_L6_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_uri); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 90, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_v_uri = __pyx_t_1;
@@ -182517,6 +194205,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  * 
  *         if doc_ref is not None:
  */
+        __Pyx_TraceLine(91,0,__PYX_ERR(3, 91, __pyx_L6_error))
         __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_resolvers), __pyx_n_s_resolve); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 91, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_8);
         __pyx_t_9 = NULL;
@@ -182578,6 +194267,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             if doc_ref._type == PARSER_DATA_STRING:
  *                 c_return_doc = _parseDoc(
  */
+        __Pyx_TraceLine(93,0,__PYX_ERR(3, 93, __pyx_L6_error))
         __pyx_t_6 = (((PyObject *)__pyx_v_doc_ref) != Py_None);
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
@@ -182589,6 +194279,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc = _parseDoc(
  *                     doc_ref._data_bytes, doc_ref._filename, context._parser)
  */
+          __Pyx_TraceLine(94,0,__PYX_ERR(3, 94, __pyx_L6_error))
           switch (__pyx_v_doc_ref->_type) {
             case __pyx_e_4lxml_5etree_PARSER_DATA_STRING:
 
@@ -182599,6 +194290,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             elif doc_ref._type == PARSER_DATA_FILENAME:
  *                 c_return_doc = _parseDocFromFile(
  */
+            __Pyx_TraceLine(96,0,__PYX_ERR(3, 96, __pyx_L6_error))
             __pyx_t_1 = __pyx_v_doc_ref->_data_bytes;
             __Pyx_INCREF(__pyx_t_1);
             __pyx_t_8 = __pyx_v_doc_ref->_filename;
@@ -182613,6 +194305,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                     doc_ref._data_bytes, doc_ref._filename, context._parser)
  *             elif doc_ref._type == PARSER_DATA_FILENAME:
  */
+            __Pyx_TraceLine(95,0,__PYX_ERR(3, 95, __pyx_L6_error))
             __pyx_t_2 = __pyx_f_4lxml_5etree__parseDoc(__pyx_t_1, __pyx_t_8, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_11)); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 95, __pyx_L6_error)
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -182635,6 +194328,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc = _parseDocFromFile(
  *                     doc_ref._filename, context._parser)
  */
+            __Pyx_TraceLine(97,0,__PYX_ERR(3, 97, __pyx_L6_error))
             case __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME:
 
             /* "src/lxml/xslt.pxi":99
@@ -182644,6 +194338,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             elif doc_ref._type == PARSER_DATA_FILE:
  *                 c_return_doc = _parseDocFromFilelike(
  */
+            __Pyx_TraceLine(99,0,__PYX_ERR(3, 99, __pyx_L6_error))
             __pyx_t_11 = __pyx_v_doc_ref->_filename;
             __Pyx_INCREF(__pyx_t_11);
             __pyx_t_8 = ((PyObject *)__pyx_v_context->_parser);
@@ -182656,6 +194351,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                     doc_ref._filename, context._parser)
  *             elif doc_ref._type == PARSER_DATA_FILE:
  */
+            __Pyx_TraceLine(98,0,__PYX_ERR(3, 98, __pyx_L6_error))
             __pyx_t_2 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_t_11, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_8)); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 98, __pyx_L6_error)
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -182677,6 +194373,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc = _parseDocFromFilelike(
  *                     doc_ref._file, doc_ref._filename, context._parser)
  */
+            __Pyx_TraceLine(100,0,__PYX_ERR(3, 100, __pyx_L6_error))
             case __pyx_e_4lxml_5etree_PARSER_DATA_FILE:
 
             /* "src/lxml/xslt.pxi":102
@@ -182686,6 +194383,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             elif doc_ref._type == PARSER_DATA_EMPTY:
  *                 c_return_doc = _newXMLDoc()
  */
+            __Pyx_TraceLine(102,0,__PYX_ERR(3, 102, __pyx_L6_error))
             __pyx_t_8 = __pyx_v_doc_ref->_file;
             __Pyx_INCREF(__pyx_t_8);
             __pyx_t_11 = __pyx_v_doc_ref->_filename;
@@ -182700,6 +194398,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                     doc_ref._file, doc_ref._filename, context._parser)
  *             elif doc_ref._type == PARSER_DATA_EMPTY:
  */
+            __Pyx_TraceLine(101,0,__PYX_ERR(3, 101, __pyx_L6_error))
             __pyx_t_2 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_t_8, __pyx_t_11, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 101, __pyx_L6_error)
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -182722,6 +194421,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc = _newXMLDoc()
  *             if c_return_doc is not NULL and c_return_doc.URL is NULL:
  */
+            __Pyx_TraceLine(103,0,__PYX_ERR(3, 103, __pyx_L6_error))
             case __pyx_e_4lxml_5etree_PARSER_DATA_EMPTY:
 
             /* "src/lxml/xslt.pxi":104
@@ -182731,6 +194431,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *             if c_return_doc is not NULL and c_return_doc.URL is NULL:
  *                 c_return_doc.URL = tree.xmlStrdup(c_uri)
  */
+            __Pyx_TraceLine(104,0,__PYX_ERR(3, 104, __pyx_L6_error))
             __pyx_t_2 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 104, __pyx_L6_error)
             __pyx_v_c_return_doc = __pyx_t_2;
 
@@ -182752,6 +194453,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *                 c_return_doc.URL = tree.xmlStrdup(c_uri)
  *     except:
  */
+          __Pyx_TraceLine(105,0,__PYX_ERR(3, 105, __pyx_L6_error))
           __pyx_t_6 = ((__pyx_v_c_return_doc != NULL) != 0);
           if (__pyx_t_6) {
           } else {
@@ -182770,6 +194472,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *     except:
  *         error[0] = 1
  */
+            __Pyx_TraceLine(106,0,__PYX_ERR(3, 106, __pyx_L6_error))
             __pyx_v_c_return_doc->URL = xmlStrdup(__pyx_v_c_uri);
 
             /* "src/lxml/xslt.pxi":105
@@ -182815,6 +194518,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         error[0] = 1
  *         context._store_raised()
  */
+      __Pyx_TraceLine(107,0,__PYX_ERR(3, 107, __pyx_L8_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._xslt_resolve_from_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_11, &__pyx_t_8) < 0) __PYX_ERR(3, 107, __pyx_L8_except_error)
@@ -182829,6 +194533,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *         context._store_raised()
  *     finally:
  */
+        __Pyx_TraceLine(108,0,__PYX_ERR(3, 108, __pyx_L8_except_error))
         (__pyx_v_error[0]) = 1;
 
         /* "src/lxml/xslt.pxi":109
@@ -182838,6 +194543,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  *     finally:
  *         return c_return_doc  # and swallow any further exceptions
  */
+        __Pyx_TraceLine(109,0,__PYX_ERR(3, 109, __pyx_L8_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -182880,6 +194586,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  * 
  * 
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(3, 111, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_r = __pyx_v_c_return_doc;
@@ -182934,11 +194641,19 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(const xmlChar *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_WriteUnraisable("lxml.etree._xslt_resolve_from_python", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF((PyObject *)__pyx_v_resolvers);
   __Pyx_XDECREF((PyObject *)__pyx_v_doc_ref);
   __Pyx_XDECREF(__pyx_v_uri);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -182958,6 +194673,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
   PyObject *__pyx_v_message = NULL;
   struct __pyx_obj_4lxml_5etree_XSLTError *__pyx_v_exception = NULL;
   PyObject *__pyx_v_e = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -182974,6 +194690,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_xslt_store_resolver_exception", 0);
+  __Pyx_TraceCall("_xslt_store_resolver_exception", __pyx_f[3], 114, 0, __PYX_ERR(3, 114, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":116
  * cdef void _xslt_store_resolver_exception(const_xmlChar* c_uri, void* context,
@@ -182982,6 +194699,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *         message = f"Cannot resolve URI {_decodeFilename(c_uri)}"
  *         if c_type == xslt.XSLT_LOAD_DOCUMENT:
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(3, 116, __pyx_L4_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -182999,6 +194717,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *         if c_type == xslt.XSLT_LOAD_DOCUMENT:
  *             exception = XSLTApplyError(message)
  */
+        __Pyx_TraceLine(117,0,__PYX_ERR(3, 117, __pyx_L6_error))
         __pyx_t_4 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_uri); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 117, __pyx_L6_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 117, __pyx_L6_error)
@@ -183017,6 +194736,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *             exception = XSLTApplyError(message)
  *         else:
  */
+        __Pyx_TraceLine(118,0,__PYX_ERR(3, 118, __pyx_L6_error))
         __pyx_t_6 = ((__pyx_v_c_type == XSLT_LOAD_DOCUMENT) != 0);
         if (__pyx_t_6) {
 
@@ -183027,6 +194747,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *         else:
  *             exception = XSLTParseError(message)
  */
+          __Pyx_TraceLine(119,0,__PYX_ERR(3, 119, __pyx_L6_error))
           __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTApplyError), __pyx_v_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 119, __pyx_L6_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_v_exception = ((struct __pyx_obj_4lxml_5etree_XSLTError *)__pyx_t_4);
@@ -183049,6 +194770,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *         (<_XSLTResolverContext>context)._store_exception(exception)
  *     except BaseException as e:
  */
+        __Pyx_TraceLine(121,0,__PYX_ERR(3, 121, __pyx_L6_error))
         /*else*/ {
           __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTParseError), __pyx_v_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 121, __pyx_L6_error)
           __Pyx_GOTREF(__pyx_t_4);
@@ -183064,6 +194786,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *     except BaseException as e:
  *         (<_XSLTResolverContext>context)._store_exception(e)
  */
+        __Pyx_TraceLine(122,0,__PYX_ERR(3, 122, __pyx_L6_error))
         __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_exception(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)), ((PyObject *)__pyx_v_exception)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 122, __pyx_L6_error)
 
         /* "src/lxml/xslt.pxi":116
@@ -183089,6 +194812,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *         (<_XSLTResolverContext>context)._store_exception(e)
  *     finally:
  */
+      __Pyx_TraceLine(123,0,__PYX_ERR(3, 123, __pyx_L8_except_error))
       __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
       if (__pyx_t_7) {
         __Pyx_AddTraceback("lxml.etree._xslt_store_resolver_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -183106,6 +194830,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  *     finally:
  *         return  # and swallow any further exceptions
  */
+        __Pyx_TraceLine(124,0,__PYX_ERR(3, 124, __pyx_L8_except_error))
         __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_exception(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)), __pyx_v_e); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 124, __pyx_L8_except_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -183143,6 +194868,7 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  * 
  * 
  */
+  __Pyx_TraceLine(126,0,__PYX_ERR(3, 126, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -183190,10 +194916,16 @@ static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(const xmlChar *_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_WriteUnraisable("lxml.etree._xslt_store_resolver_exception", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XDECREF((PyObject *)__pyx_v_exception);
   __Pyx_XDECREF(__pyx_v_e);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -183213,9 +194945,11 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
   void *__pyx_v_c_pcontext;
   int __pyx_v_error;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   void *__pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceCall("_xslt_doc_loader", __pyx_f[3], 129, 1, __PYX_ERR(3, 129, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":136
  *     cdef xmlDoc* result
@@ -183224,6 +194958,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *     # find resolver contexts of stylesheet and transformed doc
  *     if c_type == xslt.XSLT_LOAD_DOCUMENT:
  */
+  __Pyx_TraceLine(136,1,__PYX_ERR(3, 136, __pyx_L1_error))
   __pyx_v_error = 0;
 
   /* "src/lxml/xslt.pxi":138
@@ -183233,6 +194968,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *         # transformation time
  *         c_pcontext = (<xslt.xsltTransformContext*>c_ctxt)._private
  */
+  __Pyx_TraceLine(138,1,__PYX_ERR(3, 138, __pyx_L1_error))
   switch (__pyx_v_c_type) {
     case XSLT_LOAD_DOCUMENT:
 
@@ -183243,6 +194979,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *     elif c_type == xslt.XSLT_LOAD_STYLESHEET:
  *         # include/import resolution while parsing
  */
+    __Pyx_TraceLine(140,1,__PYX_ERR(3, 140, __pyx_L1_error))
     __pyx_t_1 = ((xsltTransformContext *)__pyx_v_c_ctxt)->_private;
     __pyx_v_c_pcontext = __pyx_t_1;
 
@@ -183262,6 +194999,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *         # include/import resolution while parsing
  *         c_pcontext = (<xslt.xsltStylesheet*>c_ctxt).doc._private
  */
+    __Pyx_TraceLine(141,1,__PYX_ERR(3, 141, __pyx_L1_error))
     case XSLT_LOAD_STYLESHEET:
 
     /* "src/lxml/xslt.pxi":143
@@ -183271,6 +195009,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *     else:
  *         c_pcontext = NULL
  */
+    __Pyx_TraceLine(143,1,__PYX_ERR(3, 143, __pyx_L1_error))
     __pyx_t_1 = ((xsltStylesheet *)__pyx_v_c_ctxt)->doc->_private;
     __pyx_v_c_pcontext = __pyx_t_1;
 
@@ -183291,6 +195030,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  * 
  *     if c_pcontext is NULL:
  */
+    __Pyx_TraceLine(145,1,__PYX_ERR(3, 145, __pyx_L1_error))
     __pyx_v_c_pcontext = NULL;
     break;
   }
@@ -183302,6 +195042,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *         # can't call Python without context, fall back to default loader
  *         return XSLT_DOC_DEFAULT_LOADER(
  */
+  __Pyx_TraceLine(147,1,__PYX_ERR(3, 147, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_pcontext == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -183312,6 +195053,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *             c_uri, c_dict, parse_options, c_ctxt, c_type)
  * 
  */
+    __Pyx_TraceLine(149,1,__PYX_ERR(3, 149, __pyx_L1_error))
     __pyx_r = __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER(__pyx_v_c_uri, __pyx_v_c_dict, __pyx_v_parse_options, __pyx_v_c_ctxt, __pyx_v_c_type);
     goto __pyx_L0;
 
@@ -183331,6 +195073,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *     if c_doc is NULL and not error:
  *         c_doc = XSLT_DOC_DEFAULT_LOADER(
  */
+  __Pyx_TraceLine(152,1,__PYX_ERR(3, 152, __pyx_L1_error))
   __pyx_v_c_doc = __pyx_f_4lxml_5etree__xslt_resolve_from_python(__pyx_v_c_uri, __pyx_v_c_pcontext, __pyx_v_parse_options, (&__pyx_v_error));
 
   /* "src/lxml/xslt.pxi":153
@@ -183340,6 +195083,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *         c_doc = XSLT_DOC_DEFAULT_LOADER(
  *             c_uri, c_dict, parse_options, c_ctxt, c_type)
  */
+  __Pyx_TraceLine(153,1,__PYX_ERR(3, 153, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_doc == NULL) != 0);
   if (__pyx_t_3) {
   } else {
@@ -183358,6 +195102,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *             c_uri, c_dict, parse_options, c_ctxt, c_type)
  *         if c_doc is NULL:
  */
+    __Pyx_TraceLine(154,1,__PYX_ERR(3, 154, __pyx_L1_error))
     __pyx_v_c_doc = __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER(__pyx_v_c_uri, __pyx_v_c_dict, __pyx_v_parse_options, __pyx_v_c_ctxt, __pyx_v_c_type);
 
     /* "src/lxml/xslt.pxi":156
@@ -183367,6 +195112,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *             _xslt_store_resolver_exception(c_uri, c_pcontext, c_type)
  * 
  */
+    __Pyx_TraceLine(156,1,__PYX_ERR(3, 156, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_doc == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -183377,6 +195123,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  * 
  *     if c_doc is not NULL and c_type == xslt.XSLT_LOAD_STYLESHEET:
  */
+      __Pyx_TraceLine(157,1,__PYX_ERR(3, 157, __pyx_L1_error))
       __pyx_f_4lxml_5etree__xslt_store_resolver_exception(__pyx_v_c_uri, __pyx_v_c_pcontext, __pyx_v_c_type);
 
       /* "src/lxml/xslt.pxi":156
@@ -183404,6 +195151,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *         c_doc._private = c_pcontext
  *     return c_doc
  */
+  __Pyx_TraceLine(159,1,__PYX_ERR(3, 159, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_doc != NULL) != 0);
   if (__pyx_t_3) {
   } else {
@@ -183422,6 +195170,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  *     return c_doc
  * 
  */
+    __Pyx_TraceLine(160,1,__PYX_ERR(3, 160, __pyx_L1_error))
     __pyx_v_c_doc->_private = __pyx_v_c_pcontext;
 
     /* "src/lxml/xslt.pxi":159
@@ -183440,6 +195189,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  * 
  * cdef xslt.xsltDocLoaderFunc XSLT_DOC_DEFAULT_LOADER = xslt.xsltDocDefaultLoader
  */
+  __Pyx_TraceLine(161,1,__PYX_ERR(3, 161, __pyx_L1_error))
   __pyx_r = __pyx_v_c_doc;
   goto __pyx_L0;
 
@@ -183452,7 +195202,11 @@ static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(const xmlChar *__pyx_v_c_ur
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._xslt_doc_loader", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 1);
   return __pyx_r;
 }
 
@@ -183482,9 +195236,11 @@ static int __pyx_pw_4lxml_5etree_17XSLTAccessControl_1__cinit__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___cinit__(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[3], 191, 0, __PYX_ERR(3, 191, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":192
  *     cdef xslt.xsltSecurityPrefs* _prefs
@@ -183493,6 +195249,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___cinit__(struct __pyx_obj_
  *         if self._prefs is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(3, 192, __pyx_L1_error))
   __pyx_v_self->_prefs = xsltNewSecurityPrefs();
 
   /* "src/lxml/xslt.pxi":193
@@ -183502,6 +195259,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___cinit__(struct __pyx_obj_
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(193,0,__PYX_ERR(3, 193, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_prefs == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -183512,6 +195270,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___cinit__(struct __pyx_obj_
  * 
  *     def __init__(self, *, bint read_file=True, bint write_file=True, bint create_dir=True,
  */
+    __Pyx_TraceLine(194,0,__PYX_ERR(3, 194, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(3, 194, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":193
@@ -183538,6 +195297,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___cinit__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -183645,9 +195405,11 @@ static int __pyx_pw_4lxml_5etree_17XSLTAccessControl_3__init__(PyObject *__pyx_v
 
 static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, int __pyx_v_read_file, int __pyx_v_write_file, int __pyx_v_create_dir, int __pyx_v_read_network, int __pyx_v_write_network) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[3], 196, 0, __PYX_ERR(3, 196, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":198
  *     def __init__(self, *, bint read_file=True, bint write_file=True, bint create_dir=True,
@@ -183656,6 +195418,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
  *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)
  *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
  */
+  __Pyx_TraceLine(198,0,__PYX_ERR(3, 198, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(__pyx_v_self, XSLT_SECPREF_READ_FILE, __pyx_v_read_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -183667,6 +195430,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
  *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
  *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)
  */
+  __Pyx_TraceLine(199,0,__PYX_ERR(3, 199, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(__pyx_v_self, XSLT_SECPREF_WRITE_FILE, __pyx_v_write_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 199, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -183678,6 +195442,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
  *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)
  *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(3, 200, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(__pyx_v_self, XSLT_SECPREF_CREATE_DIRECTORY, __pyx_v_create_dir); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 200, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -183689,6 +195454,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
  *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)
  * 
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(3, 201, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(__pyx_v_self, XSLT_SECPREF_READ_NETWORK, __pyx_v_read_network); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 201, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -183700,6 +195466,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
  * 
  *     DENY_ALL = XSLTAccessControl(
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(3, 202, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(__pyx_v_self, XSLT_SECPREF_WRITE_NETWORK, __pyx_v_write_network); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 202, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -183720,6 +195487,7 @@ static int __pyx_pf_4lxml_5etree_17XSLTAccessControl_2__init__(struct __pyx_obj_
   __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -183744,9 +195512,11 @@ static void __pyx_pw_4lxml_5etree_17XSLTAccessControl_5__dealloc__(PyObject *__p
 }
 
 static void __pyx_pf_4lxml_5etree_17XSLTAccessControl_4__dealloc__(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[3], 212, 0, __PYX_ERR(3, 212, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":213
  * 
@@ -183755,6 +195525,7 @@ static void __pyx_pf_4lxml_5etree_17XSLTAccessControl_4__dealloc__(struct __pyx_
  *             xslt.xsltFreeSecurityPrefs(self._prefs)
  * 
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(3, 213, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_prefs != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -183765,6 +195536,7 @@ static void __pyx_pf_4lxml_5etree_17XSLTAccessControl_4__dealloc__(struct __pyx_
  * 
  *     @cython.final
  */
+    __Pyx_TraceLine(214,0,__PYX_ERR(3, 214, __pyx_L1_error))
     xsltFreeSecurityPrefs(__pyx_v_self->_prefs);
 
     /* "src/lxml/xslt.pxi":213
@@ -183785,6 +195557,11 @@ static void __pyx_pf_4lxml_5etree_17XSLTAccessControl_4__dealloc__(struct __pyx_
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.XSLTAccessControl.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -183799,9 +195576,11 @@ static void __pyx_pf_4lxml_5etree_17XSLTAccessControl_4__dealloc__(struct __pyx_
 static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltSecurityOption __pyx_v_option, int __pyx_v_allow) {
   xsltSecurityCheck __pyx_v_function;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_setAccess", 0);
+  __Pyx_TraceCall("_setAccess", __pyx_f[3], 217, 0, __PYX_ERR(3, 217, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":219
  *     cdef _setAccess(self, xslt.xsltSecurityOption option, bint allow):
@@ -183810,6 +195589,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
  *             function = xslt.xsltSecurityAllow
  *         else:
  */
+  __Pyx_TraceLine(219,0,__PYX_ERR(3, 219, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_allow != 0);
   if (__pyx_t_1) {
 
@@ -183820,6 +195600,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
  *         else:
  *             function = xslt.xsltSecurityForbid
  */
+    __Pyx_TraceLine(220,0,__PYX_ERR(3, 220, __pyx_L1_error))
     __pyx_v_function = xsltSecurityAllow;
 
     /* "src/lxml/xslt.pxi":219
@@ -183839,6 +195620,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
  *         xslt.xsltSetSecurityPrefs(self._prefs, option, function)
  * 
  */
+  __Pyx_TraceLine(222,0,__PYX_ERR(3, 222, __pyx_L1_error))
   /*else*/ {
     __pyx_v_function = xsltSecurityForbid;
   }
@@ -183851,6 +195633,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(3, 223, __pyx_L1_error))
   (void)(xsltSetSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_option, __pyx_v_function));
 
   /* "src/lxml/xslt.pxi":217
@@ -183863,7 +195646,13 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl._setAccess", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -183877,8 +195666,10 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __py
  */
 
 static void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltTransformContext *__pyx_v_ctxt) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_register_in_context", 0);
+  __Pyx_TraceCall("_register_in_context", __pyx_f[3], 226, 0, __PYX_ERR(3, 226, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":227
  *     @cython.final
@@ -183887,6 +195678,7 @@ static void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct
  * 
  *     property options:
  */
+  __Pyx_TraceLine(227,0,__PYX_ERR(3, 227, __pyx_L1_error))
   (void)(xsltSetCtxtSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_ctxt));
 
   /* "src/lxml/xslt.pxi":226
@@ -183898,6 +195690,11 @@ static void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.XSLTAccessControl._register_in_context", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -183924,10 +195721,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17XSLTAccessControl_7options_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[3], 231, 0, __PYX_ERR(3, 231, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":232
  *         u"The access control configuration as a map of options."
@@ -183936,6 +195735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
  *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(3, 232, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "src/lxml/xslt.pxi":233
@@ -183945,6 +195745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
  *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
  */
+  __Pyx_TraceLine(233,0,__PYX_ERR(3, 233, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree_17XSLTAccessControl__optval(__pyx_v_self, XSLT_SECPREF_READ_FILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 233, __pyx_L1_error)
@@ -183959,6 +195760,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
  *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
  */
+  __Pyx_TraceLine(234,0,__PYX_ERR(3, 234, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_17XSLTAccessControl__optval(__pyx_v_self, XSLT_SECPREF_WRITE_FILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 234, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_write_file, __pyx_t_2) < 0) __PYX_ERR(3, 233, __pyx_L1_error)
@@ -183971,6 +195773,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
  *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(3, 235, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_17XSLTAccessControl__optval(__pyx_v_self, XSLT_SECPREF_CREATE_DIRECTORY); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 235, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_create_dir, __pyx_t_2) < 0) __PYX_ERR(3, 233, __pyx_L1_error)
@@ -183983,6 +195786,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
  *                 }
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(3, 236, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_17XSLTAccessControl__optval(__pyx_v_self, XSLT_SECPREF_READ_NETWORK); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 236, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_read_network, __pyx_t_2) < 0) __PYX_ERR(3, 233, __pyx_L1_error)
@@ -183995,6 +195799,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
  *                 }
  * 
  */
+  __Pyx_TraceLine(237,0,__PYX_ERR(3, 237, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_17XSLTAccessControl__optval(__pyx_v_self, XSLT_SECPREF_WRITE_NETWORK); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 237, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_write_network, __pyx_t_2) < 0) __PYX_ERR(3, 233, __pyx_L1_error)
@@ -184019,6 +195824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -184034,9 +195840,11 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
 static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltSecurityOption __pyx_v_option) {
   xsltSecurityCheck __pyx_v_function;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_optval", 0);
+  __Pyx_TraceCall("_optval", __pyx_f[3], 241, 0, __PYX_ERR(3, 241, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":243
  *     cdef _optval(self, xslt.xsltSecurityOption option):
@@ -184045,6 +195853,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  *         if function is <xslt.xsltSecurityCheck>xslt.xsltSecurityAllow:
  *             return True
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(3, 243, __pyx_L1_error))
   __pyx_v_function = xsltGetSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_option);
 
   /* "src/lxml/xslt.pxi":244
@@ -184054,6 +195863,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  *             return True
  *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(3, 244, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_function == ((xsltSecurityCheck)xsltSecurityAllow)) != 0);
   if (__pyx_t_1) {
 
@@ -184064,6 +195874,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:
  *             return False
  */
+    __Pyx_TraceLine(245,0,__PYX_ERR(3, 245, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -184085,6 +195896,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  *             return False
  *         else:
  */
+  __Pyx_TraceLine(246,0,__PYX_ERR(3, 246, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_function == ((xsltSecurityCheck)xsltSecurityForbid)) != 0);
   if (__pyx_t_1) {
 
@@ -184095,6 +195907,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  *         else:
  *             return None
  */
+    __Pyx_TraceLine(247,0,__PYX_ERR(3, 247, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
     __pyx_r = Py_False;
@@ -184116,6 +195929,7 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(249,0,__PYX_ERR(3, 249, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -184131,8 +195945,12 @@ static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_o
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl._optval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -184162,6 +195980,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
   PyObject *__pyx_v_items = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -184173,6 +195992,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
   const char *__pyx_t_8;
   Py_ssize_t __pyx_t_9;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[3], 251, 0, __PYX_ERR(3, 251, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":252
  * 
@@ -184181,6 +196001,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
  *         return u"%s(%s)" % (
  *             python._fqtypename(self).decode('UTF-8').split(u'.')[-1],
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(3, 252, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_options); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 252, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 252, __pyx_L1_error)
@@ -184220,6 +196041,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
  *             python._fqtypename(self).decode('UTF-8').split(u'.')[-1],
  *             u', '.join([u"%s=%r" % item for item in items]))
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(3, 253, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -184233,16 +196055,17 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
  *             u', '.join([u"%s=%r" % item for item in items]))
  * 
  */
+  __Pyx_TraceLine(254,0,__PYX_ERR(3, 254, __pyx_L1_error))
   __pyx_t_8 = _fqtypename(((PyObject *)__pyx_v_self));
   __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_8, 0, strlen(__pyx_t_8), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyUnicode_Split(__pyx_t_4, __pyx_kp_u__4, -1L); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 254, __pyx_L1_error)
+  __pyx_t_2 = PyUnicode_Split(__pyx_t_4, __pyx_kp_u__11, -1L); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_t_2, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 254, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7;
@@ -184250,10 +196073,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
   __pyx_t_2 = 0;
-  __Pyx_INCREF(__pyx_kp_u__123);
+  __Pyx_INCREF(__pyx_kp_u__348);
   __pyx_t_6 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__123);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__123);
+  __Pyx_GIVEREF(__pyx_kp_u__348);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_u__348);
 
   /* "src/lxml/xslt.pxi":255
  *         return u"%s(%s)" % (
@@ -184262,6 +196085,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(255,0,__PYX_ERR(3, 255, __pyx_L1_error))
   __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (unlikely(__pyx_v_items == Py_None)) {
@@ -184285,7 +196109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__124, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 255, __pyx_L1_error)
+  __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__349, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_7;
@@ -184293,10 +196117,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4);
   __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u__76);
+  __Pyx_INCREF(__pyx_kp_u__252);
   __pyx_t_6 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u__76);
-  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__76);
+  __Pyx_GIVEREF(__pyx_kp_u__252);
+  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_kp_u__252);
 
   /* "src/lxml/xslt.pxi":253
  *     def __repr__(self):
@@ -184305,6 +196129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
  *             python._fqtypename(self).decode('UTF-8').split(u'.')[-1],
  *             u', '.join([u"%s=%r" % item for item in items]))
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(3, 253, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -184332,6 +196157,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
   __Pyx_XDECREF(__pyx_v_items);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -184346,10 +196172,12 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_6__repr__(struct __py
 
 static int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_register_xslt_function", 0);
+  __Pyx_TraceCall("_register_xslt_function", __pyx_f[3], 260, 0, __PYX_ERR(3, 260, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":261
  * 
@@ -184358,6 +196186,7 @@ static int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyOb
  *         return 0
  *     # libxml2 internalises the strings if ctxt has a dict
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(3, 261, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -184369,6 +196198,7 @@ static int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyOb
  *     # libxml2 internalises the strings if ctxt has a dict
  *     return xslt.xsltRegisterExtFunction(
  */
+    __Pyx_TraceLine(262,0,__PYX_ERR(3, 262, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -184388,6 +196218,7 @@ static int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyOb
  *         <xslt.xsltTransformContext*>ctxt, _xcstr(name_utf), _xcstr(ns_utf),
  *         <xslt.xmlXPathFunction>_xpath_function_call)
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(3, 264, __pyx_L1_error))
   __pyx_r = xsltRegisterExtFunction(((xsltTransformContext *)__pyx_v_ctxt), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_utf), ((xmlXPathFunction)__pyx_f_4lxml_5etree__xpath_function_call));
   goto __pyx_L0;
 
@@ -184400,7 +196231,11 @@ static int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyOb
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._register_xslt_function", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -184431,8 +196266,10 @@ static int __pyx_pw_4lxml_5etree_12_XSLTContext_1__cinit__(PyObject *__pyx_v_sel
 
 static int __pyx_pf_4lxml_5etree_12_XSLTContext___cinit__(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[3], 276, 0, __PYX_ERR(3, 276, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":277
  *     cdef dict _extension_elements
@@ -184441,6 +196278,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext___cinit__(struct __pyx_obj_4lxml
  *         self._extension_elements = EMPTY_DICT
  * 
  */
+  __Pyx_TraceLine(277,0,__PYX_ERR(3, 277, __pyx_L1_error))
   __pyx_v_self->_xsltCtxt = NULL;
 
   /* "src/lxml/xslt.pxi":278
@@ -184450,6 +196288,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext___cinit__(struct __pyx_obj_4lxml
  * 
  *     def __init__(self, namespaces, extensions, error_log, enable_regexp,
  */
+  __Pyx_TraceLine(278,0,__PYX_ERR(3, 278, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree_EMPTY_DICT);
   __Pyx_GIVEREF(__pyx_v_4lxml_5etree_EMPTY_DICT);
   __Pyx_GOTREF(__pyx_v_self->_extension_elements);
@@ -184466,6 +196305,12 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext___cinit__(struct __pyx_obj_4lxml
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._XSLTContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -184578,6 +196423,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
   PyObject *__pyx_v_ns_utf = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -184592,6 +196438,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
   PyObject *(*__pyx_t_11)(PyObject *);
   int __pyx_t_12;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[3], 280, 0, __PYX_ERR(3, 280, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_extensions);
 
   /* "src/lxml/xslt.pxi":282
@@ -184601,6 +196448,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *             for ns_name_tuple, extension in extensions.items():
  *                 if ns_name_tuple[0] is None:
  */
+  __Pyx_TraceLine(282,0,__PYX_ERR(3, 282, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_extensions != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -184620,6 +196468,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                 if ns_name_tuple[0] is None:
  *                     raise XSLTExtensionError, \
  */
+    __Pyx_TraceLine(283,0,__PYX_ERR(3, 283, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_extensions, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 283, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -184738,6 +196587,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     raise XSLTExtensionError, \
  *                         u"extensions must not have empty namespaces"
  */
+      __Pyx_TraceLine(284,0,__PYX_ERR(3, 284, __pyx_L1_error))
       __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 284, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_1 = (__pyx_t_4 == Py_None);
@@ -184752,6 +196602,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                         u"extensions must not have empty namespaces"
  *                 if isinstance(extension, XSLTExtension):
  */
+        __Pyx_TraceLine(285,0,__PYX_ERR(3, 285, __pyx_L1_error))
         __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTExtensionError), __pyx_kp_u_extensions_must_not_have_empty_n, 0, 0);
         __PYX_ERR(3, 285, __pyx_L1_error)
 
@@ -184771,6 +196622,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     if self._extension_elements is EMPTY_DICT:
  *                         self._extension_elements = {}
  */
+      __Pyx_TraceLine(287,0,__PYX_ERR(3, 287, __pyx_L1_error))
       __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_extension, __pyx_ptype_4lxml_5etree_XSLTExtension); 
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
@@ -184782,6 +196634,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                         self._extension_elements = {}
  *                         extensions = extensions.copy()
  */
+        __Pyx_TraceLine(288,0,__PYX_ERR(3, 288, __pyx_L1_error))
         __pyx_t_1 = (__pyx_v_self->_extension_elements == __pyx_v_4lxml_5etree_EMPTY_DICT);
         __pyx_t_3 = (__pyx_t_1 != 0);
         if (__pyx_t_3) {
@@ -184793,6 +196646,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                         extensions = extensions.copy()
  *                     ns_utf   = _utf8(ns_name_tuple[0])
  */
+          __Pyx_TraceLine(289,0,__PYX_ERR(3, 289, __pyx_L1_error))
           __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 289, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_GIVEREF(__pyx_t_4);
@@ -184808,6 +196662,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     ns_utf   = _utf8(ns_name_tuple[0])
  *                     name_utf = _utf8(ns_name_tuple[1])
  */
+          __Pyx_TraceLine(290,0,__PYX_ERR(3, 290, __pyx_L1_error))
           __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_extensions, __pyx_n_s_copy); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 290, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_9);
           __pyx_t_6 = NULL;
@@ -184847,6 +196702,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     name_utf = _utf8(ns_name_tuple[1])
  *                     self._extension_elements[(ns_utf, name_utf)] = extension
  */
+        __Pyx_TraceLine(291,0,__PYX_ERR(3, 291, __pyx_L1_error))
         __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 291, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_9 = __pyx_f_4lxml_5etree__utf8(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 291, __pyx_L1_error)
@@ -184862,6 +196718,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     self._extension_elements[(ns_utf, name_utf)] = extension
  *                     del extensions[ns_name_tuple]
  */
+        __Pyx_TraceLine(292,0,__PYX_ERR(3, 292, __pyx_L1_error))
         __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 292, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 292, __pyx_L1_error)
@@ -184877,6 +196734,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                     del extensions[ns_name_tuple]
  *         _BaseContext.__init__(self, namespaces, extensions, error_log, enable_regexp,
  */
+        __Pyx_TraceLine(293,0,__PYX_ERR(3, 293, __pyx_L1_error))
         if (unlikely(__pyx_v_self->_extension_elements == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
           __PYX_ERR(3, 293, __pyx_L1_error)
@@ -184899,6 +196757,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *         _BaseContext.__init__(self, namespaces, extensions, error_log, enable_regexp,
  *                               build_smart_strings)
  */
+        __Pyx_TraceLine(294,0,__PYX_ERR(3, 294, __pyx_L1_error))
         if (unlikely(PyObject_DelItem(__pyx_v_extensions, __pyx_v_ns_name_tuple) < 0)) __PYX_ERR(3, 294, __pyx_L1_error)
 
         /* "src/lxml/xslt.pxi":287
@@ -184917,6 +196776,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                 if ns_name_tuple[0] is None:
  *                     raise XSLTExtensionError, \
  */
+      __Pyx_TraceLine(283,0,__PYX_ERR(3, 283, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -184936,6 +196796,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  *                               build_smart_strings)
  * 
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(3, 295, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseContext), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 295, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
@@ -184946,6 +196807,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
  * 
  *     cdef _BaseContext _copy(self):
  */
+  __Pyx_TraceLine(296,0,__PYX_ERR(3, 296, __pyx_L1_error))
   __pyx_t_9 = NULL;
   __pyx_t_12 = 0;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -185030,6 +196892,7 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
   __Pyx_XDECREF(__pyx_v_ns_utf);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XDECREF(__pyx_v_extensions);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185045,10 +196908,12 @@ static int __pyx_pf_4lxml_5etree_12_XSLTContext_2__init__(struct __pyx_obj_4lxml
 static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_copy", 0);
+  __Pyx_TraceCall("_copy", __pyx_f[3], 298, 0, __PYX_ERR(3, 298, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":300
  *     cdef _BaseContext _copy(self):
@@ -185057,6 +196922,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTC
  *         context._extension_elements = self._extension_elements
  *         return context
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(3, 300, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_BaseContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_t_1;
@@ -185072,6 +196938,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTC
  *         return context
  * 
  */
+  __Pyx_TraceLine(301,0,__PYX_ERR(3, 301, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_extension_elements;
   __Pyx_INCREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -185087,6 +196954,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTC
  * 
  *     cdef register_context(self, xslt.xsltTransformContext* xsltCtxt,
  */
+  __Pyx_TraceLine(302,0,__PYX_ERR(3, 302, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_context);
@@ -185109,6 +196977,7 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTC
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185123,10 +196992,12 @@ static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTC
 
 static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self, xsltTransformContext *__pyx_v_xsltCtxt, struct LxmlDocument *__pyx_v_doc) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("register_context", 0);
+  __Pyx_TraceCall("register_context", __pyx_f[3], 304, 0, __PYX_ERR(3, 304, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":306
  *     cdef register_context(self, xslt.xsltTransformContext* xsltCtxt,
@@ -185135,6 +197006,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  *         self._set_xpath_context(xsltCtxt.xpathCtxt)
  *         self._register_context(doc)
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(3, 306, __pyx_L1_error))
   __pyx_v_self->_xsltCtxt = __pyx_v_xsltCtxt;
 
   /* "src/lxml/xslt.pxi":307
@@ -185144,6 +197016,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  *         self._register_context(doc)
  *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(3, 307, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_xpath_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt->xpathCtxt);
 
   /* "src/lxml/xslt.pxi":308
@@ -185153,6 +197026,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
  *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(3, 308, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__register_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 308, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185164,6 +197038,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)
  *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(3, 309, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt, __pyx_f_4lxml_5etree__register_xslt_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185175,6 +197050,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)
  * 
  */
+  __Pyx_TraceLine(310,0,__PYX_ERR(3, 310, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt, __pyx_f_4lxml_5etree__register_xslt_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 310, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185186,6 +197062,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
  * 
  *     cdef free_context(self):
  */
+  __Pyx_TraceLine(311,0,__PYX_ERR(3, 311, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_extension_elements;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_5etree__registerXSLTExtensions(__pyx_v_xsltCtxt, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 311, __pyx_L1_error)
@@ -185211,6 +197088,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185225,10 +197103,12 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __p
 
 static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("free_context", 0);
+  __Pyx_TraceCall("free_context", __pyx_f[3], 313, 0, __PYX_ERR(3, 313, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":314
  * 
@@ -185237,6 +197117,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  *         self._release_context()
  *         if self._xsltCtxt is not NULL:
  */
+  __Pyx_TraceLine(314,0,__PYX_ERR(3, 314, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185248,6 +197129,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  *         if self._xsltCtxt is not NULL:
  *             xslt.xsltFreeTransformContext(self._xsltCtxt)
  */
+  __Pyx_TraceLine(315,0,__PYX_ERR(3, 315, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__release_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185259,6 +197141,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  *             xslt.xsltFreeTransformContext(self._xsltCtxt)
  *             self._xsltCtxt = NULL
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(3, 316, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_xsltCtxt != NULL) != 0);
   if (__pyx_t_2) {
 
@@ -185269,6 +197152,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  *             self._xsltCtxt = NULL
  *         self._release_temp_refs()
  */
+    __Pyx_TraceLine(317,0,__PYX_ERR(3, 317, __pyx_L1_error))
     xsltFreeTransformContext(__pyx_v_self->_xsltCtxt);
 
     /* "src/lxml/xslt.pxi":318
@@ -185278,6 +197162,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  *         self._release_temp_refs()
  * 
  */
+    __Pyx_TraceLine(318,0,__PYX_ERR(3, 318, __pyx_L1_error))
     __pyx_v_self->_xsltCtxt = NULL;
 
     /* "src/lxml/xslt.pxi":316
@@ -185296,6 +197181,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
  * 
  * 
  */
+  __Pyx_TraceLine(319,0,__PYX_ERR(3, 319, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -185317,6 +197203,7 @@ static PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_o
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185381,9 +197268,11 @@ static int __pyx_pw_4lxml_5etree_22_XSLTQuotedStringParam_1__cinit__(PyObject *_
 
 static int __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___cinit__(struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *__pyx_v_self, PyObject *__pyx_v_strval) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[3], 330, 0, __PYX_ERR(3, 330, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":331
  *     cdef bytes strval
@@ -185392,6 +197281,7 @@ static int __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___cinit__(struct __pyx
  * 
  * 
  */
+  __Pyx_TraceLine(331,0,__PYX_ERR(3, 331, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_strval); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 331, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -185416,6 +197306,7 @@ static int __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___cinit__(struct __pyx
   __Pyx_AddTraceback("lxml.etree._XSLTQuotedStringParam.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185446,8 +197337,10 @@ static int __pyx_pw_4lxml_5etree_4XSLT_1__cinit__(PyObject *__pyx_v_self, PyObje
 
 static int __pyx_pf_4lxml_5etree_4XSLT___cinit__(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[3], 367, 0, __PYX_ERR(3, 367, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":368
  * 
@@ -185456,6 +197349,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT___cinit__(struct __pyx_obj_4lxml_5etree_X
  * 
  *     def __init__(self, xslt_input, *, extensions=None, regexp=True,
  */
+  __Pyx_TraceLine(368,0,__PYX_ERR(3, 368, __pyx_L1_error))
   __pyx_v_self->_c_style = NULL;
 
   /* "src/lxml/xslt.pxi":367
@@ -185468,6 +197362,12 @@ static int __pyx_pf_4lxml_5etree_4XSLT___cinit__(struct __pyx_obj_4lxml_5etree_X
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XSLT.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -185569,6 +197469,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
   struct LxmlElement *__pyx_v_root_node = 0;
   PyObject *__pyx_v_doc_url_utf = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlDoc *__pyx_t_2;
@@ -185582,9 +197483,12 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
-  int __pyx_t_13;
-  int __pyx_t_14;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  int __pyx_t_15;
+  int __pyx_t_16;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[3], 370, 0, __PYX_ERR(3, 370, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":372
  *     def __init__(self, xslt_input, *, extensions=None, regexp=True,
@@ -185593,6 +197497,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         cdef xmlDoc* c_doc
  *         cdef _Document doc
  */
+  __Pyx_TraceLine(372,0,__PYX_ERR(3, 372, __pyx_L1_error))
   __pyx_v_c_style = NULL;
 
   /* "src/lxml/xslt.pxi":377
@@ -185602,6 +197507,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         root_node = _rootNodeOrRaise(xslt_input)
  * 
  */
+  __Pyx_TraceLine(377,0,__PYX_ERR(3, 377, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_xslt_input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 377, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -185614,6 +197520,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         # set access control or raise TypeError
  */
+  __Pyx_TraceLine(378,0,__PYX_ERR(3, 378, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_xslt_input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 378, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -185626,6 +197533,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         # make a copy of the document as stylesheet parsing modifies it
  */
+  __Pyx_TraceLine(381,0,__PYX_ERR(3, 381, __pyx_L1_error))
   if (!(likely(((__pyx_v_access_control) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_access_control, __pyx_ptype_4lxml_5etree_XSLTAccessControl))))) __PYX_ERR(3, 381, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_access_control;
   __Pyx_INCREF(__pyx_t_1);
@@ -185642,6 +197550,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         # make sure we always have a stylesheet URL
  */
+  __Pyx_TraceLine(384,0,__PYX_ERR(3, 384, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 384, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_2;
 
@@ -185652,6 +197561,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             doc_url_utf = python.PyUnicode_AsASCIIString(
  *                 f"string://__STRING__XSLT__/{id(self)}.xslt")
  */
+  __Pyx_TraceLine(387,0,__PYX_ERR(3, 387, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_doc->URL == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -185662,6 +197572,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             c_doc.URL = tree.xmlStrdup(_xcstr(doc_url_utf))
  * 
  */
+    __Pyx_TraceLine(389,0,__PYX_ERR(3, 389, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 389, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = 0;
@@ -185695,6 +197606,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                 f"string://__STRING__XSLT__/{id(self)}.xslt")
  *             c_doc.URL = tree.xmlStrdup(_xcstr(doc_url_utf))
  */
+    __Pyx_TraceLine(388,0,__PYX_ERR(3, 388, __pyx_L1_error))
     __pyx_t_1 = PyUnicode_AsASCIIString(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -185708,6 +197620,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         self._error_log = _ErrorLog()
  */
+    __Pyx_TraceLine(390,0,__PYX_ERR(3, 390, __pyx_L1_error))
     __pyx_v_c_doc->URL = xmlStrdup((const xmlChar*)PyBytes_AS_STRING(__pyx_v_doc_url_utf));
 
     /* "src/lxml/xslt.pxi":387
@@ -185726,6 +197639,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         self._xslt_resolver_context = _XSLTResolverContext()
  *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
  */
+  __Pyx_TraceLine(392,0,__PYX_ERR(3, 392, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 392, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -185741,6 +197655,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
  *         # keep a copy in case we need to access the stylesheet via 'document()'
  */
+  __Pyx_TraceLine(393,0,__PYX_ERR(3, 393, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTResolverContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 393, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -185756,6 +197671,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         # keep a copy in case we need to access the stylesheet via 'document()'
  *         self._xslt_resolver_context._c_style_doc = _copyDoc(c_doc, 1)
  */
+  __Pyx_TraceLine(394,0,__PYX_ERR(3, 394, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_xslt_resolver_context);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_7 = ((PyObject *)__pyx_v_doc->_parser);
@@ -185773,6 +197689,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         c_doc._private = <python.PyObject*>self._xslt_resolver_context
  * 
  */
+  __Pyx_TraceLine(396,0,__PYX_ERR(3, 396, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_doc, 1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 396, __pyx_L1_error)
   __pyx_v_self->_xslt_resolver_context->_c_style_doc = __pyx_t_2;
 
@@ -185783,6 +197700,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         with self._error_log:
  */
+  __Pyx_TraceLine(397,0,__PYX_ERR(3, 397, __pyx_L1_error))
   __pyx_v_c_doc->_private = ((PyObject *)__pyx_v_self->_xslt_resolver_context);
 
   /* "src/lxml/xslt.pxi":399
@@ -185792,13 +197710,19 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
  * 
  */
+  __Pyx_TraceLine(399,0,__PYX_ERR(3, 399, __pyx_L1_error))
   /*with:*/ {
     __pyx_t_8 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 399, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->_error_log); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(3, 399, __pyx_L4_error)
     /*try:*/ {
       {
-        (void)__pyx_t_10; (void)__pyx_t_11; (void)__pyx_t_12; /* mark used */
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+        __Pyx_XGOTREF(__pyx_t_10);
+        __Pyx_XGOTREF(__pyx_t_11);
+        __Pyx_XGOTREF(__pyx_t_12);
         /*try:*/ {
 
           /* "src/lxml/xslt.pxi":400
@@ -185808,6 +197732,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *         if c_style is NULL or c_style.errors:
  */
+          __Pyx_TraceLine(400,0,__PYX_ERR(3, 400, __pyx_L8_error))
           __pyx_v_c_style = xsltParseStylesheetDoc(__pyx_v_c_doc);
 
           /* "src/lxml/xslt.pxi":399
@@ -185818,12 +197743,62 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  */
         }
+        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        goto __pyx_L13_try_end;
+        __pyx_L8_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("lxml.etree.XSLT.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_1) < 0) __PYX_ERR(3, 399, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_13 = PyTuple_Pack(3, __pyx_t_6, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 399, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (unlikely(!__pyx_t_14)) __PYX_ERR(3, 399, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_14);
+          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_14);
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          if (__pyx_t_3 < 0) __PYX_ERR(3, 399, __pyx_L10_except_error)
+          __pyx_t_15 = ((!(__pyx_t_3 != 0)) != 0);
+          if (__pyx_t_15) {
+            __Pyx_GIVEREF(__pyx_t_6);
+            __Pyx_GIVEREF(__pyx_t_7);
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_7, __pyx_t_1);
+            __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_1 = 0; 
+            __PYX_ERR(3, 399, __pyx_L10_except_error)
+          }
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          goto __pyx_L9_exception_handled;
+        }
+        __pyx_L10_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        goto __pyx_L1_error;
+        __pyx_L9_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        __pyx_L13_try_end:;
       }
     }
     /*finally:*/ {
       /*normal exit:*/{
         if (__pyx_t_8) {
-          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__125, NULL);
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__350, NULL);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
           if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 399, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
@@ -185833,11 +197808,11 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
       }
       __pyx_L7:;
     }
-    goto __pyx_L14;
+    goto __pyx_L17;
     __pyx_L4_error:;
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     goto __pyx_L1_error;
-    __pyx_L14:;
+    __pyx_L17:;
   }
 
   /* "src/lxml/xslt.pxi":402
@@ -185847,16 +197822,17 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             tree.xmlFreeDoc(c_doc)
  *             if c_style is not NULL:
  */
-  __pyx_t_13 = ((__pyx_v_c_style == NULL) != 0);
-  if (!__pyx_t_13) {
+  __Pyx_TraceLine(402,0,__PYX_ERR(3, 402, __pyx_L1_error))
+  __pyx_t_3 = ((__pyx_v_c_style == NULL) != 0);
+  if (!__pyx_t_3) {
   } else {
-    __pyx_t_3 = __pyx_t_13;
-    goto __pyx_L16_bool_binop_done;
+    __pyx_t_15 = __pyx_t_3;
+    goto __pyx_L19_bool_binop_done;
   }
-  __pyx_t_13 = (__pyx_v_c_style->errors != 0);
-  __pyx_t_3 = __pyx_t_13;
-  __pyx_L16_bool_binop_done:;
-  if (__pyx_t_3) {
+  __pyx_t_3 = (__pyx_v_c_style->errors != 0);
+  __pyx_t_15 = __pyx_t_3;
+  __pyx_L19_bool_binop_done:;
+  if (__pyx_t_15) {
 
     /* "src/lxml/xslt.pxi":403
  * 
@@ -185865,6 +197841,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             if c_style is not NULL:
  *                 xslt.xsltFreeStylesheet(c_style)
  */
+    __Pyx_TraceLine(403,0,__PYX_ERR(3, 403, __pyx_L1_error))
     xmlFreeDoc(__pyx_v_c_doc);
 
     /* "src/lxml/xslt.pxi":404
@@ -185874,8 +197851,9 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                 xslt.xsltFreeStylesheet(c_style)
  *             self._xslt_resolver_context._raise_if_stored()
  */
-    __pyx_t_3 = ((__pyx_v_c_style != NULL) != 0);
-    if (__pyx_t_3) {
+    __Pyx_TraceLine(404,0,__PYX_ERR(3, 404, __pyx_L1_error))
+    __pyx_t_15 = ((__pyx_v_c_style != NULL) != 0);
+    if (__pyx_t_15) {
 
       /* "src/lxml/xslt.pxi":405
  *             tree.xmlFreeDoc(c_doc)
@@ -185884,6 +197862,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             self._xslt_resolver_context._raise_if_stored()
  *             # last error seems to be the most accurate here
  */
+      __Pyx_TraceLine(405,0,__PYX_ERR(3, 405, __pyx_L1_error))
       xsltFreeStylesheet(__pyx_v_c_style);
 
       /* "src/lxml/xslt.pxi":404
@@ -185902,6 +197881,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             # last error seems to be the most accurate here
  *             if self._error_log.last_error is not None and \
  */
+    __Pyx_TraceLine(406,0,__PYX_ERR(3, 406, __pyx_L1_error))
     __pyx_t_9 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_self->_xslt_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self->_xslt_resolver_context)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(3, 406, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":408
@@ -185911,12 +197891,13 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                     self._error_log.last_error.message:
  *                 raise XSLTParseError(self._error_log.last_error.message,
  */
-    __pyx_t_13 = (__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error != Py_None);
-    __pyx_t_14 = (__pyx_t_13 != 0);
-    if (__pyx_t_14) {
+    __Pyx_TraceLine(408,0,__PYX_ERR(3, 408, __pyx_L1_error))
+    __pyx_t_3 = (__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error != Py_None);
+    __pyx_t_16 = (__pyx_t_3 != 0);
+    if (__pyx_t_16) {
     } else {
-      __pyx_t_3 = __pyx_t_14;
-      goto __pyx_L20_bool_binop_done;
+      __pyx_t_15 = __pyx_t_16;
+      goto __pyx_L23_bool_binop_done;
     }
 
     /* "src/lxml/xslt.pxi":409
@@ -185926,12 +197907,13 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                 raise XSLTParseError(self._error_log.last_error.message,
  *                                      self._error_log)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 409, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(3, 409, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_3 = __pyx_t_14;
-    __pyx_L20_bool_binop_done:;
+    __Pyx_TraceLine(409,0,__PYX_ERR(3, 409, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 409, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(3, 409, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_15 = __pyx_t_16;
+    __pyx_L23_bool_binop_done:;
 
     /* "src/lxml/xslt.pxi":408
  *             self._xslt_resolver_context._raise_if_stored()
@@ -185940,7 +197922,8 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                     self._error_log.last_error.message:
  *                 raise XSLTParseError(self._error_log.last_error.message,
  */
-    if (unlikely(__pyx_t_3)) {
+    __Pyx_TraceLine(408,0,__PYX_ERR(3, 408, __pyx_L1_error))
+    if (unlikely(__pyx_t_15)) {
 
       /* "src/lxml/xslt.pxi":410
  *             if self._error_log.last_error is not None and \
@@ -185949,8 +197932,9 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                                      self._error_log)
  *             else:
  */
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 410, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_TraceLine(410,0,__PYX_ERR(3, 410, __pyx_L1_error))
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 410, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
 
       /* "src/lxml/xslt.pxi":411
  *                     self._error_log.last_error.message:
@@ -185959,14 +197943,15 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *             else:
  *                 raise XSLTParseError(
  */
+      __Pyx_TraceLine(411,0,__PYX_ERR(3, 411, __pyx_L1_error))
       __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 410, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
       __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
       PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_self->_error_log));
-      __pyx_t_6 = 0;
+      __pyx_t_1 = 0;
 
       /* "src/lxml/xslt.pxi":410
  *             if self._error_log.last_error is not None and \
@@ -185975,11 +197960,12 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                                      self._error_log)
  *             else:
  */
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTParseError), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 410, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_TraceLine(410,0,__PYX_ERR(3, 410, __pyx_L1_error))
+      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTParseError), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 410, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __PYX_ERR(3, 410, __pyx_L1_error)
 
       /* "src/lxml/xslt.pxi":408
@@ -185998,6 +197984,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                     self._error_log._buildExceptionMessage(
  *                         u"Cannot parse stylesheet"),
  */
+    __Pyx_TraceLine(413,0,__PYX_ERR(3, 413, __pyx_L1_error))
     /*else*/ {
 
       /* "src/lxml/xslt.pxi":414
@@ -186007,8 +197994,9 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                         u"Cannot parse stylesheet"),
  *                     self._error_log)
  */
-      __pyx_t_6 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Cannot_parse_stylesheet); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 414, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_TraceLine(414,0,__PYX_ERR(3, 414, __pyx_L1_error))
+      __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Cannot_parse_stylesheet); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 414, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
 
       /* "src/lxml/xslt.pxi":413
  *                                      self._error_log)
@@ -186017,19 +198005,20 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *                     self._error_log._buildExceptionMessage(
  *                         u"Cannot parse stylesheet"),
  */
+      __Pyx_TraceLine(413,0,__PYX_ERR(3, 413, __pyx_L1_error))
       __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 413, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_GIVEREF(__pyx_t_6);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
       __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
       PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_self->_error_log));
-      __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTParseError), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 413, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_1 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTParseError), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 413, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __PYX_ERR(3, 413, __pyx_L1_error)
     }
 
@@ -186049,6 +198038,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         self._c_style = c_style
  *         self._context = _XSLTContext(None, extensions, self._error_log, regexp, True)
  */
+  __Pyx_TraceLine(418,0,__PYX_ERR(3, 418, __pyx_L1_error))
   __pyx_v_c_doc->_private = NULL;
 
   /* "src/lxml/xslt.pxi":419
@@ -186058,6 +198048,7 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  *         self._context = _XSLTContext(None, extensions, self._error_log, regexp, True)
  * 
  */
+  __Pyx_TraceLine(419,0,__PYX_ERR(3, 419, __pyx_L1_error))
   __pyx_v_self->_c_style = __pyx_v_c_style;
 
   /* "src/lxml/xslt.pxi":420
@@ -186067,26 +198058,27 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
  * 
  *     def __dealloc__(self):
  */
-  __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 420, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_TraceLine(420,0,__PYX_ERR(3, 420, __pyx_L1_error))
+  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 420, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
-  PyTuple_SET_ITEM(__pyx_t_6, 0, Py_None);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None);
   __Pyx_INCREF(__pyx_v_extensions);
   __Pyx_GIVEREF(__pyx_v_extensions);
-  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_extensions);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_extensions);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
-  PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_v_self->_error_log));
+  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->_error_log));
   __Pyx_INCREF(__pyx_v_regexp);
   __Pyx_GIVEREF(__pyx_v_regexp);
-  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_regexp);
+  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_regexp);
   __Pyx_INCREF(Py_True);
   __Pyx_GIVEREF(Py_True);
-  PyTuple_SET_ITEM(__pyx_t_6, 4, Py_True);
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTContext), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 420, __pyx_L1_error)
+  PyTuple_SET_ITEM(__pyx_t_1, 4, Py_True);
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTContext), __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 420, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_GIVEREF(__pyx_t_7);
   __Pyx_GOTREF(__pyx_v_self->_context);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_context));
@@ -186108,12 +198100,14 @@ static int __pyx_pf_4lxml_5etree_4XSLT_2__init__(struct __pyx_obj_4lxml_5etree_X
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_6);
   __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_13);
   __Pyx_AddTraceback("lxml.etree.XSLT.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XDECREF(__pyx_v_doc_url_utf);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186138,11 +198132,13 @@ static void __pyx_pw_4lxml_5etree_4XSLT_5__dealloc__(PyObject *__pyx_v_self) {
 }
 
 static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[3], 422, 0, __PYX_ERR(3, 422, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":423
  * 
@@ -186151,6 +198147,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *                self._xslt_resolver_context._c_style_doc is not NULL:
  *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
  */
+  __Pyx_TraceLine(423,0,__PYX_ERR(3, 423, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_xslt_resolver_context) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -186166,6 +198163,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
  *         # this cleans up the doc copy as well
  */
+  __Pyx_TraceLine(424,0,__PYX_ERR(3, 424, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->_xslt_resolver_context->_c_style_doc != NULL) != 0);
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
@@ -186177,6 +198175,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *                self._xslt_resolver_context._c_style_doc is not NULL:
  *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
  */
+  __Pyx_TraceLine(423,0,__PYX_ERR(3, 423, __pyx_L1_error))
   if (__pyx_t_1) {
 
     /* "src/lxml/xslt.pxi":425
@@ -186186,6 +198185,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *         # this cleans up the doc copy as well
  *         if self._c_style is not NULL:
  */
+    __Pyx_TraceLine(425,0,__PYX_ERR(3, 425, __pyx_L1_error))
     xmlFreeDoc(__pyx_v_self->_xslt_resolver_context->_c_style_doc);
 
     /* "src/lxml/xslt.pxi":423
@@ -186204,6 +198204,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *             xslt.xsltFreeStylesheet(self._c_style)
  * 
  */
+  __Pyx_TraceLine(427,0,__PYX_ERR(3, 427, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_style != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -186214,6 +198215,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  * 
  *     property error_log:
  */
+    __Pyx_TraceLine(428,0,__PYX_ERR(3, 428, __pyx_L1_error))
     xsltFreeStylesheet(__pyx_v_self->_c_style);
 
     /* "src/lxml/xslt.pxi":427
@@ -186234,6 +198236,11 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.XSLT.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -186260,9 +198267,11 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_9error_log_1__get__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[3], 432, 0, __PYX_ERR(3, 432, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":433
  *         u"The log of errors and warnings of an XSLT execution."
@@ -186271,6 +198280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(struct __pyx_obj
  * 
  *     @staticmethod
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(3, 433, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 433, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -186293,6 +198303,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(struct __pyx_obj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186359,9 +198370,12 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_7strparam(CYTHON_UNUSED PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_6strparam(PyObject *__pyx_v_strval) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__351)
   __Pyx_RefNannySetupContext("strparam", 0);
+  __Pyx_TraceCall("strparam", __pyx_f[3], 436, 0, __PYX_ERR(3, 436, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":447
  *         Escaped string parameters can be reused without restriction.
@@ -186370,6 +198384,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_6strparam(PyObject *__pyx_v_strval)
  * 
  *     @staticmethod
  */
+  __Pyx_TraceLine(447,0,__PYX_ERR(3, 447, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree__XSLTQuotedStringParam), __pyx_v_strval); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -186392,6 +198407,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_6strparam(PyObject *__pyx_v_strval)
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186458,10 +198474,13 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_9set_global_max_depth(CYTHON_UNUSED
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_max_depth) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__352)
   __Pyx_RefNannySetupContext("set_global_max_depth", 0);
+  __Pyx_TraceCall("set_global_max_depth", __pyx_f[3], 450, 0, __PYX_ERR(3, 450, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":465
  *         libxslt does not support it at a per-stylesheet level.
@@ -186470,6 +198489,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_m
  *             raise ValueError("cannot set a maximum stylesheet traversal depth < 0")
  *         xslt.xsltMaxDepth = max_depth
  */
+  __Pyx_TraceLine(465,0,__PYX_ERR(3, 465, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_max_depth < 0) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -186480,7 +198500,8 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_m
  *         xslt.xsltMaxDepth = max_depth
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__126, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 466, __pyx_L1_error)
+    __Pyx_TraceLine(466,0,__PYX_ERR(3, 466, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__353, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 466, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -186502,6 +198523,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_m
  * 
  *     def apply(self, _input, *, profile_run=False, **kw):
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(3, 467, __pyx_L1_error))
   xsltMaxDepth = __pyx_v_max_depth;
 
   /* "src/lxml/xslt.pxi":450
@@ -186521,6 +198543,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_8set_global_max_depth(int __pyx_v_m
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186600,11 +198623,14 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_11apply(PyObject *__pyx_v_self, PyO
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_10apply(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self, PyObject *__pyx_v__input, PyObject *__pyx_v_profile_run, PyObject *__pyx_v_kw) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__354)
   __Pyx_RefNannySetupContext("apply", 0);
+  __Pyx_TraceCall("apply", __pyx_f[3], 469, 0, __PYX_ERR(3, 469, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":473
  * 
@@ -186613,6 +198639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_10apply(struct __pyx_obj_4lxml_5etr
  * 
  *     def tostring(self, _ElementTree result_tree):
  */
+  __Pyx_TraceLine(473,0,__PYX_ERR(3, 473, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 473, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -186650,6 +198677,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_10apply(struct __pyx_obj_4lxml_5etr
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186684,9 +198712,12 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_13tostring(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_12tostring(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self, struct LxmlElementTree *__pyx_v_result_tree) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__355)
   __Pyx_RefNannySetupContext("tostring", 0);
+  __Pyx_TraceCall("tostring", __pyx_f[3], 475, 0, __PYX_ERR(3, 475, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":482
  *         :deprecated: use str(result_tree) instead.
@@ -186695,6 +198726,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_12tostring(CYTHON_UNUSED struct __p
  * 
  *     def __deepcopy__(self, memo):
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(3, 482, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), ((PyObject *)__pyx_v_result_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 482, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -186717,6 +198749,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_12tostring(CYTHON_UNUSED struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186745,11 +198778,14 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_15__deepcopy__(PyObject *__pyx_v_se
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_14__deepcopy__(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_memo) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__356)
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
+  __Pyx_TraceCall("__deepcopy__", __pyx_f[3], 484, 0, __PYX_ERR(3, 484, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":485
  * 
@@ -186758,6 +198794,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_14__deepcopy__(struct __pyx_obj_4lx
  * 
  *     def __copy__(self):
  */
+  __Pyx_TraceLine(485,0,__PYX_ERR(3, 485, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 485, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -186800,6 +198837,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_14__deepcopy__(struct __pyx_obj_4lx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186828,9 +198866,12 @@ static PyObject *__pyx_pw_4lxml_5etree_4XSLT_17__copy__(PyObject *__pyx_v_self,
 
 static PyObject *__pyx_pf_4lxml_5etree_4XSLT_16__copy__(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__357)
   __Pyx_RefNannySetupContext("__copy__", 0);
+  __Pyx_TraceCall("__copy__", __pyx_f[3], 487, 0, __PYX_ERR(3, 487, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":488
  * 
@@ -186839,6 +198880,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_16__copy__(struct __pyx_obj_4lxml_5
  * 
  *     def __call__(self, _input, *, profile_run=False, **kw):
  */
+  __Pyx_TraceLine(488,0,__PYX_ERR(3, 488, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__copyXSLT(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -186861,6 +198903,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_16__copy__(struct __pyx_obj_4lxml_5
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -186956,6 +198999,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
   PyObject *__pyx_v_error = NULL;
   PyObject *__pyx_v_message = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlDoc *__pyx_t_2;
@@ -186979,6 +199023,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
   char const *__pyx_t_20;
   int __pyx_t_21;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[3], 490, 0, __PYX_ERR(3, 490, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":499
  *         xslt_profile that holds an XML tree with profiling data.
@@ -186987,6 +199032,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         cdef _XSLTResolverContext resolver_context
  *         cdef _Document input_doc
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(3, 499, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None);
 
@@ -186997,6 +199043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         cdef xmlDoc* c_profile_doc
  *         cdef xslt.xsltTransformContext* transform_ctxt
  */
+  __Pyx_TraceLine(504,0,__PYX_ERR(3, 504, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_profile_doc = ((struct LxmlDocument *)Py_None);
 
@@ -187007,6 +199054,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         cdef xmlDoc* c_doc
  *         cdef tree.xmlDict* c_dict
  */
+  __Pyx_TraceLine(507,0,__PYX_ERR(3, 507, __pyx_L1_error))
   __pyx_v_c_result = NULL;
 
   /* "src/lxml/xslt.pxi":510
@@ -187016,6 +199064,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         assert self._c_style is not NULL, "XSLT stylesheet not initialised"
  */
+  __Pyx_TraceLine(510,0,__PYX_ERR(3, 510, __pyx_L1_error))
   __pyx_v_params = NULL;
 
   /* "src/lxml/xslt.pxi":512
@@ -187025,6 +199074,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         input_doc = _documentOrRaise(_input)
  *         root_node = _rootNodeOrRaise(_input)
  */
+  __Pyx_TraceLine(512,0,__PYX_ERR(3, 512, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_style != NULL) != 0))) {
@@ -187041,6 +199091,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         root_node = _rootNodeOrRaise(_input)
  * 
  */
+  __Pyx_TraceLine(513,0,__PYX_ERR(3, 513, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v__input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 513, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_input_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -187053,6 +199104,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         c_doc = _fakeRootDoc(input_doc._c_doc, root_node._c_node)
  */
+  __Pyx_TraceLine(514,0,__PYX_ERR(3, 514, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v__input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -187065,6 +199117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(3, 516, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_input_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 516, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_2;
 
@@ -187075,6 +199128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         if transform_ctxt is NULL:
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  */
+  __Pyx_TraceLine(518,0,__PYX_ERR(3, 518, __pyx_L1_error))
   __pyx_v_transform_ctxt = xsltNewTransformContext(__pyx_v_self->_c_style, __pyx_v_c_doc);
 
   /* "src/lxml/xslt.pxi":519
@@ -187084,6 +199138,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(519,0,__PYX_ERR(3, 519, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_transform_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -187094,6 +199149,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(520,0,__PYX_ERR(3, 520, __pyx_L1_error))
     __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_input_doc->_c_doc, __pyx_v_c_doc);
 
     /* "src/lxml/xslt.pxi":521
@@ -187103,6 +199159,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         # using the stylesheet dict is safer than using a possibly
  */
+    __Pyx_TraceLine(521,0,__PYX_ERR(3, 521, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(3, 521, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":519
@@ -187121,6 +199178,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             xmlparser.xmlDictFree(transform_ctxt.dict)
  *         if kw:
  */
+  __Pyx_TraceLine(527,0,__PYX_ERR(3, 527, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_transform_ctxt->dict != NULL) != 0);
   if (__pyx_t_3) {
 
@@ -187131,6 +199189,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         if kw:
  *             # parameter values are stored in the dict
  */
+    __Pyx_TraceLine(528,0,__PYX_ERR(3, 528, __pyx_L1_error))
     xmlDictFree(__pyx_v_transform_ctxt->dict);
 
     /* "src/lxml/xslt.pxi":527
@@ -187149,6 +199208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             # parameter values are stored in the dict
  *             # => avoid unnecessarily cluttering the global dict
  */
+  __Pyx_TraceLine(529,0,__PYX_ERR(3, 529, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_kw); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(3, 529, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -187159,6 +199219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             if transform_ctxt.dict is NULL:
  *                 xslt.xsltFreeTransformContext(transform_ctxt)
  */
+    __Pyx_TraceLine(532,0,__PYX_ERR(3, 532, __pyx_L1_error))
     __pyx_v_transform_ctxt->dict = xmlDictCreateSub(__pyx_v_self->_c_style->doc->dict);
 
     /* "src/lxml/xslt.pxi":533
@@ -187168,6 +199229,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 xslt.xsltFreeTransformContext(transform_ctxt)
  *                 raise MemoryError()
  */
+    __Pyx_TraceLine(533,0,__PYX_ERR(3, 533, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_transform_ctxt->dict == NULL) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -187178,6 +199240,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 raise MemoryError()
  *         else:
  */
+      __Pyx_TraceLine(534,0,__PYX_ERR(3, 534, __pyx_L1_error))
       xsltFreeTransformContext(__pyx_v_transform_ctxt);
 
       /* "src/lxml/xslt.pxi":535
@@ -187187,6 +199250,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         else:
  *             transform_ctxt.dict = self._c_style.doc.dict
  */
+      __Pyx_TraceLine(535,0,__PYX_ERR(3, 535, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(3, 535, __pyx_L1_error)
 
       /* "src/lxml/xslt.pxi":533
@@ -187215,6 +199279,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             xmlparser.xmlDictReference(transform_ctxt.dict)
  * 
  */
+  __Pyx_TraceLine(537,0,__PYX_ERR(3, 537, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_v_self->_c_style->doc->dict;
     __pyx_v_transform_ctxt->dict = __pyx_t_4;
@@ -187226,6 +199291,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         xslt.xsltSetCtxtParseOptions(
  */
+    __Pyx_TraceLine(538,0,__PYX_ERR(3, 538, __pyx_L1_error))
     (void)(xmlDictReference(__pyx_v_transform_ctxt->dict));
   }
   __pyx_L5:;
@@ -187237,6 +199303,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             transform_ctxt, input_doc._parser._parse_options)
  * 
  */
+  __Pyx_TraceLine(540,0,__PYX_ERR(3, 540, __pyx_L1_error))
   xsltSetCtxtParseOptions(__pyx_v_transform_ctxt, __pyx_v_input_doc->_parser->_parse_options);
 
   /* "src/lxml/xslt.pxi":543
@@ -187246,6 +199313,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             transform_ctxt.profile = 1
  * 
  */
+  __Pyx_TraceLine(543,0,__PYX_ERR(3, 543, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_profile_run); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(3, 543, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -187256,6 +199324,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         try:
  */
+    __Pyx_TraceLine(544,0,__PYX_ERR(3, 544, __pyx_L1_error))
     __pyx_v_transform_ctxt->profile = 1;
 
     /* "src/lxml/xslt.pxi":543
@@ -187274,6 +199343,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             context = self._context._copy()
  *             context.register_context(transform_ctxt, input_doc)
  */
+  __Pyx_TraceLine(546,0,__PYX_ERR(3, 546, __pyx_L9_error))
   /*try:*/ {
 
     /* "src/lxml/xslt.pxi":547
@@ -187283,6 +199353,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             context.register_context(transform_ctxt, input_doc)
  * 
  */
+    __Pyx_TraceLine(547,0,__PYX_ERR(3, 547, __pyx_L9_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 547, __pyx_L9_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__XSLTContext))))) __PYX_ERR(3, 547, __pyx_L9_error)
@@ -187296,6 +199367,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             resolver_context = self._xslt_resolver_context._copy()
  */
+    __Pyx_TraceLine(548,0,__PYX_ERR(3, 548, __pyx_L9_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_12_XSLTContext_register_context(__pyx_v_context, __pyx_v_transform_ctxt, __pyx_v_input_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 548, __pyx_L9_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -187307,6 +199379,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             transform_ctxt._private = <python.PyObject*>resolver_context
  * 
  */
+    __Pyx_TraceLine(550,0,__PYX_ERR(3, 550, __pyx_L9_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy(__pyx_v_self->_xslt_resolver_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 550, __pyx_L9_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
@@ -187319,6 +199392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             _convert_xslt_parameters(transform_ctxt, kw, &params)
  */
+    __Pyx_TraceLine(551,0,__PYX_ERR(3, 551, __pyx_L9_error))
     __pyx_v_transform_ctxt->_private = ((PyObject *)__pyx_v_resolver_context);
 
     /* "src/lxml/xslt.pxi":553
@@ -187328,6 +199402,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             c_result = self._run_transform(
  *                 c_doc, params, context, transform_ctxt)
  */
+    __Pyx_TraceLine(553,0,__PYX_ERR(3, 553, __pyx_L9_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__convert_xslt_parameters(__pyx_v_transform_ctxt, __pyx_v_kw, (&__pyx_v_params)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 553, __pyx_L9_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -187339,6 +199414,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 c_doc, params, context, transform_ctxt)
  *             if params is not NULL:
  */
+    __Pyx_TraceLine(554,0,__PYX_ERR(3, 554, __pyx_L9_error))
     __pyx_v_c_result = ((struct __pyx_vtabstruct_4lxml_5etree_XSLT *)__pyx_v_self->__pyx_vtab)->_run_transform(__pyx_v_self, __pyx_v_c_doc, __pyx_v_params, __pyx_v_context, __pyx_v_transform_ctxt);
 
     /* "src/lxml/xslt.pxi":556
@@ -187348,6 +199424,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 # deallocate space for parameters
  *                 python.lxml_free(params)
  */
+    __Pyx_TraceLine(556,0,__PYX_ERR(3, 556, __pyx_L9_error))
     __pyx_t_3 = ((__pyx_v_params != NULL) != 0);
     if (__pyx_t_3) {
 
@@ -187358,6 +199435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             if transform_ctxt.state != xslt.XSLT_STATE_OK:
  */
+      __Pyx_TraceLine(558,0,__PYX_ERR(3, 558, __pyx_L9_error))
       lxml_free(__pyx_v_params);
 
       /* "src/lxml/xslt.pxi":556
@@ -187376,6 +199454,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_result is not NULL:
  *                     tree.xmlFreeDoc(c_result)
  */
+    __Pyx_TraceLine(560,0,__PYX_ERR(3, 560, __pyx_L9_error))
     __pyx_t_3 = ((__pyx_v_transform_ctxt->state != XSLT_STATE_OK) != 0);
     if (__pyx_t_3) {
 
@@ -187386,6 +199465,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     tree.xmlFreeDoc(c_result)
  *                     c_result = NULL
  */
+      __Pyx_TraceLine(561,0,__PYX_ERR(3, 561, __pyx_L9_error))
       __pyx_t_3 = ((__pyx_v_c_result != NULL) != 0);
       if (__pyx_t_3) {
 
@@ -187396,6 +199476,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     c_result = NULL
  * 
  */
+        __Pyx_TraceLine(562,0,__PYX_ERR(3, 562, __pyx_L9_error))
         xmlFreeDoc(__pyx_v_c_result);
 
         /* "src/lxml/xslt.pxi":563
@@ -187405,6 +199486,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             if transform_ctxt.profile:
  */
+        __Pyx_TraceLine(563,0,__PYX_ERR(3, 563, __pyx_L9_error))
         __pyx_v_c_result = NULL;
 
         /* "src/lxml/xslt.pxi":561
@@ -187432,6 +199514,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 c_profile_doc = xslt.xsltGetProfileInformation(transform_ctxt)
  *                 if c_profile_doc is not NULL:
  */
+    __Pyx_TraceLine(565,0,__PYX_ERR(3, 565, __pyx_L9_error))
     __pyx_t_3 = (__pyx_v_transform_ctxt->profile != 0);
     if (__pyx_t_3) {
 
@@ -187442,6 +199525,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_profile_doc is not NULL:
  *                     profile_doc = _documentFactory(
  */
+      __Pyx_TraceLine(566,0,__PYX_ERR(3, 566, __pyx_L9_error))
       __pyx_v_c_profile_doc = xsltGetProfileInformation(__pyx_v_transform_ctxt);
 
       /* "src/lxml/xslt.pxi":567
@@ -187451,6 +199535,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     profile_doc = _documentFactory(
  *                         c_profile_doc, input_doc._parser)
  */
+      __Pyx_TraceLine(567,0,__PYX_ERR(3, 567, __pyx_L9_error))
       __pyx_t_3 = ((__pyx_v_c_profile_doc != NULL) != 0);
       if (__pyx_t_3) {
 
@@ -187461,6 +199546,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         finally:
  *             if context is not None:
  */
+        __Pyx_TraceLine(569,0,__PYX_ERR(3, 569, __pyx_L9_error))
         __pyx_t_1 = ((PyObject *)__pyx_v_input_doc->_parser);
         __Pyx_INCREF(__pyx_t_1);
 
@@ -187471,6 +199557,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                         c_profile_doc, input_doc._parser)
  *         finally:
  */
+        __Pyx_TraceLine(568,0,__PYX_ERR(3, 568, __pyx_L9_error))
         __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_profile_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1))); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 568, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -187503,6 +199590,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 context.free_context()
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  */
+  __Pyx_TraceLine(571,0,__PYX_ERR(3, 571, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_t_3 = (((PyObject *)__pyx_v_context) != Py_None);
@@ -187516,6 +199604,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  * 
  */
+        __Pyx_TraceLine(572,0,__PYX_ERR(3, 572, __pyx_L1_error))
         __pyx_t_5 = __pyx_f_4lxml_5etree_12_XSLTContext_free_context(__pyx_v_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 572, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -187536,6 +199625,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         try:
  */
+      __Pyx_TraceLine(573,0,__PYX_ERR(3, 573, __pyx_L1_error))
       __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_input_doc->_c_doc, __pyx_v_c_doc);
       goto __pyx_L10;
     }
@@ -187564,6 +199654,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 context.free_context()
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  */
+        __Pyx_TraceLine(571,0,__PYX_ERR(3, 571, __pyx_L18_error))
         __pyx_t_6 = (((PyObject *)__pyx_v_context) != Py_None);
         __pyx_t_3 = (__pyx_t_6 != 0);
         if (__pyx_t_3) {
@@ -187575,6 +199666,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             _destroyFakeDoc(input_doc._c_doc, c_doc)
  * 
  */
+          __Pyx_TraceLine(572,0,__PYX_ERR(3, 572, __pyx_L18_error))
           __pyx_t_5 = __pyx_f_4lxml_5etree_12_XSLTContext_free_context(__pyx_v_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 572, __pyx_L18_error)
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -187595,6 +199687,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         try:
  */
+        __Pyx_TraceLine(573,0,__PYX_ERR(3, 573, __pyx_L18_error))
         __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_input_doc->_c_doc, __pyx_v_c_doc);
       }
       if (PY_MAJOR_VERSION >= 3) {
@@ -187633,6 +199726,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             if resolver_context is not None and resolver_context._has_raised():
  *                 if c_result is not NULL:
  */
+  __Pyx_TraceLine(575,0,__PYX_ERR(3, 575, __pyx_L21_error))
   /*try:*/ {
 
     /* "src/lxml/xslt.pxi":576
@@ -187642,6 +199736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_result is not NULL:
  *                     tree.xmlFreeDoc(c_result)
  */
+    __Pyx_TraceLine(576,0,__PYX_ERR(3, 576, __pyx_L21_error))
     __pyx_t_6 = (((PyObject *)__pyx_v_resolver_context) != Py_None);
     __pyx_t_16 = (__pyx_t_6 != 0);
     if (__pyx_t_16) {
@@ -187662,6 +199757,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     tree.xmlFreeDoc(c_result)
  *                     c_result = NULL
  */
+      __Pyx_TraceLine(577,0,__PYX_ERR(3, 577, __pyx_L21_error))
       __pyx_t_3 = ((__pyx_v_c_result != NULL) != 0);
       if (__pyx_t_3) {
 
@@ -187672,6 +199768,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     c_result = NULL
  *                 resolver_context._raise_if_stored()
  */
+        __Pyx_TraceLine(578,0,__PYX_ERR(3, 578, __pyx_L21_error))
         xmlFreeDoc(__pyx_v_c_result);
 
         /* "src/lxml/xslt.pxi":579
@@ -187681,6 +199778,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 resolver_context._raise_if_stored()
  * 
  */
+        __Pyx_TraceLine(579,0,__PYX_ERR(3, 579, __pyx_L21_error))
         __pyx_v_c_result = NULL;
 
         /* "src/lxml/xslt.pxi":577
@@ -187699,6 +199797,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             if context._exc._has_raised():
  */
+      __Pyx_TraceLine(580,0,__PYX_ERR(3, 580, __pyx_L21_error))
       __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 580, __pyx_L21_error)
 
       /* "src/lxml/xslt.pxi":576
@@ -187717,6 +199816,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_result is not NULL:
  *                     tree.xmlFreeDoc(c_result)
  */
+    __Pyx_TraceLine(582,0,__PYX_ERR(3, 582, __pyx_L21_error))
     __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_has_raised(__pyx_v_context->__pyx_base._exc); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(3, 582, __pyx_L21_error)
     __pyx_t_6 = (__pyx_t_3 != 0);
     if (__pyx_t_6) {
@@ -187728,6 +199828,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     tree.xmlFreeDoc(c_result)
  *                     c_result = NULL
  */
+      __Pyx_TraceLine(583,0,__PYX_ERR(3, 583, __pyx_L21_error))
       __pyx_t_6 = ((__pyx_v_c_result != NULL) != 0);
       if (__pyx_t_6) {
 
@@ -187738,6 +199839,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     c_result = NULL
  *                 context._exc._raise_if_stored()
  */
+        __Pyx_TraceLine(584,0,__PYX_ERR(3, 584, __pyx_L21_error))
         xmlFreeDoc(__pyx_v_c_result);
 
         /* "src/lxml/xslt.pxi":585
@@ -187747,6 +199849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 context._exc._raise_if_stored()
  * 
  */
+        __Pyx_TraceLine(585,0,__PYX_ERR(3, 585, __pyx_L21_error))
         __pyx_v_c_result = NULL;
 
         /* "src/lxml/xslt.pxi":583
@@ -187765,6 +199868,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *             if c_result is NULL:
  */
+      __Pyx_TraceLine(586,0,__PYX_ERR(3, 586, __pyx_L21_error))
       __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_raise_if_stored(__pyx_v_context->__pyx_base._exc); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 586, __pyx_L21_error)
 
       /* "src/lxml/xslt.pxi":582
@@ -187783,6 +199887,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 # last error seems to be the most accurate here
  *                 error = self._error_log.last_error
  */
+    __Pyx_TraceLine(588,0,__PYX_ERR(3, 588, __pyx_L21_error))
     __pyx_t_6 = ((__pyx_v_c_result == NULL) != 0);
     if (__pyx_t_6) {
 
@@ -187793,6 +199898,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if error is not None and error.message:
  *                     if error.line > 0:
  */
+      __Pyx_TraceLine(590,0,__PYX_ERR(3, 590, __pyx_L21_error))
       __pyx_t_5 = __pyx_v_self->_error_log->__pyx_base.__pyx_base.last_error;
       __Pyx_INCREF(__pyx_t_5);
       __pyx_v_error = __pyx_t_5;
@@ -187805,6 +199911,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     if error.line > 0:
  *                         message = f"{error.message}, line {error.line}"
  */
+      __Pyx_TraceLine(591,0,__PYX_ERR(3, 591, __pyx_L21_error))
       __pyx_t_3 = (__pyx_v_error != Py_None);
       __pyx_t_16 = (__pyx_t_3 != 0);
       if (__pyx_t_16) {
@@ -187827,6 +199934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                         message = f"{error.message}, line {error.line}"
  *                     else:
  */
+        __Pyx_TraceLine(592,0,__PYX_ERR(3, 592, __pyx_L21_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_line_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 592, __pyx_L21_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 592, __pyx_L21_error)
@@ -187842,6 +199950,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     else:
  *                         message = error.message
  */
+          __Pyx_TraceLine(593,0,__PYX_ERR(3, 593, __pyx_L21_error))
           __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 593, __pyx_L21_error)
           __Pyx_GOTREF(__pyx_t_1);
           __pyx_t_17 = 0;
@@ -187893,6 +200002,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 elif error is not None and error.line > 0:
  *                     message = f"Error applying stylesheet, line {error.line}"
  */
+        __Pyx_TraceLine(595,0,__PYX_ERR(3, 595, __pyx_L21_error))
         /*else*/ {
           __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_message); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 595, __pyx_L21_error)
           __Pyx_GOTREF(__pyx_t_5);
@@ -187918,6 +200028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     message = f"Error applying stylesheet, line {error.line}"
  *                 else:
  */
+      __Pyx_TraceLine(596,0,__PYX_ERR(3, 596, __pyx_L21_error))
       __pyx_t_16 = (__pyx_v_error != Py_None);
       __pyx_t_3 = (__pyx_t_16 != 0);
       if (__pyx_t_3) {
@@ -187942,6 +200053,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 else:
  *                     message = u"Error applying stylesheet"
  */
+        __Pyx_TraceLine(597,0,__PYX_ERR(3, 597, __pyx_L21_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_n_s_line_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 597, __pyx_L21_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 597, __pyx_L21_error)
@@ -187970,6 +200082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 raise XSLTApplyError(message, self._error_log)
  *         finally:
  */
+      __Pyx_TraceLine(599,0,__PYX_ERR(3, 599, __pyx_L21_error))
       /*else*/ {
         __Pyx_INCREF(__pyx_kp_u_Error_applying_stylesheet);
         __pyx_v_message = __pyx_kp_u_Error_applying_stylesheet;
@@ -187983,6 +200096,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         finally:
  *             if resolver_context is not None:
  */
+      __Pyx_TraceLine(600,0,__PYX_ERR(3, 600, __pyx_L21_error))
       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 600, __pyx_L21_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_message);
@@ -188015,6 +200129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 resolver_context.clear()
  * 
  */
+  __Pyx_TraceLine(602,0,__PYX_ERR(3, 602, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_t_6 = (((PyObject *)__pyx_v_resolver_context) != Py_None);
@@ -188028,6 +200143,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         result_doc = _documentFactory(c_result, input_doc._parser)
  */
+        __Pyx_TraceLine(603,0,__PYX_ERR(3, 603, __pyx_L1_error))
         __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 603, __pyx_L1_error)
 
         /* "src/lxml/xslt.pxi":602
@@ -188069,6 +200185,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         result_doc = _documentFactory(c_result, input_doc._parser)
  */
+          __Pyx_TraceLine(603,0,__PYX_ERR(3, 603, __pyx_L38_error))
           __pyx_t_21 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context)); if (unlikely(__pyx_t_21 == ((int)-1))) __PYX_ERR(3, 603, __pyx_L38_error)
 
           /* "src/lxml/xslt.pxi":602
@@ -188116,6 +200233,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         c_dict = c_result.dict
  */
+  __Pyx_TraceLine(605,0,__PYX_ERR(3, 605, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_v_input_doc->_parser);
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_result, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_5))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 605, __pyx_L1_error)
@@ -188131,6 +200249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         xmlparser.xmlDictReference(c_dict)
  *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)
  */
+  __Pyx_TraceLine(607,0,__PYX_ERR(3, 607, __pyx_L1_error))
   __pyx_t_4 = __pyx_v_c_result->dict;
   __pyx_v_c_dict = __pyx_t_4;
 
@@ -188141,6 +200260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)
  *         if c_dict is not c_result.dict or \
  */
+  __Pyx_TraceLine(608,0,__PYX_ERR(3, 608, __pyx_L1_error))
   (void)(xmlDictReference(__pyx_v_c_dict));
 
   /* "src/lxml/xslt.pxi":609
@@ -188150,6 +200270,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *         if c_dict is not c_result.dict or \
  *                 self._c_style.doc.dict is not c_result.dict or \
  */
+  __Pyx_TraceLine(609,0,__PYX_ERR(3, 609, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, (&__pyx_v_c_result->dict));
 
   /* "src/lxml/xslt.pxi":610
@@ -188159,6 +200280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 self._c_style.doc.dict is not c_result.dict or \
  *                 input_doc._c_doc.dict is not c_result.dict:
  */
+  __Pyx_TraceLine(610,0,__PYX_ERR(3, 610, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_dict != __pyx_v_c_result->dict) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -188173,6 +200295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 input_doc._c_doc.dict is not c_result.dict:
  *             with nogil:
  */
+  __Pyx_TraceLine(611,0,__PYX_ERR(3, 611, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->_c_style->doc->dict != __pyx_v_c_result->dict) != 0);
   if (!__pyx_t_3) {
   } else {
@@ -188187,6 +200310,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *             with nogil:
  *                 if c_dict is not c_result.dict:
  */
+  __Pyx_TraceLine(612,0,__PYX_ERR(3, 612, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_input_doc->_c_doc->dict != __pyx_v_c_result->dict) != 0);
   __pyx_t_6 = __pyx_t_3;
   __pyx_L41_bool_binop_done:;
@@ -188198,6 +200322,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 self._c_style.doc.dict is not c_result.dict or \
  *                 input_doc._c_doc.dict is not c_result.dict:
  */
+  __Pyx_TraceLine(610,0,__PYX_ERR(3, 610, __pyx_L1_error))
   if (__pyx_t_6) {
 
     /* "src/lxml/xslt.pxi":613
@@ -188207,6 +200332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_dict is not c_result.dict:
  *                     fixThreadDictNames(<xmlNode*>c_result,
  */
+    __Pyx_TraceLine(613,0,__PYX_ERR(3, 613, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -188222,6 +200348,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     fixThreadDictNames(<xmlNode*>c_result,
  *                                        c_dict, c_result.dict)
  */
+          __Pyx_TraceLine(614,1,__PYX_ERR(3, 614, __pyx_L45_error))
           __pyx_t_6 = ((__pyx_v_c_dict != __pyx_v_c_result->dict) != 0);
           if (__pyx_t_6) {
 
@@ -188232,6 +200359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                                        c_dict, c_result.dict)
  *                 if self._c_style.doc.dict is not c_result.dict:
  */
+            __Pyx_TraceLine(615,1,__PYX_ERR(3, 615, __pyx_L45_error))
             __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), __pyx_v_c_dict, __pyx_v_c_result->dict);
 
             /* "src/lxml/xslt.pxi":614
@@ -188250,6 +200378,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     fixThreadDictNames(<xmlNode*>c_result,
  *                                        self._c_style.doc.dict, c_result.dict)
  */
+          __Pyx_TraceLine(617,1,__PYX_ERR(3, 617, __pyx_L45_error))
           __pyx_t_6 = ((__pyx_v_self->_c_style->doc->dict != __pyx_v_c_result->dict) != 0);
           if (__pyx_t_6) {
 
@@ -188260,6 +200389,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                                        self._c_style.doc.dict, c_result.dict)
  *                 if input_doc._c_doc.dict is not c_result.dict:
  */
+            __Pyx_TraceLine(618,1,__PYX_ERR(3, 618, __pyx_L45_error))
             __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), __pyx_v_self->_c_style->doc->dict, __pyx_v_c_result->dict);
 
             /* "src/lxml/xslt.pxi":617
@@ -188278,6 +200408,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                     fixThreadDictNames(<xmlNode*>c_result,
  *                                        input_doc._c_doc.dict, c_result.dict)
  */
+          __Pyx_TraceLine(620,1,__PYX_ERR(3, 620, __pyx_L45_error))
           __pyx_t_6 = ((__pyx_v_input_doc->_c_doc->dict != __pyx_v_c_result->dict) != 0);
           if (__pyx_t_6) {
 
@@ -188288,6 +200419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                                        input_doc._c_doc.dict, c_result.dict)
  *         xmlparser.xmlDictFree(c_dict)
  */
+            __Pyx_TraceLine(621,1,__PYX_ERR(3, 621, __pyx_L45_error))
             __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), __pyx_v_input_doc->_c_doc->dict, __pyx_v_c_result->dict);
 
             /* "src/lxml/xslt.pxi":620
@@ -188307,6 +200439,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  *                 if c_dict is not c_result.dict:
  *                     fixThreadDictNames(<xmlNode*>c_result,
  */
+        __Pyx_TraceLine(613,1,__PYX_ERR(3, 613, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -188315,6 +200448,13 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
             #endif
             goto __pyx_L46;
           }
+          __pyx_L45_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L46:;
         }
     }
@@ -188335,6 +200475,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *         return _xsltResultTreeFactory(result_doc, self, profile_doc)
  */
+  __Pyx_TraceLine(623,0,__PYX_ERR(3, 623, __pyx_L1_error))
   xmlDictFree(__pyx_v_c_dict);
 
   /* "src/lxml/xslt.pxi":625
@@ -188344,6 +200485,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
  * 
  *     cdef xmlDoc* _run_transform(self, xmlDoc* c_input_doc,
  */
+  __Pyx_TraceLine(625,0,__PYX_ERR(3, 625, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__xsltResultTreeFactory(__pyx_v_result_doc, __pyx_v_self, __pyx_v_profile_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 625, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -188376,6 +200518,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
   __Pyx_XDECREF(__pyx_v_error);
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -188391,6 +200534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_18__call__(struct __pyx_obj_4lxml_5
 static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self, xmlDoc *__pyx_v_c_input_doc, const char **__pyx_v_params, CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context, xsltTransformContext *__pyx_v_transform_ctxt) {
   xmlDoc *__pyx_v_c_result;
   xmlDoc *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -188399,7 +200543,13 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_run_transform", 0);
+  __Pyx_TraceCall("_run_transform", __pyx_f[3], 627, 0, __PYX_ERR(3, 627, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":631
  *                                 xslt.xsltTransformContext* transform_ctxt):
@@ -188408,6 +200558,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *                                        <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  *         if self._access_control is not None:
  */
+  __Pyx_TraceLine(631,0,__PYX_ERR(3, 631, __pyx_L1_error))
   xsltSetTransformErrorFunc(__pyx_v_transform_ctxt, ((void *)__pyx_v_self->_error_log), ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError));
 
   /* "src/lxml/xslt.pxi":633
@@ -188417,6 +200568,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *             self._access_control._register_in_context(transform_ctxt)
  *         with self._error_log, nogil:
  */
+  __Pyx_TraceLine(633,0,__PYX_ERR(3, 633, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_access_control) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -188428,6 +200580,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *         with self._error_log, nogil:
  *             c_result = xslt.xsltApplyStylesheetUser(
  */
+    __Pyx_TraceLine(634,0,__PYX_ERR(3, 634, __pyx_L1_error))
     __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(__pyx_v_self->_access_control, __pyx_v_transform_ctxt);
 
     /* "src/lxml/xslt.pxi":633
@@ -188446,13 +200599,19 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *             c_result = xslt.xsltApplyStylesheetUser(
  *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
  */
+  __Pyx_TraceLine(635,0,__PYX_ERR(3, 635, __pyx_L1_error))
   /*with:*/ {
     __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 635, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->_error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 635, __pyx_L4_error)
     /*try:*/ {
       {
-        (void)__pyx_t_5; (void)__pyx_t_6; (void)__pyx_t_7; /* mark used */
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
         /*try:*/ {
           {
               #ifdef WITH_THREAD
@@ -188469,6 +200628,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
  *         return c_result
  */
+                __Pyx_TraceLine(636,1,__PYX_ERR(3, 636, __pyx_L15_error))
                 __pyx_v_c_result = xsltApplyStylesheetUser(__pyx_v_self->_c_style, __pyx_v_c_input_doc, __pyx_v_params, NULL, NULL, __pyx_v_transform_ctxt);
               }
 
@@ -188479,6 +200639,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  *             c_result = xslt.xsltApplyStylesheetUser(
  *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
  */
+              __Pyx_TraceLine(635,1,__PYX_ERR(3, 635, __pyx_L8_error))
               /*finally:*/ {
                 /*normal exit:*/{
                   #ifdef WITH_THREAD
@@ -188487,16 +200648,70 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
                   #endif
                   goto __pyx_L16;
                 }
+                __pyx_L15_error: {
+                  #ifdef WITH_THREAD
+                  __Pyx_FastGIL_Forget();
+                  Py_BLOCK_THREADS
+                  #endif
+                  goto __pyx_L8_error;
+                }
                 __pyx_L16:;
               }
           }
         }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L13_try_end;
+        __pyx_L8_error:;
+        /*except:*/ {
+          __Pyx_AddTraceback("lxml.etree.XSLT._run_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(3, 635, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_8, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 635, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(!__pyx_t_12)) __PYX_ERR(3, 635, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (__pyx_t_2 < 0) __PYX_ERR(3, 635, __pyx_L10_except_error)
+          __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+          if (__pyx_t_1) {
+            __Pyx_GIVEREF(__pyx_t_8);
+            __Pyx_GIVEREF(__pyx_t_9);
+            __Pyx_XGIVEREF(__pyx_t_10);
+            __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+            __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; 
+            __PYX_ERR(3, 635, __pyx_L10_except_error)
+          }
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          goto __pyx_L9_exception_handled;
+        }
+        __pyx_L10_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L9_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L13_try_end:;
       }
     }
     /*finally:*/ {
       /*normal exit:*/{
         if (__pyx_t_3) {
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__127, NULL);
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__358, NULL);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 635, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
@@ -188506,11 +200721,11 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
       }
       __pyx_L7:;
     }
-    goto __pyx_L17;
+    goto __pyx_L20;
     __pyx_L4_error:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     goto __pyx_L1_error;
-    __pyx_L17:;
+    __pyx_L20:;
   }
 
   /* "src/lxml/xslt.pxi":638
@@ -188520,6 +200735,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
  * 
  * 
  */
+  __Pyx_TraceLine(638,0,__PYX_ERR(3, 638, __pyx_L1_error))
   __pyx_r = __pyx_v_c_result;
   goto __pyx_L0;
 
@@ -188533,9 +200749,14 @@ static xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_
 
   /* function exit code */
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
   __Pyx_WriteUnraisable("lxml.etree.XSLT._run_transform", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -188558,6 +200779,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlDict *__pyx_t_1;
   Py_ssize_t __pyx_t_2;
@@ -188574,6 +200796,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
   int __pyx_t_13;
   Py_ssize_t __pyx_t_14;
   __Pyx_RefNannySetupContext("_convert_xslt_parameters", 0);
+  __Pyx_TraceCall("_convert_xslt_parameters", __pyx_f[3], 641, 0, __PYX_ERR(3, 641, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":645
  *     cdef Py_ssize_t i, parameter_count
@@ -188582,6 +200805,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     params_ptr[0] = NULL
  *     parameter_count = len(parameters)
  */
+  __Pyx_TraceLine(645,0,__PYX_ERR(3, 645, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_transform_ctxt->dict;
   __pyx_v_c_dict = __pyx_t_1;
 
@@ -188592,6 +200816,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     parameter_count = len(parameters)
  *     if parameter_count == 0:
  */
+  __Pyx_TraceLine(646,0,__PYX_ERR(3, 646, __pyx_L1_error))
   (__pyx_v_params_ptr[0]) = NULL;
 
   /* "src/lxml/xslt.pxi":647
@@ -188601,6 +200826,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     if parameter_count == 0:
  *         return
  */
+  __Pyx_TraceLine(647,0,__PYX_ERR(3, 647, __pyx_L1_error))
   if (unlikely(__pyx_v_parameters == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
     __PYX_ERR(3, 647, __pyx_L1_error)
@@ -188615,6 +200841,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         return
  *     # allocate space for parameters
  */
+  __Pyx_TraceLine(648,0,__PYX_ERR(3, 648, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_parameter_count == 0) != 0);
   if (__pyx_t_3) {
 
@@ -188625,6 +200852,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     # allocate space for parameters
  *     # * 2 as we want an entry for both key and value,
  */
+    __Pyx_TraceLine(649,0,__PYX_ERR(3, 649, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -188645,6 +200873,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     if not params:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(653,0,__PYX_ERR(3, 653, __pyx_L1_error))
   __pyx_v_params = ((const char **)lxml_malloc(((__pyx_v_parameter_count * 2) + 1), (sizeof(const char *))));
 
   /* "src/lxml/xslt.pxi":654
@@ -188654,6 +200883,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         raise MemoryError()
  *     try:
  */
+  __Pyx_TraceLine(654,0,__PYX_ERR(3, 654, __pyx_L1_error))
   __pyx_t_3 = ((!(__pyx_v_params != 0)) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -188664,6 +200894,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     try:
  *         i = 0
  */
+    __Pyx_TraceLine(655,0,__PYX_ERR(3, 655, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(3, 655, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":654
@@ -188682,6 +200913,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         i = 0
  *         for key, value in parameters.iteritems():
  */
+  __Pyx_TraceLine(656,0,__PYX_ERR(3, 656, __pyx_L5_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -188698,6 +200930,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         for key, value in parameters.iteritems():
  *             k = _utf8(key)
  */
+      __Pyx_TraceLine(657,0,__PYX_ERR(3, 657, __pyx_L5_error))
       __pyx_v_i = 0;
 
       /* "src/lxml/xslt.pxi":658
@@ -188707,6 +200940,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *             k = _utf8(key)
  *             if isinstance(value, _XSLTQuotedStringParam):
  */
+      __Pyx_TraceLine(658,0,__PYX_ERR(3, 658, __pyx_L5_error))
       __pyx_t_2 = 0;
       if (unlikely(__pyx_v_parameters == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
@@ -188735,6 +200969,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *             if isinstance(value, _XSLTQuotedStringParam):
  *                 v = (<_XSLTQuotedStringParam>value).strval
  */
+        __Pyx_TraceLine(659,0,__PYX_ERR(3, 659, __pyx_L5_error))
         __pyx_t_11 = __pyx_f_4lxml_5etree__utf8(__pyx_v_key); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 659, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_XDECREF_SET(__pyx_v_k, ((PyObject*)__pyx_t_11));
@@ -188747,6 +200982,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 v = (<_XSLTQuotedStringParam>value).strval
  *                 xslt.xsltQuoteOneUserParam(
  */
+        __Pyx_TraceLine(660,0,__PYX_ERR(3, 660, __pyx_L5_error))
         __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree__XSLTQuotedStringParam); 
         __pyx_t_13 = (__pyx_t_3 != 0);
         if (__pyx_t_13) {
@@ -188758,6 +200994,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 xslt.xsltQuoteOneUserParam(
  *                     transform_ctxt, _xcstr(k), _xcstr(v))
  */
+          __Pyx_TraceLine(661,0,__PYX_ERR(3, 661, __pyx_L5_error))
           __pyx_t_11 = ((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_value)->strval;
           __Pyx_INCREF(__pyx_t_11);
           __Pyx_XDECREF_SET(__pyx_v_v, ((PyObject*)__pyx_t_11));
@@ -188770,6 +201007,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                     transform_ctxt, _xcstr(k), _xcstr(v))
  *             else:
  */
+          __Pyx_TraceLine(662,0,__PYX_ERR(3, 662, __pyx_L5_error))
           (void)(xsltQuoteOneUserParam(__pyx_v_transform_ctxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_k), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_v)));
 
           /* "src/lxml/xslt.pxi":660
@@ -188789,6 +201027,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                     v = (<XPath>value)._path
  *                 else:
  */
+        __Pyx_TraceLine(665,0,__PYX_ERR(3, 665, __pyx_L5_error))
         /*else*/ {
           __pyx_t_13 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_5etree_XPath); 
           __pyx_t_3 = (__pyx_t_13 != 0);
@@ -188801,6 +201040,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 else:
  *                     v = _utf8(value)
  */
+            __Pyx_TraceLine(666,0,__PYX_ERR(3, 666, __pyx_L5_error))
             __pyx_t_11 = ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_value)->_path;
             __Pyx_INCREF(__pyx_t_11);
             __Pyx_XDECREF_SET(__pyx_v_v, ((PyObject*)__pyx_t_11));
@@ -188823,6 +201063,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 params[i] = <const_char*>tree.xmlDictLookup(c_dict, _xcstr(k), len(k))
  *                 i += 1
  */
+          __Pyx_TraceLine(668,0,__PYX_ERR(3, 668, __pyx_L5_error))
           /*else*/ {
             __pyx_t_11 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 668, __pyx_L5_error)
             __Pyx_GOTREF(__pyx_t_11);
@@ -188838,6 +201079,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 i += 1
  *                 params[i] = <const_char*>tree.xmlDictLookup(c_dict, _xcstr(v), len(v))
  */
+          __Pyx_TraceLine(669,0,__PYX_ERR(3, 669, __pyx_L5_error))
           if (unlikely(__pyx_v_k == Py_None)) {
             PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
             __PYX_ERR(3, 669, __pyx_L5_error)
@@ -188852,6 +201094,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 params[i] = <const_char*>tree.xmlDictLookup(c_dict, _xcstr(v), len(v))
  *                 i += 1
  */
+          __Pyx_TraceLine(670,0,__PYX_ERR(3, 670, __pyx_L5_error))
           __pyx_v_i = (__pyx_v_i + 1);
 
           /* "src/lxml/xslt.pxi":671
@@ -188861,6 +201104,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *                 i += 1
  *     except:
  */
+          __Pyx_TraceLine(671,0,__PYX_ERR(3, 671, __pyx_L5_error))
           if (unlikely(__pyx_v_v == Py_None)) {
             PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
             __PYX_ERR(3, 671, __pyx_L5_error)
@@ -188875,6 +201119,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     except:
  *         python.lxml_free(params)
  */
+          __Pyx_TraceLine(672,0,__PYX_ERR(3, 672, __pyx_L5_error))
           __pyx_v_i = (__pyx_v_i + 1);
         }
         __pyx_L13:;
@@ -188905,6 +201150,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         python.lxml_free(params)
  *         raise
  */
+    __Pyx_TraceLine(673,0,__PYX_ERR(3, 673, __pyx_L7_except_error))
     /*except:*/ {
       __Pyx_AddTraceback("lxml.etree._convert_xslt_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_11, &__pyx_t_10) < 0) __PYX_ERR(3, 673, __pyx_L7_except_error)
@@ -188919,6 +201165,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *         raise
  *     params[i] = NULL
  */
+      __Pyx_TraceLine(674,0,__PYX_ERR(3, 674, __pyx_L7_except_error))
       lxml_free(__pyx_v_params);
 
       /* "src/lxml/xslt.pxi":675
@@ -188928,6 +201175,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     params[i] = NULL
  *     params_ptr[0] = params
  */
+      __Pyx_TraceLine(675,0,__PYX_ERR(3, 675, __pyx_L7_except_error))
       __Pyx_GIVEREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_11);
       __Pyx_XGIVEREF(__pyx_t_10);
@@ -188959,6 +201207,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  *     params_ptr[0] = params
  * 
  */
+  __Pyx_TraceLine(676,0,__PYX_ERR(3, 676, __pyx_L1_error))
   (__pyx_v_params[__pyx_v_i]) = NULL;
 
   /* "src/lxml/xslt.pxi":677
@@ -188968,6 +201217,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
  * 
  * cdef XSLT _copyXSLT(XSLT stylesheet):
  */
+  __Pyx_TraceLine(677,0,__PYX_ERR(3, 677, __pyx_L1_error))
   (__pyx_v_params_ptr[0]) = __pyx_v_params;
 
   /* "src/lxml/xslt.pxi":641
@@ -188993,6 +201243,7 @@ static PyObject *__pyx_f_4lxml_5etree__convert_xslt_parameters(xsltTransformCont
   __Pyx_XDECREF(__pyx_v_k);
   __Pyx_XDECREF(__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -189009,11 +201260,13 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
   struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_new_xslt = 0;
   xmlDoc *__pyx_v_c_doc;
   struct __pyx_obj_4lxml_5etree_XSLT *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlDoc *__pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_copyXSLT", 0);
+  __Pyx_TraceCall("_copyXSLT", __pyx_f[3], 679, 0, __PYX_ERR(3, 679, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":682
  *     cdef XSLT new_xslt
@@ -189022,6 +201275,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt = XSLT.__new__(XSLT)
  *     new_xslt._access_control = stylesheet._access_control
  */
+  __Pyx_TraceLine(682,0,__PYX_ERR(3, 682, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_stylesheet->_c_style != NULL) != 0))) {
@@ -189038,6 +201292,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt._access_control = stylesheet._access_control
  *     new_xslt._error_log = _ErrorLog()
  */
+  __Pyx_TraceLine(683,0,__PYX_ERR(3, 683, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree_XSLT(((PyTypeObject *)__pyx_ptype_4lxml_5etree_XSLT), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 683, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_new_xslt = ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_t_1);
@@ -189050,6 +201305,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt._error_log = _ErrorLog()
  *     new_xslt._context = stylesheet._context._copy()
  */
+  __Pyx_TraceLine(684,0,__PYX_ERR(3, 684, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_v_stylesheet->_access_control);
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -189065,6 +201321,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt._context = stylesheet._context._copy()
  * 
  */
+  __Pyx_TraceLine(685,0,__PYX_ERR(3, 685, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 685, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -189080,6 +201337,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  * 
  *     new_xslt._xslt_resolver_context = stylesheet._xslt_resolver_context._copy()
  */
+  __Pyx_TraceLine(686,0,__PYX_ERR(3, 686, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_stylesheet->_context))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 686, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__XSLTContext))))) __PYX_ERR(3, 686, __pyx_L1_error)
@@ -189096,6 +201354,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt._xslt_resolver_context._c_style_doc = _copyDoc(
  *         stylesheet._xslt_resolver_context._c_style_doc, 1)
  */
+  __Pyx_TraceLine(688,0,__PYX_ERR(3, 688, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy(__pyx_v_stylesheet->_xslt_resolver_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 688, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -189111,6 +201370,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *         stylesheet._xslt_resolver_context._c_style_doc, 1)
  * 
  */
+  __Pyx_TraceLine(689,0,__PYX_ERR(3, 689, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_stylesheet->_xslt_resolver_context->_c_style_doc, 1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 689, __pyx_L1_error)
   __pyx_v_new_xslt->_xslt_resolver_context->_c_style_doc = __pyx_t_2;
 
@@ -189121,6 +201381,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc)
  *     if new_xslt._c_style is NULL:
  */
+  __Pyx_TraceLine(692,0,__PYX_ERR(3, 692, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_stylesheet->_c_style->doc, 1); if (unlikely(__pyx_t_2 == ((xmlDoc *)NULL))) __PYX_ERR(3, 692, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_2;
 
@@ -189131,6 +201392,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *     if new_xslt._c_style is NULL:
  *         tree.xmlFreeDoc(c_doc)
  */
+  __Pyx_TraceLine(693,0,__PYX_ERR(3, 693, __pyx_L1_error))
   __pyx_v_new_xslt->_c_style = xsltParseStylesheetDoc(__pyx_v_c_doc);
 
   /* "src/lxml/xslt.pxi":694
@@ -189140,6 +201402,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *         tree.xmlFreeDoc(c_doc)
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(694,0,__PYX_ERR(3, 694, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_new_xslt->_c_style == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -189150,6 +201413,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  *         raise MemoryError()
  * 
  */
+    __Pyx_TraceLine(695,0,__PYX_ERR(3, 695, __pyx_L1_error))
     xmlFreeDoc(__pyx_v_c_doc);
 
     /* "src/lxml/xslt.pxi":696
@@ -189159,6 +201423,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  * 
  *     return new_xslt
  */
+    __Pyx_TraceLine(696,0,__PYX_ERR(3, 696, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(3, 696, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":694
@@ -189177,6 +201442,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(698,0,__PYX_ERR(3, 698, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_new_xslt));
   __pyx_r = __pyx_v_new_xslt;
@@ -189198,6 +201464,7 @@ static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_new_xslt);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -189280,6 +201547,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
   PyObject *__pyx_v_file_path = NULL;
   char *__pyx_v_c_filename;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -189287,7 +201555,9 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__359)
   __Pyx_RefNannySetupContext("write_output", 0);
+  __Pyx_TraceCall("write_output", __pyx_f[3], 713, 0, __PYX_ERR(3, 713, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":721
  *         the result as defined by the ``<xsl:output>`` tag.
@@ -189296,6 +201566,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         cdef _Document doc
  *         cdef int r, c_compression
  */
+  __Pyx_TraceLine(721,0,__PYX_ERR(3, 721, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None);
 
@@ -189306,6 +201577,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         cdef tree.xmlOutputBuffer* c_buffer
  * 
  */
+  __Pyx_TraceLine(724,0,__PYX_ERR(3, 724, __pyx_L1_error))
   __pyx_v_c_encoding = NULL;
 
   /* "src/lxml/xslt.pxi":727
@@ -189315,6 +201587,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             doc = self._context_node._doc
  *         else:
  */
+  __Pyx_TraceLine(727,0,__PYX_ERR(3, 727, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->__pyx_base._context_node) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -189326,6 +201599,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         else:
  *             doc = None
  */
+    __Pyx_TraceLine(728,0,__PYX_ERR(3, 728, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base._context_node->_doc);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -189348,6 +201622,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         if doc is None:
  *             doc = self._doc
  */
+  __Pyx_TraceLine(730,0,__PYX_ERR(3, 730, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __pyx_v_doc = ((struct LxmlDocument *)Py_None);
@@ -189361,6 +201636,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             doc = self._doc
  *             if doc is None:
  */
+  __Pyx_TraceLine(731,0,__PYX_ERR(3, 731, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_doc) == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -189372,6 +201648,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             if doc is None:
  *                 raise XSLTSaveError("No document to serialise")
  */
+    __Pyx_TraceLine(732,0,__PYX_ERR(3, 732, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base._doc);
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_doc, ((struct LxmlDocument *)__pyx_t_3));
@@ -189384,6 +201661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                 raise XSLTSaveError("No document to serialise")
  *         c_compression = compression or 0
  */
+    __Pyx_TraceLine(733,0,__PYX_ERR(3, 733, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (unlikely(__pyx_t_2)) {
@@ -189395,9 +201673,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         c_compression = compression or 0
  *         if _isString(file):
  */
+      __Pyx_TraceLine(734,0,__PYX_ERR(3, 734, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_XSLTSaveError); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 734, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__128, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 734, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__360, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 734, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
@@ -189429,6 +201708,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         if _isString(file):
  *             file_path = _encodeFilename(file)
  */
+  __Pyx_TraceLine(735,0,__PYX_ERR(3, 735, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(3, 735, __pyx_L1_error)
   if (!__pyx_t_2) {
   } else {
@@ -189447,6 +201727,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             file_path = _encodeFilename(file)
  *             c_filename = _cstr(file_path)
  */
+  __Pyx_TraceLine(736,0,__PYX_ERR(3, 736, __pyx_L1_error))
   __pyx_t_2 = (_isString(__pyx_v_file) != 0);
   if (__pyx_t_2) {
 
@@ -189457,6 +201738,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             c_filename = _cstr(file_path)
  *             with nogil:
  */
+    __Pyx_TraceLine(737,0,__PYX_ERR(3, 737, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_file_path = __pyx_t_4;
@@ -189469,6 +201751,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             with nogil:
  *                 r = xslt.xsltSaveResultToFilename(
  */
+    __Pyx_TraceLine(738,0,__PYX_ERR(3, 738, __pyx_L1_error))
     __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_file_path);
 
     /* "src/lxml/xslt.pxi":739
@@ -189478,6 +201761,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                 r = xslt.xsltSaveResultToFilename(
  *                     c_filename, doc._c_doc, self._xslt._c_style, c_compression)
  */
+    __Pyx_TraceLine(739,0,__PYX_ERR(3, 739, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -189493,6 +201777,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                     c_filename, doc._c_doc, self._xslt._c_style, c_compression)
  *         else:
  */
+          __Pyx_TraceLine(740,1,__PYX_ERR(3, 740, __pyx_L10_error))
           __pyx_v_r = xsltSaveResultToFilename(__pyx_v_c_filename, __pyx_v_doc->_c_doc, __pyx_v_self->_xslt->_c_style, __pyx_v_c_compression);
         }
 
@@ -189503,6 +201788,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                 r = xslt.xsltSaveResultToFilename(
  *                     c_filename, doc._c_doc, self._xslt._c_style, c_compression)
  */
+        __Pyx_TraceLine(739,1,__PYX_ERR(3, 739, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -189511,6 +201797,13 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
             #endif
             goto __pyx_L11;
           }
+          __pyx_L10_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L11:;
         }
     }
@@ -189532,6 +201825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             writer = _create_output_buffer(file, <const_char*>c_encoding, compression, &c_buffer, close=False)
  *             if writer is None:
  */
+  __Pyx_TraceLine(743,0,__PYX_ERR(3, 743, __pyx_L1_error))
   /*else*/ {
     LXML_GET_XSLT_ENCODING(__pyx_v_c_encoding, __pyx_v_self->_xslt->_c_style);
 
@@ -189542,6 +201836,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             if writer is None:
  *                 with nogil:
  */
+    __Pyx_TraceLine(744,0,__PYX_ERR(3, 744, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 744, __pyx_L1_error)
     __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_file, ((const char *)__pyx_v_c_encoding), __pyx_t_5, (&__pyx_v_c_buffer), 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 744, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -189555,6 +201850,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                 with nogil:
  *                     r = xslt.xsltSaveResultTo(c_buffer, doc._c_doc, self._xslt._c_style)
  */
+    __Pyx_TraceLine(745,0,__PYX_ERR(3, 745, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_writer) == Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -189566,6 +201862,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                     r = xslt.xsltSaveResultTo(c_buffer, doc._c_doc, self._xslt._c_style)
  *             else:
  */
+      __Pyx_TraceLine(746,0,__PYX_ERR(3, 746, __pyx_L1_error))
       {
           #ifdef WITH_THREAD
           PyThreadState *_save;
@@ -189581,6 +201878,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             else:
  *                 r = xslt.xsltSaveResultTo(c_buffer, doc._c_doc, self._xslt._c_style)
  */
+            __Pyx_TraceLine(747,1,__PYX_ERR(3, 747, __pyx_L14_error))
             __pyx_v_r = xsltSaveResultTo(__pyx_v_c_buffer, __pyx_v_doc->_c_doc, __pyx_v_self->_xslt->_c_style);
           }
 
@@ -189591,6 +201889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *                     r = xslt.xsltSaveResultTo(c_buffer, doc._c_doc, self._xslt._c_style)
  *             else:
  */
+          __Pyx_TraceLine(746,1,__PYX_ERR(3, 746, __pyx_L1_error))
           /*finally:*/ {
             /*normal exit:*/{
               #ifdef WITH_THREAD
@@ -189599,6 +201898,13 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
               #endif
               goto __pyx_L15;
             }
+            __pyx_L14_error: {
+              #ifdef WITH_THREAD
+              __Pyx_FastGIL_Forget();
+              Py_BLOCK_THREADS
+              #endif
+              goto __pyx_L1_error;
+            }
             __pyx_L15:;
           }
       }
@@ -189620,6 +201926,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         if writer is not None:
  *             writer._exc_context._raise_if_stored()
  */
+    __Pyx_TraceLine(749,0,__PYX_ERR(3, 749, __pyx_L1_error))
     /*else*/ {
       __pyx_v_r = xsltSaveResultTo(__pyx_v_c_buffer, __pyx_v_doc->_c_doc, __pyx_v_self->_xslt->_c_style);
     }
@@ -189634,6 +201941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             writer._exc_context._raise_if_stored()
  *         if r == -1:
  */
+  __Pyx_TraceLine(750,0,__PYX_ERR(3, 750, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_writer) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -189645,6 +201953,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *         if r == -1:
  *             python.PyErr_SetFromErrno(XSLTSaveError)  # raises
  */
+    __Pyx_TraceLine(751,0,__PYX_ERR(3, 751, __pyx_L1_error))
     __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(3, 751, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":750
@@ -189663,6 +201972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  *             python.PyErr_SetFromErrno(XSLTSaveError)  # raises
  * 
  */
+  __Pyx_TraceLine(752,0,__PYX_ERR(3, 752, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_r == -1L) != 0);
   if (__pyx_t_2) {
 
@@ -189673,6 +201983,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
  * 
  *     cdef _saveToStringAndSize(self, xmlChar** s, int* l):
  */
+    __Pyx_TraceLine(753,0,__PYX_ERR(3, 753, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_XSLTSaveError); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 753, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = PyErr_SetFromErrno(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 753, __pyx_L1_error)
@@ -189710,6 +202021,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_write_output(struct __p
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_file_path);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -189726,11 +202038,13 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
   struct LxmlDocument *__pyx_v_doc = 0;
   int __pyx_v_r;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_saveToStringAndSize", 0);
+  __Pyx_TraceCall("_saveToStringAndSize", __pyx_f[3], 755, 0, __PYX_ERR(3, 755, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":758
  *         cdef _Document doc
@@ -189739,6 +202053,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             doc = self._context_node._doc
  *         else:
  */
+  __Pyx_TraceLine(758,0,__PYX_ERR(3, 758, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->__pyx_base._context_node) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -189750,6 +202065,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *         else:
  *             doc = None
  */
+    __Pyx_TraceLine(759,0,__PYX_ERR(3, 759, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base._context_node->_doc);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -189772,6 +202088,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *         if doc is None:
  *             doc = self._doc
  */
+  __Pyx_TraceLine(761,0,__PYX_ERR(3, 761, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __pyx_v_doc = ((struct LxmlDocument *)Py_None);
@@ -189785,6 +202102,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             doc = self._doc
  *             if doc is None:
  */
+  __Pyx_TraceLine(762,0,__PYX_ERR(3, 762, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_doc) == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -189796,6 +202114,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             if doc is None:
  *                 s[0] = NULL
  */
+    __Pyx_TraceLine(763,0,__PYX_ERR(3, 763, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base._doc);
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_doc, ((struct LxmlDocument *)__pyx_t_3));
@@ -189808,6 +202127,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *                 s[0] = NULL
  *                 return
  */
+    __Pyx_TraceLine(764,0,__PYX_ERR(3, 764, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -189819,6 +202139,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *                 return
  *         with nogil:
  */
+      __Pyx_TraceLine(765,0,__PYX_ERR(3, 765, __pyx_L1_error))
       (__pyx_v_s[0]) = NULL;
 
       /* "src/lxml/xslt.pxi":766
@@ -189828,6 +202149,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *         with nogil:
  *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
  */
+      __Pyx_TraceLine(766,0,__PYX_ERR(3, 766, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
@@ -189857,6 +202179,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
  *                                             self._xslt._c_style)
  */
+  __Pyx_TraceLine(767,0,__PYX_ERR(3, 767, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -189872,6 +202195,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *                                             self._xslt._c_style)
  *         if r == -1:
  */
+        __Pyx_TraceLine(768,1,__PYX_ERR(3, 768, __pyx_L7_error))
         __pyx_v_r = xsltSaveResultToString(__pyx_v_s, __pyx_v_l, __pyx_v_doc->_c_doc, __pyx_v_self->_xslt->_c_style);
       }
 
@@ -189882,6 +202206,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
  *                                             self._xslt._c_style)
  */
+      __Pyx_TraceLine(767,1,__PYX_ERR(3, 767, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -189890,6 +202215,13 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
           #endif
           goto __pyx_L8;
         }
+        __pyx_L7_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L8:;
       }
   }
@@ -189901,6 +202233,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(770,0,__PYX_ERR(3, 770, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_r == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -189911,6 +202244,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
  * 
  *     def __str__(self):
  */
+    __Pyx_TraceLine(771,0,__PYX_ERR(3, 771, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(3, 771, __pyx_L1_error)
 
     /* "src/lxml/xslt.pxi":770
@@ -189940,6 +202274,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(str
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -189970,6 +202305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
   int __pyx_v_l;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -189985,6 +202321,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[3], 773, 0, __PYX_ERR(3, 773, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":774
  * 
@@ -189993,6 +202330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         cdef int l = 0
  *         if not python.IS_PYTHON2:
  */
+  __Pyx_TraceLine(774,0,__PYX_ERR(3, 774, __pyx_L1_error))
   __pyx_v_s = NULL;
 
   /* "src/lxml/xslt.pxi":775
@@ -190002,6 +202340,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         if not python.IS_PYTHON2:
  *             return self.__unicode__()
  */
+  __Pyx_TraceLine(775,0,__PYX_ERR(3, 775, __pyx_L1_error))
   __pyx_v_l = 0;
 
   /* "src/lxml/xslt.pxi":776
@@ -190011,6 +202350,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *             return self.__unicode__()
  *         self._saveToStringAndSize(&s, &l)
  */
+  __Pyx_TraceLine(776,0,__PYX_ERR(3, 776, __pyx_L1_error))
   __pyx_t_1 = ((!(IS_PYTHON2 != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -190021,6 +202361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         self._saveToStringAndSize(&s, &l)
  *         if s is NULL:
  */
+    __Pyx_TraceLine(777,0,__PYX_ERR(3, 777, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -190062,6 +202403,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         if s is NULL:
  *             return ''
  */
+  __Pyx_TraceLine(778,0,__PYX_ERR(3, 778, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(__pyx_v_self, (&__pyx_v_s), (&__pyx_v_l)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 778, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -190073,6 +202415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *             return ''
  *         # we must not use 'funicode()' here as this is not always UTF-8
  */
+  __Pyx_TraceLine(779,0,__PYX_ERR(3, 779, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_s == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -190083,9 +202426,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         # we must not use 'funicode()' here as this is not always UTF-8
  *         try:
  */
+    __Pyx_TraceLine(780,0,__PYX_ERR(3, 780, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_s__16);
-    __pyx_r = __pyx_kp_s__16;
+    __Pyx_INCREF(__pyx_kp_s__23);
+    __pyx_r = __pyx_kp_s__23;
     goto __pyx_L0;
 
     /* "src/lxml/xslt.pxi":779
@@ -190104,6 +202448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *             result = <bytes>s[:l]
  *         finally:
  */
+  __Pyx_TraceLine(782,0,__PYX_ERR(3, 782, __pyx_L6_error))
   /*try:*/ {
 
     /* "src/lxml/xslt.pxi":783
@@ -190113,6 +202458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         finally:
  *             tree.xmlFree(s)
  */
+    __Pyx_TraceLine(783,0,__PYX_ERR(3, 783, __pyx_L6_error))
     __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_s) + 0, __pyx_v_l - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 783, __pyx_L6_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = __pyx_t_2;
@@ -190129,6 +202475,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  *         return result
  * 
  */
+  __Pyx_TraceLine(785,0,__PYX_ERR(3, 785, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_s);
@@ -190178,6 +202525,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
  * 
  *     def __unicode__(self):
  */
+  __Pyx_TraceLine(786,0,__PYX_ERR(3, 786, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -190201,6 +202549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_2__str__(struct __pyx_o
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -190233,6 +202582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
   int __pyx_v_l;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -190246,7 +202596,9 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__361)
   __Pyx_RefNannySetupContext("__unicode__", 0);
+  __Pyx_TraceCall("__unicode__", __pyx_f[3], 788, 0, __PYX_ERR(3, 788, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":790
  *     def __unicode__(self):
@@ -190255,6 +202607,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         cdef int l = 0
  *         self._saveToStringAndSize(&s, &l)
  */
+  __Pyx_TraceLine(790,0,__PYX_ERR(3, 790, __pyx_L1_error))
   __pyx_v_s = NULL;
 
   /* "src/lxml/xslt.pxi":791
@@ -190264,6 +202617,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         self._saveToStringAndSize(&s, &l)
  *         if s is NULL:
  */
+  __Pyx_TraceLine(791,0,__PYX_ERR(3, 791, __pyx_L1_error))
   __pyx_v_l = 0;
 
   /* "src/lxml/xslt.pxi":792
@@ -190273,6 +202627,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         if s is NULL:
  *             return u''
  */
+  __Pyx_TraceLine(792,0,__PYX_ERR(3, 792, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(__pyx_v_self, (&__pyx_v_s), (&__pyx_v_l)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -190284,6 +202639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *             return u''
  *         encoding = self._xslt._c_style.encoding
  */
+  __Pyx_TraceLine(793,0,__PYX_ERR(3, 793, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_s == NULL) != 0);
   if (__pyx_t_2) {
 
@@ -190294,9 +202650,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         encoding = self._xslt._c_style.encoding
  *         try:
  */
+    __Pyx_TraceLine(794,0,__PYX_ERR(3, 794, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_u__16);
-    __pyx_r = __pyx_kp_u__16;
+    __Pyx_INCREF(__pyx_kp_u__23);
+    __pyx_r = __pyx_kp_u__23;
     goto __pyx_L0;
 
     /* "src/lxml/xslt.pxi":793
@@ -190315,6 +202672,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         try:
  *             if encoding is NULL:
  */
+  __Pyx_TraceLine(795,0,__PYX_ERR(3, 795, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_self->_xslt->_c_style->encoding;
   __pyx_v_encoding = __pyx_t_3;
 
@@ -190325,6 +202683,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *             if encoding is NULL:
  *                 result = s[:l].decode('UTF-8')
  */
+  __Pyx_TraceLine(796,0,__PYX_ERR(3, 796, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/xslt.pxi":797
@@ -190334,6 +202693,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *                 result = s[:l].decode('UTF-8')
  *             else:
  */
+    __Pyx_TraceLine(797,0,__PYX_ERR(3, 797, __pyx_L5_error))
     __pyx_t_2 = ((__pyx_v_encoding == NULL) != 0);
     if (__pyx_t_2) {
 
@@ -190344,6 +202704,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *             else:
  *                 result = s[:l].decode(encoding)
  */
+      __Pyx_TraceLine(798,0,__PYX_ERR(3, 798, __pyx_L5_error))
       __pyx_t_1 = __Pyx_decode_c_string(((char const *)__pyx_v_s), 0, __pyx_v_l, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 798, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_result = __pyx_t_1;
@@ -190366,6 +202727,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         finally:
  *             tree.xmlFree(s)
  */
+    __Pyx_TraceLine(800,0,__PYX_ERR(3, 800, __pyx_L5_error))
     /*else*/ {
       __pyx_t_1 = __Pyx_decode_c_string(((char const *)__pyx_v_s), 0, __pyx_v_l, ((char const *)__pyx_v_encoding), NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 800, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -190382,6 +202744,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  *         return _stripEncodingDeclaration(result)
  * 
  */
+  __Pyx_TraceLine(802,0,__PYX_ERR(3, 802, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFree(__pyx_v_s);
@@ -190429,6 +202792,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
  * 
  *     def __getbuffer__(self, Py_buffer* buffer, int flags):
  */
+  __Pyx_TraceLine(803,0,__PYX_ERR(3, 803, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__stripEncodingDeclaration(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 803, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -190452,6 +202816,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_4__unicode__(struct __p
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -190480,6 +202845,7 @@ static CYTHON_UNUSED int __pyx_pw_4lxml_5etree_15_XSLTResultTree_7__getbuffer__(
 static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) {
   int __pyx_v_l;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -190493,6 +202859,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
   __Pyx_RefNannySetupContext("__getbuffer__", 0);
   __pyx_v_buffer->obj = Py_None; __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(__pyx_v_buffer->obj);
+  __Pyx_TraceCall("__getbuffer__", __pyx_f[3], 805, 0, __PYX_ERR(3, 805, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":806
  * 
@@ -190501,6 +202868,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         if buffer is NULL:
  *             return
  */
+  __Pyx_TraceLine(806,0,__PYX_ERR(3, 806, __pyx_L1_error))
   __pyx_v_l = 0;
 
   /* "src/lxml/xslt.pxi":807
@@ -190510,6 +202878,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             return
  *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
  */
+  __Pyx_TraceLine(807,0,__PYX_ERR(3, 807, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_buffer == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -190520,6 +202889,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
  *             self._saveToStringAndSize(<xmlChar**>&buffer.buf, &l)
  */
+    __Pyx_TraceLine(808,0,__PYX_ERR(3, 808, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -190539,6 +202909,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             self._saveToStringAndSize(<xmlChar**>&buffer.buf, &l)
  *             buffer.len = l
  */
+  __Pyx_TraceLine(809,0,__PYX_ERR(3, 809, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->_buffer == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -190557,6 +202928,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             buffer.len = l
  *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
  */
+    __Pyx_TraceLine(810,0,__PYX_ERR(3, 810, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(__pyx_v_self, ((xmlChar **)(&__pyx_v_buffer->buf)), (&__pyx_v_l)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 810, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -190568,6 +202940,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
  *                 self._buffer = <xmlChar*>buffer.buf
  */
+    __Pyx_TraceLine(811,0,__PYX_ERR(3, 811, __pyx_L1_error))
     __pyx_v_buffer->len = __pyx_v_l;
 
     /* "src/lxml/xslt.pxi":812
@@ -190577,6 +202950,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *                 self._buffer = <xmlChar*>buffer.buf
  *                 self._buffer_len = l
  */
+    __Pyx_TraceLine(812,0,__PYX_ERR(3, 812, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_self->_buffer == NULL) != 0);
     if (__pyx_t_2) {
     } else {
@@ -190595,6 +202969,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *                 self._buffer_len = l
  *                 self._buffer_refcnt = 1
  */
+      __Pyx_TraceLine(813,0,__PYX_ERR(3, 813, __pyx_L1_error))
       __pyx_v_self->_buffer = ((xmlChar *)__pyx_v_buffer->buf);
 
       /* "src/lxml/xslt.pxi":814
@@ -190604,6 +202979,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *                 self._buffer_refcnt = 1
  *         else:
  */
+      __Pyx_TraceLine(814,0,__PYX_ERR(3, 814, __pyx_L1_error))
       __pyx_v_self->_buffer_len = __pyx_v_l;
 
       /* "src/lxml/xslt.pxi":815
@@ -190613,6 +202989,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         else:
  *             buffer.buf = self._buffer
  */
+      __Pyx_TraceLine(815,0,__PYX_ERR(3, 815, __pyx_L1_error))
       __pyx_v_self->_buffer_refcnt = 1;
 
       /* "src/lxml/xslt.pxi":812
@@ -190641,6 +203018,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             buffer.len = self._buffer_len
  *             self._buffer_refcnt += 1
  */
+  __Pyx_TraceLine(817,0,__PYX_ERR(3, 817, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __pyx_v_self->_buffer;
     __pyx_v_buffer->buf = __pyx_t_4;
@@ -190652,6 +203030,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             self._buffer_refcnt += 1
  *         if flags & python.PyBUF_WRITABLE:
  */
+    __Pyx_TraceLine(818,0,__PYX_ERR(3, 818, __pyx_L1_error))
     __pyx_t_5 = __pyx_v_self->_buffer_len;
     __pyx_v_buffer->len = __pyx_t_5;
 
@@ -190662,6 +203041,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         if flags & python.PyBUF_WRITABLE:
  *             buffer.readonly = 0
  */
+    __Pyx_TraceLine(819,0,__PYX_ERR(3, 819, __pyx_L1_error))
     __pyx_v_self->_buffer_refcnt = (__pyx_v_self->_buffer_refcnt + 1);
   }
   __pyx_L4:;
@@ -190673,6 +203053,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             buffer.readonly = 0
  *         else:
  */
+  __Pyx_TraceLine(820,0,__PYX_ERR(3, 820, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0);
   if (__pyx_t_1) {
 
@@ -190683,6 +203064,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         else:
  *             buffer.readonly = 1
  */
+    __Pyx_TraceLine(821,0,__PYX_ERR(3, 821, __pyx_L1_error))
     __pyx_v_buffer->readonly = 0;
 
     /* "src/lxml/xslt.pxi":820
@@ -190702,6 +203084,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         if flags & python.PyBUF_FORMAT:
  *             buffer.format = "B"
  */
+  __Pyx_TraceLine(823,0,__PYX_ERR(3, 823, __pyx_L1_error))
   /*else*/ {
     __pyx_v_buffer->readonly = 1;
   }
@@ -190714,6 +203097,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             buffer.format = "B"
  *         else:
  */
+  __Pyx_TraceLine(824,0,__PYX_ERR(3, 824, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
   if (__pyx_t_1) {
 
@@ -190724,6 +203108,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         else:
  *             buffer.format = NULL
  */
+    __Pyx_TraceLine(825,0,__PYX_ERR(3, 825, __pyx_L1_error))
     __pyx_v_buffer->format = ((char *)"B");
 
     /* "src/lxml/xslt.pxi":824
@@ -190743,6 +203128,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.ndim = 0
  *         buffer.shape = NULL
  */
+  __Pyx_TraceLine(827,0,__PYX_ERR(3, 827, __pyx_L1_error))
   /*else*/ {
     __pyx_v_buffer->format = NULL;
   }
@@ -190755,6 +203141,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.shape = NULL
  *         buffer.strides = NULL
  */
+  __Pyx_TraceLine(828,0,__PYX_ERR(3, 828, __pyx_L1_error))
   __pyx_v_buffer->ndim = 0;
 
   /* "src/lxml/xslt.pxi":829
@@ -190764,6 +203151,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.strides = NULL
  *         buffer.suboffsets = NULL
  */
+  __Pyx_TraceLine(829,0,__PYX_ERR(3, 829, __pyx_L1_error))
   __pyx_v_buffer->shape = NULL;
 
   /* "src/lxml/xslt.pxi":830
@@ -190773,6 +203161,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.suboffsets = NULL
  *         buffer.itemsize = 1
  */
+  __Pyx_TraceLine(830,0,__PYX_ERR(3, 830, __pyx_L1_error))
   __pyx_v_buffer->strides = NULL;
 
   /* "src/lxml/xslt.pxi":831
@@ -190782,6 +203171,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.itemsize = 1
  *         buffer.internal = NULL
  */
+  __Pyx_TraceLine(831,0,__PYX_ERR(3, 831, __pyx_L1_error))
   __pyx_v_buffer->suboffsets = NULL;
 
   /* "src/lxml/xslt.pxi":832
@@ -190791,6 +203181,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         buffer.internal = NULL
  *         if buffer.obj is not self: # set by Cython?
  */
+  __Pyx_TraceLine(832,0,__PYX_ERR(3, 832, __pyx_L1_error))
   __pyx_v_buffer->itemsize = 1;
 
   /* "src/lxml/xslt.pxi":833
@@ -190800,6 +203191,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *         if buffer.obj is not self: # set by Cython?
  *             buffer.obj = self
  */
+  __Pyx_TraceLine(833,0,__PYX_ERR(3, 833, __pyx_L1_error))
   __pyx_v_buffer->internal = NULL;
 
   /* "src/lxml/xslt.pxi":834
@@ -190809,6 +203201,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  *             buffer.obj = self
  * 
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(3, 834, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_buffer->obj != ((PyObject *)__pyx_v_self));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -190820,6 +203213,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
  * 
  *     def __releasebuffer__(self, Py_buffer* buffer):
  */
+    __Pyx_TraceLine(835,0,__PYX_ERR(3, 835, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     __Pyx_GOTREF(__pyx_v_buffer->obj);
@@ -190861,6 +203255,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_6__getbuffer__(struct __pyx_o
     __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = 0;
   }
   __pyx_L2:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -190885,9 +203280,11 @@ static CYTHON_UNUSED void __pyx_pw_4lxml_5etree_15_XSLTResultTree_9__releasebuff
 }
 
 static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_self, Py_buffer *__pyx_v_buffer) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__releasebuffer__", 0);
+  __Pyx_TraceCall("__releasebuffer__", __pyx_f[3], 837, 0, __PYX_ERR(3, 837, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":838
  * 
@@ -190896,6 +203293,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *             return
  *         if <xmlChar*>buffer.buf is self._buffer:
  */
+  __Pyx_TraceLine(838,0,__PYX_ERR(3, 838, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_buffer == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -190906,6 +203304,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *         if <xmlChar*>buffer.buf is self._buffer:
  *             self._buffer_refcnt -= 1
  */
+    __Pyx_TraceLine(839,0,__PYX_ERR(3, 839, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xslt.pxi":838
@@ -190924,6 +203323,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *             self._buffer_refcnt -= 1
  *             if self._buffer_refcnt == 0:
  */
+  __Pyx_TraceLine(840,0,__PYX_ERR(3, 840, __pyx_L1_error))
   __pyx_t_1 = ((((xmlChar *)__pyx_v_buffer->buf) == __pyx_v_self->_buffer) != 0);
   if (__pyx_t_1) {
 
@@ -190934,6 +203334,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *             if self._buffer_refcnt == 0:
  *                 tree.xmlFree(<char*>self._buffer)
  */
+    __Pyx_TraceLine(841,0,__PYX_ERR(3, 841, __pyx_L1_error))
     __pyx_v_self->_buffer_refcnt = (__pyx_v_self->_buffer_refcnt - 1);
 
     /* "src/lxml/xslt.pxi":842
@@ -190943,6 +203344,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *                 tree.xmlFree(<char*>self._buffer)
  *                 self._buffer = NULL
  */
+    __Pyx_TraceLine(842,0,__PYX_ERR(3, 842, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_buffer_refcnt == 0) != 0);
     if (__pyx_t_1) {
 
@@ -190953,6 +203355,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *                 self._buffer = NULL
  *         else:
  */
+      __Pyx_TraceLine(843,0,__PYX_ERR(3, 843, __pyx_L1_error))
       xmlFree(((char *)__pyx_v_self->_buffer));
 
       /* "src/lxml/xslt.pxi":844
@@ -190962,6 +203365,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *         else:
  *             tree.xmlFree(<char*>buffer.buf)
  */
+      __Pyx_TraceLine(844,0,__PYX_ERR(3, 844, __pyx_L1_error))
       __pyx_v_self->_buffer = NULL;
 
       /* "src/lxml/xslt.pxi":842
@@ -190990,6 +203394,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  *         buffer.buf = NULL
  * 
  */
+  __Pyx_TraceLine(846,0,__PYX_ERR(3, 846, __pyx_L1_error))
   /*else*/ {
     xmlFree(((char *)__pyx_v_buffer->buf));
   }
@@ -191002,6 +203407,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  * 
  *     property xslt_profile:
  */
+  __Pyx_TraceLine(847,0,__PYX_ERR(3, 847, __pyx_L1_error))
   __pyx_v_buffer->buf = NULL;
 
   /* "src/lxml/xslt.pxi":837
@@ -191013,7 +203419,11 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._XSLTResultTree.__releasebuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -191041,6 +203451,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15_XSLTResultTree_12xslt_profile_1__get__
 static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_self) {
   PyObject *__pyx_v_root = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -191049,6 +203460,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[3], 852, 0, __PYX_ERR(3, 852, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":854
  *         def __get__(self):
@@ -191057,6 +203469,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  *                 return None
  *             root = self._profile.getroot()
  */
+  __Pyx_TraceLine(854,0,__PYX_ERR(3, 854, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_profile) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -191068,6 +203481,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  *             root = self._profile.getroot()
  *             if root is None:
  */
+    __Pyx_TraceLine(855,0,__PYX_ERR(3, 855, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -191088,6 +203502,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  *             if root is None:
  *                 return None
  */
+  __Pyx_TraceLine(856,0,__PYX_ERR(3, 856, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_self->_profile); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 856, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_root = __pyx_t_3;
@@ -191100,6 +203515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  *                 return None
  *             return ElementTree(root)
  */
+  __Pyx_TraceLine(857,0,__PYX_ERR(3, 857, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_root == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -191111,6 +203527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  *             return ElementTree(root)
  * 
  */
+    __Pyx_TraceLine(858,0,__PYX_ERR(3, 858, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -191131,6 +203548,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
  * 
  *         def __del__(self):
  */
+  __Pyx_TraceLine(859,0,__PYX_ERR(3, 859, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ElementTree); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 859, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -191200,6 +203618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -191227,8 +203646,10 @@ static int __pyx_pw_4lxml_5etree_15_XSLTResultTree_12xslt_profile_3__del__(PyObj
 
 static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile_2__del__(struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_TraceCall("__del__", __pyx_f[3], 861, 0, __PYX_ERR(3, 861, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":862
  * 
@@ -191237,6 +203658,7 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile_2__del__(struc
  * 
  * cdef _xsltResultTreeFactory(_Document doc, XSLT xslt, _Document profile):
  */
+  __Pyx_TraceLine(862,0,__PYX_ERR(3, 862, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   __Pyx_GOTREF(__pyx_v_self->_profile);
@@ -191253,6 +203675,12 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile_2__del__(struc
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._XSLTResultTree.xslt_profile.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -191268,10 +203696,12 @@ static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile_2__del__(struc
 static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_xslt, struct LxmlDocument *__pyx_v_profile) {
   struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_result = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_xsltResultTreeFactory", 0);
+  __Pyx_TraceCall("_xsltResultTreeFactory", __pyx_f[3], 864, 0, __PYX_ERR(3, 864, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":866
  * cdef _xsltResultTreeFactory(_Document doc, XSLT xslt, _Document profile):
@@ -191280,6 +203710,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
  *     result._xslt = xslt
  *     result._profile = profile
  */
+  __Pyx_TraceLine(866,0,__PYX_ERR(3, 866, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newElementTree(__pyx_v_doc, ((struct LxmlElement *)Py_None), ((PyObject *)__pyx_ptype_4lxml_5etree__XSLTResultTree))); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_t_1;
@@ -191295,6 +203726,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
  *     result._profile = profile
  *     return result
  */
+  __Pyx_TraceLine(867,0,__PYX_ERR(3, 867, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_xslt));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_xslt));
   __Pyx_GOTREF(__pyx_v_result->_xslt);
@@ -191308,6 +203740,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
  *     return result
  * 
  */
+  __Pyx_TraceLine(868,0,__PYX_ERR(3, 868, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_profile));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_profile));
   __Pyx_GOTREF(__pyx_v_result->_profile);
@@ -191321,6 +203754,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
  * 
  * # functions like "output" and "write" are a potential security risk, but we
  */
+  __Pyx_TraceLine(869,0,__PYX_ERR(3, 869, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_result));
   __pyx_r = ((PyObject *)__pyx_v_result);
@@ -191343,6 +203777,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -191357,6 +203792,7 @@ static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument
 
 static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_id) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -191364,6 +203800,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_findStylesheetByID", 0);
+  __Pyx_TraceCall("_findStylesheetByID", __pyx_f[3], 887, 0, __PYX_ERR(3, 887, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":889
  * cdef _findStylesheetByID(_Document doc, id):
@@ -191372,6 +203809,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
  *         __findStylesheetByID = XPath(
  *             u"//xsl:stylesheet[@xml:id = $id]",
  */
+  __Pyx_TraceLine(889,0,__PYX_ERR(3, 889, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -191383,6 +203821,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
  *     return __findStylesheetByID(doc, id=id)
  * 
  */
+    __Pyx_TraceLine(892,0,__PYX_ERR(3, 892, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 892, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 892, __pyx_L1_error)
@@ -191398,7 +203837,8 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
  *             u"//xsl:stylesheet[@xml:id = $id]",
  *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__129, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 890, __pyx_L1_error)
+    __Pyx_TraceLine(890,0,__PYX_ERR(3, 890, __pyx_L1_error))
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__362, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 890, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
@@ -191422,6 +203862,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
  * 
  * cdef class _XSLTProcessingInstruction(PIBase):
  */
+  __Pyx_TraceLine(893,0,__PYX_ERR(3, 893, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 893, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -191456,6 +203897,7 @@ static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -191535,6 +203977,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
   PyObject *__pyx_v_hrefs = NULL;
   PyObject *__pyx_v_root = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -191554,7 +203997,9 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
   PyObject *__pyx_t_16 = NULL;
   PyObject *__pyx_t_17 = NULL;
   int __pyx_t_18;
+  __Pyx_TraceFrameInit(__pyx_codeobj__363)
   __Pyx_RefNannySetupContext("parseXSL", 0);
+  __Pyx_TraceCall("parseXSL", __pyx_f[3], 896, 0, __PYX_ERR(3, 896, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":912
  *         cdef const_xmlChar* c_href
@@ -191563,6 +204008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         if self._c_node.content is NULL:
  *             raise ValueError, u"PI lacks content"
  */
+  __Pyx_TraceLine(912,0,__PYX_ERR(3, 912, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 912, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":913
@@ -191572,6 +204018,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             raise ValueError, u"PI lacks content"
  *         hrefs = _FIND_PI_HREF(u' ' + (<unsigned char*>self._c_node.content).decode('UTF-8'))
  */
+  __Pyx_TraceLine(913,0,__PYX_ERR(3, 913, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->content == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -191582,6 +204029,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         hrefs = _FIND_PI_HREF(u' ' + (<unsigned char*>self._c_node.content).decode('UTF-8'))
  *         if len(hrefs) != 1:
  */
+    __Pyx_TraceLine(914,0,__PYX_ERR(3, 914, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_PI_lacks_content, 0, 0);
     __PYX_ERR(3, 914, __pyx_L1_error)
 
@@ -191601,10 +204049,11 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         if len(hrefs) != 1:
  *             raise ValueError, u"malformed PI attributes"
  */
+  __Pyx_TraceLine(915,0,__PYX_ERR(3, 915, __pyx_L1_error))
   __pyx_t_4 = ((unsigned char *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->content);
   __pyx_t_5 = __Pyx_decode_c_string(((char const *)__pyx_t_4), 0, strlen(((char const *)__pyx_t_4)), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 915, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u__15, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 915, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u__22, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 915, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_INCREF(__pyx_v_4lxml_5etree__FIND_PI_HREF);
@@ -191664,6 +204113,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             raise ValueError, u"malformed PI attributes"
  *         hrefs = hrefs[0]
  */
+  __Pyx_TraceLine(916,0,__PYX_ERR(3, 916, __pyx_L1_error))
   __pyx_t_9 = PyObject_Length(__pyx_v_hrefs); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(3, 916, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_9 != 1) != 0);
   if (unlikely(__pyx_t_2)) {
@@ -191675,6 +204125,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         hrefs = hrefs[0]
  *         href_utf = utf8(hrefs[0] or hrefs[1])
  */
+    __Pyx_TraceLine(917,0,__PYX_ERR(3, 917, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_malformed_PI_attributes, 0, 0);
     __PYX_ERR(3, 917, __pyx_L1_error)
 
@@ -191694,6 +204145,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         href_utf = utf8(hrefs[0] or hrefs[1])
  *         c_href = _xcstr(href_utf)
  */
+  __Pyx_TraceLine(918,0,__PYX_ERR(3, 918, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_hrefs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 918, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF_SET(__pyx_v_hrefs, __pyx_t_3);
@@ -191706,6 +204158,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         c_href = _xcstr(href_utf)
  * 
  */
+  __Pyx_TraceLine(919,0,__PYX_ERR(3, 919, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_hrefs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 919, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(3, 919, __pyx_L1_error)
@@ -191736,6 +204189,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  * 
  *         if c_href[0] != c'#':
  */
+  __Pyx_TraceLine(920,0,__PYX_ERR(3, 920, __pyx_L1_error))
   __pyx_v_c_href = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_href_utf);
 
   /* "src/lxml/xslt.pxi":922
@@ -191745,6 +204199,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             # normal URL, try to parse from it
  *             c_href = tree.xmlBuildURI(
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(3, 922, __pyx_L1_error))
   __pyx_t_2 = (((__pyx_v_c_href[0]) != '#') != 0);
   if (__pyx_t_2) {
 
@@ -191755,6 +204210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *                 c_href,
  *                 tree.xmlNodeGetBase(self._c_node.doc, self._c_node))
  */
+    __Pyx_TraceLine(924,0,__PYX_ERR(3, 924, __pyx_L1_error))
     __pyx_v_c_href = xmlBuildURI(__pyx_v_c_href, xmlNodeGetBase(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->doc, __pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node));
 
     /* "src/lxml/xslt.pxi":927
@@ -191764,6 +204220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *                 try:
  *                     href_utf = <unsigned char*>c_href
  */
+    __Pyx_TraceLine(927,0,__PYX_ERR(3, 927, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_href != NULL) != 0);
     if (__pyx_t_2) {
 
@@ -191774,6 +204231,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *                     href_utf = <unsigned char*>c_href
  *                 finally:
  */
+      __Pyx_TraceLine(928,0,__PYX_ERR(3, 928, __pyx_L10_error))
       /*try:*/ {
 
         /* "src/lxml/xslt.pxi":929
@@ -191783,6 +204241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *                 finally:
  *                     tree.xmlFree(<char*>c_href)
  */
+        __Pyx_TraceLine(929,0,__PYX_ERR(3, 929, __pyx_L10_error))
         __pyx_t_5 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_href)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 929, __pyx_L10_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF_SET(__pyx_v_href_utf, ((PyObject*)__pyx_t_5));
@@ -191796,6 +204255,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             result_doc = _parseDocumentFromURL(href_utf, parser)
  *             return _elementTreeFactory(result_doc, None)
  */
+      __Pyx_TraceLine(931,0,__PYX_ERR(3, 931, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           xmlFree(((char *)__pyx_v_c_href));
@@ -191856,6 +204316,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             return _elementTreeFactory(result_doc, None)
  * 
  */
+    __Pyx_TraceLine(932,0,__PYX_ERR(3, 932, __pyx_L1_error))
     if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(3, 932, __pyx_L1_error)
     __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_v_href_utf, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser))); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 932, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -191869,6 +204330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  * 
  *         # ID reference to embedded stylesheet
  */
+    __Pyx_TraceLine(933,0,__PYX_ERR(3, 933, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_result_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 933, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -191892,6 +204354,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         c_href += 1 # skip leading '#'
  *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)
  */
+  __Pyx_TraceLine(937,0,__PYX_ERR(3, 937, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._doc);
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_10 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_5)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(3, 937, __pyx_L1_error)
@@ -191904,6 +204367,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)
  *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
  */
+  __Pyx_TraceLine(938,0,__PYX_ERR(3, 938, __pyx_L1_error))
   __pyx_v_c_href = (__pyx_v_c_href + 1);
 
   /* "src/lxml/xslt.pxi":939
@@ -191913,6 +204377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
  *             result_node = _elementFactory(self._doc, c_attr.parent)
  */
+  __Pyx_TraceLine(939,0,__PYX_ERR(3, 939, __pyx_L1_error))
   __pyx_v_c_attr = xmlGetID(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->doc, __pyx_v_c_href);
 
   /* "src/lxml/xslt.pxi":940
@@ -191922,6 +204387,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             result_node = _elementFactory(self._doc, c_attr.parent)
  *             return _elementTreeFactory(result_node._doc, result_node)
  */
+  __Pyx_TraceLine(940,0,__PYX_ERR(3, 940, __pyx_L1_error))
   __pyx_t_18 = ((__pyx_v_c_attr != NULL) != 0);
   if (__pyx_t_18) {
   } else {
@@ -191940,6 +204406,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             return _elementTreeFactory(result_node._doc, result_node)
  * 
  */
+    __Pyx_TraceLine(941,0,__PYX_ERR(3, 941, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._doc);
     __Pyx_INCREF(__pyx_t_5);
     __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_attr->parent)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 941, __pyx_L1_error)
@@ -191955,6 +204422,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  * 
  *         # try XPath search
  */
+    __Pyx_TraceLine(942,0,__PYX_ERR(3, 942, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = ((PyObject *)__pyx_v_result_node->_doc);
     __Pyx_INCREF(__pyx_t_3);
@@ -191981,6 +204449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         if not root:
  *             raise ValueError, u"reference to non-existing embedded stylesheet"
  */
+  __Pyx_TraceLine(945,0,__PYX_ERR(3, 945, __pyx_L1_error))
   __pyx_t_5 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._doc);
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_href); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 945, __pyx_L1_error)
@@ -191999,6 +204468,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             raise ValueError, u"reference to non-existing embedded stylesheet"
  *         elif len(root) > 1:
  */
+  __Pyx_TraceLine(946,0,__PYX_ERR(3, 946, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_root); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(3, 946, __pyx_L1_error)
   __pyx_t_18 = ((!__pyx_t_2) != 0);
   if (unlikely(__pyx_t_18)) {
@@ -192010,6 +204480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         elif len(root) > 1:
  *             raise ValueError, u"ambiguous reference to embedded stylesheet"
  */
+    __Pyx_TraceLine(947,0,__PYX_ERR(3, 947, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_reference_to_non_existing_embedd, 0, 0);
     __PYX_ERR(3, 947, __pyx_L1_error)
 
@@ -192029,6 +204500,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *             raise ValueError, u"ambiguous reference to embedded stylesheet"
  *         result_node = root[0]
  */
+  __Pyx_TraceLine(948,0,__PYX_ERR(3, 948, __pyx_L1_error))
   __pyx_t_9 = PyObject_Length(__pyx_v_root); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(3, 948, __pyx_L1_error)
   __pyx_t_18 = ((__pyx_t_9 > 1) != 0);
   if (unlikely(__pyx_t_18)) {
@@ -192040,6 +204512,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         result_node = root[0]
  *         return _elementTreeFactory(result_node._doc, result_node)
  */
+    __Pyx_TraceLine(949,0,__PYX_ERR(3, 949, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_ambiguous_reference_to_embedded, 0, 0);
     __PYX_ERR(3, 949, __pyx_L1_error)
 
@@ -192059,6 +204532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  *         return _elementTreeFactory(result_node._doc, result_node)
  * 
  */
+  __Pyx_TraceLine(950,0,__PYX_ERR(3, 950, __pyx_L1_error))
   __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_root, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 950, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(3, 950, __pyx_L1_error)
@@ -192072,6 +204546,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
  * 
  *     def set(self, key, value):
  */
+  __Pyx_TraceLine(951,0,__PYX_ERR(3, 951, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_8 = ((PyObject *)__pyx_v_result_node->_doc);
   __Pyx_INCREF(__pyx_t_8);
@@ -192106,6 +204581,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(str
   __Pyx_XDECREF(__pyx_v_hrefs);
   __Pyx_XDECREF(__pyx_v_root);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -192185,6 +204661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
   PyObject *__pyx_v_attrib = NULL;
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -192196,7 +204673,9 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__364)
   __Pyx_RefNannySetupContext("set", 0);
+  __Pyx_TraceCall("set", __pyx_f[3], 953, 0, __PYX_ERR(3, 953, __pyx_L1_error));
 
   /* "src/lxml/xslt.pxi":959
  *         the processing instruction.
@@ -192205,6 +204684,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *             raise AttributeError, \
  *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
  */
+  __Pyx_TraceLine(959,0,__PYX_ERR(3, 959, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_key, __pyx_n_u_href, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 959, __pyx_L1_error)
   if (unlikely(__pyx_t_1)) {
 
@@ -192215,6 +204695,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
  *         if value is None:
  */
+    __Pyx_TraceLine(960,0,__PYX_ERR(3, 960, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_AttributeError, __pyx_kp_u_only_setting_the_href_attribute, 0, 0);
     __PYX_ERR(3, 960, __pyx_L1_error)
 
@@ -192234,6 +204715,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *             attrib = u""
  *         elif u'"' in value or u'>' in value:
  */
+  __Pyx_TraceLine(962,0,__PYX_ERR(3, 962, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -192245,8 +204727,9 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         elif u'"' in value or u'>' in value:
  *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"
  */
-    __Pyx_INCREF(__pyx_kp_u__16);
-    __pyx_v_attrib = __pyx_kp_u__16;
+    __Pyx_TraceLine(963,0,__PYX_ERR(3, 963, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_u__23);
+    __pyx_v_attrib = __pyx_kp_u__23;
 
     /* "src/lxml/xslt.pxi":962
  *             raise AttributeError, \
@@ -192265,14 +204748,15 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"
  *         else:
  */
-  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__32, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 964, __pyx_L1_error)
+  __Pyx_TraceLine(964,0,__PYX_ERR(3, 964, __pyx_L1_error))
+  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__61, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(3, 964, __pyx_L1_error)
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__35, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(3, 964, __pyx_L1_error)
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__64, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(3, 964, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_3 != 0);
   __pyx_t_2 = __pyx_t_1;
   __pyx_L5_bool_binop_done:;
@@ -192285,6 +204769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         else:
  *             attrib = f' href="{value}"'
  */
+    __Pyx_TraceLine(965,0,__PYX_ERR(3, 965, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Invalid_URL_must_not_contain_or, 0, 0);
     __PYX_ERR(3, 965, __pyx_L1_error)
 
@@ -192304,6 +204789,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         text = u' ' + self.text
  *         if _FIND_PI_HREF(text):
  */
+  __Pyx_TraceLine(967,0,__PYX_ERR(3, 967, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 967, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -192320,10 +204806,10 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
     __Pyx_GIVEREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7);
     __pyx_t_7 = 0;
-    __Pyx_INCREF(__pyx_kp_u__32);
+    __Pyx_INCREF(__pyx_kp_u__61);
     __pyx_t_5 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__32);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__32);
+    __Pyx_GIVEREF(__pyx_kp_u__61);
+    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__61);
     __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 967, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -192339,9 +204825,10 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         if _FIND_PI_HREF(text):
  *             self.text = _REPLACE_PI_HREF(attrib, text)
  */
+  __Pyx_TraceLine(968,0,__PYX_ERR(3, 968, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 968, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_4 = PyNumber_Add(__pyx_kp_u__15, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 968, __pyx_L1_error)
+  __pyx_t_4 = PyNumber_Add(__pyx_kp_u__22, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 968, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_v_text = __pyx_t_4;
@@ -192354,6 +204841,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *             self.text = _REPLACE_PI_HREF(attrib, text)
  *         else:
  */
+  __Pyx_TraceLine(969,0,__PYX_ERR(3, 969, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_5etree__FIND_PI_HREF);
   __pyx_t_7 = __pyx_v_4lxml_5etree__FIND_PI_HREF; __pyx_t_8 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
@@ -192409,6 +204897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         else:
  *             self.text = text + attrib
  */
+    __Pyx_TraceLine(970,0,__PYX_ERR(3, 970, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_5etree__REPLACE_PI_HREF);
     __pyx_t_7 = __pyx_v_4lxml_5etree__REPLACE_PI_HREF; __pyx_t_9 = NULL;
     __pyx_t_10 = 0;
@@ -192473,6 +204962,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
  *         else:
  *             self.text = text + attrib             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(972,0,__PYX_ERR(3, 972, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = PyNumber_Add(__pyx_v_text, __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 972, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -192503,6 +204993,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_2set(struct
   __Pyx_XDECREF(__pyx_v_attrib);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -192602,12 +205093,21 @@ static PyObject *__pyx_pw_4lxml_5etree_13XSLTExtension_1execute(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_execute(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree_XSLTExtension *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_context, CYTHON_UNUSED PyObject *__pyx_v_self_node, CYTHON_UNUSED PyObject *__pyx_v_input_node, CYTHON_UNUSED PyObject *__pyx_v_output_parent) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__365)
   __Pyx_RefNannySetupContext("execute", 0);
+  __Pyx_TraceCall("execute", __pyx_f[19], 6, 0, __PYX_ERR(19, 6, __pyx_L1_error));
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XSLTExtension.execute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -192737,6 +205237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
   xmlNode *__pyx_v_c_node;
   xmlNode *__pyx_v_c_context_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
@@ -192751,7 +205252,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__366)
   __Pyx_RefNannySetupContext("apply_templates", 0);
+  __Pyx_TraceCall("apply_templates", __pyx_f[19], 22, 0, __PYX_ERR(19, 22, __pyx_L1_error));
 
   /* "src/lxml/xsltext.pxi":47
  *         cdef xmlNode* c_node
@@ -192760,6 +205263,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         c_context_node = _roNodeOf(node)
  *         #assert c_context_node.doc is context._xsltContext.node.doc, \
  */
+  __Pyx_TraceLine(47,0,__PYX_ERR(19, 47, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_context->_xsltCtxt != NULL) != 0))) {
@@ -192776,6 +205280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         #assert c_context_node.doc is context._xsltContext.node.doc, \
  *         #    "switching input documents during transformation is not currently supported"
  */
+  __Pyx_TraceLine(48,0,__PYX_ERR(19, 48, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__roNodeOf(__pyx_v_node); if (unlikely(__pyx_t_1 == ((xmlNode *)NULL))) __PYX_ERR(19, 48, __pyx_L1_error)
   __pyx_v_c_context_node = __pyx_t_1;
 
@@ -192786,6 +205291,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *             c_parent = _nonRoNodeOf(output_parent)
  *         else:
  */
+  __Pyx_TraceLine(52,0,__PYX_ERR(19, 52, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_output_parent != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -192797,6 +205303,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         else:
  *             c_parent = tree.xmlNewDocNode(
  */
+    __Pyx_TraceLine(53,0,__PYX_ERR(19, 53, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__nonRoNodeOf(__pyx_v_output_parent); if (unlikely(__pyx_t_1 == ((xmlNode *)NULL))) __PYX_ERR(19, 53, __pyx_L1_error)
     __pyx_v_c_parent = __pyx_t_1;
 
@@ -192817,6 +205324,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *                 context._xsltCtxt.output, NULL, <unsigned char*>"fake-parent", NULL)
  * 
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(19, 55, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/xsltext.pxi":56
@@ -192826,6 +205334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  * 
  *         c_node = context._xsltCtxt.insert
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(19, 56, __pyx_L1_error))
     __pyx_v_c_parent = xmlNewDocNode(__pyx_v_context->_xsltCtxt->output, NULL, ((unsigned char *)((unsigned char *)((char const *)"fake-parent"))), NULL);
   }
   __pyx_L3:;
@@ -192837,6 +205346,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         context._xsltCtxt.insert = c_parent
  *         xslt.xsltProcessOneNode(
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(19, 58, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_context->_xsltCtxt->insert;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -192847,6 +205357,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         xslt.xsltProcessOneNode(
  *             context._xsltCtxt, c_context_node, NULL)
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(19, 59, __pyx_L1_error))
   __pyx_v_context->_xsltCtxt->insert = __pyx_v_c_parent;
 
   /* "src/lxml/xsltext.pxi":60
@@ -192856,6 +205367,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *             context._xsltCtxt, c_context_node, NULL)
  *         context._xsltCtxt.insert = c_node
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(19, 60, __pyx_L1_error))
   xsltProcessOneNode(__pyx_v_context->_xsltCtxt, __pyx_v_c_context_node, NULL);
 
   /* "src/lxml/xsltext.pxi":62
@@ -192865,6 +205377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  * 
  *         if output_parent is not None:
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(19, 62, __pyx_L1_error))
   __pyx_v_context->_xsltCtxt->insert = __pyx_v_c_node;
 
   /* "src/lxml/xsltext.pxi":64
@@ -192874,6 +205387,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *             return None
  * 
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(19, 64, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_output_parent != Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -192885,6 +205399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  * 
  *         try:
  */
+    __Pyx_TraceLine(65,0,__PYX_ERR(19, 65, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -192905,6 +205420,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *             return self._collectXSLTResultContent(
  *                 context, c_parent, elements_only, remove_blank_text)
  */
+  __Pyx_TraceLine(67,0,__PYX_ERR(19, 67, __pyx_L6_error))
   /*try:*/ {
 
     /* "src/lxml/xsltext.pxi":68
@@ -192914,6 +205430,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *                 context, c_parent, elements_only, remove_blank_text)
  *         finally:
  */
+    __Pyx_TraceLine(68,0,__PYX_ERR(19, 68, __pyx_L6_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "src/lxml/xsltext.pxi":69
@@ -192923,6 +205440,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *         finally:
  *             # free all intermediate nodes that will not be freed by proxies
  */
+    __Pyx_TraceLine(69,0,__PYX_ERR(19, 69, __pyx_L6_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_elements_only); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 69, __pyx_L6_error)
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 69, __pyx_L6_error)
 
@@ -192933,6 +205451,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  *                 context, c_parent, elements_only, remove_blank_text)
  *         finally:
  */
+    __Pyx_TraceLine(68,0,__PYX_ERR(19, 68, __pyx_L6_error))
     __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTExtension *)__pyx_v_self->__pyx_vtab)->_collectXSLTResultContent(__pyx_v_self, __pyx_v_context, __pyx_v_c_parent, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 68, __pyx_L6_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = __pyx_t_4;
@@ -192947,6 +205466,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
  * 
  *     def process_children(self, _XSLTContext context not None, output_parent=None,
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(19, 72, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L6_error:;
     /*exception exit:*/{
@@ -193005,6 +205525,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_2apply_templates(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -193123,6 +205644,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
   xsltTransformContext *__pyx_v_c_ctxt;
   xmlNode *__pyx_v_c_old_output_parent;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xsltTransformContext *__pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -193138,7 +205660,9 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__367)
   __Pyx_RefNannySetupContext("process_children", 0);
+  __Pyx_TraceCall("process_children", __pyx_f[19], 74, 0, __PYX_ERR(19, 74, __pyx_L1_error));
 
   /* "src/lxml/xsltext.pxi":97
  *         """
@@ -193147,6 +205671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *         cdef xmlNode* c_old_output_parent = c_ctxt.insert
  *         assert context._xsltCtxt is not NULL, "XSLT context not initialised"
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(19, 97, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_context->_xsltCtxt;
   __pyx_v_c_ctxt = __pyx_t_1;
 
@@ -193157,6 +205682,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *         assert context._xsltCtxt is not NULL, "XSLT context not initialised"
  * 
  */
+  __Pyx_TraceLine(98,0,__PYX_ERR(19, 98, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_ctxt->insert;
   __pyx_v_c_old_output_parent = __pyx_t_2;
 
@@ -193167,6 +205693,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  * 
  *         # output_parent node is used for adding results instead of
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(19, 99, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_context->_xsltCtxt != NULL) != 0))) {
@@ -193183,6 +205710,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *             c_parent = _nonRoNodeOf(output_parent)
  *         else:
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(19, 105, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_output_parent != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -193194,6 +205722,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *         else:
  *             c_parent = tree.xmlNewDocNode(
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(19, 106, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree__nonRoNodeOf(__pyx_v_output_parent); if (unlikely(__pyx_t_2 == ((xmlNode *)NULL))) __PYX_ERR(19, 106, __pyx_L1_error)
     __pyx_v_c_parent = __pyx_t_2;
 
@@ -193214,6 +205743,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *                 context._xsltCtxt.output, NULL, <unsigned char*>"fake-parent", NULL)
  * 
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(19, 108, __pyx_L1_error))
   /*else*/ {
 
     /* "src/lxml/xsltext.pxi":109
@@ -193223,6 +205753,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  * 
  *         c_ctxt.insert = c_parent
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(19, 109, __pyx_L1_error))
     __pyx_v_c_parent = xmlNewDocNode(__pyx_v_context->_xsltCtxt->output, NULL, ((unsigned char *)((unsigned char *)((char const *)"fake-parent"))), NULL);
   }
   __pyx_L3:;
@@ -193234,6 +205765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *         xslt.xsltApplyOneTemplate(c_ctxt,
  *             c_ctxt.node, c_ctxt.inst.children, NULL, NULL)
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(19, 111, __pyx_L1_error))
   __pyx_v_c_ctxt->insert = __pyx_v_c_parent;
 
   /* "src/lxml/xsltext.pxi":112
@@ -193243,6 +205775,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *             c_ctxt.node, c_ctxt.inst.children, NULL, NULL)
  *         c_ctxt.insert = c_old_output_parent
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(19, 112, __pyx_L1_error))
   xsltApplyOneTemplate(__pyx_v_c_ctxt, __pyx_v_c_ctxt->node, __pyx_v_c_ctxt->inst->children, NULL, NULL);
 
   /* "src/lxml/xsltext.pxi":114
@@ -193252,6 +205785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  * 
  *         if output_parent is not None:
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(19, 114, __pyx_L1_error))
   __pyx_v_c_ctxt->insert = __pyx_v_c_old_output_parent;
 
   /* "src/lxml/xsltext.pxi":116
@@ -193261,6 +205795,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *             return None
  * 
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(19, 116, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_output_parent != Py_None);
   __pyx_t_3 = (__pyx_t_4 != 0);
   if (__pyx_t_3) {
@@ -193272,6 +205807,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  * 
  *         try:
  */
+    __Pyx_TraceLine(117,0,__PYX_ERR(19, 117, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -193292,6 +205828,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *             return self._collectXSLTResultContent(
  *                 context, c_parent, elements_only, remove_blank_text)
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(19, 119, __pyx_L6_error))
   /*try:*/ {
 
     /* "src/lxml/xsltext.pxi":120
@@ -193301,6 +205838,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *                 context, c_parent, elements_only, remove_blank_text)
  *         finally:
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(19, 120, __pyx_L6_error))
     __Pyx_XDECREF(__pyx_r);
 
     /* "src/lxml/xsltext.pxi":121
@@ -193310,6 +205848,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *         finally:
  *             # free all intermediate nodes that will not be freed by proxies
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(19, 121, __pyx_L6_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_elements_only); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 121, __pyx_L6_error)
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 121, __pyx_L6_error)
 
@@ -193320,6 +205859,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  *                 context, c_parent, elements_only, remove_blank_text)
  *         finally:
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(19, 120, __pyx_L6_error))
     __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTExtension *)__pyx_v_self->__pyx_vtab)->_collectXSLTResultContent(__pyx_v_self, __pyx_v_context, __pyx_v_c_parent, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 120, __pyx_L6_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_r = __pyx_t_5;
@@ -193334,6 +205874,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
  * 
  *     cdef _collectXSLTResultContent(self, _XSLTContext context, xmlNode* c_parent,
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(19, 124, __pyx_L1_error))
   /*finally:*/ {
     __pyx_L6_error:;
     /*exception exit:*/{
@@ -193392,6 +205933,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_4process_children(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -193411,6 +205953,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
   PyObject *__pyx_v_results = 0;
   PyObject *__pyx_v_s = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlNode *__pyx_t_2;
@@ -193420,6 +205963,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_collectXSLTResultContent", 0);
+  __Pyx_TraceCall("_collectXSLTResultContent", __pyx_f[19], 126, 0, __PYX_ERR(19, 126, __pyx_L1_error));
 
   /* "src/lxml/xsltext.pxi":131
  *         cdef xmlNode* c_next
@@ -193428,6 +205972,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *         c_node = c_parent.children
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(19, 131, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 131, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_results = ((PyObject*)__pyx_t_1);
@@ -193440,6 +205985,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *         while c_node is not NULL:
  *             c_next = c_node.next
  */
+  __Pyx_TraceLine(132,0,__PYX_ERR(19, 132, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_parent->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -193450,6 +205996,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *             c_next = c_node.next
  *             if c_node.type == tree.XML_TEXT_NODE:
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(19, 133, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -193461,6 +206008,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *             if c_node.type == tree.XML_TEXT_NODE:
  *                 if not elements_only:
  */
+    __Pyx_TraceLine(134,0,__PYX_ERR(19, 134, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_next = __pyx_t_2;
 
@@ -193471,6 +206019,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                 if not elements_only:
  *                     s = funicode(c_node.content)
  */
+    __Pyx_TraceLine(135,0,__PYX_ERR(19, 135, __pyx_L1_error))
     switch (__pyx_v_c_node->type) {
       case XML_TEXT_NODE:
 
@@ -193481,6 +206030,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                     s = funicode(c_node.content)
  *                     if not remove_blank_text or s.strip():
  */
+      __Pyx_TraceLine(136,0,__PYX_ERR(19, 136, __pyx_L1_error))
       __pyx_t_3 = ((!(__pyx_v_elements_only != 0)) != 0);
       if (__pyx_t_3) {
 
@@ -193491,6 +206041,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                     if not remove_blank_text or s.strip():
  *                         results.append(s)
  */
+        __Pyx_TraceLine(137,0,__PYX_ERR(19, 137, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->content); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 137, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_1);
@@ -193503,6 +206054,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                         results.append(s)
  *                     s = None
  */
+        __Pyx_TraceLine(138,0,__PYX_ERR(19, 138, __pyx_L1_error))
         __pyx_t_4 = ((!(__pyx_v_remove_blank_text != 0)) != 0);
         if (!__pyx_t_4) {
         } else {
@@ -193542,6 +206094,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                     s = None
  *             elif c_node.type == tree.XML_ELEMENT_NODE:
  */
+          __Pyx_TraceLine(139,0,__PYX_ERR(19, 139, __pyx_L1_error))
           __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_s); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(19, 139, __pyx_L1_error)
 
           /* "src/lxml/xsltext.pxi":138
@@ -193560,6 +206113,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *             elif c_node.type == tree.XML_ELEMENT_NODE:
  *                 proxy = _newReadOnlyProxy(
  */
+        __Pyx_TraceLine(140,0,__PYX_ERR(19, 140, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_s, Py_None);
 
@@ -193588,6 +206142,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                 proxy = _newReadOnlyProxy(
  *                     context._extension_element_proxy, c_node)
  */
+      __Pyx_TraceLine(141,0,__PYX_ERR(19, 141, __pyx_L1_error))
       case XML_ELEMENT_NODE:
 
       /* "src/lxml/xsltext.pxi":143
@@ -193597,6 +206152,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                 results.append(proxy)
  *                 # unlink node and make sure it will be freed later on
  */
+      __Pyx_TraceLine(143,0,__PYX_ERR(19, 143, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)__pyx_v_context->_extension_element_proxy);
       __Pyx_INCREF(__pyx_t_1);
 
@@ -193607,6 +206163,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                     context._extension_element_proxy, c_node)
  *                 results.append(proxy)
  */
+      __Pyx_TraceLine(142,0,__PYX_ERR(19, 142, __pyx_L1_error))
       __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 142, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -193620,6 +206177,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                 # unlink node and make sure it will be freed later on
  *                 tree.xmlUnlinkNode(c_node)
  */
+      __Pyx_TraceLine(144,0,__PYX_ERR(19, 144, __pyx_L1_error))
       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_results, ((PyObject *)__pyx_v_proxy)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(19, 144, __pyx_L1_error)
 
       /* "src/lxml/xsltext.pxi":146
@@ -193629,6 +206187,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *                 proxy.free_after_use()
  *             else:
  */
+      __Pyx_TraceLine(146,0,__PYX_ERR(19, 146, __pyx_L1_error))
       xmlUnlinkNode(__pyx_v_c_node);
 
       /* "src/lxml/xsltext.pxi":147
@@ -193638,6 +206197,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *             else:
  *                 raise TypeError, \
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(19, 147, __pyx_L1_error))
       ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *)__pyx_v_proxy->__pyx_vtab)->free_after_use(__pyx_v_proxy);
 
       /* "src/lxml/xsltext.pxi":141
@@ -193657,6 +206217,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *             c_node = c_next
  *         return results
  */
+      __Pyx_TraceLine(150,0,__PYX_ERR(19, 150, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 150, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unsupported_XSLT_result_type, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 150, __pyx_L1_error)
@@ -193675,6 +206236,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  *         return results
  * 
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(19, 151, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_c_next;
   }
 
@@ -193685,6 +206247,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
  * 
  * 
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(19, 152, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_results);
   __pyx_r = __pyx_v_results;
@@ -193710,6 +206273,7 @@ static PyObject *__pyx_f_4lxml_5etree_13XSLTExtension__collectXSLTResultContent(
   __Pyx_XDECREF(__pyx_v_results);
   __Pyx_XDECREF(__pyx_v_s);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -193726,6 +206290,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
   PyObject *__pyx_v_ns_utf = NULL;
   PyObject *__pyx_v_name_utf = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -193736,6 +206301,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_registerXSLTExtensions", 0);
+  __Pyx_TraceCall("_registerXSLTExtensions", __pyx_f[19], 155, 0, __PYX_ERR(19, 155, __pyx_L1_error));
 
   /* "src/lxml/xsltext.pxi":157
  * cdef _registerXSLTExtensions(xslt.xsltTransformContext* c_ctxt,
@@ -193744,6 +206310,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
  *         xslt.xsltRegisterExtElement(
  *             c_ctxt, _xcstr(name_utf), _xcstr(ns_utf),
  */
+  __Pyx_TraceLine(157,0,__PYX_ERR(19, 157, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_extension_dict)) || PyTuple_CheckExact(__pyx_v_extension_dict)) {
     __pyx_t_1 = __pyx_v_extension_dict; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -193841,6 +206408,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
  *             c_ctxt, _xcstr(name_utf), _xcstr(ns_utf),
  *             <xslt.xsltTransformFunction>_callExtensionElement)
  */
+    __Pyx_TraceLine(158,0,__PYX_ERR(19, 158, __pyx_L1_error))
     (void)(xsltRegisterExtElement(__pyx_v_c_ctxt, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns_utf), ((xsltTransformFunction)__pyx_f_4lxml_5etree__callExtensionElement)));
 
     /* "src/lxml/xsltext.pxi":157
@@ -193850,6 +206418,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
  *         xslt.xsltRegisterExtElement(
  *             c_ctxt, _xcstr(name_utf), _xcstr(ns_utf),
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(19, 157, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -193876,6 +206445,7 @@ static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformConte
   __Pyx_XDECREF(__pyx_v_ns_utf);
   __Pyx_XDECREF(__pyx_v_name_utf);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -193899,6 +206469,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
   const xmlChar *__pyx_v_c_uri;
   PyObject *__pyx_v_e = NULL;
   PyObject *__pyx_v_message = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -193932,6 +206503,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   #endif
   __Pyx_RefNannySetupContext("_callExtensionElement", 0);
+  __Pyx_TraceCall("_callExtensionElement", __pyx_f[19], 162, 0, __PYX_ERR(19, 162, __pyx_L1_error));
 
   /* "src/lxml/xsltext.pxi":170
  *     cdef python.PyObject* dict_result
@@ -193940,6 +206512,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     cdef object output_parent # not restricted to ro-nodes
  *     c_uri = _getNs(c_inst_node)
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(19, 170, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_context_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)Py_None);
   __Pyx_INCREF(Py_None);
@@ -193952,6 +206525,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     if c_uri is NULL:
  *         # not allowed, and should never happen
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(19, 172, __pyx_L1_error))
   __pyx_v_c_uri = _getNs(__pyx_v_c_inst_node);
 
   /* "src/lxml/xsltext.pxi":173
@@ -193961,6 +206535,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         # not allowed, and should never happen
  *         return
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(19, 173, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_uri == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -193971,6 +206546,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     if c_ctxt.xpathCtxt.userData is NULL:
  *         # just for safety, should never happen
  */
+    __Pyx_TraceLine(175,0,__PYX_ERR(19, 175, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xsltext.pxi":173
@@ -193989,6 +206565,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         # just for safety, should never happen
  *         return
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(19, 176, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_ctxt->xpathCtxt->userData == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -193999,6 +206576,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     context = <_XSLTContext>c_ctxt.xpathCtxt.userData
  *     try:
  */
+    __Pyx_TraceLine(178,0,__PYX_ERR(19, 178, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/xsltext.pxi":176
@@ -194017,6 +206595,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     try:
  *         try:
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(19, 179, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_c_ctxt->xpathCtxt->userData);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_2);
@@ -194029,6 +206608,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         try:
  *             dict_result = python.PyDict_GetItem(
  */
+  __Pyx_TraceLine(180,0,__PYX_ERR(19, 180, __pyx_L6_error))
   /*try:*/ {
     {
       __Pyx_PyThreadState_declare
@@ -194046,6 +206626,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             dict_result = python.PyDict_GetItem(
  *                 context._extension_elements, (c_uri, c_inst_node.name))
  */
+        __Pyx_TraceLine(181,0,__PYX_ERR(19, 181, __pyx_L14_error))
         {
           __Pyx_PyThreadState_declare
           __Pyx_PyThreadState_assign
@@ -194062,6 +206643,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             if dict_result is NULL:
  *                 raise KeyError, f"extension element {funicode(c_inst_node.name)} not found"
  */
+            __Pyx_TraceLine(183,0,__PYX_ERR(19, 183, __pyx_L14_error))
             __pyx_t_2 = __pyx_v_context->_extension_elements;
             __Pyx_INCREF(__pyx_t_2);
             __pyx_t_9 = __Pyx_PyBytes_FromCString(__pyx_v_c_uri); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 183, __pyx_L14_error)
@@ -194084,6 +206666,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 context._extension_elements, (c_uri, c_inst_node.name))
  *             if dict_result is NULL:
  */
+            __Pyx_TraceLine(182,0,__PYX_ERR(19, 182, __pyx_L14_error))
             __pyx_v_dict_result = PyDict_GetItem(__pyx_t_2, __pyx_t_11);
             __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -194095,6 +206678,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 raise KeyError, f"extension element {funicode(c_inst_node.name)} not found"
  *             extension = <object>dict_result
  */
+            __Pyx_TraceLine(184,0,__PYX_ERR(19, 184, __pyx_L14_error))
             __pyx_t_1 = ((__pyx_v_dict_result == NULL) != 0);
             if (unlikely(__pyx_t_1)) {
 
@@ -194105,6 +206689,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             extension = <object>dict_result
  * 
  */
+              __Pyx_TraceLine(185,0,__PYX_ERR(19, 185, __pyx_L14_error))
               __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 185, __pyx_L14_error)
               __Pyx_GOTREF(__pyx_t_11);
               __pyx_t_12 = 0;
@@ -194150,6 +206735,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  * 
  *             try:
  */
+            __Pyx_TraceLine(186,0,__PYX_ERR(19, 186, __pyx_L14_error))
             if (!(likely(((((PyObject *)__pyx_v_dict_result)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_dict_result), __pyx_ptype_4lxml_5etree_XSLTExtension))))) __PYX_ERR(19, 186, __pyx_L14_error)
             __pyx_t_10 = ((PyObject *)__pyx_v_dict_result);
             __Pyx_INCREF(__pyx_t_10);
@@ -194163,6 +206749,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 # build the context proxy nodes
  *                 self_node = _newReadOnlyProxy(None, c_inst_node)
  */
+            __Pyx_TraceLine(188,0,__PYX_ERR(19, 188, __pyx_L22_error))
             /*try:*/ {
 
               /* "src/lxml/xsltext.pxi":190
@@ -194172,6 +206759,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 if _isElement(c_ctxt.insert):
  *                     output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
  */
+              __Pyx_TraceLine(190,0,__PYX_ERR(19, 190, __pyx_L22_error))
               __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)Py_None), __pyx_v_c_inst_node)); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 190, __pyx_L22_error)
               __Pyx_GOTREF(__pyx_t_10);
               __Pyx_DECREF_SET(__pyx_v_self_node, ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_10));
@@ -194184,6 +206772,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
  *                 else:
  */
+              __Pyx_TraceLine(191,0,__PYX_ERR(19, 191, __pyx_L22_error))
               __pyx_t_1 = (_isElement(__pyx_v_c_ctxt->insert) != 0);
               if (__pyx_t_1) {
 
@@ -194194,6 +206783,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 else:
  *                     # may be the document node or other stuff
  */
+                __Pyx_TraceLine(192,0,__PYX_ERR(19, 192, __pyx_L22_error))
                 __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__newAppendOnlyProxy(__pyx_v_self_node, __pyx_v_c_ctxt->insert)); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 192, __pyx_L22_error)
                 __Pyx_GOTREF(__pyx_t_10);
                 __pyx_v_output_parent = __pyx_t_10;
@@ -194216,6 +206806,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 if c_context_node.type in (tree.XML_DOCUMENT_NODE,
  *                                            tree.XML_HTML_DOCUMENT_NODE):
  */
+              __Pyx_TraceLine(195,0,__PYX_ERR(19, 195, __pyx_L22_error))
               /*else*/ {
                 __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__newOpaqueAppendOnlyNodeWrapper(__pyx_v_c_ctxt->insert)); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 195, __pyx_L22_error)
                 __Pyx_GOTREF(__pyx_t_10);
@@ -194231,6 +206822,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                                            tree.XML_HTML_DOCUMENT_NODE):
  *                     c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
  */
+              __Pyx_TraceLine(196,0,__PYX_ERR(19, 196, __pyx_L22_error))
               switch (__pyx_v_c_context_node->type) {
                 case XML_DOCUMENT_NODE:
 
@@ -194241,6 +206833,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
  *                     if c_node is not NULL:
  */
+                __Pyx_TraceLine(197,0,__PYX_ERR(19, 197, __pyx_L22_error))
                 case XML_HTML_DOCUMENT_NODE:
 
                 /* "src/lxml/xsltext.pxi":198
@@ -194250,6 +206843,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     if c_node is not NULL:
  *                         context_node = _newReadOnlyProxy(self_node, c_node)
  */
+                __Pyx_TraceLine(198,0,__PYX_ERR(19, 198, __pyx_L22_error))
                 __pyx_v_c_node = xmlDocGetRootElement(((xmlDoc *)__pyx_v_c_context_node));
 
                 /* "src/lxml/xsltext.pxi":199
@@ -194259,6 +206853,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                         context_node = _newReadOnlyProxy(self_node, c_node)
  *                     else:
  */
+                __Pyx_TraceLine(199,0,__PYX_ERR(19, 199, __pyx_L22_error))
                 __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
                 if (__pyx_t_1) {
 
@@ -194269,6 +206864,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     else:
  *                         context_node = None
  */
+                  __Pyx_TraceLine(200,0,__PYX_ERR(19, 200, __pyx_L22_error))
                   __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(__pyx_v_self_node, __pyx_v_c_node)); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 200, __pyx_L22_error)
                   __Pyx_GOTREF(__pyx_t_10);
                   __Pyx_DECREF_SET(__pyx_v_context_node, ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_10));
@@ -194291,6 +206887,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 elif c_context_node.type in (tree.XML_ATTRIBUTE_NODE,
  *                                              tree.XML_TEXT_NODE,
  */
+                __Pyx_TraceLine(202,0,__PYX_ERR(19, 202, __pyx_L22_error))
                 /*else*/ {
                   __Pyx_INCREF(Py_None);
                   __Pyx_DECREF_SET(__pyx_v_context_node, ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)Py_None));
@@ -194313,6 +206910,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                                              tree.XML_TEXT_NODE,
  *                                              tree.XML_CDATA_SECTION_NODE):
  */
+                __Pyx_TraceLine(203,0,__PYX_ERR(19, 203, __pyx_L22_error))
                 case XML_ATTRIBUTE_NODE:
 
                 /* "src/lxml/xsltext.pxi":204
@@ -194322,6 +206920,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                                              tree.XML_CDATA_SECTION_NODE):
  *                     # this isn't easy to support using read-only
  */
+                __Pyx_TraceLine(204,0,__PYX_ERR(19, 204, __pyx_L22_error))
                 case XML_TEXT_NODE:
 
                 /* "src/lxml/xsltext.pxi":205
@@ -194331,6 +206930,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     # this isn't easy to support using read-only
  *                     # nodes, as the smart-string factory must
  */
+                __Pyx_TraceLine(205,0,__PYX_ERR(19, 205, __pyx_L22_error))
                 case XML_CDATA_SECTION_NODE:
 
                 /* "src/lxml/xsltext.pxi":209
@@ -194340,6 +206940,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 else:
  *                     context_node  = _newReadOnlyProxy(self_node, c_context_node)
  */
+                __Pyx_TraceLine(209,0,__PYX_ERR(19, 209, __pyx_L22_error))
                 __pyx_t_10 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_c_context_node->type, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 209, __pyx_L22_error)
                 __Pyx_GOTREF(__pyx_t_10);
                 __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Unsupported_element_type, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 209, __pyx_L22_error)
@@ -194369,6 +206970,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  * 
  *                 # run the XSLT extension
  */
+                __Pyx_TraceLine(211,0,__PYX_ERR(19, 211, __pyx_L22_error))
                 __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(__pyx_v_self_node, __pyx_v_c_context_node)); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 211, __pyx_L22_error)
                 __Pyx_GOTREF(__pyx_t_10);
                 __Pyx_DECREF_SET(__pyx_v_context_node, ((struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *)__pyx_t_10));
@@ -194383,6 +206985,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 extension.execute(context, self_node, context_node, output_parent)
  *             finally:
  */
+              __Pyx_TraceLine(214,0,__PYX_ERR(19, 214, __pyx_L22_error))
               if (!(likely(((((PyObject *)__pyx_v_self_node)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_self_node), __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) __PYX_ERR(19, 214, __pyx_L22_error)
               __pyx_t_10 = ((PyObject *)__pyx_v_self_node);
               __Pyx_INCREF(__pyx_t_10);
@@ -194399,6 +207002,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             finally:
  *                 context._extension_element_proxy = None
  */
+              __Pyx_TraceLine(215,0,__PYX_ERR(19, 215, __pyx_L22_error))
               __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_extension), __pyx_n_s_execute); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 215, __pyx_L22_error)
               __Pyx_GOTREF(__pyx_t_11);
               __pyx_t_2 = NULL;
@@ -194462,6 +207066,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 if self_node is not None:
  *                     _freeReadOnlyProxies(self_node)
  */
+            __Pyx_TraceLine(217,0,__PYX_ERR(19, 217, __pyx_L14_error))
             /*finally:*/ {
               /*normal exit:*/{
                 __Pyx_INCREF(Py_None);
@@ -194477,6 +207082,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     _freeReadOnlyProxies(self_node)
  *         except Exception as e:
  */
+                __Pyx_TraceLine(218,0,__PYX_ERR(19, 218, __pyx_L14_error))
                 __pyx_t_1 = (((PyObject *)__pyx_v_self_node) != Py_None);
                 __pyx_t_15 = (__pyx_t_1 != 0);
                 if (__pyx_t_15) {
@@ -194488,6 +207094,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         except Exception as e:
  *             try:
  */
+                  __Pyx_TraceLine(219,0,__PYX_ERR(19, 219, __pyx_L14_error))
                   __pyx_t_10 = __pyx_f_4lxml_5etree__freeReadOnlyProxies(__pyx_v_self_node); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 219, __pyx_L14_error)
                   __Pyx_GOTREF(__pyx_t_10);
                   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -194529,6 +207136,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 if self_node is not None:
  *                     _freeReadOnlyProxies(self_node)
  */
+                  __Pyx_TraceLine(217,0,__PYX_ERR(19, 217, __pyx_L28_error))
                   __Pyx_INCREF(Py_None);
                   __Pyx_GIVEREF(Py_None);
                   __Pyx_GOTREF(__pyx_v_context->_extension_element_proxy);
@@ -194542,6 +207150,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                     _freeReadOnlyProxies(self_node)
  *         except Exception as e:
  */
+                  __Pyx_TraceLine(218,0,__PYX_ERR(19, 218, __pyx_L28_error))
                   __pyx_t_15 = (((PyObject *)__pyx_v_self_node) != Py_None);
                   __pyx_t_1 = (__pyx_t_15 != 0);
                   if (__pyx_t_1) {
@@ -194553,6 +207162,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         except Exception as e:
  *             try:
  */
+                    __Pyx_TraceLine(219,0,__PYX_ERR(19, 219, __pyx_L28_error))
                     __pyx_t_10 = __pyx_f_4lxml_5etree__freeReadOnlyProxies(__pyx_v_self_node); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 219, __pyx_L28_error)
                     __Pyx_GOTREF(__pyx_t_10);
                     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -194620,6 +207230,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             try:
  *                 e = unicode(e).encode(u"UTF-8")
  */
+          __Pyx_TraceLine(220,0,__PYX_ERR(19, 220, __pyx_L16_except_error))
           __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
           if (__pyx_t_16) {
             __Pyx_AddTraceback("lxml.etree._callExtensionElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -194637,6 +207248,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 e = unicode(e).encode(u"UTF-8")
  *             except:
  */
+            __Pyx_TraceLine(221,0,__PYX_ERR(19, 221, __pyx_L32_error))
             {
               __Pyx_PyThreadState_declare
               __Pyx_PyThreadState_assign
@@ -194653,6 +207265,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             except:
  *                 e = repr(e).encode(u"UTF-8")
  */
+                __Pyx_TraceLine(222,0,__PYX_ERR(19, 222, __pyx_L32_error))
                 __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_v_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 222, __pyx_L32_error)
                 __Pyx_GOTREF(__pyx_t_2);
                 __pyx_t_24 = PyUnicode_AsUTF8String(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_24)) __PYX_ERR(19, 222, __pyx_L32_error)
@@ -194684,6 +207297,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 e = repr(e).encode(u"UTF-8")
  *             message = python.PyBytes_FromFormat(
  */
+              __Pyx_TraceLine(223,0,__PYX_ERR(19, 223, __pyx_L34_except_error))
               /*except:*/ {
                 __Pyx_AddTraceback("lxml.etree._callExtensionElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
                 if (__Pyx_GetException(&__pyx_t_24, &__pyx_t_2, &__pyx_t_25) < 0) __PYX_ERR(19, 223, __pyx_L34_except_error)
@@ -194698,12 +207312,13 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             message = python.PyBytes_FromFormat(
  *                 "Error executing extension element '%s': %s",
  */
+                __Pyx_TraceLine(224,0,__PYX_ERR(19, 224, __pyx_L34_except_error))
                 __pyx_t_26 = PyObject_Repr(__pyx_v_e); if (unlikely(!__pyx_t_26)) __PYX_ERR(19, 224, __pyx_L34_except_error)
                 __Pyx_GOTREF(__pyx_t_26);
                 __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_encode); if (unlikely(!__pyx_t_27)) __PYX_ERR(19, 224, __pyx_L34_except_error)
                 __Pyx_GOTREF(__pyx_t_27);
                 __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
-                __pyx_t_26 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_tuple__130, NULL); if (unlikely(!__pyx_t_26)) __PYX_ERR(19, 224, __pyx_L34_except_error)
+                __pyx_t_26 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_tuple__368, NULL); if (unlikely(!__pyx_t_26)) __PYX_ERR(19, 224, __pyx_L34_except_error)
                 __Pyx_GOTREF(__pyx_t_26);
                 __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                 __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_26);
@@ -194742,6 +207357,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 "Error executing extension element '%s': %s",
  *                 c_inst_node.name, _cstr(e))
  */
+            __Pyx_TraceLine(225,0,__PYX_ERR(19, 225, __pyx_L16_except_error))
             __pyx_t_25 = PyBytes_FromFormat(((char *)"Error executing extension element '%s': %s"), __pyx_v_c_inst_node->name, PyBytes_AS_STRING(__pyx_v_e)); if (unlikely(!__pyx_t_25)) __PYX_ERR(19, 225, __pyx_L16_except_error)
             __Pyx_GOTREF(__pyx_t_25);
             __pyx_v_message = ((PyObject*)__pyx_t_25);
@@ -194754,6 +207370,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             context._exc._store_raised()
  *         except:
  */
+            __Pyx_TraceLine(228,0,__PYX_ERR(19, 228, __pyx_L16_except_error))
             if (unlikely(__pyx_v_message == Py_None)) {
               PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
               __PYX_ERR(19, 228, __pyx_L16_except_error)
@@ -194768,6 +207385,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         except:
  *             # just in case
  */
+            __Pyx_TraceLine(229,0,__PYX_ERR(19, 229, __pyx_L16_except_error))
             ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_store_raised(__pyx_v_context->__pyx_base._exc);
             __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -194782,6 +207400,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             # just in case
  *             message = python.PyBytes_FromFormat(
  */
+          __Pyx_TraceLine(230,0,__PYX_ERR(19, 230, __pyx_L16_except_error))
           /*except:*/ {
             __Pyx_AddTraceback("lxml.etree._callExtensionElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
             if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_10) < 0) __PYX_ERR(19, 230, __pyx_L16_except_error)
@@ -194796,6 +207415,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                 "Error executing extension element '%s'", c_inst_node.name)
  *             xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, "%s", message)
  */
+            __Pyx_TraceLine(232,0,__PYX_ERR(19, 232, __pyx_L16_except_error))
             __pyx_t_25 = PyBytes_FromFormat(((char *)"Error executing extension element '%s'"), __pyx_v_c_inst_node->name); if (unlikely(!__pyx_t_25)) __PYX_ERR(19, 232, __pyx_L16_except_error)
             __Pyx_GOTREF(__pyx_t_25);
             __pyx_v_message = ((PyObject*)__pyx_t_25);
@@ -194808,6 +207428,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *             context._exc._store_raised()
  *     except:
  */
+            __Pyx_TraceLine(234,0,__PYX_ERR(19, 234, __pyx_L16_except_error))
             if (unlikely(__pyx_v_message == Py_None)) {
               PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
               __PYX_ERR(19, 234, __pyx_L16_except_error)
@@ -194822,6 +207443,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     except:
  *         # no Python functions here - everything can fail...
  */
+            __Pyx_TraceLine(235,0,__PYX_ERR(19, 235, __pyx_L16_except_error))
             ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_store_raised(__pyx_v_context->__pyx_base._exc);
             __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -194879,6 +207501,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *         # no Python functions here - everything can fail...
  *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node,
  */
+      __Pyx_TraceLine(236,0,__PYX_ERR(19, 236, __pyx_L10_except_error))
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._callExtensionElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
         if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_9) < 0) __PYX_ERR(19, 236, __pyx_L10_except_error)
@@ -194893,6 +207516,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *                                 "Error during XSLT extension element evaluation")
  *         context._exc._store_raised()
  */
+        __Pyx_TraceLine(238,0,__PYX_ERR(19, 238, __pyx_L10_except_error))
         xsltTransformError(__pyx_v_c_ctxt, NULL, __pyx_v_c_inst_node, ((char *)"Error during XSLT extension element evaluation"));
 
         /* "src/lxml/xsltext.pxi":240
@@ -194902,6 +207526,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     finally:
  *         return  # swallow any further exceptions
  */
+        __Pyx_TraceLine(240,0,__PYX_ERR(19, 240, __pyx_L10_except_error))
         ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_store_raised(__pyx_v_context->__pyx_base._exc);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -194936,6 +207561,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  *     finally:
  *         return  # swallow any further exceptions             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(19, 242, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       goto __pyx_L0;
@@ -194988,6 +207614,16 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_24);
+  __Pyx_XDECREF(__pyx_t_25);
+  __Pyx_XDECREF(__pyx_t_26);
+  __Pyx_XDECREF(__pyx_t_27);
+  __Pyx_WriteUnraisable("lxml.etree._callExtensionElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XDECREF((PyObject *)__pyx_v_extension);
@@ -194996,6 +207632,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
   __Pyx_XDECREF(__pyx_v_output_parent);
   __Pyx_XDECREF(__pyx_v_e);
   __Pyx_XDECREF(__pyx_v_message);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   #ifdef WITH_THREAD
   __Pyx_PyGILState_Release(__pyx_gilstate_save);
@@ -195028,9 +207665,11 @@ static int __pyx_pw_4lxml_5etree_10_Validator_1__cinit__(PyObject *__pyx_v_self,
 
 static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[0], 3514, 0, __PYX_ERR(0, 3514, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3515
  *     cdef _ErrorLog _error_log
@@ -195039,6 +207678,7 @@ static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5
  * 
  *     def validate(self, etree):
  */
+  __Pyx_TraceLine(3515,0,__PYX_ERR(0, 3515, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3515, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -195063,6 +207703,7 @@ static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5
   __Pyx_AddTraceback("lxml.etree._Validator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195092,12 +207733,15 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_3validate(PyObject *__pyx_v_
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, PyObject *__pyx_v_etree) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__369)
   __Pyx_RefNannySetupContext("validate", 0);
+  __Pyx_TraceCall("validate", __pyx_f[0], 3517, 0, __PYX_ERR(0, 3517, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3524
  *         Returns true if document is valid, false if not.
@@ -195106,6 +207750,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4
  * 
  *     def assertValid(self, etree):
  */
+  __Pyx_TraceLine(3524,0,__PYX_ERR(0, 3524, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL;
@@ -195173,6 +207818,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195202,6 +207848,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_5assertValid(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, PyObject *__pyx_v_etree) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -195209,7 +207856,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__370)
   __Pyx_RefNannySetupContext("assertValid", 0);
+  __Pyx_TraceCall("assertValid", __pyx_f[0], 3526, 0, __PYX_ERR(0, 3526, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3531
  *         Raises `DocumentInvalid` if the document does not comply with the schema.
@@ -195218,6 +207867,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
  *             raise DocumentInvalid(self._error_log._buildExceptionMessage(
  *                     u"Document does not comply with schema"),
  */
+  __Pyx_TraceLine(3531,0,__PYX_ERR(0, 3531, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -195274,6 +207924,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
  *                     u"Document does not comply with schema"),
  *                                   self._error_log)
  */
+    __Pyx_TraceLine(3532,0,__PYX_ERR(0, 3532, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Document_does_not_comply_with_sc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
 
@@ -195284,6 +207935,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
  * 
  *     def assert_(self, etree):
  */
+    __Pyx_TraceLine(3534,0,__PYX_ERR(0, 3534, __pyx_L1_error))
     __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -195300,6 +207952,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
  *                     u"Document does not comply with schema"),
  *                                   self._error_log)
  */
+    __Pyx_TraceLine(3532,0,__PYX_ERR(0, 3532, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DocumentInvalid), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -195336,6 +207989,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195365,6 +208019,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_7assert_(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, PyObject *__pyx_v_etree) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -195372,7 +208027,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__371)
   __Pyx_RefNannySetupContext("assert_", 0);
+  __Pyx_TraceCall("assert_", __pyx_f[0], 3536, 0, __PYX_ERR(0, 3536, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3541
  *         Raises `AssertionError` if the document does not comply with the schema.
@@ -195381,6 +208038,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
  *             raise AssertionError, self._error_log._buildExceptionMessage(
  *                 u"Document does not comply with schema")
  */
+  __Pyx_TraceLine(3541,0,__PYX_ERR(0, 3541, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_t_2 = ((PyObject *)__pyx_v_self); __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -195437,6 +208095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
  *                 u"Document does not comply with schema")
  * 
  */
+    __Pyx_TraceLine(3542,0,__PYX_ERR(0, 3542, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_kp_u_Document_does_not_comply_with_sc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3542, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_1, 0, 0);
@@ -195472,6 +208131,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195487,6 +208147,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
 static PyObject *__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, int __pyx_v_domain, int __pyx_v_type, int __pyx_v_level, int __pyx_v_line, PyObject *__pyx_v_message, PyObject *__pyx_v_filename, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -195498,7 +208159,9 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
   PyObject *__pyx_t_8 = NULL;
   int __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__372)
   __Pyx_RefNannySetupContext("_append_log_message", 0);
+  __Pyx_TraceCall("_append_log_message", __pyx_f[0], 3545, 0, __PYX_ERR(0, 3545, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -195596,6 +208259,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
  *                                         filename)
  * 
  */
+  __Pyx_TraceLine(3547,0,__PYX_ERR(0, 3547, __pyx_L1_error))
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename);
 
   /* "lxml/etree.pyx":3545
@@ -195623,6 +208287,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195735,9 +208400,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message(PyObjec
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_8_append_log_message(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, int __pyx_v_domain, int __pyx_v_type, int __pyx_v_level, int __pyx_v_line, PyObject *__pyx_v_message, PyObject *__pyx_v_filename) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__372)
   __Pyx_RefNannySetupContext("_append_log_message", 0);
+  __Pyx_TraceCall("_append_log_message (wrapper)", __pyx_f[0], 3545, 0, __PYX_ERR(0, 3545, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_10_Validator__append_log_message(__pyx_v_self, __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3545, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -195752,6 +208420,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_8_append_log_message(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195767,12 +208436,15 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_8_append_log_message(struct
 static PyObject *__pyx_pw_4lxml_5etree_10_Validator_11_clear_error_log(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
 static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self, int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__373)
   __Pyx_RefNannySetupContext("_clear_error_log", 0);
+  __Pyx_TraceCall("_clear_error_log", __pyx_f[0], 3550, 0, __PYX_ERR(0, 3550, __pyx_L1_error));
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
@@ -195815,6 +208487,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
  * 
  *     property error_log:
  */
+  __Pyx_TraceLine(3551,0,__PYX_ERR(0, 3551, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->_error_log, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -195839,6 +208512,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195859,9 +208533,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_11_clear_error_log(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_10_clear_error_log(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__373)
   __Pyx_RefNannySetupContext("_clear_error_log", 0);
+  __Pyx_TraceCall("_clear_error_log (wrapper)", __pyx_f[0], 3550, 0, __PYX_ERR(0, 3550, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree_10_Validator__clear_error_log(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -195876,6 +208553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_10_clear_error_log(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195903,10 +208581,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_9error_log_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __pyx_obj_4lxml_5etree__Validator *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 3555, 0, __PYX_ERR(0, 3555, __pyx_L1_error));
 
   /* "lxml/etree.pyx":3556
  *         u"The log of validation errors and warnings."
@@ -195915,6 +208595,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
  *             return self._error_log.copy()
  * 
  */
+  __Pyx_TraceLine(3556,0,__PYX_ERR(0, 3556, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
@@ -195932,6 +208613,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
  * 
  * include "dtd.pxi"        # DTD
  */
+  __Pyx_TraceLine(3557,0,__PYX_ERR(0, 3557, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3557, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -195954,6 +208636,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -195968,10 +208651,12 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
 
 static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDTDNode(PyObject *__pyx_v_node, void *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_assertValidDTDNode", 0);
+  __Pyx_TraceCall("_assertValidDTDNode", __pyx_f[20], 17, 0, __PYX_ERR(20, 17, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":18
  * 
@@ -195980,6 +208665,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDTDNode(PyObject *__py
  * 
  * 
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(20, 18, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_c_node != NULL) != 0))) {
@@ -196012,6 +208698,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__assertValidDTDNode(PyObject *__py
   __Pyx_AddTraceback("lxml.etree._assertValidDTDNode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196039,6 +208726,7 @@ static PyObject *__pyx_pw_4lxml_5etree_22_DTDElementContentDecl_1__repr__(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -196048,6 +208736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[20], 28, 0, __PYX_ERR(20, 28, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":29
  * 
@@ -196056,6 +208745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct
  * 
  *     property name:
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(20, 29, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -196123,6 +208813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196150,11 +208841,13 @@ static PyObject *__pyx_pw_4lxml_5etree_22_DTDElementContentDecl_4name_1__get__(P
 
 static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 32, 0, __PYX_ERR(20, 32, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":33
  *     property name:
@@ -196163,6 +208856,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
  *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
+  __Pyx_TraceLine(33,0,__PYX_ERR(20, 33, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 33, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":34
@@ -196172,6 +208866,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
  * 
  *     property type:
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(20, 34, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 34, __pyx_L1_error)
@@ -196202,6 +208897,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196230,10 +208926,12 @@ static PyObject *__pyx_pw_4lxml_5etree_22_DTDElementContentDecl_4type_1__get__(P
 static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_self) {
   int __pyx_v_type;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementContentType __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 37, 0, __PYX_ERR(20, 37, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":38
  *     property type:
@@ -196242,6 +208940,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            cdef int type = self._c_node.type
  *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(20, 38, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 38, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":39
@@ -196251,6 +208950,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
  *                return "pcdata"
  */
+  __Pyx_TraceLine(39,0,__PYX_ERR(20, 39, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->type;
   __pyx_v_type = __pyx_t_2;
 
@@ -196261,6 +208961,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *                return "pcdata"
  *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
  */
+  __Pyx_TraceLine(40,0,__PYX_ERR(20, 40, __pyx_L1_error))
   switch (__pyx_v_type) {
     case XML_ELEMENT_CONTENT_PCDATA:
 
@@ -196271,6 +208972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
  *                return "element"
  */
+    __Pyx_TraceLine(41,0,__PYX_ERR(20, 41, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_pcdata);
     __pyx_r = __pyx_n_s_pcdata;
@@ -196292,6 +208994,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *                return "element"
  *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
  */
+    __Pyx_TraceLine(42,0,__PYX_ERR(20, 42, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_ELEMENT:
 
     /* "src/lxml/dtd.pxi":43
@@ -196301,6 +209004,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
  *                return "seq"
  */
+    __Pyx_TraceLine(43,0,__PYX_ERR(20, 43, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_element);
     __pyx_r = __pyx_n_s_element;
@@ -196322,6 +209026,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *                return "seq"
  *            elif type == tree.XML_ELEMENT_CONTENT_OR:
  */
+    __Pyx_TraceLine(44,0,__PYX_ERR(20, 44, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_SEQ:
 
     /* "src/lxml/dtd.pxi":45
@@ -196331,6 +209036,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            elif type == tree.XML_ELEMENT_CONTENT_OR:
  *                return "or"
  */
+    __Pyx_TraceLine(45,0,__PYX_ERR(20, 45, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_seq);
     __pyx_r = __pyx_n_s_seq;
@@ -196352,6 +209058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *                return "or"
  *            else:
  */
+    __Pyx_TraceLine(46,0,__PYX_ERR(20, 46, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_OR:
 
     /* "src/lxml/dtd.pxi":47
@@ -196361,6 +209068,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(47,0,__PYX_ERR(20, 47, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_or);
     __pyx_r = __pyx_n_s_or;
@@ -196383,6 +209091,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
  * 
  *     property occur:
  */
+    __Pyx_TraceLine(49,0,__PYX_ERR(20, 49, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -196403,6 +209112,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196431,10 +209141,12 @@ static PyObject *__pyx_pw_4lxml_5etree_22_DTDElementContentDecl_5occur_1__get__(
 static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_self) {
   int __pyx_v_occur;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementContentOccur __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 52, 0, __PYX_ERR(20, 52, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":53
  *     property occur:
@@ -196443,6 +209155,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            cdef int occur = self._c_node.ocur
  *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(20, 53, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 53, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":54
@@ -196452,6 +209165,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
  *                return "once"
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(20, 54, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->ocur;
   __pyx_v_occur = __pyx_t_2;
 
@@ -196462,6 +209176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *                return "once"
  *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(20, 55, __pyx_L1_error))
   switch (__pyx_v_occur) {
     case XML_ELEMENT_CONTENT_ONCE:
 
@@ -196472,6 +209187,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
  *                return "opt"
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(20, 56, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_once);
     __pyx_r = __pyx_n_s_once;
@@ -196493,6 +209209,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *                return "opt"
  *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(20, 57, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_OPT:
 
     /* "src/lxml/dtd.pxi":58
@@ -196502,6 +209219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
  *                return "mult"
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(20, 58, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_opt);
     __pyx_r = __pyx_n_s_opt;
@@ -196523,6 +209241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *                return "mult"
  *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(20, 59, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_MULT:
 
     /* "src/lxml/dtd.pxi":60
@@ -196532,6 +209251,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
  *                return "plus"
  */
+    __Pyx_TraceLine(60,0,__PYX_ERR(20, 60, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_mult);
     __pyx_r = __pyx_n_s_mult;
@@ -196553,6 +209273,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *                return "plus"
  *            else:
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(20, 61, __pyx_L1_error))
     case XML_ELEMENT_CONTENT_PLUS:
 
     /* "src/lxml/dtd.pxi":62
@@ -196562,6 +209283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(62,0,__PYX_ERR(20, 62, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_plus);
     __pyx_r = __pyx_n_s_plus;
@@ -196584,6 +209306,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
  * 
  *     property left:
  */
+    __Pyx_TraceLine(64,0,__PYX_ERR(20, 64, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -196604,6 +209327,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196633,6 +209357,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
   xmlElementContent *__pyx_v_c1;
   struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_node = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementContent *__pyx_t_2;
@@ -196640,6 +209365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 67, 0, __PYX_ERR(20, 67, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":68
  *     property left:
@@ -196648,6 +209374,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *            c1 = self._c_node.c1
  *            if c1:
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(20, 68, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 68, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":69
@@ -196657,6 +209384,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *            if c1:
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(20, 69, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->c1;
   __pyx_v_c1 = __pyx_t_2;
 
@@ -196667,6 +209395,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  *                node._dtd = self._dtd
  */
+  __Pyx_TraceLine(70,0,__PYX_ERR(20, 70, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c1 != 0);
   if (__pyx_t_3) {
 
@@ -196677,6 +209406,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *                node._dtd = self._dtd
  *                node._c_node = <tree.xmlElementContent*>c1
  */
+    __Pyx_TraceLine(71,0,__PYX_ERR(20, 71, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_tp_new_4lxml_5etree__DTDElementContentDecl(((PyTypeObject *)__pyx_ptype_4lxml_5etree__DTDElementContentDecl), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 71, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_4));
     __pyx_t_5 = ((PyObject *)__pyx_t_4);
@@ -196692,6 +209422,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *                node._c_node = <tree.xmlElementContent*>c1
  *                return node
  */
+    __Pyx_TraceLine(72,0,__PYX_ERR(20, 72, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -196707,6 +209438,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *                return node
  *            else:
  */
+    __Pyx_TraceLine(73,0,__PYX_ERR(20, 73, __pyx_L1_error))
     __pyx_v_node->_c_node = ((xmlElementContent *)__pyx_v_c1);
 
     /* "src/lxml/dtd.pxi":74
@@ -196716,6 +209448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(74,0,__PYX_ERR(20, 74, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
     __pyx_r = ((PyObject *)__pyx_v_node);
@@ -196737,6 +209470,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
  * 
  *     property right:
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(20, 76, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -196760,6 +209494,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196789,6 +209524,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
   xmlElementContent *__pyx_v_c2;
   struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_node = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementContent *__pyx_t_2;
@@ -196796,6 +209532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 79, 0, __PYX_ERR(20, 79, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":80
  *     property right:
@@ -196804,6 +209541,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *            c2 = self._c_node.c2
  *            if c2:
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(20, 80, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 80, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":81
@@ -196813,6 +209551,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *            if c2:
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(20, 81, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->c2;
   __pyx_v_c2 = __pyx_t_2;
 
@@ -196823,6 +209562,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  *                node._dtd = self._dtd
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(20, 82, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c2 != 0);
   if (__pyx_t_3) {
 
@@ -196833,6 +209573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *                node._dtd = self._dtd
  *                node._c_node = <tree.xmlElementContent*>c2
  */
+    __Pyx_TraceLine(83,0,__PYX_ERR(20, 83, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_tp_new_4lxml_5etree__DTDElementContentDecl(((PyTypeObject *)__pyx_ptype_4lxml_5etree__DTDElementContentDecl), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 83, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_4));
     __pyx_t_5 = ((PyObject *)__pyx_t_4);
@@ -196848,6 +209589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *                node._c_node = <tree.xmlElementContent*>c2
  *                return node
  */
+    __Pyx_TraceLine(84,0,__PYX_ERR(20, 84, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -196863,6 +209605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *                return node
  *            else:
  */
+    __Pyx_TraceLine(85,0,__PYX_ERR(20, 85, __pyx_L1_error))
     __pyx_v_node->_c_node = ((xmlElementContent *)__pyx_v_c2);
 
     /* "src/lxml/dtd.pxi":86
@@ -196872,6 +209615,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(20, 86, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
     __pyx_r = ((PyObject *)__pyx_v_node);
@@ -196893,6 +209637,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
  * 
  * 
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(20, 88, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -196916,6 +209661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -196943,6 +209689,7 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_1__repr__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -196955,6 +209702,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[20], 98, 0, __PYX_ERR(20, 98, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":99
  * 
@@ -196963,6 +209711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx
  * 
  *     property name:
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(20, 99, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -197048,6 +209797,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197075,11 +209825,13 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_4name_1__get__(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 102, 0, __PYX_ERR(20, 102, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":103
  *     property name:
@@ -197088,6 +209840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
  *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(20, 103, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 103, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":104
@@ -197097,6 +209850,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
  * 
  *     property elemname:
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(20, 104, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 104, __pyx_L1_error)
@@ -197127,6 +209881,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197154,11 +209909,13 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_8elemname_1__get__(Py
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 107, 0, __PYX_ERR(20, 107, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":108
  *     property elemname:
@@ -197167,6 +209924,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
  *            return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
  * 
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(20, 108, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 108, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":109
@@ -197176,6 +209934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
  * 
  *     property prefix:
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(20, 109, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->elem != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->elem); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 109, __pyx_L1_error)
@@ -197206,6 +209965,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197233,11 +209993,13 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_6prefix_1__get__(PyOb
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 112, 0, __PYX_ERR(20, 112, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":113
  *     property prefix:
@@ -197246,6 +210008,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
  *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  * 
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(20, 113, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 113, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":114
@@ -197255,6 +210018,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
  * 
  *     property type:
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(20, 114, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->prefix != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 114, __pyx_L1_error)
@@ -197285,6 +210049,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197313,10 +210078,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_4type_1__get__(PyObje
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   int __pyx_v_type;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlAttributeType __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 117, 0, __PYX_ERR(20, 117, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":118
  *     property type:
@@ -197325,6 +210092,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            cdef int type = self._c_node.atype
  *            if type == tree.XML_ATTRIBUTE_CDATA:
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(20, 118, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 118, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":119
@@ -197334,6 +210102,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            if type == tree.XML_ATTRIBUTE_CDATA:
  *                return "cdata"
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(20, 119, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->atype;
   __pyx_v_type = __pyx_t_2;
 
@@ -197344,6 +210113,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "cdata"
  *            elif type == tree.XML_ATTRIBUTE_ID:
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(20, 120, __pyx_L1_error))
   switch (__pyx_v_type) {
     case XML_ATTRIBUTE_CDATA:
 
@@ -197354,6 +210124,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_ID:
  *                return "id"
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(20, 121, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_cdata);
     __pyx_r = __pyx_n_s_cdata;
@@ -197375,6 +210146,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "id"
  *            elif type == tree.XML_ATTRIBUTE_IDREF:
  */
+    __Pyx_TraceLine(122,0,__PYX_ERR(20, 122, __pyx_L1_error))
     case XML_ATTRIBUTE_ID:
 
     /* "src/lxml/dtd.pxi":123
@@ -197384,6 +210156,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_IDREF:
  *                return "idref"
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(20, 123, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_id);
     __pyx_r = __pyx_n_s_id;
@@ -197405,6 +210178,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "idref"
  *            elif type == tree.XML_ATTRIBUTE_IDREFS:
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(20, 124, __pyx_L1_error))
     case XML_ATTRIBUTE_IDREF:
 
     /* "src/lxml/dtd.pxi":125
@@ -197414,6 +210188,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_IDREFS:
  *                return "idrefs"
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(20, 125, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_idref);
     __pyx_r = __pyx_n_s_idref;
@@ -197435,6 +210210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "idrefs"
  *            elif type == tree.XML_ATTRIBUTE_ENTITY:
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(20, 126, __pyx_L1_error))
     case XML_ATTRIBUTE_IDREFS:
 
     /* "src/lxml/dtd.pxi":127
@@ -197444,6 +210220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_ENTITY:
  *                return "entity"
  */
+    __Pyx_TraceLine(127,0,__PYX_ERR(20, 127, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_idrefs);
     __pyx_r = __pyx_n_s_idrefs;
@@ -197465,6 +210242,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "entity"
  *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(20, 128, __pyx_L1_error))
     case XML_ATTRIBUTE_ENTITY:
 
     /* "src/lxml/dtd.pxi":129
@@ -197474,6 +210252,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
  *                return "entities"
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(20, 129, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_entity);
     __pyx_r = __pyx_n_s_entity;
@@ -197495,6 +210274,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "entities"
  *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
  */
+    __Pyx_TraceLine(130,0,__PYX_ERR(20, 130, __pyx_L1_error))
     case XML_ATTRIBUTE_ENTITIES:
 
     /* "src/lxml/dtd.pxi":131
@@ -197504,6 +210284,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
  *                return "nmtoken"
  */
+    __Pyx_TraceLine(131,0,__PYX_ERR(20, 131, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_entities);
     __pyx_r = __pyx_n_s_entities;
@@ -197525,6 +210306,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "nmtoken"
  *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
  */
+    __Pyx_TraceLine(132,0,__PYX_ERR(20, 132, __pyx_L1_error))
     case XML_ATTRIBUTE_NMTOKEN:
 
     /* "src/lxml/dtd.pxi":133
@@ -197534,6 +210316,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
  *                return "nmtokens"
  */
+    __Pyx_TraceLine(133,0,__PYX_ERR(20, 133, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_nmtoken);
     __pyx_r = __pyx_n_s_nmtoken;
@@ -197555,6 +210338,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "nmtokens"
  *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
  */
+    __Pyx_TraceLine(134,0,__PYX_ERR(20, 134, __pyx_L1_error))
     case XML_ATTRIBUTE_NMTOKENS:
 
     /* "src/lxml/dtd.pxi":135
@@ -197564,6 +210348,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
  *                return "enumeration"
  */
+    __Pyx_TraceLine(135,0,__PYX_ERR(20, 135, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_nmtokens);
     __pyx_r = __pyx_n_s_nmtokens;
@@ -197585,6 +210370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "enumeration"
  *            elif type == tree.XML_ATTRIBUTE_NOTATION:
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(20, 136, __pyx_L1_error))
     case XML_ATTRIBUTE_ENUMERATION:
 
     /* "src/lxml/dtd.pxi":137
@@ -197594,6 +210380,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            elif type == tree.XML_ATTRIBUTE_NOTATION:
  *                return "notation"
  */
+    __Pyx_TraceLine(137,0,__PYX_ERR(20, 137, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_enumeration);
     __pyx_r = __pyx_n_s_enumeration;
@@ -197615,6 +210402,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *                return "notation"
  *            else:
  */
+    __Pyx_TraceLine(138,0,__PYX_ERR(20, 138, __pyx_L1_error))
     case XML_ATTRIBUTE_NOTATION:
 
     /* "src/lxml/dtd.pxi":139
@@ -197624,6 +210412,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(20, 139, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_notation);
     __pyx_r = __pyx_n_s_notation;
@@ -197646,6 +210435,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
  * 
  *     property default:
  */
+    __Pyx_TraceLine(141,0,__PYX_ERR(20, 141, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -197666,6 +210456,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197694,10 +210485,12 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_7default_1__get__(PyO
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   int __pyx_v_default;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlAttributeDefault __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 144, 0, __PYX_ERR(20, 144, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":145
  *     property default:
@@ -197706,6 +210499,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            cdef int default = self._c_node.def_
  *            if default == tree.XML_ATTRIBUTE_NONE:
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(20, 145, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 145, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":146
@@ -197715,6 +210509,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            if default == tree.XML_ATTRIBUTE_NONE:
  *                return "none"
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(20, 146, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->def;
   __pyx_v_default = __pyx_t_2;
 
@@ -197725,6 +210520,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *                return "none"
  *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(20, 147, __pyx_L1_error))
   switch (__pyx_v_default) {
     case XML_ATTRIBUTE_NONE:
 
@@ -197735,6 +210531,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
  *                return "required"
  */
+    __Pyx_TraceLine(148,0,__PYX_ERR(20, 148, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_none);
     __pyx_r = __pyx_n_s_none;
@@ -197756,6 +210553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *                return "required"
  *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(20, 149, __pyx_L1_error))
     case XML_ATTRIBUTE_REQUIRED:
 
     /* "src/lxml/dtd.pxi":150
@@ -197765,6 +210563,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
  *                return "implied"
  */
+    __Pyx_TraceLine(150,0,__PYX_ERR(20, 150, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_required);
     __pyx_r = __pyx_n_s_required;
@@ -197786,6 +210585,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *                return "implied"
  *            elif default == tree.XML_ATTRIBUTE_FIXED:
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(20, 151, __pyx_L1_error))
     case XML_ATTRIBUTE_IMPLIED:
 
     /* "src/lxml/dtd.pxi":152
@@ -197795,6 +210595,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            elif default == tree.XML_ATTRIBUTE_FIXED:
  *                return "fixed"
  */
+    __Pyx_TraceLine(152,0,__PYX_ERR(20, 152, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_implied);
     __pyx_r = __pyx_n_s_implied;
@@ -197816,6 +210617,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *                return "fixed"
  *            else:
  */
+    __Pyx_TraceLine(153,0,__PYX_ERR(20, 153, __pyx_L1_error))
     case XML_ATTRIBUTE_FIXED:
 
     /* "src/lxml/dtd.pxi":154
@@ -197825,6 +210627,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(154,0,__PYX_ERR(20, 154, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_fixed);
     __pyx_r = __pyx_n_s_fixed;
@@ -197847,6 +210650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
  * 
  *     property default_value:
  */
+    __Pyx_TraceLine(156,0,__PYX_ERR(20, 156, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -197867,6 +210671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197894,11 +210699,13 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_13default_value_1__ge
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get__(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 159, 0, __PYX_ERR(20, 159, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":160
  *     property default_value:
@@ -197907,6 +210714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
  *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(20, 160, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 160, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":161
@@ -197916,6 +210724,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
  * 
  *     def itervalues(self):
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(20, 161, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->defaultValue != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->defaultValue); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 161, __pyx_L1_error)
@@ -197946,6 +210755,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -197990,7 +210800,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_2itervalues(struct __
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11, __pyx_codeobj__131, (PyObject *) __pyx_cur_scope, __pyx_n_s_itervalues, __pyx_n_s_DTDAttributeDecl_itervalues, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 163, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11, __pyx_codeobj__374, (PyObject *) __pyx_cur_scope, __pyx_n_s_itervalues, __pyx_n_s_DTDAttributeDecl_itervalues, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 163, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -198010,16 +210820,20 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_11_itervalues *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_11_itervalues *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlEnumeration *__pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("itervalues", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__374)
+  __Pyx_TraceCall("itervalues", __pyx_f[20], 163, 0, __PYX_ERR(20, 163, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L6_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -198033,6 +210847,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
  *         cdef tree.xmlEnumeration *c_node = self._c_node.tree
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(20, 164, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 164, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":165
@@ -198042,6 +210857,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
  *         while c_node is not NULL:
  *             yield funicode(c_node.name)
  */
+  __Pyx_TraceLine(165,0,__PYX_ERR(20, 165, __pyx_L1_error))
   __pyx_t_2 = __pyx_cur_scope->__pyx_v_self->_c_node->tree;
   __pyx_cur_scope->__pyx_v_c_node = __pyx_t_2;
 
@@ -198052,6 +210868,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
  *             yield funicode(c_node.name)
  *             c_node = c_node.next
  */
+  __Pyx_TraceLine(166,0,__PYX_ERR(20, 166, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_cur_scope->__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -198063,11 +210880,13 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
  *             c_node = c_node.next
  * 
  */
+    __Pyx_TraceLine(167,0,__PYX_ERR(20, 167, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_cur_scope->__pyx_v_c_node->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 167, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -198083,6 +210902,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
  * 
  *     def values(self):
  */
+    __Pyx_TraceLine(168,0,__PYX_ERR(20, 168, __pyx_L1_error))
     __pyx_t_2 = __pyx_cur_scope->__pyx_v_c_node->next;
     __pyx_cur_scope->__pyx_v_c_node = __pyx_t_2;
   }
@@ -198107,6 +210927,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198135,11 +210956,14 @@ static PyObject *__pyx_pw_4lxml_5etree_17_DTDAttributeDecl_6values(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_5values(struct __pyx_obj_4lxml_5etree__DTDAttributeDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__375)
   __Pyx_RefNannySetupContext("values", 0);
+  __Pyx_TraceCall("values", __pyx_f[20], 170, 0, __PYX_ERR(20, 170, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":171
  * 
@@ -198148,6 +210972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_5values(struct __pyx_
  * 
  * 
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(20, 171, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_itervalues); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -198193,6 +211018,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_5values(struct __pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198220,6 +211046,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DTDElementDecl_1__repr__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_obj_4lxml_5etree__DTDElementDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -198229,6 +211056,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_o
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[20], 181, 0, __PYX_ERR(20, 181, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":182
  * 
@@ -198237,6 +211065,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_o
  * 
  *     property name:
  */
+  __Pyx_TraceLine(182,0,__PYX_ERR(20, 182, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 182, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -198304,6 +211133,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198331,11 +211161,13 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DTDElementDecl_4name_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __pyx_obj_4lxml_5etree__DTDElementDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 185, 0, __PYX_ERR(20, 185, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":186
  *     property name:
@@ -198344,6 +211176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
  *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(20, 186, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 186, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":187
@@ -198353,6 +211186,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
  * 
  *     property prefix:
  */
+  __Pyx_TraceLine(187,0,__PYX_ERR(20, 187, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 187, __pyx_L1_error)
@@ -198383,6 +211217,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198410,11 +211245,13 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DTDElementDecl_6prefix_1__get__(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct __pyx_obj_4lxml_5etree__DTDElementDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 190, 0, __PYX_ERR(20, 190, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":191
  *     property prefix:
@@ -198423,6 +211260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
  *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  * 
  */
+  __Pyx_TraceLine(191,0,__PYX_ERR(20, 191, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 191, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":192
@@ -198432,6 +211270,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
  * 
  *     property type:
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(20, 192, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->prefix != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 192, __pyx_L1_error)
@@ -198462,6 +211301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198490,10 +211330,12 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DTDElementDecl_4type_1__get__(PyObject
 static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __pyx_obj_4lxml_5etree__DTDElementDecl *__pyx_v_self) {
   int __pyx_v_type;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementTypeVal __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 195, 0, __PYX_ERR(20, 195, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":196
  *     property type:
@@ -198502,6 +211344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            cdef int type = self._c_node.etype
  *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(20, 196, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 196, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":197
@@ -198511,6 +211354,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
  *                return "undefined"
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(20, 197, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->etype;
   __pyx_v_type = __pyx_t_2;
 
@@ -198521,6 +211365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *                return "undefined"
  *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
  */
+  __Pyx_TraceLine(198,0,__PYX_ERR(20, 198, __pyx_L1_error))
   switch (__pyx_v_type) {
     case XML_ELEMENT_TYPE_UNDEFINED:
 
@@ -198531,6 +211376,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
  *                return "empty"
  */
+    __Pyx_TraceLine(199,0,__PYX_ERR(20, 199, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_undefined);
     __pyx_r = __pyx_n_s_undefined;
@@ -198552,6 +211398,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *                return "empty"
  *            elif type == tree.XML_ELEMENT_TYPE_ANY:
  */
+    __Pyx_TraceLine(200,0,__PYX_ERR(20, 200, __pyx_L1_error))
     case XML_ELEMENT_TYPE_EMPTY:
 
     /* "src/lxml/dtd.pxi":201
@@ -198561,6 +211408,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            elif type == tree.XML_ELEMENT_TYPE_ANY:
  *                return "any"
  */
+    __Pyx_TraceLine(201,0,__PYX_ERR(20, 201, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_empty);
     __pyx_r = __pyx_n_s_empty;
@@ -198582,6 +211430,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *                return "any"
  *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
  */
+    __Pyx_TraceLine(202,0,__PYX_ERR(20, 202, __pyx_L1_error))
     case XML_ELEMENT_TYPE_ANY:
 
     /* "src/lxml/dtd.pxi":203
@@ -198591,6 +211440,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
  *                return "mixed"
  */
+    __Pyx_TraceLine(203,0,__PYX_ERR(20, 203, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_any);
     __pyx_r = __pyx_n_s_any;
@@ -198612,6 +211462,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *                return "mixed"
  *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(20, 204, __pyx_L1_error))
     case XML_ELEMENT_TYPE_MIXED:
 
     /* "src/lxml/dtd.pxi":205
@@ -198621,6 +211472,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
  *                return "element"
  */
+    __Pyx_TraceLine(205,0,__PYX_ERR(20, 205, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_mixed);
     __pyx_r = __pyx_n_s_mixed;
@@ -198642,6 +211494,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *                return "element"
  *            else:
  */
+    __Pyx_TraceLine(206,0,__PYX_ERR(20, 206, __pyx_L1_error))
     case XML_ELEMENT_TYPE_ELEMENT:
 
     /* "src/lxml/dtd.pxi":207
@@ -198651,6 +211504,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(207,0,__PYX_ERR(20, 207, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_element);
     __pyx_r = __pyx_n_s_element;
@@ -198673,6 +211527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
  * 
  *     property content:
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(20, 209, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -198693,6 +211548,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198722,6 +211578,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
   xmlElementContent *__pyx_v_content;
   struct __pyx_obj_4lxml_5etree__DTDElementContentDecl *__pyx_v_node = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlElementContent *__pyx_t_2;
@@ -198729,6 +211586,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 212, 0, __PYX_ERR(20, 212, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":213
  *     property content:
@@ -198737,6 +211595,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *            cdef tree.xmlElementContent *content = self._c_node.content
  *            if content:
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(20, 213, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 213, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":214
@@ -198746,6 +211605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *            if content:
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
+  __Pyx_TraceLine(214,0,__PYX_ERR(20, 214, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_c_node->content;
   __pyx_v_content = __pyx_t_2;
 
@@ -198756,6 +211616,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  *                node._dtd = self._dtd
  */
+  __Pyx_TraceLine(215,0,__PYX_ERR(20, 215, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_content != 0);
   if (__pyx_t_3) {
 
@@ -198766,6 +211627,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *                node._dtd = self._dtd
  *                node._c_node = content
  */
+    __Pyx_TraceLine(216,0,__PYX_ERR(20, 216, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_tp_new_4lxml_5etree__DTDElementContentDecl(((PyTypeObject *)__pyx_ptype_4lxml_5etree__DTDElementContentDecl), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 216, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_4));
     __pyx_t_5 = ((PyObject *)__pyx_t_4);
@@ -198781,6 +211643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *                node._c_node = content
  *                return node
  */
+    __Pyx_TraceLine(217,0,__PYX_ERR(20, 217, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -198796,6 +211659,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *                return node
  *            else:
  */
+    __Pyx_TraceLine(218,0,__PYX_ERR(20, 218, __pyx_L1_error))
     __pyx_v_node->_c_node = __pyx_v_content;
 
     /* "src/lxml/dtd.pxi":219
@@ -198805,6 +211669,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  *            else:
  *                return None
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(20, 219, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
     __pyx_r = ((PyObject *)__pyx_v_node);
@@ -198826,6 +211691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
  * 
  *     def iterattributes(self):
  */
+  __Pyx_TraceLine(221,0,__PYX_ERR(20, 221, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -198849,6 +211715,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -198893,7 +211760,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_2iterattributes(struct
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12, __pyx_codeobj__132, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterattributes, __pyx_n_s_DTDElementDecl_iterattributes, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 223, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12, __pyx_codeobj__376, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterattributes, __pyx_n_s_DTDElementDecl_iterattributes, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 223, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -198913,6 +211780,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_12_iterattributes *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_12_iterattributes *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   xmlAttribute *__pyx_t_2;
   int __pyx_t_3;
@@ -198920,10 +211788,13 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("iterattributes", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__376)
+  __Pyx_TraceCall("iterattributes", __pyx_f[20], 223, 0, __PYX_ERR(20, 223, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L6_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -198937,6 +211808,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *         cdef tree.xmlAttribute *c_node = self._c_node.attributes
  *         while c_node:
  */
+  __Pyx_TraceLine(224,0,__PYX_ERR(20, 224, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 224, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":225
@@ -198946,6 +211818,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *         while c_node:
  *             node = <_DTDAttributeDecl>_DTDAttributeDecl.__new__(_DTDAttributeDecl)
  */
+  __Pyx_TraceLine(225,0,__PYX_ERR(20, 225, __pyx_L1_error))
   __pyx_t_2 = __pyx_cur_scope->__pyx_v_self->_c_node->attributes;
   __pyx_cur_scope->__pyx_v_c_node = __pyx_t_2;
 
@@ -198956,6 +211829,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *             node = <_DTDAttributeDecl>_DTDAttributeDecl.__new__(_DTDAttributeDecl)
  *             node._dtd = self._dtd
  */
+  __Pyx_TraceLine(226,0,__PYX_ERR(20, 226, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = (__pyx_cur_scope->__pyx_v_c_node != 0);
     if (!__pyx_t_3) break;
@@ -198967,6 +211841,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *             node._dtd = self._dtd
  *             node._c_node = c_node
  */
+    __Pyx_TraceLine(227,0,__PYX_ERR(20, 227, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_tp_new_4lxml_5etree__DTDAttributeDecl(((PyTypeObject *)__pyx_ptype_4lxml_5etree__DTDAttributeDecl), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 227, __pyx_L1_error)
     __Pyx_GOTREF(((PyObject *)__pyx_t_4));
     __pyx_t_5 = ((PyObject *)__pyx_t_4);
@@ -198984,6 +211859,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *             node._c_node = c_node
  *             yield node
  */
+    __Pyx_TraceLine(228,0,__PYX_ERR(20, 228, __pyx_L1_error))
     __pyx_t_5 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -198999,6 +211875,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *             yield node
  *             c_node = c_node.nexth
  */
+    __Pyx_TraceLine(229,0,__PYX_ERR(20, 229, __pyx_L1_error))
     __pyx_cur_scope->__pyx_v_node->_c_node = __pyx_cur_scope->__pyx_v_c_node;
 
     /* "src/lxml/dtd.pxi":230
@@ -199008,9 +211885,11 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  *             c_node = c_node.nexth
  * 
  */
+    __Pyx_TraceLine(230,0,__PYX_ERR(20, 230, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
     __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_node);
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -199026,6 +211905,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
  * 
  *     def attributes(self):
  */
+    __Pyx_TraceLine(231,0,__PYX_ERR(20, 231, __pyx_L1_error))
     __pyx_t_2 = __pyx_cur_scope->__pyx_v_c_node->nexth;
     __pyx_cur_scope->__pyx_v_c_node = __pyx_t_2;
   }
@@ -199051,6 +211931,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199079,11 +211960,14 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DTDElementDecl_6attributes(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_5attributes(struct __pyx_obj_4lxml_5etree__DTDElementDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__377)
   __Pyx_RefNannySetupContext("attributes", 0);
+  __Pyx_TraceCall("attributes", __pyx_f[20], 233, 0, __PYX_ERR(20, 233, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":234
  * 
@@ -199092,6 +211976,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_5attributes(struct __py
  * 
  * 
  */
+  __Pyx_TraceLine(234,0,__PYX_ERR(20, 234, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterattributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 234, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -199137,6 +212022,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_5attributes(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199164,6 +212050,7 @@ static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_1__repr__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -199171,6 +212058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_ob
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[20], 243, 0, __PYX_ERR(20, 243, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":244
  *     cdef tree.xmlEntity* _c_node
@@ -199179,6 +212067,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_ob
  * 
  *     property name:
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(20, 244, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 244, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -199234,6 +212123,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199261,11 +212151,13 @@ static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_4name_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 247, 0, __PYX_ERR(20, 247, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":248
  *     property name:
@@ -199274,6 +212166,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
  *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(20, 248, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 248, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":249
@@ -199283,6 +212176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
  * 
  *     property orig:
  */
+  __Pyx_TraceLine(249,0,__PYX_ERR(20, 249, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 249, __pyx_L1_error)
@@ -199313,6 +212207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199340,11 +212235,13 @@ static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_4orig_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 252, 0, __PYX_ERR(20, 252, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":253
  *     property orig:
@@ -199353,6 +212250,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
  *             return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
  * 
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(20, 253, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 253, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":254
@@ -199362,6 +212260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
  * 
  *     property content:
  */
+  __Pyx_TraceLine(254,0,__PYX_ERR(20, 254, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->orig != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->orig); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 254, __pyx_L1_error)
@@ -199392,6 +212291,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199419,11 +212319,13 @@ static PyObject *__pyx_pw_4lxml_5etree_14_DTDEntityDecl_7content_1__get__(PyObje
 
 static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct __pyx_obj_4lxml_5etree__DTDEntityDecl *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 257, 0, __PYX_ERR(20, 257, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":258
  *     property content:
@@ -199432,6 +212334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct
  *             return funicode(self._c_node.content) if self._c_node.content is not NULL else None
  * 
  */
+  __Pyx_TraceLine(258,0,__PYX_ERR(20, 258, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDTDNode(((PyObject *)__pyx_v_self), __pyx_v_self->_c_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 258, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":259
@@ -199441,6 +212344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct
  * 
  * 
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(20, 259, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->content != NULL) != 0)) {
     __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_node->content); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 259, __pyx_L1_error)
@@ -199471,6 +212375,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -199549,6 +212454,7 @@ static int __pyx_pw_4lxml_5etree_3DTD_1__init__(PyObject *__pyx_v_self, PyObject
 
 static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self, PyObject *__pyx_v_file, PyObject *__pyx_v_external_id) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -199561,10 +212467,11 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
-  xmlDtd *__pyx_t_12;
-  const xmlChar *__pyx_t_13;
-  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  xmlDtd *__pyx_t_13;
+  const xmlChar *__pyx_t_14;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[20], 274, 0, __PYX_ERR(20, 274, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_file);
 
   /* "src/lxml/dtd.pxi":275
@@ -199574,6 +212481,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *         if file is not None:
  *             if _isString(file):
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(20, 275, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 275, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -199628,6 +212536,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             if _isString(file):
  *                 file = _encodeFilename(file)
  */
+  __Pyx_TraceLine(276,0,__PYX_ERR(20, 276, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_file != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -199639,6 +212548,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 file = _encodeFilename(file)
  *                 with self._error_log:
  */
+    __Pyx_TraceLine(277,0,__PYX_ERR(20, 277, __pyx_L1_error))
     __pyx_t_6 = (_isString(__pyx_v_file) != 0);
     if (__pyx_t_6) {
 
@@ -199649,6 +212559,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 with self._error_log:
  *                     self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
  */
+      __Pyx_TraceLine(278,0,__PYX_ERR(20, 278, __pyx_L1_error))
       __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 278, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_file, __pyx_t_1);
@@ -199661,13 +212572,19 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                     self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
  *             elif hasattr(file, 'read'):
  */
+      __Pyx_TraceLine(279,0,__PYX_ERR(20, 279, __pyx_L1_error))
       /*with:*/ {
         __pyx_t_7 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 279, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_8 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(20, 279, __pyx_L5_error)
         /*try:*/ {
           {
-            (void)__pyx_t_9; (void)__pyx_t_10; (void)__pyx_t_11; /* mark used */
+            __Pyx_PyThreadState_declare
+            __Pyx_PyThreadState_assign
+            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+            __Pyx_XGOTREF(__pyx_t_9);
+            __Pyx_XGOTREF(__pyx_t_10);
+            __Pyx_XGOTREF(__pyx_t_11);
             /*try:*/ {
 
               /* "src/lxml/dtd.pxi":280
@@ -199677,6 +212594,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             elif hasattr(file, 'read'):
  *                 self._c_dtd = _parseDtdFromFilelike(file)
  */
+              __Pyx_TraceLine(280,0,__PYX_ERR(20, 280, __pyx_L9_error))
               __pyx_v_self->_c_dtd = xmlParseDTD(NULL, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_file));
 
               /* "src/lxml/dtd.pxi":279
@@ -199687,12 +212605,63 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             elif hasattr(file, 'read'):
  */
             }
+            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+            goto __pyx_L14_try_end;
+            __pyx_L9_error:;
+            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+            /*except:*/ {
+              __Pyx_AddTraceback("lxml.etree.DTD.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(20, 279, __pyx_L11_except_error)
+              __Pyx_GOTREF(__pyx_t_1);
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_3 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 279, __pyx_L11_except_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL);
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 279, __pyx_L11_except_error)
+              __Pyx_GOTREF(__pyx_t_12);
+              __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              if (__pyx_t_6 < 0) __PYX_ERR(20, 279, __pyx_L11_except_error)
+              __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
+              if (__pyx_t_5) {
+                __Pyx_GIVEREF(__pyx_t_1);
+                __Pyx_GIVEREF(__pyx_t_2);
+                __Pyx_XGIVEREF(__pyx_t_4);
+                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_4);
+                __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+                __PYX_ERR(20, 279, __pyx_L11_except_error)
+              }
+              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              goto __pyx_L10_exception_handled;
+            }
+            __pyx_L11_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_9);
+            __Pyx_XGIVEREF(__pyx_t_10);
+            __Pyx_XGIVEREF(__pyx_t_11);
+            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+            goto __pyx_L1_error;
+            __pyx_L10_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_9);
+            __Pyx_XGIVEREF(__pyx_t_10);
+            __Pyx_XGIVEREF(__pyx_t_11);
+            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+            __pyx_L14_try_end:;
           }
         }
         /*finally:*/ {
           /*normal exit:*/{
             if (__pyx_t_7) {
-              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__133, NULL);
+              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__378, NULL);
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
               if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 279, __pyx_L1_error)
               __Pyx_GOTREF(__pyx_t_11);
@@ -199702,11 +212671,11 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
           }
           __pyx_L8:;
         }
-        goto __pyx_L15;
+        goto __pyx_L18;
         __pyx_L5_error:;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L1_error;
-        __pyx_L15:;
+        __pyx_L18:;
       }
 
       /* "src/lxml/dtd.pxi":277
@@ -199726,9 +212695,10 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 self._c_dtd = _parseDtdFromFilelike(file)
  *             else:
  */
-    __pyx_t_6 = __Pyx_HasAttr(__pyx_v_file, __pyx_n_s_read); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(20, 281, __pyx_L1_error)
-    __pyx_t_5 = (__pyx_t_6 != 0);
-    if (likely(__pyx_t_5)) {
+    __Pyx_TraceLine(281,0,__PYX_ERR(20, 281, __pyx_L1_error))
+    __pyx_t_5 = __Pyx_HasAttr(__pyx_v_file, __pyx_n_s_read); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(20, 281, __pyx_L1_error)
+    __pyx_t_6 = (__pyx_t_5 != 0);
+    if (likely(__pyx_t_6)) {
 
       /* "src/lxml/dtd.pxi":282
  *                     self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
@@ -199737,8 +212707,9 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             else:
  *                 raise DTDParseError, u"file must be a filename or file-like object"
  */
-      __pyx_t_12 = __pyx_f_4lxml_5etree__parseDtdFromFilelike(__pyx_v_file); if (unlikely(__pyx_t_12 == ((xmlDtd *)NULL))) __PYX_ERR(20, 282, __pyx_L1_error)
-      __pyx_v_self->_c_dtd = __pyx_t_12;
+      __Pyx_TraceLine(282,0,__PYX_ERR(20, 282, __pyx_L1_error))
+      __pyx_t_13 = __pyx_f_4lxml_5etree__parseDtdFromFilelike(__pyx_v_file); if (unlikely(__pyx_t_13 == ((xmlDtd *)NULL))) __PYX_ERR(20, 282, __pyx_L1_error)
+      __pyx_v_self->_c_dtd = __pyx_t_13;
 
       /* "src/lxml/dtd.pxi":281
  *                 with self._error_log:
@@ -199757,6 +212728,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *         elif external_id is not None:
  *             with self._error_log:
  */
+    __Pyx_TraceLine(284,0,__PYX_ERR(20, 284, __pyx_L1_error))
     /*else*/ {
       __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_kp_u_file_must_be_a_filename_or_file, 0, 0);
       __PYX_ERR(20, 284, __pyx_L1_error)
@@ -199780,9 +212752,10 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             with self._error_log:
  *                 self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
  */
-  __pyx_t_5 = (__pyx_v_external_id != Py_None);
-  __pyx_t_6 = (__pyx_t_5 != 0);
-  if (likely(__pyx_t_6)) {
+  __Pyx_TraceLine(285,0,__PYX_ERR(20, 285, __pyx_L1_error))
+  __pyx_t_6 = (__pyx_v_external_id != Py_None);
+  __pyx_t_5 = (__pyx_t_6 != 0);
+  if (likely(__pyx_t_5)) {
 
     /* "src/lxml/dtd.pxi":286
  *                 raise DTDParseError, u"file must be a filename or file-like object"
@@ -199791,10 +212764,11 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
  *         else:
  */
+    __Pyx_TraceLine(286,0,__PYX_ERR(20, 286, __pyx_L1_error))
     /*with:*/ {
       __pyx_t_7 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 286, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(20, 286, __pyx_L16_error)
+      __pyx_t_8 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(20, 286, __pyx_L19_error)
       /*try:*/ {
         {
           __Pyx_PyThreadState_declare
@@ -199812,8 +212786,9 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *         else:
  *             raise DTDParseError, u"either filename or external ID required"
  */
-            __pyx_t_13 = __Pyx_PyObject_AsUString(__pyx_v_external_id); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(20, 287, __pyx_L20_error)
-            __pyx_v_self->_c_dtd = xmlParseDTD(((const xmlChar *)__pyx_t_13), NULL);
+            __Pyx_TraceLine(287,0,__PYX_ERR(20, 287, __pyx_L23_error))
+            __pyx_t_14 = __Pyx_PyObject_AsUString(__pyx_v_external_id); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(20, 287, __pyx_L23_error)
+            __pyx_v_self->_c_dtd = xmlParseDTD(((const xmlChar *)__pyx_t_14), NULL);
 
             /* "src/lxml/dtd.pxi":286
  *                 raise DTDParseError, u"file must be a filename or file-like object"
@@ -199826,74 +212801,74 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
           __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-          goto __pyx_L25_try_end;
-          __pyx_L20_error:;
+          goto __pyx_L28_try_end;
+          __pyx_L23_error:;
           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
           __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           /*except:*/ {
             __Pyx_AddTraceback("lxml.etree.DTD.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(20, 286, __pyx_L22_except_error)
-            __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_GOTREF(__pyx_t_2);
+            if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(20, 286, __pyx_L25_except_error)
             __Pyx_GOTREF(__pyx_t_4);
-            __pyx_t_3 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 286, __pyx_L22_except_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_3 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 286, __pyx_L25_except_error)
             __Pyx_GOTREF(__pyx_t_3);
-            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL);
+            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL);
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            if (unlikely(!__pyx_t_14)) __PYX_ERR(20, 286, __pyx_L22_except_error)
-            __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_14);
-            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-            if (__pyx_t_6 < 0) __PYX_ERR(20, 286, __pyx_L22_except_error)
-            __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
-            if (__pyx_t_5) {
-              __Pyx_GIVEREF(__pyx_t_1);
+            if (unlikely(!__pyx_t_12)) __PYX_ERR(20, 286, __pyx_L25_except_error)
+            __Pyx_GOTREF(__pyx_t_12);
+            __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+            if (__pyx_t_5 < 0) __PYX_ERR(20, 286, __pyx_L25_except_error)
+            __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
+            if (__pyx_t_6) {
+              __Pyx_GIVEREF(__pyx_t_4);
               __Pyx_GIVEREF(__pyx_t_2);
-              __Pyx_XGIVEREF(__pyx_t_4);
-              __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_4);
-              __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
-              __PYX_ERR(20, 286, __pyx_L22_except_error)
+              __Pyx_XGIVEREF(__pyx_t_1);
+              __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_1);
+              __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; 
+              __PYX_ERR(20, 286, __pyx_L25_except_error)
             }
-            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-            goto __pyx_L21_exception_handled;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            goto __pyx_L24_exception_handled;
           }
-          __pyx_L22_except_error:;
+          __pyx_L25_except_error:;
           __Pyx_XGIVEREF(__pyx_t_11);
           __Pyx_XGIVEREF(__pyx_t_10);
           __Pyx_XGIVEREF(__pyx_t_9);
           __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
           goto __pyx_L1_error;
-          __pyx_L21_exception_handled:;
+          __pyx_L24_exception_handled:;
           __Pyx_XGIVEREF(__pyx_t_11);
           __Pyx_XGIVEREF(__pyx_t_10);
           __Pyx_XGIVEREF(__pyx_t_9);
           __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-          __pyx_L25_try_end:;
+          __pyx_L28_try_end:;
         }
       }
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_7) {
-            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__134, NULL);
+            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__379, NULL);
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 286, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           }
-          goto __pyx_L19;
+          goto __pyx_L22;
         }
-        __pyx_L19:;
+        __pyx_L22:;
       }
-      goto __pyx_L29;
-      __pyx_L16_error:;
+      goto __pyx_L32;
+      __pyx_L19_error:;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L1_error;
-      __pyx_L29:;
+      __pyx_L32:;
     }
 
     /* "src/lxml/dtd.pxi":285
@@ -199913,6 +212888,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  * 
  *         if self._c_dtd is NULL:
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(20, 289, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_kp_u_either_filename_or_external_ID_r, 0, 0);
     __PYX_ERR(20, 289, __pyx_L1_error)
@@ -199926,8 +212902,9 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *             raise DTDParseError(
  *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
  */
-  __pyx_t_5 = ((__pyx_v_self->_c_dtd == NULL) != 0);
-  if (unlikely(__pyx_t_5)) {
+  __Pyx_TraceLine(291,0,__PYX_ERR(20, 291, __pyx_L1_error))
+  __pyx_t_6 = ((__pyx_v_self->_c_dtd == NULL) != 0);
+  if (unlikely(__pyx_t_6)) {
 
     /* "src/lxml/dtd.pxi":293
  *         if self._c_dtd is NULL:
@@ -199936,8 +212913,9 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 self._error_log)
  * 
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_error_parsing_DTD); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 293, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_TraceLine(293,0,__PYX_ERR(20, 293, __pyx_L1_error))
+    __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_error_parsing_DTD); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 293, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
 
     /* "src/lxml/dtd.pxi":292
  * 
@@ -199946,19 +212924,20 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
  *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
  *                 self._error_log)
  */
+    __Pyx_TraceLine(292,0,__PYX_ERR(20, 292, __pyx_L1_error))
     __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 292, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->__pyx_base._error_log));
-    __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 292, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 292, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __PYX_ERR(20, 292, __pyx_L1_error)
 
     /* "src/lxml/dtd.pxi":291
@@ -199990,6 +212969,7 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_file);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200017,10 +212997,12 @@ static PyObject *__pyx_pw_4lxml_5etree_3DTD_4name_1__get__(PyObject *__pyx_v_sel
 
 static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 297, 0, __PYX_ERR(20, 297, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":298
  *     property name:
@@ -200029,6 +213011,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
  *                return None
  *            return funicodeOrNone(self._c_dtd.name)
  */
+  __Pyx_TraceLine(298,0,__PYX_ERR(20, 298, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -200039,6 +213022,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
  *            return funicodeOrNone(self._c_dtd.name)
  * 
  */
+    __Pyx_TraceLine(299,0,__PYX_ERR(20, 299, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -200059,6 +213043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
  * 
  *     property external_id:
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(20, 300, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -200081,6 +213066,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200108,10 +213094,12 @@ static PyObject *__pyx_pw_4lxml_5etree_3DTD_11external_id_1__get__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 303, 0, __PYX_ERR(20, 303, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":304
  *     property external_id:
@@ -200120,6 +213108,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
  *                return None
  *            return funicodeOrNone(self._c_dtd.ExternalID)
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(20, 304, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -200130,6 +213119,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
  *            return funicodeOrNone(self._c_dtd.ExternalID)
  * 
  */
+    __Pyx_TraceLine(305,0,__PYX_ERR(20, 305, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -200150,6 +213140,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
  * 
  *     property system_url:
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(20, 306, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->ExternalID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -200172,6 +213163,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200199,10 +213191,12 @@ static PyObject *__pyx_pw_4lxml_5etree_3DTD_10system_url_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[20], 309, 0, __PYX_ERR(20, 309, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":310
  *     property system_url:
@@ -200211,6 +213205,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
  *                return None
  *            return funicodeOrNone(self._c_dtd.SystemID)
  */
+  __Pyx_TraceLine(310,0,__PYX_ERR(20, 310, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -200221,6 +213216,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
  *            return funicodeOrNone(self._c_dtd.SystemID)
  * 
  */
+    __Pyx_TraceLine(311,0,__PYX_ERR(20, 311, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -200241,6 +213237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
  * 
  *     def iterelements(self):
  */
+  __Pyx_TraceLine(312,0,__PYX_ERR(20, 312, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_self->_c_dtd->SystemID); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 312, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -200263,6 +213260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200307,7 +213305,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_2iterelements(struct __pyx_obj_4lxml
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_4generator13, __pyx_codeobj__135, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterelements, __pyx_n_s_DTD_iterelements, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 314, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_4generator13, __pyx_codeobj__380, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterelements, __pyx_n_s_DTD_iterelements, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 314, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -200327,15 +213325,19 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_13_iterelements *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_13_iterelements *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("iterelements", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__380)
+  __Pyx_TraceCall("iterelements", __pyx_f[20], 314, 0, __PYX_ERR(20, 314, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -200349,6 +213351,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *         while c_node is not NULL:
  *             if c_node.type == tree.XML_ELEMENT_DECL:
  */
+  __Pyx_TraceLine(315,0,__PYX_ERR(20, 315, __pyx_L1_error))
   if (((__pyx_cur_scope->__pyx_v_self->_c_dtd != NULL) != 0)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_c_dtd->children;
   } else {
@@ -200363,6 +213366,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *             if c_node.type == tree.XML_ELEMENT_DECL:
  *                 node = _DTDElementDecl()
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(20, 316, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -200374,6 +213378,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *                 node = _DTDElementDecl()
  *                 node._dtd = self
  */
+    __Pyx_TraceLine(317,0,__PYX_ERR(20, 317, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node->type == XML_ELEMENT_DECL) != 0);
     if (__pyx_t_2) {
 
@@ -200384,6 +213389,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *                 node._dtd = self
  *                 node._c_node = <tree.xmlElement*>c_node
  */
+      __Pyx_TraceLine(318,0,__PYX_ERR(20, 318, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDElementDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 318, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
@@ -200398,6 +213404,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *                 node._c_node = <tree.xmlElement*>c_node
  *                 yield node
  */
+      __Pyx_TraceLine(319,0,__PYX_ERR(20, 319, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
       __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
       __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node->_dtd);
@@ -200411,6 +213418,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *                 yield node
  *             c_node = c_node.next
  */
+      __Pyx_TraceLine(320,0,__PYX_ERR(20, 320, __pyx_L1_error))
       __pyx_cur_scope->__pyx_v_node->_c_node = ((xmlElement *)__pyx_cur_scope->__pyx_v_c_node);
 
       /* "src/lxml/dtd.pxi":321
@@ -200420,9 +213428,11 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  *             c_node = c_node.next
  * 
  */
+      __Pyx_TraceLine(321,0,__PYX_ERR(20, 321, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
       __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_node);
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -200447,6 +213457,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
  * 
  *     def elements(self):
  */
+    __Pyx_TraceLine(322,0,__PYX_ERR(20, 322, __pyx_L1_error))
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_c_node->next;
     __pyx_cur_scope->__pyx_v_c_node = __pyx_t_1;
   }
@@ -200471,6 +213482,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200499,11 +213511,14 @@ static PyObject *__pyx_pw_4lxml_5etree_3DTD_6elements(PyObject *__pyx_v_self, CY
 
 static PyObject *__pyx_pf_4lxml_5etree_3DTD_5elements(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__381)
   __Pyx_RefNannySetupContext("elements", 0);
+  __Pyx_TraceCall("elements", __pyx_f[20], 324, 0, __PYX_ERR(20, 324, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":325
  * 
@@ -200512,6 +213527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_5elements(struct __pyx_obj_4lxml_5et
  * 
  *     def iterentities(self):
  */
+  __Pyx_TraceLine(325,0,__PYX_ERR(20, 325, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterelements); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -200557,6 +213573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_5elements(struct __pyx_obj_4lxml_5et
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200601,7 +213618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_7iterentities(struct __pyx_obj_4lxml
   __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_9generator14, __pyx_codeobj__136, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterentities, __pyx_n_s_DTD_iterentities, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 327, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_5etree_3DTD_9generator14, __pyx_codeobj__382, (PyObject *) __pyx_cur_scope, __pyx_n_s_iterentities, __pyx_n_s_DTD_iterentities, __pyx_n_s_lxml_etree); if (unlikely(!gen)) __PYX_ERR(20, 327, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -200621,15 +213638,19 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
 {
   struct __pyx_obj_4lxml_5etree___pyx_scope_struct_14_iterentities *__pyx_cur_scope = ((struct __pyx_obj_4lxml_5etree___pyx_scope_struct_14_iterentities *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("iterentities", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__382)
+  __Pyx_TraceCall("iterentities", __pyx_f[20], 327, 0, __PYX_ERR(20, 327, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L7_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -200643,6 +213664,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *         while c_node is not NULL:
  *             if c_node.type == tree.XML_ENTITY_DECL:
  */
+  __Pyx_TraceLine(328,0,__PYX_ERR(20, 328, __pyx_L1_error))
   if (((__pyx_cur_scope->__pyx_v_self->_c_dtd != NULL) != 0)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_c_dtd->children;
   } else {
@@ -200657,6 +213679,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *             if c_node.type == tree.XML_ENTITY_DECL:
  *                 node = _DTDEntityDecl()
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(20, 329, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -200668,6 +213691,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *                 node = _DTDEntityDecl()
  *                 node._dtd = self
  */
+    __Pyx_TraceLine(330,0,__PYX_ERR(20, 330, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_c_node->type == XML_ENTITY_DECL) != 0);
     if (__pyx_t_2) {
 
@@ -200678,6 +213702,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *                 node._dtd = self
  *                 node._c_node = <tree.xmlEntity*>c_node
  */
+      __Pyx_TraceLine(331,0,__PYX_ERR(20, 331, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__DTDEntityDecl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 331, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
@@ -200692,6 +213717,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *                 node._c_node = <tree.xmlEntity*>c_node
  *                 yield node
  */
+      __Pyx_TraceLine(332,0,__PYX_ERR(20, 332, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
       __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
       __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node->_dtd);
@@ -200705,6 +213731,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *                 yield node
  *             c_node = c_node.next
  */
+      __Pyx_TraceLine(333,0,__PYX_ERR(20, 333, __pyx_L1_error))
       __pyx_cur_scope->__pyx_v_node->_c_node = ((xmlEntity *)__pyx_cur_scope->__pyx_v_c_node);
 
       /* "src/lxml/dtd.pxi":334
@@ -200714,9 +213741,11 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  *             c_node = c_node.next
  * 
  */
+      __Pyx_TraceLine(334,0,__PYX_ERR(20, 334, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_node));
       __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_node);
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -200741,6 +213770,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
  * 
  *     def entities(self):
  */
+    __Pyx_TraceLine(335,0,__PYX_ERR(20, 335, __pyx_L1_error))
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_c_node->next;
     __pyx_cur_scope->__pyx_v_c_node = __pyx_t_1;
   }
@@ -200765,6 +213795,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_9generator14(__pyx_CoroutineObject *
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200793,11 +213824,14 @@ static PyObject *__pyx_pw_4lxml_5etree_3DTD_11entities(PyObject *__pyx_v_self, C
 
 static PyObject *__pyx_pf_4lxml_5etree_3DTD_10entities(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__383)
   __Pyx_RefNannySetupContext("entities", 0);
+  __Pyx_TraceCall("entities", __pyx_f[20], 337, 0, __PYX_ERR(20, 337, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":338
  * 
@@ -200806,6 +213840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10entities(struct __pyx_obj_4lxml_5e
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(338,0,__PYX_ERR(20, 338, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_iterentities); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 338, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -200851,6 +213886,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10entities(struct __pyx_obj_4lxml_5e
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -200875,8 +213911,10 @@ static void __pyx_pw_4lxml_5etree_3DTD_13__dealloc__(PyObject *__pyx_v_self) {
 }
 
 static void __pyx_pf_4lxml_5etree_3DTD_12__dealloc__(struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[20], 340, 0, __PYX_ERR(20, 340, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":341
  * 
@@ -200885,6 +213923,7 @@ static void __pyx_pf_4lxml_5etree_3DTD_12__dealloc__(struct __pyx_obj_4lxml_5etr
  * 
  *     def __call__(self, etree):
  */
+  __Pyx_TraceLine(341,0,__PYX_ERR(20, 341, __pyx_L1_error))
   xmlFreeDtd(__pyx_v_self->_c_dtd);
 
   /* "src/lxml/dtd.pxi":340
@@ -200896,6 +213935,11 @@ static void __pyx_pf_4lxml_5etree_3DTD_12__dealloc__(struct __pyx_obj_4lxml_5etr
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.DTD.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -200968,6 +214012,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
   xmlValidCtxt *__pyx_v_valid_ctxt;
   int __pyx_v_ret;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -200986,6 +214031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
   char const *__pyx_t_15;
   PyObject *__pyx_t_16 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[20], 343, 0, __PYX_ERR(20, 343, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":354
  *         cdef xmlDoc* c_doc
@@ -200994,6 +214040,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  *         assert self._c_dtd is not NULL, "DTD not initialised"
  */
+  __Pyx_TraceLine(354,0,__PYX_ERR(20, 354, __pyx_L1_error))
   __pyx_v_ret = -1;
 
   /* "src/lxml/dtd.pxi":356
@@ -201003,6 +214050,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *         doc = _documentOrRaise(etree)
  *         root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(356,0,__PYX_ERR(20, 356, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_dtd != NULL) != 0))) {
@@ -201019,6 +214067,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *         root_node = _rootNodeOrRaise(etree)
  * 
  */
+  __Pyx_TraceLine(357,0,__PYX_ERR(20, 357, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 357, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -201031,6 +214080,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(20, 358, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 358, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -201043,6 +214093,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *         if valid_ctxt is NULL:
  *             raise DTDError(u"Failed to create validation context")
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(20, 360, __pyx_L1_error))
   __pyx_v_valid_ctxt = xmlNewValidCtxt();
 
   /* "src/lxml/dtd.pxi":361
@@ -201052,6 +214103,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *             raise DTDError(u"Failed to create validation context")
  * 
  */
+  __Pyx_TraceLine(361,0,__PYX_ERR(20, 361, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_valid_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -201062,7 +214114,8 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  *         # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDError), __pyx_tuple__137, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 362, __pyx_L1_error)
+    __Pyx_TraceLine(362,0,__PYX_ERR(20, 362, __pyx_L1_error))
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDError), __pyx_tuple__384, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 362, __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;
@@ -201084,6 +214137,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *         valid_ctxt.userData = NULL
  * 
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(20, 366, __pyx_L1_error))
   __pyx_v_valid_ctxt->error = ((xmlValidityErrorFunc)__pyx_f_4lxml_5etree__nullGenericErrorFunc);
 
   /* "src/lxml/dtd.pxi":367
@@ -201093,6 +214147,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  *         try:
  */
+  __Pyx_TraceLine(367,0,__PYX_ERR(20, 367, __pyx_L1_error))
   __pyx_v_valid_ctxt->userData = NULL;
 
   /* "src/lxml/dtd.pxi":369
@@ -201102,6 +214157,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *             with self._error_log:
  *                 c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  */
+  __Pyx_TraceLine(369,0,__PYX_ERR(20, 369, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/dtd.pxi":370
@@ -201111,6 +214167,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *                 c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *                 ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
  */
+    __Pyx_TraceLine(370,0,__PYX_ERR(20, 370, __pyx_L5_error))
     /*with:*/ {
       __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 370, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -201132,6 +214189,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *                 ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
  *                 _destroyFakeDoc(doc._c_doc, c_doc)
  */
+            __Pyx_TraceLine(371,0,__PYX_ERR(20, 371, __pyx_L11_error))
             __pyx_t_8 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_8 == ((xmlDoc *)NULL))) __PYX_ERR(20, 371, __pyx_L11_error)
             __pyx_v_c_doc = __pyx_t_8;
 
@@ -201142,6 +214200,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *                 _destroyFakeDoc(doc._c_doc, c_doc)
  *         finally:
  */
+            __Pyx_TraceLine(372,0,__PYX_ERR(20, 372, __pyx_L11_error))
             __pyx_v_ret = xmlValidateDtd(__pyx_v_valid_ctxt, __pyx_v_c_doc, __pyx_v_self->_c_dtd);
 
             /* "src/lxml/dtd.pxi":373
@@ -201151,6 +214210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *         finally:
  *             dtdvalid.xmlFreeValidCtxt(valid_ctxt)
  */
+            __Pyx_TraceLine(373,0,__PYX_ERR(20, 373, __pyx_L11_error))
             __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
 
             /* "src/lxml/dtd.pxi":370
@@ -201214,7 +214274,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_3) {
-            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__138, NULL);
+            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__385, NULL);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
             if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 370, __pyx_L5_error)
             __Pyx_GOTREF(__pyx_t_7);
@@ -201239,6 +214299,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  *         if ret == -1:
  */
+  __Pyx_TraceLine(375,0,__PYX_ERR(20, 375, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlFreeValidCtxt(__pyx_v_valid_ctxt);
@@ -201289,6 +214350,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *             raise DTDValidateError(u"Internal error in DTD validation",
  *                                    self._error_log)
  */
+  __Pyx_TraceLine(377,0,__PYX_ERR(20, 377, __pyx_L1_error))
   __pyx_t_13 = ((__pyx_v_ret == -1L) != 0);
   if (unlikely(__pyx_t_13)) {
 
@@ -201299,6 +214361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  *                                    self._error_log)
  *         return ret == 1
  */
+    __Pyx_TraceLine(378,0,__PYX_ERR(20, 378, __pyx_L1_error))
     __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 378, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_INCREF(__pyx_kp_u_Internal_error_in_DTD_validation);
@@ -201330,6 +214393,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
  * 
  * 
  */
+  __Pyx_TraceLine(380,0,__PYX_ERR(20, 380, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_9 = __Pyx_PyBool_FromLong((__pyx_v_ret == 1)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
@@ -201357,6 +214421,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_14__call__(struct __pyx_obj_4lxml_5e
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -201375,6 +214440,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
   struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_error_log = 0;
   xmlDtd *__pyx_v_c_dtd;
   xmlDtd *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -201383,8 +214449,13 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
-  int __pyx_t_8;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
   __Pyx_RefNannySetupContext("_parseDtdFromFilelike", 0);
+  __Pyx_TraceCall("_parseDtdFromFilelike", __pyx_f[20], 383, 0, __PYX_ERR(20, 383, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":387
  *     cdef _FileReaderContext dtd_parser
@@ -201393,6 +214464,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *     exc_context = _ExceptionContext()
  *     dtd_parser = _FileReaderContext(file, exc_context, None)
  */
+  __Pyx_TraceLine(387,0,__PYX_ERR(20, 387, __pyx_L1_error))
   __pyx_v_c_dtd = NULL;
 
   /* "src/lxml/dtd.pxi":388
@@ -201402,6 +214474,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *     dtd_parser = _FileReaderContext(file, exc_context, None)
  *     error_log = _ErrorLog()
  */
+  __Pyx_TraceLine(388,0,__PYX_ERR(20, 388, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ExceptionContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 388, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_1);
@@ -201414,6 +214487,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *     error_log = _ErrorLog()
  * 
  */
+  __Pyx_TraceLine(389,0,__PYX_ERR(20, 389, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 389, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_file);
@@ -201438,6 +214512,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  * 
  *     with error_log:
  */
+  __Pyx_TraceLine(390,0,__PYX_ERR(20, 390, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 390, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_2);
@@ -201450,13 +214525,19 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *         c_dtd = dtd_parser._readDtd()
  * 
  */
+  __Pyx_TraceLine(392,0,__PYX_ERR(20, 392, __pyx_L1_error))
   /*with:*/ {
     __pyx_t_3 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_error_log); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 392, __pyx_L3_error)
     /*try:*/ {
       {
-        (void)__pyx_t_5; (void)__pyx_t_6; (void)__pyx_t_7; /* mark used */
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
         /*try:*/ {
 
           /* "src/lxml/dtd.pxi":393
@@ -201466,6 +214547,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  * 
  *     exc_context._raise_if_stored()
  */
+          __Pyx_TraceLine(393,0,__PYX_ERR(20, 393, __pyx_L7_error))
           __pyx_v_c_dtd = __pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(__pyx_v_dtd_parser);
 
           /* "src/lxml/dtd.pxi":392
@@ -201476,12 +214558,61 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  * 
  */
         }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("lxml.etree._parseDtdFromFilelike", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_8) < 0) __PYX_ERR(20, 392, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_8);
+          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 392, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 392, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (__pyx_t_11 < 0) __PYX_ERR(20, 392, __pyx_L9_except_error)
+          __pyx_t_12 = ((!(__pyx_t_11 != 0)) != 0);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_XGIVEREF(__pyx_t_8);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_8);
+            __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_8 = 0; 
+            __PYX_ERR(20, 392, __pyx_L9_except_error)
+          }
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L12_try_end:;
       }
     }
     /*finally:*/ {
       /*normal exit:*/{
         if (__pyx_t_3) {
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__139, NULL);
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__386, NULL);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 392, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
@@ -201491,11 +214622,11 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
       }
       __pyx_L6:;
     }
-    goto __pyx_L13;
+    goto __pyx_L16;
     __pyx_L3_error:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     goto __pyx_L1_error;
-    __pyx_L13:;
+    __pyx_L16:;
   }
 
   /* "src/lxml/dtd.pxi":395
@@ -201505,6 +214636,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *     if c_dtd is NULL:
  *         raise DTDParseError(u"error parsing DTD", error_log)
  */
+  __Pyx_TraceLine(395,0,__PYX_ERR(20, 395, __pyx_L1_error))
   __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_exc_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(20, 395, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":396
@@ -201514,8 +214646,9 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *         raise DTDParseError(u"error parsing DTD", error_log)
  *     return c_dtd
  */
-  __pyx_t_8 = ((__pyx_v_c_dtd == NULL) != 0);
-  if (unlikely(__pyx_t_8)) {
+  __Pyx_TraceLine(396,0,__PYX_ERR(20, 396, __pyx_L1_error))
+  __pyx_t_12 = ((__pyx_v_c_dtd == NULL) != 0);
+  if (unlikely(__pyx_t_12)) {
 
     /* "src/lxml/dtd.pxi":397
  *     exc_context._raise_if_stored()
@@ -201524,17 +214657,18 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  *     return c_dtd
  * 
  */
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 397, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_TraceLine(397,0,__PYX_ERR(20, 397, __pyx_L1_error))
+    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 397, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
     __Pyx_INCREF(__pyx_kp_u_error_parsing_DTD);
     __Pyx_GIVEREF(__pyx_kp_u_error_parsing_DTD);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_error_parsing_DTD);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_error_parsing_DTD);
     __Pyx_INCREF(((PyObject *)__pyx_v_error_log));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_error_log));
-    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_error_log));
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 397, __pyx_L1_error)
+    PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_v_error_log));
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DTDParseError), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 397, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __PYX_ERR(20, 397, __pyx_L1_error)
@@ -201555,6 +214689,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
  * 
  * cdef DTD _dtdFactory(tree.xmlDtd* c_dtd):
  */
+  __Pyx_TraceLine(398,0,__PYX_ERR(20, 398, __pyx_L1_error))
   __pyx_r = __pyx_v_c_dtd;
   goto __pyx_L0;
 
@@ -201570,12 +214705,15 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
   __Pyx_AddTraceback("lxml.etree._parseDtdFromFilelike", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_exc_context);
   __Pyx_XDECREF((PyObject *)__pyx_v_dtd_parser);
   __Pyx_XDECREF((PyObject *)__pyx_v_error_log);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -201591,6 +214729,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file
 static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDtd *__pyx_v_c_dtd) {
   struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_dtd = 0;
   struct __pyx_obj_4lxml_5etree_DTD *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -201599,6 +214738,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_dtdFactory", 0);
+  __Pyx_TraceCall("_dtdFactory", __pyx_f[20], 400, 0, __PYX_ERR(20, 400, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":403
  *     # do not run through DTD.__init__()!
@@ -201607,6 +214747,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  *         return None
  *     dtd = DTD.__new__(DTD)
  */
+  __Pyx_TraceLine(403,0,__PYX_ERR(20, 403, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -201617,6 +214758,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  *     dtd = DTD.__new__(DTD)
  *     dtd._c_dtd = _copyDtd(c_dtd)
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(20, 404, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __pyx_r = ((struct __pyx_obj_4lxml_5etree_DTD *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -201637,6 +214779,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  *     dtd._c_dtd = _copyDtd(c_dtd)
  *     _Validator.__init__(dtd)
  */
+  __Pyx_TraceLine(405,0,__PYX_ERR(20, 405, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree_DTD(((PyTypeObject *)__pyx_ptype_4lxml_5etree_DTD), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 405, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __pyx_v_dtd = ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_t_2);
@@ -201649,6 +214792,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  *     _Validator.__init__(dtd)
  *     return dtd
  */
+  __Pyx_TraceLine(406,0,__PYX_ERR(20, 406, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree__copyDtd(__pyx_v_c_dtd); if (unlikely(__pyx_t_3 == ((xmlDtd *)NULL))) __PYX_ERR(20, 406, __pyx_L1_error)
   __pyx_v_dtd->_c_dtd = __pyx_t_3;
 
@@ -201659,6 +214803,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  *     return dtd
  * 
  */
+  __Pyx_TraceLine(407,0,__PYX_ERR(20, 407, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 407, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
@@ -201713,6 +214858,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
  * 
  * 
  */
+  __Pyx_TraceLine(408,0,__PYX_ERR(20, 408, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_dtd));
   __pyx_r = __pyx_v_dtd;
@@ -201737,6 +214883,7 @@ static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDt
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_dtd);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -201753,10 +214900,12 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
   xmlDtd *__pyx_v_c_dtd;
   xmlNode *__pyx_v_c_node;
   xmlDtd *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_copyDtd", 0);
+  __Pyx_TraceCall("_copyDtd", __pyx_f[20], 411, 0, __PYX_ERR(20, 411, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":416
  *     links when copying DTDs, so we have to rebuild them here.
@@ -201765,6 +214914,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *     if not c_dtd:
  *         raise MemoryError
  */
+  __Pyx_TraceLine(416,0,__PYX_ERR(20, 416, __pyx_L1_error))
   __pyx_v_c_dtd = xmlCopyDtd(__pyx_v_c_orig_dtd);
 
   /* "src/lxml/dtd.pxi":417
@@ -201774,6 +214924,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *         raise MemoryError
  *     cdef tree.xmlNode* c_node = c_dtd.children
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(20, 417, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_c_dtd != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -201784,6 +214935,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *     cdef tree.xmlNode* c_node = c_dtd.children
  *     while c_node:
  */
+    __Pyx_TraceLine(418,0,__PYX_ERR(20, 418, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(20, 418, __pyx_L1_error)
 
     /* "src/lxml/dtd.pxi":417
@@ -201802,6 +214954,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *     while c_node:
  *         if c_node.type == tree.XML_ATTRIBUTE_DECL:
  */
+  __Pyx_TraceLine(419,0,__PYX_ERR(20, 419, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_dtd->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -201812,6 +214965,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *         if c_node.type == tree.XML_ATTRIBUTE_DECL:
  *             _linkDtdAttribute(c_dtd, <tree.xmlAttribute*>c_node)
  */
+  __Pyx_TraceLine(420,0,__PYX_ERR(20, 420, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = (__pyx_v_c_node != 0);
     if (!__pyx_t_1) break;
@@ -201823,6 +214977,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *             _linkDtdAttribute(c_dtd, <tree.xmlAttribute*>c_node)
  *         c_node = c_node.next
  */
+    __Pyx_TraceLine(421,0,__PYX_ERR(20, 421, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_node->type == XML_ATTRIBUTE_DECL) != 0);
     if (__pyx_t_1) {
 
@@ -201833,6 +214988,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *         c_node = c_node.next
  *     return c_dtd
  */
+      __Pyx_TraceLine(422,0,__PYX_ERR(20, 422, __pyx_L1_error))
       __pyx_f_4lxml_5etree__linkDtdAttribute(__pyx_v_c_dtd, ((xmlAttribute *)__pyx_v_c_node));
 
       /* "src/lxml/dtd.pxi":421
@@ -201851,6 +215007,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  *     return c_dtd
  * 
  */
+    __Pyx_TraceLine(423,0,__PYX_ERR(20, 423, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -201862,6 +215019,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
  * 
  * 
  */
+  __Pyx_TraceLine(424,0,__PYX_ERR(20, 424, __pyx_L1_error))
   __pyx_r = __pyx_v_c_dtd;
   goto __pyx_L0;
 
@@ -201878,6 +215036,7 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
   __Pyx_AddTraceback("lxml.etree._copyDtd", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -201893,11 +215052,13 @@ static xmlDtd *__pyx_f_4lxml_5etree__copyDtd(xmlDtd *__pyx_v_c_orig_dtd) {
 static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAttribute *__pyx_v_c_attr) {
   xmlElement *__pyx_v_c_elem;
   xmlAttribute *__pyx_v_c_pos;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlAttribute *__pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_linkDtdAttribute", 0);
+  __Pyx_TraceCall("_linkDtdAttribute", __pyx_f[20], 427, 0, __PYX_ERR(20, 427, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":432
  *     element declaration.
@@ -201906,6 +215067,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     if not c_elem:
  *         # no such element? something is wrong with the DTD ...
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(20, 432, __pyx_L1_error))
   __pyx_v_c_elem = xmlGetDtdElementDesc(__pyx_v_c_dtd, __pyx_v_c_attr->elem);
 
   /* "src/lxml/dtd.pxi":433
@@ -201915,6 +215077,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         # no such element? something is wrong with the DTD ...
  *         return
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(20, 433, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_c_elem != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -201925,6 +215088,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     c_pos = c_elem.attributes
  *     if not c_pos:
  */
+    __Pyx_TraceLine(435,0,__PYX_ERR(20, 435, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":433
@@ -201943,6 +215107,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     if not c_pos:
  *         c_elem.attributes = c_attr
  */
+  __Pyx_TraceLine(436,0,__PYX_ERR(20, 436, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_elem->attributes;
   __pyx_v_c_pos = __pyx_t_2;
 
@@ -201953,6 +215118,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         c_elem.attributes = c_attr
  *         c_attr.nexth = NULL
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(20, 437, __pyx_L1_error))
   __pyx_t_1 = ((!(__pyx_v_c_pos != 0)) != 0);
   if (__pyx_t_1) {
 
@@ -201963,6 +215129,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         c_attr.nexth = NULL
  *         return
  */
+    __Pyx_TraceLine(438,0,__PYX_ERR(20, 438, __pyx_L1_error))
     __pyx_v_c_elem->attributes = __pyx_v_c_attr;
 
     /* "src/lxml/dtd.pxi":439
@@ -201972,6 +215139,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         return
  *     # libxml2 keeps namespace declarations first, and we need to make
  */
+    __Pyx_TraceLine(439,0,__PYX_ERR(20, 439, __pyx_L1_error))
     __pyx_v_c_attr->nexth = NULL;
 
     /* "src/lxml/dtd.pxi":440
@@ -201981,6 +215149,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     # libxml2 keeps namespace declarations first, and we need to make
  *     # sure we don't re-insert attributes that are already there
  */
+    __Pyx_TraceLine(440,0,__PYX_ERR(20, 440, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":437
@@ -201999,6 +215168,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         if not _isDtdNsDecl(c_pos):
  *             c_elem.attributes = c_attr
  */
+  __Pyx_TraceLine(443,0,__PYX_ERR(20, 443, __pyx_L1_error))
   __pyx_t_1 = (__pyx_f_4lxml_5etree__isDtdNsDecl(__pyx_v_c_attr) != 0);
   if (__pyx_t_1) {
 
@@ -202009,6 +215179,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *             c_elem.attributes = c_attr
  *             c_attr.nexth = c_pos
  */
+    __Pyx_TraceLine(444,0,__PYX_ERR(20, 444, __pyx_L1_error))
     __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__isDtdNsDecl(__pyx_v_c_pos) != 0)) != 0);
     if (__pyx_t_1) {
 
@@ -202019,6 +215190,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *             c_attr.nexth = c_pos
  *             return
  */
+      __Pyx_TraceLine(445,0,__PYX_ERR(20, 445, __pyx_L1_error))
       __pyx_v_c_elem->attributes = __pyx_v_c_attr;
 
       /* "src/lxml/dtd.pxi":446
@@ -202028,6 +215200,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *             return
  *         while c_pos != c_attr and c_pos.nexth and _isDtdNsDecl(c_pos.nexth):
  */
+      __Pyx_TraceLine(446,0,__PYX_ERR(20, 446, __pyx_L1_error))
       __pyx_v_c_attr->nexth = __pyx_v_c_pos;
 
       /* "src/lxml/dtd.pxi":447
@@ -202037,6 +215210,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         while c_pos != c_attr and c_pos.nexth and _isDtdNsDecl(c_pos.nexth):
  *             c_pos = c_pos.nexth
  */
+      __Pyx_TraceLine(447,0,__PYX_ERR(20, 447, __pyx_L1_error))
       goto __pyx_L0;
 
       /* "src/lxml/dtd.pxi":444
@@ -202055,6 +215229,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *             c_pos = c_pos.nexth
  *     else:
  */
+    __Pyx_TraceLine(448,0,__PYX_ERR(20, 448, __pyx_L1_error))
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_pos != __pyx_v_c_attr) != 0);
       if (__pyx_t_3) {
@@ -202080,6 +215255,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     else:
  *         # append at end
  */
+      __Pyx_TraceLine(449,0,__PYX_ERR(20, 449, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_pos->nexth;
       __pyx_v_c_pos = __pyx_t_2;
     }
@@ -202101,6 +215277,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *             c_pos = c_pos.nexth
  *     if c_pos == c_attr:
  */
+  __Pyx_TraceLine(452,0,__PYX_ERR(20, 452, __pyx_L1_error))
   /*else*/ {
     while (1) {
       __pyx_t_3 = ((__pyx_v_c_pos != __pyx_v_c_attr) != 0);
@@ -202121,6 +215298,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     if c_pos == c_attr:
  *         return
  */
+      __Pyx_TraceLine(453,0,__PYX_ERR(20, 453, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_c_pos->nexth;
       __pyx_v_c_pos = __pyx_t_2;
     }
@@ -202134,6 +215312,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *         return
  *     c_attr.nexth = c_pos.nexth
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(20, 454, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_pos == __pyx_v_c_attr) != 0);
   if (__pyx_t_1) {
 
@@ -202144,6 +215323,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     c_attr.nexth = c_pos.nexth
  *     c_pos.nexth = c_attr
  */
+    __Pyx_TraceLine(455,0,__PYX_ERR(20, 455, __pyx_L1_error))
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":454
@@ -202162,6 +215342,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  *     c_pos.nexth = c_attr
  * 
  */
+  __Pyx_TraceLine(456,0,__PYX_ERR(20, 456, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_pos->nexth;
   __pyx_v_c_attr->nexth = __pyx_t_2;
 
@@ -202172,6 +215353,7 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  * 
  * 
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(20, 457, __pyx_L1_error))
   __pyx_v_c_pos->nexth = __pyx_v_c_attr;
 
   /* "src/lxml/dtd.pxi":427
@@ -202183,7 +215365,11 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._linkDtdAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -202197,10 +215383,12 @@ static void __pyx_f_4lxml_5etree__linkDtdAttribute(xmlDtd *__pyx_v_c_dtd, xmlAtt
 
 static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_isDtdNsDecl", 0);
+  __Pyx_TraceCall("_isDtdNsDecl", __pyx_f[20], 460, 0, __PYX_ERR(20, 460, __pyx_L1_error));
 
   /* "src/lxml/dtd.pxi":461
  * 
@@ -202209,6 +215397,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *         return True
  *     if (c_attr.prefix is not NULL and
  */
+  __Pyx_TraceLine(461,0,__PYX_ERR(20, 461, __pyx_L1_error))
   __pyx_t_1 = ((strcmp(((const char *)__pyx_v_c_attr->name), ((char const *)"xmlns")) == 0) != 0);
   if (__pyx_t_1) {
 
@@ -202219,6 +215408,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *     if (c_attr.prefix is not NULL and
  *             cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0):
  */
+    __Pyx_TraceLine(462,0,__PYX_ERR(20, 462, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -202238,6 +215428,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *             cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0):
  *         return True
  */
+  __Pyx_TraceLine(463,0,__PYX_ERR(20, 463, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_attr->prefix != NULL) != 0);
   if (__pyx_t_2) {
   } else {
@@ -202252,6 +215443,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *         return True
  *     return False
  */
+  __Pyx_TraceLine(464,0,__PYX_ERR(20, 464, __pyx_L1_error))
   __pyx_t_2 = ((strcmp(((const char *)__pyx_v_c_attr->prefix), ((char const *)"xmlns")) == 0) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L5_bool_binop_done:;
@@ -202263,6 +215455,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *             cstring_h.strcmp(<const_char*>c_attr.prefix, "xmlns") == 0):
  *         return True
  */
+  __Pyx_TraceLine(463,0,__PYX_ERR(20, 463, __pyx_L1_error))
   if (__pyx_t_1) {
 
     /* "src/lxml/dtd.pxi":465
@@ -202271,6 +215464,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *         return True             # <<<<<<<<<<<<<<
  *     return False
  */
+    __Pyx_TraceLine(465,0,__PYX_ERR(20, 465, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -202288,6 +215482,7 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  *         return True
  *     return False             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(466,0,__PYX_ERR(20, 466, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -202300,7 +215495,11 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._isDtdNsDecl", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -202315,11 +215514,13 @@ static int __pyx_f_4lxml_5etree__isDtdNsDecl(xmlAttribute *__pyx_v_c_attr) {
 
 static int __pyx_f_4lxml_5etree__require_rnc2rng(void) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_require_rnc2rng", 0);
+  __Pyx_TraceCall("_require_rnc2rng", __pyx_f[21], 11, 0, __PYX_ERR(21, 11, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":12
  * 
@@ -202328,6 +215529,7 @@ static int __pyx_f_4lxml_5etree__require_rnc2rng(void) {
  *         raise RelaxNGParseError(
  *             'compact syntax not supported (please install rnc2rng)')
  */
+  __Pyx_TraceLine(12,0,__PYX_ERR(21, 12, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_4lxml_5etree__rnc2rng == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -202339,7 +215541,8 @@ static int __pyx_f_4lxml_5etree__require_rnc2rng(void) {
  *             'compact syntax not supported (please install rnc2rng)')
  *     return 0
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_tuple__140, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 13, __pyx_L1_error)
+    __Pyx_TraceLine(13,0,__PYX_ERR(21, 13, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_tuple__387, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 13, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -202361,6 +215564,7 @@ static int __pyx_f_4lxml_5etree__require_rnc2rng(void) {
  * 
  * 
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(21, 15, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -202378,6 +215582,7 @@ static int __pyx_f_4lxml_5etree__require_rnc2rng(void) {
   __Pyx_AddTraceback("lxml.etree._require_rnc2rng", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -202408,8 +215613,10 @@ static int __pyx_pw_4lxml_5etree_7RelaxNG_1__cinit__(PyObject *__pyx_v_self, PyO
 
 static int __pyx_pf_4lxml_5etree_7RelaxNG___cinit__(struct __pyx_obj_4lxml_5etree_RelaxNG *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[21], 42, 0, __PYX_ERR(21, 42, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":43
  *     cdef relaxng.xmlRelaxNG* _c_schema
@@ -202418,6 +215625,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG___cinit__(struct __pyx_obj_4lxml_5etre
  * 
  *     def __init__(self, etree=None, *, file=None):
  */
+  __Pyx_TraceLine(43,0,__PYX_ERR(21, 43, __pyx_L1_error))
   __pyx_v_self->_c_schema = NULL;
 
   /* "src/lxml/relaxng.pxi":42
@@ -202430,6 +215638,12 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG___cinit__(struct __pyx_obj_4lxml_5etre
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.RelaxNG.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -202514,6 +215728,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
   PyObject *__pyx_v_rng_data = NULL;
   PyObject *__pyx_v_filename = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -202529,8 +215744,10 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
-  struct __pyx_opt_args_4lxml_5etree__connectGenericErrorLog __pyx_t_15;
+  PyObject *__pyx_t_15 = NULL;
+  struct __pyx_opt_args_4lxml_5etree__connectGenericErrorLog __pyx_t_16;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[21], 45, 0, __PYX_ERR(21, 45, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":48
  *         cdef _Document doc
@@ -202539,6 +215756,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         cdef relaxng.xmlRelaxNGParserCtxt* parser_ctxt = NULL
  *         _Validator.__init__(self)
  */
+  __Pyx_TraceLine(48,0,__PYX_ERR(21, 48, __pyx_L1_error))
   __pyx_v_fake_c_doc = NULL;
 
   /* "src/lxml/relaxng.pxi":49
@@ -202548,6 +215766,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         _Validator.__init__(self)
  *         if etree is not None:
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(21, 49, __pyx_L1_error))
   __pyx_v_parser_ctxt = NULL;
 
   /* "src/lxml/relaxng.pxi":50
@@ -202557,6 +215776,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         if etree is not None:
  *             doc = _documentOrRaise(etree)
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(21, 50, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 50, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -202611,6 +215831,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             doc = _documentOrRaise(etree)
  *             root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(21, 51, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_etree != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -202622,6 +215843,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             root_node = _rootNodeOrRaise(etree)
  *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(21, 52, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 52, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -202634,6 +215856,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  */
+    __Pyx_TraceLine(53,0,__PYX_ERR(21, 53, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 53, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -202646,6 +215869,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  *         elif file is not None:
  */
+    __Pyx_TraceLine(54,0,__PYX_ERR(21, 54, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(21, 54, __pyx_L1_error)
     __pyx_v_fake_c_doc = __pyx_t_7;
 
@@ -202656,6 +215880,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         elif file is not None:
  *             if _isString(file):
  */
+    __Pyx_TraceLine(55,0,__PYX_ERR(21, 55, __pyx_L1_error))
     __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_fake_c_doc);
 
     /* "src/lxml/relaxng.pxi":51
@@ -202675,6 +215900,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             if _isString(file):
  *                 if file[-4:].lower() == '.rnc':
  */
+  __Pyx_TraceLine(56,0,__PYX_ERR(21, 56, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_file != Py_None);
   __pyx_t_5 = (__pyx_t_6 != 0);
   if (likely(__pyx_t_5)) {
@@ -202686,6 +215912,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 if file[-4:].lower() == '.rnc':
  *                     _require_rnc2rng()
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(21, 57, __pyx_L1_error))
     __pyx_t_5 = (_isString(__pyx_v_file) != 0);
     if (__pyx_t_5) {
 
@@ -202696,7 +215923,8 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     _require_rnc2rng()
  *                     rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  */
-      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_file, -4L, 0, NULL, NULL, &__pyx_slice__141, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 58, __pyx_L1_error)
+      __Pyx_TraceLine(58,0,__PYX_ERR(21, 58, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_file, -4L, 0, NULL, NULL, &__pyx_slice__388, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 58, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 58, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -202730,6 +215958,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  *                     doc = _parseMemoryDocument(rng_data, parser=None, url=None)
  */
+        __Pyx_TraceLine(59,0,__PYX_ERR(21, 59, __pyx_L1_error))
         __pyx_t_8 = __pyx_f_4lxml_5etree__require_rnc2rng(); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(21, 59, __pyx_L1_error)
 
         /* "src/lxml/relaxng.pxi":60
@@ -202739,6 +215968,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     doc = _parseMemoryDocument(rng_data, parser=None, url=None)
  *                     root_node = doc.getroot()
  */
+        __Pyx_TraceLine(60,0,__PYX_ERR(21, 60, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_dumps); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 60, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_load); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 60, __pyx_L1_error)
@@ -202842,6 +216072,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     root_node = doc.getroot()
  *                     fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  */
+        __Pyx_TraceLine(61,0,__PYX_ERR(21, 61, __pyx_L1_error))
         __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_rng_data, Py_None, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 61, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -202854,6 +216085,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *                     parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  */
+        __Pyx_TraceLine(62,0,__PYX_ERR(21, 62, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 62, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(21, 62, __pyx_L1_error)
@@ -202867,6 +216099,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  *                 else:
  */
+        __Pyx_TraceLine(63,0,__PYX_ERR(21, 63, __pyx_L1_error))
         __pyx_t_7 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(21, 63, __pyx_L1_error)
         __pyx_v_fake_c_doc = __pyx_t_7;
 
@@ -202877,6 +216110,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 else:
  *                     doc = None
  */
+        __Pyx_TraceLine(64,0,__PYX_ERR(21, 64, __pyx_L1_error))
         __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_fake_c_doc);
 
         /* "src/lxml/relaxng.pxi":58
@@ -202896,6 +216130,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     filename = _encodeFilename(file)
  *                     with self._error_log:
  */
+      __Pyx_TraceLine(66,0,__PYX_ERR(21, 66, __pyx_L1_error))
       /*else*/ {
         __Pyx_INCREF(Py_None);
         __pyx_v_doc = ((struct LxmlDocument *)Py_None);
@@ -202907,6 +216142,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     with self._error_log:
  *                         parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
  */
+        __Pyx_TraceLine(67,0,__PYX_ERR(21, 67, __pyx_L1_error))
         __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 67, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_v_filename = __pyx_t_1;
@@ -202919,13 +216155,19 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                         parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
  *             elif (_getFilenameForFile(file) or '')[-4:].lower() == '.rnc':
  */
+        __Pyx_TraceLine(68,0,__PYX_ERR(21, 68, __pyx_L1_error))
         /*with:*/ {
           __pyx_t_11 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(21, 68, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __pyx_t_8 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(21, 68, __pyx_L6_error)
           /*try:*/ {
             {
-              (void)__pyx_t_12; (void)__pyx_t_13; (void)__pyx_t_14; /* mark used */
+              __Pyx_PyThreadState_declare
+              __Pyx_PyThreadState_assign
+              __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
+              __Pyx_XGOTREF(__pyx_t_12);
+              __Pyx_XGOTREF(__pyx_t_13);
+              __Pyx_XGOTREF(__pyx_t_14);
               /*try:*/ {
 
                 /* "src/lxml/relaxng.pxi":69
@@ -202935,6 +216177,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             elif (_getFilenameForFile(file) or '')[-4:].lower() == '.rnc':
  *                 _require_rnc2rng()
  */
+                __Pyx_TraceLine(69,0,__PYX_ERR(21, 69, __pyx_L10_error))
                 __pyx_v_parser_ctxt = xmlRelaxNGNewParserCtxt(PyBytes_AS_STRING(__pyx_v_filename));
 
                 /* "src/lxml/relaxng.pxi":68
@@ -202945,12 +216188,65 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             elif (_getFilenameForFile(file) or '')[-4:].lower() == '.rnc':
  */
               }
+              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+              goto __pyx_L15_try_end;
+              __pyx_L10_error:;
+              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+              /*except:*/ {
+                __Pyx_AddTraceback("lxml.etree.RelaxNG.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(21, 68, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_1);
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_GOTREF(__pyx_t_10);
+                __pyx_t_2 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 68, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, NULL);
+                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 68, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_15);
+                __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_15);
+                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+                if (__pyx_t_5 < 0) __PYX_ERR(21, 68, __pyx_L12_except_error)
+                __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
+                if (__pyx_t_6) {
+                  __Pyx_GIVEREF(__pyx_t_1);
+                  __Pyx_GIVEREF(__pyx_t_4);
+                  __Pyx_XGIVEREF(__pyx_t_10);
+                  __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_10);
+                  __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_10 = 0; 
+                  __PYX_ERR(21, 68, __pyx_L12_except_error)
+                }
+                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+                goto __pyx_L11_exception_handled;
+              }
+              __pyx_L12_except_error:;
+              __Pyx_XGIVEREF(__pyx_t_12);
+              __Pyx_XGIVEREF(__pyx_t_13);
+              __Pyx_XGIVEREF(__pyx_t_14);
+              __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+              goto __pyx_L1_error;
+              __pyx_L11_exception_handled:;
+              __Pyx_XGIVEREF(__pyx_t_12);
+              __Pyx_XGIVEREF(__pyx_t_13);
+              __Pyx_XGIVEREF(__pyx_t_14);
+              __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+              __pyx_L15_try_end:;
             }
           }
           /*finally:*/ {
             /*normal exit:*/{
               if (__pyx_t_11) {
-                __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__142, NULL);
+                __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__389, NULL);
                 __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                 if (unlikely(!__pyx_t_14)) __PYX_ERR(21, 68, __pyx_L1_error)
                 __Pyx_GOTREF(__pyx_t_14);
@@ -202960,11 +216256,11 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
             }
             __pyx_L9:;
           }
-          goto __pyx_L16;
+          goto __pyx_L19;
           __pyx_L6_error:;
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           goto __pyx_L1_error;
-          __pyx_L16:;
+          __pyx_L19:;
         }
       }
       __pyx_L5:;
@@ -202986,47 +216282,48 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 _require_rnc2rng()
  *                 rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  */
-    __pyx_t_10 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_file); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 70, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(21, 70, __pyx_L1_error)
-    if (!__pyx_t_5) {
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_TraceLine(70,0,__PYX_ERR(21, 70, __pyx_L1_error))
+    __pyx_t_1 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(21, 70, __pyx_L1_error)
+    if (!__pyx_t_6) {
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __Pyx_INCREF(__pyx_t_10);
-      __pyx_t_4 = __pyx_t_10;
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      goto __pyx_L17_bool_binop_done;
+      __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_4 = __pyx_t_1;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L20_bool_binop_done;
     }
-    __Pyx_INCREF(__pyx_kp_s__16);
-    __pyx_t_4 = __pyx_kp_s__16;
-    __pyx_L17_bool_binop_done:;
-    __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_4, -4L, 0, NULL, NULL, &__pyx_slice__143, 1, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 70, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_INCREF(__pyx_kp_s__23);
+    __pyx_t_4 = __pyx_kp_s__23;
+    __pyx_L20_bool_binop_done:;
+    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, -4L, 0, NULL, NULL, &__pyx_slice__390, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 70, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 70, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = NULL;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_10)) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_1)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_1);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_4, function);
       }
     }
-    if (__pyx_t_10) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    if (__pyx_t_1) {
+      __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 70, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 70, __pyx_L1_error)
     }
-    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s_rnc, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(21, 70, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (__pyx_t_5) {
+    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_kp_s_rnc, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(21, 70, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    if (__pyx_t_6) {
 
       /* "src/lxml/relaxng.pxi":71
  *                         parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
@@ -203035,6 +216332,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  *                 doc = _parseMemoryDocument(rng_data, parser=None, url=None)
  */
+      __Pyx_TraceLine(71,0,__PYX_ERR(21, 71, __pyx_L1_error))
       __pyx_t_8 = __pyx_f_4lxml_5etree__require_rnc2rng(); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(21, 71, __pyx_L1_error)
 
       /* "src/lxml/relaxng.pxi":72
@@ -203044,6 +216342,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 doc = _parseMemoryDocument(rng_data, parser=None, url=None)
  *                 root_node = doc.getroot()
  */
+      __Pyx_TraceLine(72,0,__PYX_ERR(21, 72, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_dumps); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 72, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_load); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 72, __pyx_L1_error)
@@ -203059,23 +216358,23 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_file); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_2)) {
           PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_file};
-          __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_GOTREF(__pyx_t_1);
         } else
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
           PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_file};
-          __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
+          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_GOTREF(__pyx_t_1);
         } else
         #endif
         {
@@ -203085,8 +216384,8 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
           __Pyx_INCREF(__pyx_v_file);
           __Pyx_GIVEREF(__pyx_v_file);
           PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_file);
-          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         }
       }
@@ -203102,43 +216401,43 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_10);
       } else {
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_10};
-          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
+          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
+          __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_10};
-          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
+          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
+          __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else
         #endif
         {
           __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 72, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
-          __Pyx_GIVEREF(__pyx_t_10);
-          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
-          __pyx_t_10 = 0;
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_1);
+          __pyx_t_1 = 0;
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         }
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_v_rng_data = __pyx_t_1;
-      __pyx_t_1 = 0;
+      __pyx_v_rng_data = __pyx_t_10;
+      __pyx_t_10 = 0;
 
       /* "src/lxml/relaxng.pxi":73
  *                 _require_rnc2rng()
@@ -203147,10 +216446,11 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 root_node = doc.getroot()
  *                 fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  */
-      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_rng_data, Py_None, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 73, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
-      __pyx_t_1 = 0;
+      __Pyx_TraceLine(73,0,__PYX_ERR(21, 73, __pyx_L1_error))
+      __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_rng_data, Py_None, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 73, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_10);
+      __pyx_t_10 = 0;
 
       /* "src/lxml/relaxng.pxi":74
  *                 rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
@@ -203159,11 +216459,12 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  */
-      __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 74, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(21, 74, __pyx_L1_error)
-      __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
-      __pyx_t_1 = 0;
+      __Pyx_TraceLine(74,0,__PYX_ERR(21, 74, __pyx_L1_error))
+      __pyx_t_10 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 74, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(21, 74, __pyx_L1_error)
+      __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_10);
+      __pyx_t_10 = 0;
 
       /* "src/lxml/relaxng.pxi":75
  *                 doc = _parseMemoryDocument(rng_data, parser=None, url=None)
@@ -203172,6 +216473,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
  *             else:
  */
+      __Pyx_TraceLine(75,0,__PYX_ERR(21, 75, __pyx_L1_error))
       __pyx_t_7 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(21, 75, __pyx_L1_error)
       __pyx_v_fake_c_doc = __pyx_t_7;
 
@@ -203182,6 +216484,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             else:
  *                 doc = _parseDocument(file, parser=None, base_url=None)
  */
+      __Pyx_TraceLine(76,0,__PYX_ERR(21, 76, __pyx_L1_error))
       __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_fake_c_doc);
 
       /* "src/lxml/relaxng.pxi":70
@@ -203201,11 +216504,12 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
  *         else:
  */
+    __Pyx_TraceLine(78,0,__PYX_ERR(21, 78, __pyx_L1_error))
     /*else*/ {
-      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 78, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
-      __pyx_t_1 = 0;
+      __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None)); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 78, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_10);
+      __pyx_t_10 = 0;
 
       /* "src/lxml/relaxng.pxi":79
  *             else:
@@ -203214,6 +216518,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         else:
  *             raise RelaxNGParseError, u"No tree or file given"
  */
+      __Pyx_TraceLine(79,0,__PYX_ERR(21, 79, __pyx_L1_error))
       __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_doc->_c_doc);
     }
     __pyx_L4:;
@@ -203235,6 +216540,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  * 
  *         if parser_ctxt is NULL:
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(21, 81, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_kp_u_No_tree_or_file_given, 0, 0);
     __PYX_ERR(21, 81, __pyx_L1_error)
@@ -203248,8 +216554,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             if fake_c_doc is not NULL:
  *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
  */
-  __pyx_t_5 = ((__pyx_v_parser_ctxt == NULL) != 0);
-  if (__pyx_t_5) {
+  __Pyx_TraceLine(83,0,__PYX_ERR(21, 83, __pyx_L1_error))
+  __pyx_t_6 = ((__pyx_v_parser_ctxt == NULL) != 0);
+  if (__pyx_t_6) {
 
     /* "src/lxml/relaxng.pxi":84
  * 
@@ -203258,8 +216565,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
  *             raise RelaxNGParseError(
  */
-    __pyx_t_5 = ((__pyx_v_fake_c_doc != NULL) != 0);
-    if (__pyx_t_5) {
+    __Pyx_TraceLine(84,0,__PYX_ERR(21, 84, __pyx_L1_error))
+    __pyx_t_6 = ((__pyx_v_fake_c_doc != NULL) != 0);
+    if (__pyx_t_6) {
 
       /* "src/lxml/relaxng.pxi":85
  *         if parser_ctxt is NULL:
@@ -203268,6 +216576,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             raise RelaxNGParseError(
  *                 self._error_log._buildExceptionMessage(
  */
+      __Pyx_TraceLine(85,0,__PYX_ERR(21, 85, __pyx_L1_error))
       __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
 
       /* "src/lxml/relaxng.pxi":84
@@ -203286,8 +216595,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     u"Document is not parsable as Relax NG"),
  *                 self._error_log)
  */
-    __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_Document_is_not_parsable_as_Rela); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 87, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_TraceLine(87,0,__PYX_ERR(21, 87, __pyx_L1_error))
+    __pyx_t_10 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_Document_is_not_parsable_as_Rela); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 87, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
 
     /* "src/lxml/relaxng.pxi":86
  *             if fake_c_doc is not NULL:
@@ -203296,19 +216606,20 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 self._error_log._buildExceptionMessage(
  *                     u"Document is not parsable as Relax NG"),
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(21, 86, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 86, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_10);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->__pyx_base._error_log));
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 86, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_10 = 0;
+    __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 86, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __PYX_ERR(21, 86, __pyx_L1_error)
 
     /* "src/lxml/relaxng.pxi":83
@@ -203327,6 +216638,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             parser_ctxt, _receiveError, <void*>self._error_log)
  *         _connectGenericErrorLog(self._error_log, xmlerror.XML_FROM_RELAXNGP)
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(21, 91, __pyx_L1_error))
   xmlRelaxNGSetParserStructuredErrors(__pyx_v_parser_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
 
   /* "src/lxml/relaxng.pxi":93
@@ -203336,12 +216648,13 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         self._c_schema = relaxng.xmlRelaxNGParse(parser_ctxt)
  *         _connectGenericErrorLog(None)
  */
-  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base._error_log);
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_15.__pyx_n = 1;
-  __pyx_t_15.c_domain = XML_FROM_RELAXNGP;
-  __pyx_f_4lxml_5etree__connectGenericErrorLog(__pyx_t_1, &__pyx_t_15); 
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_TraceLine(93,0,__PYX_ERR(21, 93, __pyx_L1_error))
+  __pyx_t_10 = ((PyObject *)__pyx_v_self->__pyx_base._error_log);
+  __Pyx_INCREF(__pyx_t_10);
+  __pyx_t_16.__pyx_n = 1;
+  __pyx_t_16.c_domain = XML_FROM_RELAXNGP;
+  __pyx_f_4lxml_5etree__connectGenericErrorLog(__pyx_t_10, &__pyx_t_16); 
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
   /* "src/lxml/relaxng.pxi":94
  *             parser_ctxt, _receiveError, <void*>self._error_log)
@@ -203350,6 +216663,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         _connectGenericErrorLog(None)
  * 
  */
+  __Pyx_TraceLine(94,0,__PYX_ERR(21, 94, __pyx_L1_error))
   __pyx_v_self->_c_schema = xmlRelaxNGParse(__pyx_v_parser_ctxt);
 
   /* "src/lxml/relaxng.pxi":95
@@ -203359,6 +216673,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  * 
  *         relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(21, 95, __pyx_L1_error))
   __pyx_f_4lxml_5etree__connectGenericErrorLog(Py_None, NULL);
 
   /* "src/lxml/relaxng.pxi":97
@@ -203368,6 +216683,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *         if self._c_schema is NULL:
  *             if fake_c_doc is not NULL:
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(21, 97, __pyx_L1_error))
   xmlRelaxNGFreeParserCtxt(__pyx_v_parser_ctxt);
 
   /* "src/lxml/relaxng.pxi":98
@@ -203377,8 +216693,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             if fake_c_doc is not NULL:
  *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
  */
-  __pyx_t_5 = ((__pyx_v_self->_c_schema == NULL) != 0);
-  if (__pyx_t_5) {
+  __Pyx_TraceLine(98,0,__PYX_ERR(21, 98, __pyx_L1_error))
+  __pyx_t_6 = ((__pyx_v_self->_c_schema == NULL) != 0);
+  if (__pyx_t_6) {
 
     /* "src/lxml/relaxng.pxi":99
  *         relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
@@ -203387,8 +216704,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
  *             raise RelaxNGParseError(
  */
-    __pyx_t_5 = ((__pyx_v_fake_c_doc != NULL) != 0);
-    if (__pyx_t_5) {
+    __Pyx_TraceLine(99,0,__PYX_ERR(21, 99, __pyx_L1_error))
+    __pyx_t_6 = ((__pyx_v_fake_c_doc != NULL) != 0);
+    if (__pyx_t_6) {
 
       /* "src/lxml/relaxng.pxi":100
  *         if self._c_schema is NULL:
@@ -203397,6 +216715,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             raise RelaxNGParseError(
  *                 self._error_log._buildExceptionMessage(
  */
+      __Pyx_TraceLine(100,0,__PYX_ERR(21, 100, __pyx_L1_error))
       __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
 
       /* "src/lxml/relaxng.pxi":99
@@ -203415,8 +216734,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                     u"Document is not valid Relax NG"),
  *                 self._error_log)
  */
-    __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_Document_is_not_valid_Relax_NG); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 102, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_TraceLine(102,0,__PYX_ERR(21, 102, __pyx_L1_error))
+    __pyx_t_10 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_Document_is_not_valid_Relax_NG); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 102, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
 
     /* "src/lxml/relaxng.pxi":101
  *             if fake_c_doc is not NULL:
@@ -203425,19 +216745,20 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *                 self._error_log._buildExceptionMessage(
  *                     u"Document is not valid Relax NG"),
  */
+    __Pyx_TraceLine(101,0,__PYX_ERR(21, 101, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 101, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_10);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base._error_log));
     PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->__pyx_base._error_log));
-    __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 101, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_10 = 0;
+    __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNGParseError), __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 101, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __PYX_ERR(21, 101, __pyx_L1_error)
 
     /* "src/lxml/relaxng.pxi":98
@@ -203456,8 +216777,9 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
  * 
  */
-  __pyx_t_5 = ((__pyx_v_fake_c_doc != NULL) != 0);
-  if (__pyx_t_5) {
+  __Pyx_TraceLine(105,0,__PYX_ERR(21, 105, __pyx_L1_error))
+  __pyx_t_6 = ((__pyx_v_fake_c_doc != NULL) != 0);
+  if (__pyx_t_6) {
 
     /* "src/lxml/relaxng.pxi":106
  *                 self._error_log)
@@ -203466,6 +216788,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
  * 
  *     def __dealloc__(self):
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(21, 106, __pyx_L1_error))
     __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
 
     /* "src/lxml/relaxng.pxi":105
@@ -203502,6 +216825,7 @@ static int __pyx_pf_4lxml_5etree_7RelaxNG_2__init__(struct __pyx_obj_4lxml_5etre
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XDECREF(__pyx_v_rng_data);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -203526,8 +216850,10 @@ static void __pyx_pw_4lxml_5etree_7RelaxNG_5__dealloc__(PyObject *__pyx_v_self)
 }
 
 static void __pyx_pf_4lxml_5etree_7RelaxNG_4__dealloc__(struct __pyx_obj_4lxml_5etree_RelaxNG *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[21], 108, 0, __PYX_ERR(21, 108, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":109
  * 
@@ -203536,6 +216862,7 @@ static void __pyx_pf_4lxml_5etree_7RelaxNG_4__dealloc__(struct __pyx_obj_4lxml_5
  * 
  *     def __call__(self, etree):
  */
+  __Pyx_TraceLine(109,0,__PYX_ERR(21, 109, __pyx_L1_error))
   xmlRelaxNGFree(__pyx_v_self->_c_schema);
 
   /* "src/lxml/relaxng.pxi":108
@@ -203547,6 +216874,11 @@ static void __pyx_pf_4lxml_5etree_7RelaxNG_4__dealloc__(struct __pyx_obj_4lxml_5
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.RelaxNG.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -203619,6 +216951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
   xmlRelaxNGValidCtxt *__pyx_v_valid_ctxt;
   int __pyx_v_ret;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -203635,6 +216968,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
   PyObject *__pyx_t_13 = NULL;
   PyObject *__pyx_t_14 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[21], 111, 0, __PYX_ERR(21, 111, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":123
  *         cdef int ret
@@ -203643,6 +216977,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *         doc = _documentOrRaise(etree)
  *         root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(21, 123, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_schema != NULL) != 0))) {
@@ -203659,6 +216994,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *         root_node = _rootNodeOrRaise(etree)
  * 
  */
+  __Pyx_TraceLine(124,0,__PYX_ERR(21, 124, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -203671,6 +217007,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  * 
  *         valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(21, 125, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -203683,6 +217020,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *         if valid_ctxt is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(127,0,__PYX_ERR(21, 127, __pyx_L1_error))
   __pyx_v_valid_ctxt = xmlRelaxNGNewValidCtxt(__pyx_v_self->_c_schema);
 
   /* "src/lxml/relaxng.pxi":128
@@ -203692,6 +217030,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(128,0,__PYX_ERR(21, 128, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_valid_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -203702,6 +217041,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  * 
  *         try:
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(21, 129, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(21, 129, __pyx_L1_error)
 
     /* "src/lxml/relaxng.pxi":128
@@ -203720,6 +217060,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             self._error_log.clear()
  *             relaxng.xmlRelaxNGSetValidStructuredErrors(
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(21, 131, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/relaxng.pxi":132
@@ -203729,6 +217070,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             relaxng.xmlRelaxNGSetValidStructuredErrors(
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  */
+    __Pyx_TraceLine(132,0,__PYX_ERR(21, 132, __pyx_L5_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->__pyx_base._error_log, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 132, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -203740,6 +217082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  *             _connectGenericErrorLog(self._error_log, xmlerror.XML_FROM_RELAXNGV)
  */
+    __Pyx_TraceLine(133,0,__PYX_ERR(21, 133, __pyx_L5_error))
     xmlRelaxNGSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
 
     /* "src/lxml/relaxng.pxi":135
@@ -203749,6 +217092,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *             with nogil:
  */
+    __Pyx_TraceLine(135,0,__PYX_ERR(21, 135, __pyx_L5_error))
     __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base._error_log);
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_3.__pyx_n = 1;
@@ -203763,6 +217107,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             with nogil:
  *                 ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(21, 136, __pyx_L5_error))
     __pyx_t_4 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_4 == ((xmlDoc *)NULL))) __PYX_ERR(21, 136, __pyx_L5_error)
     __pyx_v_c_doc = __pyx_t_4;
 
@@ -203773,6 +217118,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *                 ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+    __Pyx_TraceLine(137,0,__PYX_ERR(21, 137, __pyx_L5_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -203788,6 +217134,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  *         finally:
  */
+          __Pyx_TraceLine(138,1,__PYX_ERR(21, 138, __pyx_L8_error))
           __pyx_v_ret = xmlRelaxNGValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
         }
 
@@ -203798,6 +217145,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *                 ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+        __Pyx_TraceLine(137,1,__PYX_ERR(21, 137, __pyx_L5_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -203806,6 +217154,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
             #endif
             goto __pyx_L9;
           }
+          __pyx_L8_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L5_error;
+          }
           __pyx_L9:;
         }
     }
@@ -203817,6 +217172,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *         finally:
  *             _connectGenericErrorLog(None)
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(21, 139, __pyx_L5_error))
     __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
   }
 
@@ -203827,6 +217183,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)
  * 
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(21, 141, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       __pyx_f_4lxml_5etree__connectGenericErrorLog(Py_None, NULL);
@@ -203838,6 +217195,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  * 
  *         if ret == -1:
  */
+      __Pyx_TraceLine(142,0,__PYX_ERR(21, 142, __pyx_L1_error))
       xmlRelaxNGFreeValidCtxt(__pyx_v_valid_ctxt);
       goto __pyx_L6;
     }
@@ -203865,6 +217223,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)
  * 
  */
+        __Pyx_TraceLine(141,0,__PYX_ERR(21, 141, __pyx_L11_error))
         __pyx_f_4lxml_5etree__connectGenericErrorLog(Py_None, NULL);
 
         /* "src/lxml/relaxng.pxi":142
@@ -203874,6 +217233,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  * 
  *         if ret == -1:
  */
+        __Pyx_TraceLine(142,0,__PYX_ERR(21, 142, __pyx_L11_error))
         xmlRelaxNGFreeValidCtxt(__pyx_v_valid_ctxt);
       }
       if (PY_MAJOR_VERSION >= 3) {
@@ -203889,6 +217249,18 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
       __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
       __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
       goto __pyx_L1_error;
+      __pyx_L11_error:;
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_XGIVEREF(__pyx_t_13);
+        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
+      }
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
+      goto __pyx_L1_error;
     }
     __pyx_L6:;
   }
@@ -203900,6 +217272,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             raise RelaxNGValidateError(
  *                 u"Internal error in Relax NG validation",
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(21, 144, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -203910,6 +217283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *                 u"Internal error in Relax NG validation",
  *                 self._error_log)
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(21, 145, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 145, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_kp_u_Internal_error_in_Relax_NG_valid);
@@ -203941,6 +217315,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *             return True
  *         else:
  */
+  __Pyx_TraceLine(148,0,__PYX_ERR(21, 148, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == 0) != 0);
   if (__pyx_t_2) {
 
@@ -203951,6 +217326,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  *         else:
  *             return False
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(21, 149, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -203972,6 +217348,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
  * 
  *     @classmethod
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(21, 151, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
@@ -203997,6 +217374,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_6__call__(struct __pyx_obj_4lxml
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -204079,6 +217457,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7RelaxNG_9from_rnc_string(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_src, PyObject *__pyx_v_base_url) {
   PyObject *__pyx_v_rng_str = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -204087,7 +217466,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *_
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__391)
   __Pyx_RefNannySetupContext("from_rnc_string", 0);
+  __Pyx_TraceCall("from_rnc_string", __pyx_f[21], 154, 0, __PYX_ERR(21, 154, __pyx_L1_error));
 
   /* "src/lxml/relaxng.pxi":162
  *         will enable resolving resource references relative to the source.
@@ -204096,6 +217477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *_
  *         rng_str = _rnc2rng.dumps(_rnc2rng.loads(src))
  *         return cls(_parseMemoryDocument(rng_str, parser=None, url=base_url))
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(21, 162, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__require_rnc2rng(); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 162, __pyx_L1_error)
 
   /* "src/lxml/relaxng.pxi":163
@@ -204104,6 +217486,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *_
  *         rng_str = _rnc2rng.dumps(_rnc2rng.loads(src))             # <<<<<<<<<<<<<<
  *         return cls(_parseMemoryDocument(rng_str, parser=None, url=base_url))
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(21, 163, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_dumps); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__rnc2rng, __pyx_n_s_loads); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 163, __pyx_L1_error)
@@ -204205,6 +217588,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *_
  *         rng_str = _rnc2rng.dumps(_rnc2rng.loads(src))
  *         return cls(_parseMemoryDocument(rng_str, parser=None, url=base_url))             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(21, 164, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_rng_str, __pyx_v_base_url, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 164, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -204236,6 +217620,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG_8from_rnc_string(PyTypeObject *_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_rng_str);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -204266,8 +217651,10 @@ static int __pyx_pw_4lxml_5etree_9XMLSchema_1__cinit__(PyObject *__pyx_v_self, P
 
 static int __pyx_pf_4lxml_5etree_9XMLSchema___cinit__(struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[22], 41, 0, __PYX_ERR(22, 41, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":42
  * 
@@ -204276,6 +217663,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema___cinit__(struct __pyx_obj_4lxml_5et
  *         self._add_attribute_defaults = False
  * 
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(22, 42, __pyx_L1_error))
   __pyx_v_self->_has_default_attributes = 1;
 
   /* "src/lxml/xmlschema.pxi":43
@@ -204285,6 +217673,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema___cinit__(struct __pyx_obj_4lxml_5et
  * 
  *     def __init__(self, etree=None, *, file=None, bint attribute_defaults=False):
  */
+  __Pyx_TraceLine(43,0,__PYX_ERR(22, 43, __pyx_L1_error))
   __pyx_v_self->_add_attribute_defaults = 0;
 
   /* "src/lxml/xmlschema.pxi":41
@@ -204297,6 +217686,12 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema___cinit__(struct __pyx_obj_4lxml_5et
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.XMLSchema.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -204388,6 +217783,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
   struct LxmlElement *__pyx_v_root_node = NULL;
   PyObject *__pyx_v_filename = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -204397,6 +217793,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
   int __pyx_t_6;
   xmlDoc *__pyx_t_7;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[22], 45, 0, __PYX_ERR(22, 45, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":49
  *         cdef xmlDoc* c_doc
@@ -204405,6 +217802,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         _Validator.__init__(self)
  *         c_doc = NULL
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(22, 49, __pyx_L1_error))
   __pyx_v_self->_add_attribute_defaults = __pyx_v_attribute_defaults;
 
   /* "src/lxml/xmlschema.pxi":50
@@ -204414,6 +217812,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         c_doc = NULL
  *         if etree is not None:
  */
+  __Pyx_TraceLine(50,0,__PYX_ERR(22, 50, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 50, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -204468,6 +217867,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         if etree is not None:
  *             doc = _documentOrRaise(etree)
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(22, 51, __pyx_L1_error))
   __pyx_v_c_doc = NULL;
 
   /* "src/lxml/xmlschema.pxi":52
@@ -204477,6 +217877,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             doc = _documentOrRaise(etree)
  *             root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(52,0,__PYX_ERR(22, 52, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_etree != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -204488,6 +217889,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             root_node = _rootNodeOrRaise(etree)
  *             c_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
  */
+    __Pyx_TraceLine(53,0,__PYX_ERR(22, 53, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 53, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -204500,6 +217902,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             c_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
  *             self._doc = _documentFactory(c_doc, doc._parser)
  */
+    __Pyx_TraceLine(54,0,__PYX_ERR(22, 54, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 54, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -204512,6 +217915,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             self._doc = _documentFactory(c_doc, doc._parser)
  *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(c_doc)
  */
+    __Pyx_TraceLine(55,0,__PYX_ERR(22, 55, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(22, 55, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_7;
 
@@ -204522,6 +217926,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(c_doc)
  *         elif file is not None:
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(22, 56, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_v_doc->_parser);
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 56, __pyx_L1_error)
@@ -204540,6 +217945,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         elif file is not None:
  *             if _isString(file):
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(22, 57, __pyx_L1_error))
     __pyx_v_parser_ctxt = xmlSchemaNewDocParserCtxt(__pyx_v_c_doc);
 
     /* "src/lxml/xmlschema.pxi":52
@@ -204559,6 +217965,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             if _isString(file):
  *                 filename = _encodeFilename(file)
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(22, 58, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_file != Py_None);
   __pyx_t_5 = (__pyx_t_6 != 0);
   if (likely(__pyx_t_5)) {
@@ -204570,6 +217977,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *                 filename = _encodeFilename(file)
  *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
  */
+    __Pyx_TraceLine(59,0,__PYX_ERR(22, 59, __pyx_L1_error))
     __pyx_t_5 = (_isString(__pyx_v_file) != 0);
     if (__pyx_t_5) {
 
@@ -204580,6 +217988,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
  *             else:
  */
+      __Pyx_TraceLine(60,0,__PYX_ERR(22, 60, __pyx_L1_error))
       __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 60, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_v_filename = __pyx_t_2;
@@ -204592,6 +218001,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             else:
  *                 self._doc = _parseDocument(file, None, None)
  */
+      __Pyx_TraceLine(61,0,__PYX_ERR(22, 61, __pyx_L1_error))
       __pyx_v_parser_ctxt = xmlSchemaNewParserCtxt(PyBytes_AS_STRING(__pyx_v_filename));
 
       /* "src/lxml/xmlschema.pxi":59
@@ -204611,6 +218021,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *                 parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(self._doc._c_doc)
  *         else:
  */
+    __Pyx_TraceLine(63,0,__PYX_ERR(22, 63, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 63, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -204627,6 +218038,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         else:
  *             raise XMLSchemaParseError, u"No tree or file given"
  */
+      __Pyx_TraceLine(64,0,__PYX_ERR(22, 64, __pyx_L1_error))
       __pyx_v_parser_ctxt = xmlSchemaNewDocParserCtxt(__pyx_v_self->_doc->_c_doc);
     }
     __pyx_L4:;
@@ -204648,6 +218060,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  * 
  *         if parser_ctxt is NULL:
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(22, 66, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XMLSchemaParseError), __pyx_kp_u_No_tree_or_file_given, 0, 0);
     __PYX_ERR(22, 66, __pyx_L1_error)
@@ -204661,6 +218074,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(22, 68, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_parser_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_5)) {
 
@@ -204671,6 +218085,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  * 
  *         xmlschema.xmlSchemaSetParserStructuredErrors(
  */
+    __Pyx_TraceLine(69,0,__PYX_ERR(22, 69, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(22, 69, __pyx_L1_error)
 
     /* "src/lxml/xmlschema.pxi":68
@@ -204689,6 +218104,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             parser_ctxt, _receiveError, <void*>self._error_log)
  *         if self._doc is not None:
  */
+  __Pyx_TraceLine(71,0,__PYX_ERR(22, 71, __pyx_L1_error))
   xmlSchemaSetParserStructuredErrors(__pyx_v_parser_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
 
   /* "src/lxml/xmlschema.pxi":73
@@ -204698,6 +218114,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             # calling xmlSchemaParse on a schema with imports or
  *             # includes will cause libxml2 to create an internal
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(22, 73, __pyx_L1_error))
   __pyx_t_5 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -204709,6 +218126,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         with nogil:
  *             self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
  */
+    __Pyx_TraceLine(78,0,__PYX_ERR(22, 78, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_self->_doc->_parser);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFromParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2));
@@ -204730,6 +218148,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
  *         if self._doc is not None:
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(22, 79, __pyx_L1_error))
   {
       #ifdef WITH_THREAD
       PyThreadState *_save;
@@ -204745,6 +218164,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         if self._doc is not None:
  *             __GLOBAL_PARSER_CONTEXT.popImpliedContext()
  */
+        __Pyx_TraceLine(80,1,__PYX_ERR(22, 80, __pyx_L8_error))
         __pyx_v_self->_c_schema = xmlSchemaParse(__pyx_v_parser_ctxt);
       }
 
@@ -204755,6 +218175,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
  *         if self._doc is not None:
  */
+      __Pyx_TraceLine(79,1,__PYX_ERR(22, 79, __pyx_L1_error))
       /*finally:*/ {
         /*normal exit:*/{
           #ifdef WITH_THREAD
@@ -204763,6 +218184,13 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
           #endif
           goto __pyx_L9;
         }
+        __pyx_L8_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
         __pyx_L9:;
       }
   }
@@ -204774,6 +218202,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             __GLOBAL_PARSER_CONTEXT.popImpliedContext()
  *         xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(22, 81, __pyx_L1_error))
   __pyx_t_6 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_5 = (__pyx_t_6 != 0);
   if (__pyx_t_5) {
@@ -204785,6 +218214,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)
  * 
  */
+    __Pyx_TraceLine(82,0,__PYX_ERR(22, 82, __pyx_L1_error))
     __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);
 
     /* "src/lxml/xmlschema.pxi":81
@@ -204803,6 +218233,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  * 
  *         if self._c_schema is NULL:
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(22, 83, __pyx_L1_error))
   xmlSchemaFreeParserCtxt(__pyx_v_parser_ctxt);
 
   /* "src/lxml/xmlschema.pxi":85
@@ -204812,6 +218243,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             raise XMLSchemaParseError(
  *                 self._error_log._buildExceptionMessage(
  */
+  __Pyx_TraceLine(85,0,__PYX_ERR(22, 85, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_self->_c_schema == NULL) != 0);
   if (unlikely(__pyx_t_5)) {
 
@@ -204822,6 +218254,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *                     u"Document is not valid XML Schema"),
  *                 self._error_log)
  */
+    __Pyx_TraceLine(87,0,__PYX_ERR(22, 87, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->__pyx_base._error_log), __pyx_kp_u_Document_is_not_valid_XML_Schema); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 87, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
 
@@ -204832,6 +218265,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *                 self._error_log._buildExceptionMessage(
  *                     u"Document is not valid XML Schema"),
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(22, 86, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 86, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
@@ -204863,6 +218297,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *             self._has_default_attributes = _check_for_default_attributes(self._doc)
  *         self._add_attribute_defaults = attribute_defaults and self._has_default_attributes
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(22, 91, __pyx_L1_error))
   __pyx_t_5 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -204874,6 +218309,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  *         self._add_attribute_defaults = attribute_defaults and self._has_default_attributes
  * 
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(22, 92, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes));
     __pyx_t_1 = ((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes); __pyx_t_4 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -204938,6 +218374,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(22, 93, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_attribute_defaults != 0);
   if (__pyx_t_5) {
   } else {
@@ -204971,6 +218408,7 @@ static int __pyx_pf_4lxml_5etree_9XMLSchema_2__init__(struct __pyx_obj_4lxml_5et
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -204995,8 +218433,10 @@ static void __pyx_pw_4lxml_5etree_9XMLSchema_5__dealloc__(PyObject *__pyx_v_self
 }
 
 static void __pyx_pf_4lxml_5etree_9XMLSchema_4__dealloc__(struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[22], 95, 0, __PYX_ERR(22, 95, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":96
  * 
@@ -205005,6 +218445,7 @@ static void __pyx_pf_4lxml_5etree_9XMLSchema_4__dealloc__(struct __pyx_obj_4lxml
  * 
  *     def __call__(self, etree):
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(22, 96, __pyx_L1_error))
   xmlSchemaFree(__pyx_v_self->_c_schema);
 
   /* "src/lxml/xmlschema.pxi":95
@@ -205016,6 +218457,11 @@ static void __pyx_pf_4lxml_5etree_9XMLSchema_4__dealloc__(struct __pyx_obj_4lxml
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.XMLSchema.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -205088,6 +218534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
   xmlDoc *__pyx_v_c_doc;
   int __pyx_v_ret;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -205103,6 +218550,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[22], 98, 0, __PYX_ERR(22, 98, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":111
  *         cdef int ret
@@ -205111,6 +218559,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *         doc = _documentOrRaise(etree)
  *         root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(22, 111, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_schema != NULL) != 0))) {
@@ -205127,6 +218576,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *         root_node = _rootNodeOrRaise(etree)
  * 
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(22, 112, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -205139,6 +218589,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  * 
  *         valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(22, 113, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -205151,6 +218602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *         if valid_ctxt is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(115,0,__PYX_ERR(22, 115, __pyx_L1_error))
   __pyx_v_valid_ctxt = xmlSchemaNewValidCtxt(__pyx_v_self->_c_schema);
 
   /* "src/lxml/xmlschema.pxi":116
@@ -205160,6 +218612,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(22, 116, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_valid_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -205170,6 +218623,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  * 
  *         try:
  */
+    __Pyx_TraceLine(117,0,__PYX_ERR(22, 117, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(22, 117, __pyx_L1_error)
 
     /* "src/lxml/xmlschema.pxi":116
@@ -205188,6 +218642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             if self._add_attribute_defaults:
  *                 xmlschema.xmlSchemaSetValidOptions(
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(22, 119, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/xmlschema.pxi":120
@@ -205197,6 +218652,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                 xmlschema.xmlSchemaSetValidOptions(
  *                     valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(22, 120, __pyx_L5_error))
     __pyx_t_2 = (__pyx_v_self->_add_attribute_defaults != 0);
     if (__pyx_t_2) {
 
@@ -205207,6 +218663,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                     valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
  * 
  */
+      __Pyx_TraceLine(121,0,__PYX_ERR(22, 121, __pyx_L5_error))
       (void)(xmlSchemaSetValidOptions(__pyx_v_valid_ctxt, XML_SCHEMA_VAL_VC_I_CREATE));
 
       /* "src/lxml/xmlschema.pxi":120
@@ -205225,6 +218682,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             xmlschema.xmlSchemaSetValidStructuredErrors(
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  */
+    __Pyx_TraceLine(124,0,__PYX_ERR(22, 124, __pyx_L5_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->__pyx_base._error_log, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 124, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -205236,6 +218694,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  * 
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(22, 125, __pyx_L5_error))
     xmlSchemaSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
 
     /* "src/lxml/xmlschema.pxi":128
@@ -205245,6 +218704,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             with nogil:
  *                 ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(22, 128, __pyx_L5_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(22, 128, __pyx_L5_error)
     __pyx_v_c_doc = __pyx_t_3;
 
@@ -205255,6 +218715,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                 ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(22, 129, __pyx_L5_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -205270,6 +218731,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  *         finally:
  */
+          __Pyx_TraceLine(130,1,__PYX_ERR(22, 130, __pyx_L9_error))
           __pyx_v_ret = xmlSchemaValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
         }
 
@@ -205280,6 +218742,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                 ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+        __Pyx_TraceLine(129,1,__PYX_ERR(22, 129, __pyx_L5_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -205288,6 +218751,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
             #endif
             goto __pyx_L10;
           }
+          __pyx_L9_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L5_error;
+          }
           __pyx_L10:;
         }
     }
@@ -205299,6 +218769,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *         finally:
  *             xmlschema.xmlSchemaFreeValidCtxt(valid_ctxt)
  */
+    __Pyx_TraceLine(131,0,__PYX_ERR(22, 131, __pyx_L5_error))
     __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
   }
 
@@ -205309,6 +218780,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  * 
  *         if ret == -1:
  */
+  __Pyx_TraceLine(133,0,__PYX_ERR(22, 133, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlSchemaFreeValidCtxt(__pyx_v_valid_ctxt);
@@ -205356,6 +218828,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             raise XMLSchemaValidateError(
  *                 u"Internal error in XML Schema validation.",
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(22, 135, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -205366,6 +218839,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *                 u"Internal error in XML Schema validation.",
  *                 self._error_log)
  */
+    __Pyx_TraceLine(136,0,__PYX_ERR(22, 136, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_kp_u_Internal_error_in_XML_Schema_val);
@@ -205397,6 +218871,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *             return True
  *         else:
  */
+  __Pyx_TraceLine(139,0,__PYX_ERR(22, 139, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == 0) != 0);
   if (__pyx_t_2) {
 
@@ -205407,6 +218882,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  *         else:
  *             return False
  */
+    __Pyx_TraceLine(140,0,__PYX_ERR(22, 140, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -205428,6 +218904,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
  * 
  *     cdef _ParserSchemaValidationContext _newSaxValidator(
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(22, 142, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
@@ -205453,6 +218930,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -205468,11 +218946,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema_6__call__(struct __pyx_obj_4lx
 static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lxml_5etree_9XMLSchema__newSaxValidator(struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_self, int __pyx_v_add_default_attributes) {
   struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_context = 0;
   struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_newSaxValidator", 0);
+  __Pyx_TraceCall("_newSaxValidator", __pyx_f[22], 144, 0, __PYX_ERR(22, 144, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":147
  *             self, bint add_default_attributes):
@@ -205481,6 +218961,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *         context._schema = self
  *         context._add_default_attributes = (self._has_default_attributes and (
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(22, 147, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_5etree__ParserSchemaValidationContext(((PyTypeObject *)__pyx_ptype_4lxml_5etree__ParserSchemaValidationContext), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 147, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_1);
@@ -205493,6 +218974,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *         context._add_default_attributes = (self._has_default_attributes and (
  *             add_default_attributes or self._add_attribute_defaults))
  */
+  __Pyx_TraceLine(148,0,__PYX_ERR(22, 148, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   __Pyx_GOTREF(__pyx_v_context->_schema);
@@ -205506,6 +218988,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *             add_default_attributes or self._add_attribute_defaults))
  *         return context
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(22, 149, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_has_default_attributes != 0);
   if (__pyx_t_3) {
   } else {
@@ -205520,6 +219003,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *         return context
  * 
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(22, 150, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_add_default_attributes != 0);
   if (!__pyx_t_3) {
   } else {
@@ -205537,6 +219021,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *             add_default_attributes or self._add_attribute_defaults))
  *         return context
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(22, 149, __pyx_L1_error))
   __pyx_v_context->_add_default_attributes = __pyx_t_2;
 
   /* "src/lxml/xmlschema.pxi":151
@@ -205546,6 +219031,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(151,0,__PYX_ERR(22, 151, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_context));
   __pyx_r = __pyx_v_context;
@@ -205567,6 +219053,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_context);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -205597,8 +219084,10 @@ static int __pyx_pw_4lxml_5etree_30_ParserSchemaValidationContext_1__cinit__(PyO
 
 static int __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___cinit__(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[22], 160, 0, __PYX_ERR(22, 160, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":161
  *     cdef bint _add_default_attributes
@@ -205607,6 +219096,7 @@ static int __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___cinit__(stru
  *         self._sax_plug = NULL
  *         self._add_default_attributes = False
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(22, 161, __pyx_L1_error))
   __pyx_v_self->_valid_ctxt = NULL;
 
   /* "src/lxml/xmlschema.pxi":162
@@ -205616,6 +219106,7 @@ static int __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___cinit__(stru
  *         self._add_default_attributes = False
  * 
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(22, 162, __pyx_L1_error))
   __pyx_v_self->_sax_plug = NULL;
 
   /* "src/lxml/xmlschema.pxi":163
@@ -205625,6 +219116,7 @@ static int __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___cinit__(stru
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(22, 163, __pyx_L1_error))
   __pyx_v_self->_add_default_attributes = 0;
 
   /* "src/lxml/xmlschema.pxi":160
@@ -205637,6 +219129,12 @@ static int __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___cinit__(stru
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree._ParserSchemaValidationContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -205661,9 +219159,11 @@ static void __pyx_pw_4lxml_5etree_30_ParserSchemaValidationContext_3__dealloc__(
 }
 
 static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[22], 165, 0, __PYX_ERR(22, 165, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":166
  * 
@@ -205672,6 +219172,7 @@ static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(
  *         if self._valid_ctxt:
  *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)
  */
+  __Pyx_TraceLine(166,0,__PYX_ERR(22, 166, __pyx_L1_error))
   __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(__pyx_v_self);
 
   /* "src/lxml/xmlschema.pxi":167
@@ -205681,6 +219182,7 @@ static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(
  *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)
  * 
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(22, 167, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_valid_ctxt != 0);
   if (__pyx_t_1) {
 
@@ -205691,6 +219193,7 @@ static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(
  * 
  *     cdef _ParserSchemaValidationContext copy(self):
  */
+    __Pyx_TraceLine(168,0,__PYX_ERR(22, 168, __pyx_L1_error))
     xmlSchemaFreeValidCtxt(__pyx_v_self->_valid_ctxt);
 
     /* "src/lxml/xmlschema.pxi":167
@@ -205711,6 +219214,11 @@ static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserSchemaValidationContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -205724,10 +219232,12 @@ static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext_2__dealloc__(
 
 static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
   struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("copy", 0);
+  __Pyx_TraceCall("copy", __pyx_f[22], 170, 0, __PYX_ERR(22, 170, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":171
  * 
@@ -205736,6 +219246,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *         return self._schema._newSaxValidator(
  *             self._add_default_attributes)
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(22, 171, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_schema) != Py_None);
@@ -205753,6 +219264,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  *             self._add_default_attributes)
  * 
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(22, 172, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
 
   /* "src/lxml/xmlschema.pxi":173
@@ -205762,6 +219274,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  * 
  *     cdef void inject_default_attributes(self, xmlDoc* c_doc):
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(22, 173, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_base.__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, __pyx_v_self->_add_default_attributes)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_2);
@@ -205783,6 +219296,7 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -205796,9 +219310,11 @@ static struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lx
  */
 
 static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self, xmlDoc *__pyx_v_c_doc) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("inject_default_attributes", 0);
+  __Pyx_TraceCall("inject_default_attributes", __pyx_f[22], 175, 0, __PYX_ERR(22, 175, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":179
  *         # after parsing, as libxml2 does not support this at parse
@@ -205807,6 +219323,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
  *             with nogil:
  *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(22, 179, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_add_default_attributes != 0);
   if (__pyx_t_1) {
 
@@ -205817,6 +219334,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
  *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
  * 
  */
+    __Pyx_TraceLine(180,0,__PYX_ERR(22, 180, __pyx_L1_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -205832,6 +219350,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
  * 
  *     cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt, _BaseErrorLog error_log) except -1:
  */
+          __Pyx_TraceLine(181,1,__PYX_ERR(22, 181, __pyx_L5_error))
           (void)(xmlSchemaValidateDoc(__pyx_v_self->_valid_ctxt, __pyx_v_c_doc));
         }
 
@@ -205842,6 +219361,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
  *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
  * 
  */
+        __Pyx_TraceLine(180,1,__PYX_ERR(22, 180, __pyx_L1_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -205850,6 +219370,13 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
             #endif
             goto __pyx_L6;
           }
+          __pyx_L5_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L1_error;
+          }
           __pyx_L6:;
         }
     }
@@ -205872,6 +219399,11 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserSchemaValidationContext.inject_default_attributes", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -205885,10 +219417,12 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default
 
 static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt, struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_error_log) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("connect", 0);
+  __Pyx_TraceCall("connect", __pyx_f[22], 183, 0, __PYX_ERR(22, 183, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":184
  * 
@@ -205897,6 +219431,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *             self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(
  *                 self._schema._c_schema)
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(22, 184, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_valid_ctxt == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -205907,6 +219442,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *                 self._schema._c_schema)
  *             if self._valid_ctxt is NULL:
  */
+    __Pyx_TraceLine(185,0,__PYX_ERR(22, 185, __pyx_L1_error))
     __pyx_v_self->_valid_ctxt = xmlSchemaNewValidCtxt(__pyx_v_self->_schema->_c_schema);
 
     /* "src/lxml/xmlschema.pxi":187
@@ -205916,6 +219452,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *                 raise MemoryError()
  *             if self._add_default_attributes:
  */
+    __Pyx_TraceLine(187,0,__PYX_ERR(22, 187, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_self->_valid_ctxt == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -205926,6 +219463,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *             if self._add_default_attributes:
  *                 xmlschema.xmlSchemaSetValidOptions(
  */
+      __Pyx_TraceLine(188,0,__PYX_ERR(22, 188, __pyx_L1_error))
       PyErr_NoMemory(); __PYX_ERR(22, 188, __pyx_L1_error)
 
       /* "src/lxml/xmlschema.pxi":187
@@ -205944,6 +219482,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *                 xmlschema.xmlSchemaSetValidOptions(
  *                     self._valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
  */
+    __Pyx_TraceLine(189,0,__PYX_ERR(22, 189, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_self->_add_default_attributes != 0);
     if (__pyx_t_1) {
 
@@ -205954,6 +219493,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *                     self._valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
  *         if error_log is not None:
  */
+      __Pyx_TraceLine(190,0,__PYX_ERR(22, 190, __pyx_L1_error))
       (void)(xmlSchemaSetValidOptions(__pyx_v_self->_valid_ctxt, XML_SCHEMA_VAL_VC_I_CREATE));
 
       /* "src/lxml/xmlschema.pxi":189
@@ -205981,6 +219521,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *             xmlschema.xmlSchemaSetValidStructuredErrors(
  *                 self._valid_ctxt, _receiveError, <void*>error_log)
  */
+  __Pyx_TraceLine(192,0,__PYX_ERR(22, 192, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_error_log) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -205992,6 +219533,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *                 self._valid_ctxt, _receiveError, <void*>error_log)
  *         self._sax_plug = xmlschema.xmlSchemaSAXPlug(
  */
+    __Pyx_TraceLine(193,0,__PYX_ERR(22, 193, __pyx_L1_error))
     xmlSchemaSetValidStructuredErrors(__pyx_v_self->_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_error_log));
 
     /* "src/lxml/xmlschema.pxi":192
@@ -206010,6 +219552,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  *             self._valid_ctxt, &c_ctxt.sax, &c_ctxt.userData)
  * 
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(22, 195, __pyx_L1_error))
   __pyx_v_self->_sax_plug = xmlSchemaSAXPlug(__pyx_v_self->_valid_ctxt, (&__pyx_v_c_ctxt->sax), (&__pyx_v_c_ctxt->userData));
 
   /* "src/lxml/xmlschema.pxi":183
@@ -206027,6 +219570,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
   __Pyx_AddTraceback("lxml.etree._ParserSchemaValidationContext.connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -206040,9 +219584,11 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct
  */
 
 static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("disconnect", 0);
+  __Pyx_TraceCall("disconnect", __pyx_f[22], 198, 0, __PYX_ERR(22, 198, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":199
  * 
@@ -206051,6 +219597,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  *             xmlschema.xmlSchemaSAXUnplug(self._sax_plug)
  *             self._sax_plug = NULL
  */
+  __Pyx_TraceLine(199,0,__PYX_ERR(22, 199, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_sax_plug != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -206061,6 +219608,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  *             self._sax_plug = NULL
  *         if self._valid_ctxt is not NULL:
  */
+    __Pyx_TraceLine(200,0,__PYX_ERR(22, 200, __pyx_L1_error))
     (void)(xmlSchemaSAXUnplug(__pyx_v_self->_sax_plug));
 
     /* "src/lxml/xmlschema.pxi":201
@@ -206070,6 +219618,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  *         if self._valid_ctxt is not NULL:
  *             xmlschema.xmlSchemaSetValidStructuredErrors(
  */
+    __Pyx_TraceLine(201,0,__PYX_ERR(22, 201, __pyx_L1_error))
     __pyx_v_self->_sax_plug = NULL;
 
     /* "src/lxml/xmlschema.pxi":199
@@ -206088,6 +219637,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  *             xmlschema.xmlSchemaSetValidStructuredErrors(
  *                 self._valid_ctxt, NULL, NULL)
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(22, 202, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_valid_ctxt != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -206098,6 +219648,7 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  *                 self._valid_ctxt, NULL, NULL)
  * 
  */
+    __Pyx_TraceLine(203,0,__PYX_ERR(22, 203, __pyx_L1_error))
     xmlSchemaSetValidStructuredErrors(__pyx_v_self->_valid_ctxt, NULL, NULL);
 
     /* "src/lxml/xmlschema.pxi":202
@@ -206118,6 +219669,11 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserSchemaValidationContext.disconnect", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -206131,9 +219687,11 @@ static void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(str
 
 static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("isvalid", 0);
+  __Pyx_TraceCall("isvalid", __pyx_f[22], 206, 0, __PYX_ERR(22, 206, __pyx_L1_error));
 
   /* "src/lxml/xmlschema.pxi":207
  * 
@@ -206142,6 +219700,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct
  *             return 1 # valid
  *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(22, 207, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_valid_ctxt == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -206151,6 +219710,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct
  *             return 1 # valid             # <<<<<<<<<<<<<<
  *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)
  */
+    __Pyx_TraceLine(208,0,__PYX_ERR(22, 208, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -206168,6 +219728,7 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct
  *             return 1 # valid
  *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(22, 209, __pyx_L1_error))
   __pyx_r = xmlSchemaIsValid(__pyx_v_self->_valid_ctxt);
   goto __pyx_L0;
 
@@ -206180,7 +219741,11 @@ static int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree._ParserSchemaValidationContext.isvalid", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -206211,8 +219776,10 @@ static int __pyx_pw_4lxml_5etree_10Schematron_1__cinit__(PyObject *__pyx_v_self,
 
 static int __pyx_pf_4lxml_5etree_10Schematron___cinit__(struct __pyx_obj_4lxml_5etree_Schematron *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_TraceCall("__cinit__", __pyx_f[23], 72, 0, __PYX_ERR(23, 72, __pyx_L1_error));
 
   /* "src/lxml/schematron.pxi":73
  *     cdef xmlDoc* _c_schema_doc
@@ -206221,6 +219788,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron___cinit__(struct __pyx_obj_4lxml_5
  *         self._c_schema_doc = NULL
  * 
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(23, 73, __pyx_L1_error))
   __pyx_v_self->_c_schema = NULL;
 
   /* "src/lxml/schematron.pxi":74
@@ -206230,6 +219798,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron___cinit__(struct __pyx_obj_4lxml_5
  * 
  *     def __init__(self, etree=None, *, file=None):
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(23, 74, __pyx_L1_error))
   __pyx_v_self->_c_schema_doc = NULL;
 
   /* "src/lxml/schematron.pxi":72
@@ -206242,6 +219811,12 @@ static int __pyx_pf_4lxml_5etree_10Schematron___cinit__(struct __pyx_obj_4lxml_5
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.etree.Schematron.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -206324,6 +219899,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
   xmlSchematronParserCtxt *__pyx_v_parser_ctxt;
   PyObject *__pyx_v_filename = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -206337,11 +219913,12 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
-  int __pyx_t_13;
-  char const *__pyx_t_14;
-  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  char const *__pyx_t_15;
   PyObject *__pyx_t_16 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[23], 76, 0, __PYX_ERR(23, 76, __pyx_L1_error));
 
   /* "src/lxml/schematron.pxi":81
  *         cdef xmlNode* c_node
@@ -206350,6 +219927,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         _Validator.__init__(self)
  *         if not config.ENABLE_SCHEMATRON:
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(23, 81, __pyx_L1_error))
   __pyx_v_parser_ctxt = NULL;
 
   /* "src/lxml/schematron.pxi":82
@@ -206359,6 +219937,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         if not config.ENABLE_SCHEMATRON:
  *             raise SchematronError, \
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(23, 82, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__Validator), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 82, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -206413,6 +219992,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             raise SchematronError, \
  *                 u"lxml.etree was compiled without Schematron support."
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(23, 83, __pyx_L1_error))
   __pyx_t_5 = ((!(ENABLE_SCHEMATRON != 0)) != 0);
   if (unlikely(__pyx_t_5)) {
 
@@ -206423,6 +220003,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 u"lxml.etree was compiled without Schematron support."
  *         if etree is not None:
  */
+    __Pyx_TraceLine(84,0,__PYX_ERR(23, 84, __pyx_L1_error))
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_SchematronError), __pyx_kp_u_lxml_etree_was_compiled_without, 0, 0);
     __PYX_ERR(23, 84, __pyx_L1_error)
 
@@ -206442,6 +220023,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             doc = _documentOrRaise(etree)
  *             root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(23, 86, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_etree != Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -206453,6 +220035,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             root_node = _rootNodeOrRaise(etree)
  *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
  */
+    __Pyx_TraceLine(87,0,__PYX_ERR(23, 87, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 87, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -206465,6 +220048,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
  *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(self._c_schema_doc)
  */
+    __Pyx_TraceLine(88,0,__PYX_ERR(23, 88, __pyx_L1_error))
     __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 88, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -206477,6 +220061,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(self._c_schema_doc)
  *         elif file is not None:
  */
+    __Pyx_TraceLine(89,0,__PYX_ERR(23, 89, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(23, 89, __pyx_L1_error)
     __pyx_v_self->_c_schema_doc = __pyx_t_7;
 
@@ -206487,6 +220072,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         elif file is not None:
  *             filename = _getFilenameForFile(file)
  */
+    __Pyx_TraceLine(90,0,__PYX_ERR(23, 90, __pyx_L1_error))
     __pyx_v_parser_ctxt = xmlSchematronNewDocParserCtxt(__pyx_v_self->_c_schema_doc);
 
     /* "src/lxml/schematron.pxi":86
@@ -206506,6 +220092,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             filename = _getFilenameForFile(file)
  *             if filename is None:
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(23, 91, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_file != Py_None);
   __pyx_t_5 = (__pyx_t_6 != 0);
   if (likely(__pyx_t_5)) {
@@ -206517,6 +220104,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             if filename is None:
  *                 # XXX assume a string object
  */
+    __Pyx_TraceLine(92,0,__PYX_ERR(23, 92, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 92, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_filename = __pyx_t_1;
@@ -206529,6 +220117,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 # XXX assume a string object
  *                 filename = file
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(23, 93, __pyx_L1_error))
     __pyx_t_5 = (__pyx_v_filename == Py_None);
     __pyx_t_6 = (__pyx_t_5 != 0);
     if (__pyx_t_6) {
@@ -206540,6 +220129,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             filename = _encodeFilename(filename)
  *             with self._error_log:
  */
+      __Pyx_TraceLine(95,0,__PYX_ERR(23, 95, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_file);
       __Pyx_DECREF_SET(__pyx_v_filename, __pyx_v_file);
 
@@ -206559,6 +220149,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             with self._error_log:
  *                 parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
  */
+    __Pyx_TraceLine(96,0,__PYX_ERR(23, 96, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 96, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1);
@@ -206571,13 +220162,19 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
  *         else:
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(23, 97, __pyx_L1_error))
     /*with:*/ {
       __pyx_t_8 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 97, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(23, 97, __pyx_L6_error)
       /*try:*/ {
         {
-          (void)__pyx_t_10; (void)__pyx_t_11; (void)__pyx_t_12; /* mark used */
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+          __Pyx_XGOTREF(__pyx_t_10);
+          __Pyx_XGOTREF(__pyx_t_11);
+          __Pyx_XGOTREF(__pyx_t_12);
           /*try:*/ {
 
             /* "src/lxml/schematron.pxi":98
@@ -206587,6 +220184,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         else:
  *             raise SchematronParseError, u"No tree or file given"
  */
+            __Pyx_TraceLine(98,0,__PYX_ERR(23, 98, __pyx_L10_error))
             __pyx_v_parser_ctxt = xmlSchematronNewParserCtxt(PyBytes_AS_STRING(__pyx_v_filename));
 
             /* "src/lxml/schematron.pxi":97
@@ -206597,12 +220195,63 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         else:
  */
           }
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          goto __pyx_L15_try_end;
+          __pyx_L10_error:;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          /*except:*/ {
+            __Pyx_AddTraceback("lxml.etree.Schematron.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(23, 97, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_3 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 97, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL);
+            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 97, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            if (__pyx_t_6 < 0) __PYX_ERR(23, 97, __pyx_L12_except_error)
+            __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
+            if (__pyx_t_5) {
+              __Pyx_GIVEREF(__pyx_t_1);
+              __Pyx_GIVEREF(__pyx_t_2);
+              __Pyx_XGIVEREF(__pyx_t_4);
+              __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_4);
+              __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+              __PYX_ERR(23, 97, __pyx_L12_except_error)
+            }
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L11_exception_handled;
+          }
+          __pyx_L12_except_error:;
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_XGIVEREF(__pyx_t_11);
+          __Pyx_XGIVEREF(__pyx_t_12);
+          __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+          goto __pyx_L1_error;
+          __pyx_L11_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_XGIVEREF(__pyx_t_11);
+          __Pyx_XGIVEREF(__pyx_t_12);
+          __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+          __pyx_L15_try_end:;
         }
       }
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_8) {
-            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__144, NULL);
+            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__392, NULL);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
             if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 97, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_12);
@@ -206612,11 +220261,11 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
         }
         __pyx_L9:;
       }
-      goto __pyx_L16;
+      goto __pyx_L19;
       __pyx_L6_error:;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L1_error;
-      __pyx_L16:;
+      __pyx_L19:;
     }
 
     /* "src/lxml/schematron.pxi":91
@@ -206636,6 +220285,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  * 
  *         if parser_ctxt is NULL:
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(23, 100, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_SchematronParseError), __pyx_kp_u_No_tree_or_file_given, 0, 0);
     __PYX_ERR(23, 100, __pyx_L1_error)
@@ -206649,8 +220299,9 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             if self._c_schema_doc is not NULL:
  *                 tree.xmlFreeDoc(self._c_schema_doc)
  */
-  __pyx_t_6 = ((__pyx_v_parser_ctxt == NULL) != 0);
-  if (__pyx_t_6) {
+  __Pyx_TraceLine(102,0,__PYX_ERR(23, 102, __pyx_L1_error))
+  __pyx_t_5 = ((__pyx_v_parser_ctxt == NULL) != 0);
+  if (__pyx_t_5) {
 
     /* "src/lxml/schematron.pxi":103
  * 
@@ -206659,8 +220310,9 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 tree.xmlFreeDoc(self._c_schema_doc)
  *                 self._c_schema_doc = NULL
  */
-    __pyx_t_6 = ((__pyx_v_self->_c_schema_doc != NULL) != 0);
-    if (__pyx_t_6) {
+    __Pyx_TraceLine(103,0,__PYX_ERR(23, 103, __pyx_L1_error))
+    __pyx_t_5 = ((__pyx_v_self->_c_schema_doc != NULL) != 0);
+    if (__pyx_t_5) {
 
       /* "src/lxml/schematron.pxi":104
  *         if parser_ctxt is NULL:
@@ -206669,6 +220321,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 self._c_schema_doc = NULL
  *             raise MemoryError()
  */
+      __Pyx_TraceLine(104,0,__PYX_ERR(23, 104, __pyx_L1_error))
       xmlFreeDoc(__pyx_v_self->_c_schema_doc);
 
       /* "src/lxml/schematron.pxi":105
@@ -206678,6 +220331,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             raise MemoryError()
  * 
  */
+      __Pyx_TraceLine(105,0,__PYX_ERR(23, 105, __pyx_L1_error))
       __pyx_v_self->_c_schema_doc = NULL;
 
       /* "src/lxml/schematron.pxi":103
@@ -206696,6 +220350,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  * 
  *         try:
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(23, 106, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(23, 106, __pyx_L1_error)
 
     /* "src/lxml/schematron.pxi":102
@@ -206714,6 +220369,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             with self._error_log:
  *                 self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(23, 108, __pyx_L23_error))
   /*try:*/ {
 
     /* "src/lxml/schematron.pxi":109
@@ -206723,13 +220379,19 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
  *         finally:
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(23, 109, __pyx_L23_error))
     /*with:*/ {
-      __pyx_t_8 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 109, __pyx_L20_error)
+      __pyx_t_8 = __Pyx_PyObject_LookupSpecial(((PyObject *)__pyx_v_self->__pyx_base._error_log), __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 109, __pyx_L23_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(23, 109, __pyx_L22_error)
+      __pyx_t_9 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_self->__pyx_base._error_log); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(23, 109, __pyx_L25_error)
       /*try:*/ {
         {
-          (void)__pyx_t_12; (void)__pyx_t_11; (void)__pyx_t_10; /* mark used */
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
+          __Pyx_XGOTREF(__pyx_t_12);
+          __Pyx_XGOTREF(__pyx_t_11);
+          __Pyx_XGOTREF(__pyx_t_10);
           /*try:*/ {
 
             /* "src/lxml/schematron.pxi":110
@@ -206739,6 +220401,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         finally:
  *             schematron.xmlSchematronFreeParserCtxt(parser_ctxt)
  */
+            __Pyx_TraceLine(110,0,__PYX_ERR(23, 110, __pyx_L29_error))
             __pyx_v_self->_c_schema = xmlSchematronParse(__pyx_v_parser_ctxt);
 
             /* "src/lxml/schematron.pxi":109
@@ -206749,26 +220412,77 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *         finally:
  */
           }
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          goto __pyx_L34_try_end;
+          __pyx_L29_error:;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          /*except:*/ {
+            __Pyx_AddTraceback("lxml.etree.Schematron.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+            if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(23, 109, __pyx_L31_except_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_3 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 109, __pyx_L31_except_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL);
+            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (unlikely(!__pyx_t_13)) __PYX_ERR(23, 109, __pyx_L31_except_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            if (__pyx_t_5 < 0) __PYX_ERR(23, 109, __pyx_L31_except_error)
+            __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
+            if (__pyx_t_6) {
+              __Pyx_GIVEREF(__pyx_t_4);
+              __Pyx_GIVEREF(__pyx_t_2);
+              __Pyx_XGIVEREF(__pyx_t_1);
+              __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_1);
+              __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; 
+              __PYX_ERR(23, 109, __pyx_L31_except_error)
+            }
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            goto __pyx_L30_exception_handled;
+          }
+          __pyx_L31_except_error:;
+          __Pyx_XGIVEREF(__pyx_t_12);
+          __Pyx_XGIVEREF(__pyx_t_11);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
+          goto __pyx_L23_error;
+          __pyx_L30_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_12);
+          __Pyx_XGIVEREF(__pyx_t_11);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
+          __pyx_L34_try_end:;
         }
       }
       /*finally:*/ {
         /*normal exit:*/{
           if (__pyx_t_8) {
-            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__145, NULL);
+            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__393, NULL);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 109, __pyx_L20_error)
+            if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 109, __pyx_L23_error)
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           }
-          goto __pyx_L25;
+          goto __pyx_L28;
         }
-        __pyx_L25:;
+        __pyx_L28:;
       }
-      goto __pyx_L32;
-      __pyx_L22_error:;
+      goto __pyx_L38;
+      __pyx_L25_error:;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      goto __pyx_L20_error;
-      __pyx_L32:;
+      goto __pyx_L23_error;
+      __pyx_L38:;
     }
   }
 
@@ -206779,47 +220493,48 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  * 
  *         if self._c_schema is NULL:
  */
+  __Pyx_TraceLine(112,0,__PYX_ERR(23, 112, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlSchematronFreeParserCtxt(__pyx_v_parser_ctxt);
-      goto __pyx_L21;
+      goto __pyx_L24;
     }
-    __pyx_L20_error:;
+    __pyx_L23_error:;
     /*exception exit:*/{
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
-      __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
+      __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_16 = 0;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_15, &__pyx_t_16);
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_16);
       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11);
       __Pyx_XGOTREF(__pyx_t_8);
       __Pyx_XGOTREF(__pyx_t_10);
       __Pyx_XGOTREF(__pyx_t_11);
       __Pyx_XGOTREF(__pyx_t_12);
-      __Pyx_XGOTREF(__pyx_t_15);
+      __Pyx_XGOTREF(__pyx_t_13);
       __Pyx_XGOTREF(__pyx_t_16);
-      __pyx_t_9 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+      __pyx_t_9 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
       {
         xmlSchematronFreeParserCtxt(__pyx_v_parser_ctxt);
       }
       if (PY_MAJOR_VERSION >= 3) {
         __Pyx_XGIVEREF(__pyx_t_12);
-        __Pyx_XGIVEREF(__pyx_t_15);
+        __Pyx_XGIVEREF(__pyx_t_13);
         __Pyx_XGIVEREF(__pyx_t_16);
-        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_15, __pyx_t_16);
+        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_16);
       }
       __Pyx_XGIVEREF(__pyx_t_8);
       __Pyx_XGIVEREF(__pyx_t_10);
       __Pyx_XGIVEREF(__pyx_t_11);
       __Pyx_ErrRestore(__pyx_t_8, __pyx_t_10, __pyx_t_11);
-      __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
-      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+      __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_16 = 0;
+      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
       goto __pyx_L1_error;
     }
-    __pyx_L21:;
+    __pyx_L24:;
   }
 
   /* "src/lxml/schematron.pxi":114
@@ -206829,6 +220544,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *             raise SchematronParseError(
  *                 u"Document is not a valid Schematron schema",
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(23, 114, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_self->_c_schema == NULL) != 0);
   if (unlikely(__pyx_t_6)) {
 
@@ -206839,6 +220555,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
  *                 u"Document is not a valid Schematron schema",
  *                 self._error_log)
  */
+    __Pyx_TraceLine(115,0,__PYX_ERR(23, 115, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 115, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_kp_u_Document_is_not_a_valid_Schematr);
@@ -206885,6 +220602,7 @@ static int __pyx_pf_4lxml_5etree_10Schematron_2__init__(struct __pyx_obj_4lxml_5
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XDECREF(__pyx_v_filename);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -206909,9 +220627,11 @@ static void __pyx_pw_4lxml_5etree_10Schematron_5__dealloc__(PyObject *__pyx_v_se
 }
 
 static void __pyx_pf_4lxml_5etree_10Schematron_4__dealloc__(struct __pyx_obj_4lxml_5etree_Schematron *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[23], 119, 0, __PYX_ERR(23, 119, __pyx_L1_error));
 
   /* "src/lxml/schematron.pxi":120
  * 
@@ -206920,6 +220640,7 @@ static void __pyx_pf_4lxml_5etree_10Schematron_4__dealloc__(struct __pyx_obj_4lx
  *         if self._c_schema_doc is not NULL:
  *             tree.xmlFreeDoc(self._c_schema_doc)
  */
+  __Pyx_TraceLine(120,0,__PYX_ERR(23, 120, __pyx_L1_error))
   xmlSchematronFree(__pyx_v_self->_c_schema);
 
   /* "src/lxml/schematron.pxi":121
@@ -206929,6 +220650,7 @@ static void __pyx_pf_4lxml_5etree_10Schematron_4__dealloc__(struct __pyx_obj_4lx
  *             tree.xmlFreeDoc(self._c_schema_doc)
  * 
  */
+  __Pyx_TraceLine(121,0,__PYX_ERR(23, 121, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_schema_doc != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -206939,6 +220661,7 @@ static void __pyx_pf_4lxml_5etree_10Schematron_4__dealloc__(struct __pyx_obj_4lx
  * 
  *     def __call__(self, etree):
  */
+    __Pyx_TraceLine(122,0,__PYX_ERR(23, 122, __pyx_L1_error))
     xmlFreeDoc(__pyx_v_self->_c_schema_doc);
 
     /* "src/lxml/schematron.pxi":121
@@ -206959,6 +220682,11 @@ static void __pyx_pf_4lxml_5etree_10Schematron_4__dealloc__(struct __pyx_obj_4lx
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.Schematron.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -207031,6 +220759,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
   xmlSchematronValidCtxt *__pyx_v_valid_ctxt;
   int __pyx_v_ret;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -207046,6 +220775,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
   PyObject *__pyx_t_12 = NULL;
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[23], 124, 0, __PYX_ERR(23, 124, __pyx_L1_error));
 
   /* "src/lxml/schematron.pxi":136
  *         cdef int ret
@@ -207054,6 +220784,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *         doc = _documentOrRaise(etree)
  *         root_node = _rootNodeOrRaise(etree)
  */
+  __Pyx_TraceLine(136,0,__PYX_ERR(23, 136, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->_c_schema != NULL) != 0))) {
@@ -207070,6 +220801,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *         root_node = _rootNodeOrRaise(etree)
  * 
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(23, 137, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 137, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
@@ -207082,6 +220814,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  * 
  *         valid_ctxt = schematron.xmlSchematronNewValidCtxt(
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(23, 138, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
@@ -207094,6 +220827,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             self._c_schema, schematron.XML_SCHEMATRON_OUT_ERROR)
  *         if valid_ctxt is NULL:
  */
+  __Pyx_TraceLine(140,0,__PYX_ERR(23, 140, __pyx_L1_error))
   __pyx_v_valid_ctxt = xmlSchematronNewValidCtxt(__pyx_v_self->_c_schema, XML_SCHEMATRON_OUT_ERROR);
 
   /* "src/lxml/schematron.pxi":142
@@ -207103,6 +220837,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             raise MemoryError()
  * 
  */
+  __Pyx_TraceLine(142,0,__PYX_ERR(23, 142, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_valid_ctxt == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -207113,6 +220848,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  * 
  *         try:
  */
+    __Pyx_TraceLine(143,0,__PYX_ERR(23, 143, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(23, 143, __pyx_L1_error)
 
     /* "src/lxml/schematron.pxi":142
@@ -207131,6 +220867,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             self._error_log.clear()
  *             schematron.xmlSchematronSetValidStructuredErrors(
  */
+  __Pyx_TraceLine(145,0,__PYX_ERR(23, 145, __pyx_L5_error))
   /*try:*/ {
 
     /* "src/lxml/schematron.pxi":146
@@ -207140,6 +220877,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             schematron.xmlSchematronSetValidStructuredErrors(
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(23, 146, __pyx_L5_error))
     __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->__pyx_base._error_log, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 146, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -207151,6 +220889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *                 valid_ctxt, _receiveError, <void*>self._error_log)
  *             c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  */
+    __Pyx_TraceLine(147,0,__PYX_ERR(23, 147, __pyx_L5_error))
     xmlSchematronSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
 
     /* "src/lxml/schematron.pxi":149
@@ -207160,6 +220899,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             with nogil:
  *                 ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
  */
+    __Pyx_TraceLine(149,0,__PYX_ERR(23, 149, __pyx_L5_error))
     __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_3 == ((xmlDoc *)NULL))) __PYX_ERR(23, 149, __pyx_L5_error)
     __pyx_v_c_doc = __pyx_t_3;
 
@@ -207170,6 +220910,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *                 ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+    __Pyx_TraceLine(150,0,__PYX_ERR(23, 150, __pyx_L5_error))
     {
         #ifdef WITH_THREAD
         PyThreadState *_save;
@@ -207185,6 +220926,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  *         finally:
  */
+          __Pyx_TraceLine(151,1,__PYX_ERR(23, 151, __pyx_L8_error))
           __pyx_v_ret = xmlSchematronValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
         }
 
@@ -207195,6 +220937,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *                 ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
  *             _destroyFakeDoc(doc._c_doc, c_doc)
  */
+        __Pyx_TraceLine(150,1,__PYX_ERR(23, 150, __pyx_L5_error))
         /*finally:*/ {
           /*normal exit:*/{
             #ifdef WITH_THREAD
@@ -207203,6 +220946,13 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
             #endif
             goto __pyx_L9;
           }
+          __pyx_L8_error: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L5_error;
+          }
           __pyx_L9:;
         }
     }
@@ -207214,6 +220964,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *         finally:
  *             schematron.xmlSchematronFreeValidCtxt(valid_ctxt)
  */
+    __Pyx_TraceLine(152,0,__PYX_ERR(23, 152, __pyx_L5_error))
     __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
   }
 
@@ -207224,6 +220975,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  * 
  *         if ret == -1:
  */
+  __Pyx_TraceLine(154,0,__PYX_ERR(23, 154, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       xmlSchematronFreeValidCtxt(__pyx_v_valid_ctxt);
@@ -207271,6 +221023,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             raise SchematronValidateError(
  *                 u"Internal error in Schematron validation",
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(23, 156, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -207281,6 +221034,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *                 u"Internal error in Schematron validation",
  *                 self._error_log)
  */
+    __Pyx_TraceLine(157,0,__PYX_ERR(23, 157, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 157, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_kp_u_Internal_error_in_Schematron_val);
@@ -207312,6 +221066,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *             return True
  *         else:
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(23, 160, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_ret == 0) != 0);
   if (__pyx_t_2) {
 
@@ -207322,6 +221077,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *         else:
  *             return False
  */
+    __Pyx_TraceLine(161,0,__PYX_ERR(23, 161, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -207341,6 +221097,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
  *         else:
  *             return False             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(23, 163, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
@@ -207366,6 +221123,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XDECREF((PyObject *)__pyx_v_root_node);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207381,10 +221139,12 @@ static PyObject *__pyx_pf_4lxml_5etree_10Schematron_6__call__(struct __pyx_obj_4
 struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_root) {
   xmlNode *__pyx_v_c_node;
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("deepcopyNodeToDocument", 0);
+  __Pyx_TraceCall("deepcopyNodeToDocument", __pyx_f[24], 3, 0, __PYX_ERR(24, 3, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":6
  *     u"Recursively copy the element into the document. doc is not modified."
@@ -207393,6 +221153,7 @@ struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xml
  *     return _elementFactory(doc, c_node)
  * 
  */
+  __Pyx_TraceLine(6,0,__PYX_ERR(24, 6, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__copyNodeToDoc(__pyx_v_c_root, __pyx_v_doc->_c_doc); if (unlikely(__pyx_t_1 == ((xmlNode *)NULL))) __PYX_ERR(24, 6, __pyx_L1_error)
   __pyx_v_c_node = __pyx_t_1;
 
@@ -207403,6 +221164,7 @@ struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xml
  * 
  * cdef public api _ElementTree elementTreeFactory(_Element context_node):
  */
+  __Pyx_TraceLine(7,0,__PYX_ERR(24, 7, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 7, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -207425,6 +221187,7 @@ struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xml
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207439,10 +221202,12 @@ struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xml
 
 struct LxmlElementTree *elementTreeFactory(struct LxmlElement *__pyx_v_context_node) {
   struct LxmlElementTree *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("elementTreeFactory", 0);
+  __Pyx_TraceCall("elementTreeFactory", __pyx_f[24], 9, 0, __PYX_ERR(24, 9, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":10
  * 
@@ -207451,6 +221216,7 @@ struct LxmlElementTree *elementTreeFactory(struct LxmlElement *__pyx_v_context_n
  *     return newElementTree(context_node, _ElementTree)
  * 
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(24, 10, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_context_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 10, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":11
@@ -207460,6 +221226,7 @@ struct LxmlElementTree *elementTreeFactory(struct LxmlElement *__pyx_v_context_n
  * 
  * cdef public api _ElementTree newElementTree(_Element context_node,
  */
+  __Pyx_TraceLine(11,0,__PYX_ERR(24, 11, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)newElementTree(__pyx_v_context_node, ((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree))); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -207482,6 +221249,7 @@ struct LxmlElementTree *elementTreeFactory(struct LxmlElement *__pyx_v_context_n
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207496,6 +221264,7 @@ struct LxmlElementTree *elementTreeFactory(struct LxmlElement *__pyx_v_context_n
 
 struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node, PyObject *__pyx_v_subclass) {
   struct LxmlElementTree *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -207504,6 +221273,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("newElementTree", 0);
+  __Pyx_TraceCall("newElementTree", __pyx_f[24], 13, 0, __PYX_ERR(24, 13, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":15
  * cdef public api _ElementTree newElementTree(_Element context_node,
@@ -207512,6 +221282,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
  *         raise TypeError
  *     _assertValidNode(context_node)
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(24, 15, __pyx_L1_error))
   __pyx_t_2 = ((((void *)__pyx_v_context_node) == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -207531,6 +221302,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
  *     _assertValidNode(context_node)
  *     return _newElementTree(context_node._doc, context_node, subclass)
  */
+    __Pyx_TraceLine(16,0,__PYX_ERR(24, 16, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, 0, 0, 0);
     __PYX_ERR(24, 16, __pyx_L1_error)
 
@@ -207550,6 +221322,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
  *     return _newElementTree(context_node._doc, context_node, subclass)
  * 
  */
+  __Pyx_TraceLine(17,0,__PYX_ERR(24, 17, __pyx_L1_error))
   __pyx_t_4 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_context_node); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(24, 17, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":18
@@ -207559,6 +221332,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
  * 
  * cdef public api _ElementTree adoptExternalDocument(xmlDoc* c_doc, parser, bint is_owned):
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(24, 18, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_5 = ((PyObject *)__pyx_v_context_node->_doc);
   __Pyx_INCREF(__pyx_t_5);
@@ -207585,6 +221359,7 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207600,11 +221375,13 @@ struct LxmlElementTree *newElementTree(struct LxmlElement *__pyx_v_context_node,
 struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *__pyx_v_parser, int __pyx_v_is_owned) {
   struct LxmlDocument *__pyx_v_doc = NULL;
   struct LxmlElementTree *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   struct __pyx_opt_args_4lxml_5etree__adoptForeignDoc __pyx_t_3;
   __Pyx_RefNannySetupContext("adoptExternalDocument", 0);
+  __Pyx_TraceCall("adoptExternalDocument", __pyx_f[24], 20, 0, __PYX_ERR(24, 20, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":21
  * 
@@ -207613,6 +221390,7 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
  *         raise TypeError
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(24, 21, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -207623,6 +221401,7 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  *     return _elementTreeFactory(doc, None)
  */
+    __Pyx_TraceLine(22,0,__PYX_ERR(24, 22, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, 0, 0, 0);
     __PYX_ERR(24, 22, __pyx_L1_error)
 
@@ -207642,6 +221421,7 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
  *     return _elementTreeFactory(doc, None)
  * 
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(24, 23, __pyx_L1_error))
   if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(24, 23, __pyx_L1_error)
   __pyx_t_3.__pyx_n = 2;
   __pyx_t_3.parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser);
@@ -207658,6 +221438,7 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
  * 
  * cdef public api _Element elementFactory(_Document doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(24, 24, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 24, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -207681,6 +221462,7 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_doc);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207695,12 +221477,14 @@ struct LxmlElementTree *adoptExternalDocument(xmlDoc *__pyx_v_c_doc, PyObject *_
 
 struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("elementFactory", 0);
+  __Pyx_TraceCall("elementFactory", __pyx_f[24], 26, 0, __PYX_ERR(24, 26, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":27
  * 
@@ -207709,6 +221493,7 @@ struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__
  *         raise TypeError
  *     return _elementFactory(doc, c_node)
  */
+  __Pyx_TraceLine(27,0,__PYX_ERR(24, 27, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -207728,6 +221513,7 @@ struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__
  *     return _elementFactory(doc, c_node)
  * 
  */
+    __Pyx_TraceLine(28,0,__PYX_ERR(24, 28, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, 0, 0, 0);
     __PYX_ERR(24, 28, __pyx_L1_error)
 
@@ -207747,6 +221533,7 @@ struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__
  * 
  * cdef public api _Element makeElement(tag, _Document doc, parser,
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(24, 29, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -207769,6 +221556,7 @@ struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207783,9 +221571,11 @@ struct LxmlElement *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__
 
 struct LxmlElement *makeElement(PyObject *__pyx_v_tag, struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_parser, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("makeElement", 0);
+  __Pyx_TraceCall("makeElement", __pyx_f[24], 31, 0, __PYX_ERR(24, 31, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":33
  * cdef public api _Element makeElement(tag, _Document doc, parser,
@@ -207794,6 +221584,7 @@ struct LxmlElement *makeElement(PyObject *__pyx_v_tag, struct LxmlDocument *__py
  * 
  * cdef public api _Element makeSubElement(_Element parent, tag, text, tail,
  */
+  __Pyx_TraceLine(33,0,__PYX_ERR(24, 33, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) __PYX_ERR(24, 33, __pyx_L1_error)
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v_tag, NULL, __pyx_v_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_tail, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 33, __pyx_L1_error)
@@ -207817,6 +221608,7 @@ struct LxmlElement *makeElement(PyObject *__pyx_v_tag, struct LxmlDocument *__py
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207831,10 +221623,12 @@ struct LxmlElement *makeElement(PyObject *__pyx_v_tag, struct LxmlDocument *__py
 
 struct LxmlElement *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject *__pyx_v_tag, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("makeSubElement", 0);
+  __Pyx_TraceCall("makeSubElement", __pyx_f[24], 35, 0, __PYX_ERR(24, 35, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":37
  * cdef public api _Element makeSubElement(_Element parent, tag, text, tail,
@@ -207843,6 +221637,7 @@ struct LxmlElement *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject
  *     return _makeSubElement(parent, tag, text, tail, attrib, nsmap, None)
  * 
  */
+  __Pyx_TraceLine(37,0,__PYX_ERR(24, 37, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_parent); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 37, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":38
@@ -207852,6 +221647,7 @@ struct LxmlElement *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject
  * 
  * cdef public api void setElementClassLookupFunction(
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(24, 38, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v_parent, __pyx_v_tag, __pyx_v_text, __pyx_v_tail, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject*)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 38, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -207874,6 +221670,7 @@ struct LxmlElement *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207887,8 +221684,10 @@ struct LxmlElement *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject
  */
 
 void setElementClassLookupFunction(_element_class_lookup_function __pyx_v_function, PyObject *__pyx_v_state) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("setElementClassLookupFunction", 0);
+  __Pyx_TraceCall("setElementClassLookupFunction", __pyx_f[24], 40, 0, __PYX_ERR(24, 40, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":42
  * cdef public api void setElementClassLookupFunction(
@@ -207897,6 +221696,7 @@ void setElementClassLookupFunction(_element_class_lookup_function __pyx_v_functi
  * 
  * cdef public api object lookupDefaultElementClass(state, doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(42,0,__PYX_ERR(24, 42, __pyx_L1_error))
   __pyx_f_4lxml_5etree__setElementClassLookupFunction(__pyx_v_function, __pyx_v_state);
 
   /* "src/lxml/public-api.pxi":40
@@ -207908,6 +221708,11 @@ void setElementClassLookupFunction(_element_class_lookup_function __pyx_v_functi
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.setElementClassLookupFunction", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -207921,9 +221726,11 @@ void setElementClassLookupFunction(_element_class_lookup_function __pyx_v_functi
 
 PyObject *lookupDefaultElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("lookupDefaultElementClass", 0);
+  __Pyx_TraceCall("lookupDefaultElementClass", __pyx_f[24], 44, 0, __PYX_ERR(24, 44, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":45
  * 
@@ -207932,6 +221739,7 @@ PyObject *lookupDefaultElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_d
  * 
  * cdef public api object lookupNamespaceElementClass(state, doc, xmlNode* c_node):
  */
+  __Pyx_TraceLine(45,0,__PYX_ERR(24, 45, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) __PYX_ERR(24, 45, __pyx_L1_error)
   __pyx_t_1 = __pyx_f_4lxml_5etree__lookupDefaultElementClass(__pyx_v_state, ((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 45, __pyx_L1_error)
@@ -207955,6 +221763,7 @@ PyObject *lookupDefaultElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_d
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -207969,9 +221778,11 @@ PyObject *lookupDefaultElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_d
 
 PyObject *lookupNamespaceElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("lookupNamespaceElementClass", 0);
+  __Pyx_TraceCall("lookupNamespaceElementClass", __pyx_f[24], 47, 0, __PYX_ERR(24, 47, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":48
  * 
@@ -207980,6 +221791,7 @@ PyObject *lookupNamespaceElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v
  * 
  * cdef public api object callLookupFallback(FallbackElementClassLookup lookup,
  */
+  __Pyx_TraceLine(48,0,__PYX_ERR(24, 48, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) __PYX_ERR(24, 48, __pyx_L1_error)
   __pyx_t_1 = __pyx_f_4lxml_5etree__find_nselement_class(__pyx_v_state, ((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 48, __pyx_L1_error)
@@ -208003,6 +221815,7 @@ PyObject *lookupNamespaceElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208017,9 +221830,11 @@ PyObject *lookupNamespaceElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v
 
 PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_lookup, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("callLookupFallback", 0);
+  __Pyx_TraceCall("callLookupFallback", __pyx_f[24], 50, 0, __PYX_ERR(24, 50, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":52
  * cdef public api object callLookupFallback(FallbackElementClassLookup lookup,
@@ -208028,6 +221843,7 @@ PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_look
  * 
  * cdef public api int tagMatches(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name):
  */
+  __Pyx_TraceLine(52,0,__PYX_ERR(24, 52, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__callLookupFallback(__pyx_v_lookup, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 52, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208050,6 +221866,7 @@ PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_look
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208064,9 +221881,11 @@ PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_look
 
 int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("tagMatches", 0);
+  __Pyx_TraceCall("tagMatches", __pyx_f[24], 54, 0, __PYX_ERR(24, 54, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":55
  * 
@@ -208075,6 +221894,7 @@ int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xml
  *         return -1
  *     return _tagMatches(c_node, c_href, c_name)
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(24, 55, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -208085,6 +221905,7 @@ int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xml
  *     return _tagMatches(c_node, c_href, c_name)
  * 
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(24, 56, __pyx_L1_error))
     __pyx_r = -1;
     goto __pyx_L0;
 
@@ -208104,6 +221925,7 @@ int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xml
  * 
  * cdef public api _Document documentOrRaise(object input):
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(24, 57, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name);
   goto __pyx_L0;
 
@@ -208116,7 +221938,11 @@ int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xml
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.tagMatches", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208131,9 +221957,11 @@ int tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xml
 
 struct LxmlDocument *documentOrRaise(PyObject *__pyx_v_input) {
   struct LxmlDocument *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("documentOrRaise", 0);
+  __Pyx_TraceCall("documentOrRaise", __pyx_f[24], 59, 0, __PYX_ERR(24, 59, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":60
  * 
@@ -208142,6 +221970,7 @@ struct LxmlDocument *documentOrRaise(PyObject *__pyx_v_input) {
  * 
  * cdef public api _Element rootNodeOrRaise(object input):
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(24, 60, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 60, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208164,6 +221993,7 @@ struct LxmlDocument *documentOrRaise(PyObject *__pyx_v_input) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208178,9 +222008,11 @@ struct LxmlDocument *documentOrRaise(PyObject *__pyx_v_input) {
 
 struct LxmlElement *rootNodeOrRaise(PyObject *__pyx_v_input) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("rootNodeOrRaise", 0);
+  __Pyx_TraceCall("rootNodeOrRaise", __pyx_f[24], 62, 0, __PYX_ERR(24, 62, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":63
  * 
@@ -208189,6 +222021,7 @@ struct LxmlElement *rootNodeOrRaise(PyObject *__pyx_v_input) {
  * 
  * cdef public api bint hasText(xmlNode* c_node):
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(24, 63, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_input)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 63, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208211,6 +222044,7 @@ struct LxmlElement *rootNodeOrRaise(PyObject *__pyx_v_input) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208225,8 +222059,10 @@ struct LxmlElement *rootNodeOrRaise(PyObject *__pyx_v_input) {
 
 int hasText(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("hasText", 0);
+  __Pyx_TraceCall("hasText", __pyx_f[24], 65, 0, __PYX_ERR(24, 65, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":66
  * 
@@ -208235,6 +222071,7 @@ int hasText(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api bint hasTail(xmlNode* c_node):
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(24, 66, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__hasText(__pyx_v_c_node);
   goto __pyx_L0;
 
@@ -208247,7 +222084,11 @@ int hasText(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.hasText", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208262,8 +222103,10 @@ int hasText(xmlNode *__pyx_v_c_node) {
 
 int hasTail(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("hasTail", 0);
+  __Pyx_TraceCall("hasTail", __pyx_f[24], 68, 0, __PYX_ERR(24, 68, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":69
  * 
@@ -208272,6 +222115,7 @@ int hasTail(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api object textOf(xmlNode* c_node):
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(24, 69, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__hasTail(__pyx_v_c_node);
   goto __pyx_L0;
 
@@ -208284,7 +222128,11 @@ int hasTail(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.hasTail", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208299,10 +222147,12 @@ int hasTail(xmlNode *__pyx_v_c_node) {
 
 PyObject *textOf(xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("textOf", 0);
+  __Pyx_TraceCall("textOf", __pyx_f[24], 71, 0, __PYX_ERR(24, 71, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":72
  * 
@@ -208311,6 +222161,7 @@ PyObject *textOf(xmlNode *__pyx_v_c_node) {
  *         return None
  *     return _collectText(c_node.children)
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(24, 72, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -208321,6 +222172,7 @@ PyObject *textOf(xmlNode *__pyx_v_c_node) {
  *     return _collectText(c_node.children)
  * 
  */
+    __Pyx_TraceLine(73,0,__PYX_ERR(24, 73, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -208341,6 +222193,7 @@ PyObject *textOf(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api object tailOf(xmlNode* c_node):
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(24, 74, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_c_node->children); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -208363,6 +222216,7 @@ PyObject *textOf(xmlNode *__pyx_v_c_node) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208377,10 +222231,12 @@ PyObject *textOf(xmlNode *__pyx_v_c_node) {
 
 PyObject *tailOf(xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("tailOf", 0);
+  __Pyx_TraceCall("tailOf", __pyx_f[24], 76, 0, __PYX_ERR(24, 76, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":77
  * 
@@ -208389,6 +222245,7 @@ PyObject *tailOf(xmlNode *__pyx_v_c_node) {
  *         return None
  *     return _collectText(c_node.next)
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(24, 77, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -208399,6 +222256,7 @@ PyObject *tailOf(xmlNode *__pyx_v_c_node) {
  *     return _collectText(c_node.next)
  * 
  */
+    __Pyx_TraceLine(78,0,__PYX_ERR(24, 78, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -208419,6 +222277,7 @@ PyObject *tailOf(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api int setNodeText(xmlNode* c_node, text) except -1:
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(24, 79, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_c_node->next); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -208441,6 +222300,7 @@ PyObject *tailOf(xmlNode *__pyx_v_c_node) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208455,10 +222315,12 @@ PyObject *tailOf(xmlNode *__pyx_v_c_node) {
 
 int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setNodeText", 0);
+  __Pyx_TraceCall("setNodeText", __pyx_f[24], 81, 0, __PYX_ERR(24, 81, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":82
  * 
@@ -208467,6 +222329,7 @@ int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  *         raise ValueError
  *     return _setNodeText(c_node, text)
  */
+  __Pyx_TraceLine(82,0,__PYX_ERR(24, 82, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -208477,6 +222340,7 @@ int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  *     return _setNodeText(c_node, text)
  * 
  */
+    __Pyx_TraceLine(83,0,__PYX_ERR(24, 83, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, 0, 0, 0);
     __PYX_ERR(24, 83, __pyx_L1_error)
 
@@ -208496,6 +222360,7 @@ int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  * 
  * cdef public api int setTailText(xmlNode* c_node, text) except -1:
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(24, 84, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 84, __pyx_L1_error)
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
@@ -208513,6 +222378,7 @@ int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
   __Pyx_AddTraceback("lxml.etree.setNodeText", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208527,10 +222393,12 @@ int setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
 
 int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("setTailText", 0);
+  __Pyx_TraceCall("setTailText", __pyx_f[24], 86, 0, __PYX_ERR(24, 86, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":87
  * 
@@ -208539,6 +222407,7 @@ int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  *         raise ValueError
  *     return _setTailText(c_node, text)
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(24, 87, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -208549,6 +222418,7 @@ int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  *     return _setTailText(c_node, text)
  * 
  */
+    __Pyx_TraceLine(88,0,__PYX_ERR(24, 88, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, 0, 0, 0);
     __PYX_ERR(24, 88, __pyx_L1_error)
 
@@ -208568,6 +222438,7 @@ int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  * 
  * cdef public api object attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):
  */
+  __Pyx_TraceLine(89,0,__PYX_ERR(24, 89, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 89, __pyx_L1_error)
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
@@ -208585,6 +222456,7 @@ int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
   __Pyx_AddTraceback("lxml.etree.setTailText", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208599,9 +222471,11 @@ int setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
 
 PyObject *attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("attributeValue", 0);
+  __Pyx_TraceCall("attributeValue", __pyx_f[24], 91, 0, __PYX_ERR(24, 91, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":92
  * 
@@ -208610,6 +222484,7 @@ PyObject *attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_n
  * 
  * cdef public api object attributeValueFromNsName(xmlNode* c_element,
  */
+  __Pyx_TraceLine(92,0,__PYX_ERR(24, 92, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_element, __pyx_v_c_attrib_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 92, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208632,6 +222507,7 @@ PyObject *attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_n
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208646,9 +222522,11 @@ PyObject *attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_n
 
 PyObject *attributeValueFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__pyx_v_ns, const xmlChar *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("attributeValueFromNsName", 0);
+  __Pyx_TraceCall("attributeValueFromNsName", __pyx_f[24], 94, 0, __PYX_ERR(24, 94, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":96
  * cdef public api object attributeValueFromNsName(xmlNode* c_element,
@@ -208657,6 +222535,7 @@ PyObject *attributeValueFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__
  * 
  * cdef public api object getAttributeValue(_Element element, key, default):
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(24, 96, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__attributeValueFromNsName(__pyx_v_c_element, __pyx_v_ns, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208679,6 +222558,7 @@ PyObject *attributeValueFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208693,10 +222573,12 @@ PyObject *attributeValueFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__
 
 PyObject *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("getAttributeValue", 0);
+  __Pyx_TraceCall("getAttributeValue", __pyx_f[24], 98, 0, __PYX_ERR(24, 98, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":99
  * 
@@ -208705,6 +222587,7 @@ PyObject *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx
  *     return _getAttributeValue(element, key, default)
  * 
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(24, 99, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 99, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":100
@@ -208714,6 +222597,7 @@ PyObject *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx
  * 
  * cdef public api object iterattributes(_Element element, int keysvalues):
  */
+  __Pyx_TraceLine(100,0,__PYX_ERR(24, 100, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__getAttributeValue(__pyx_v_element, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -208736,6 +222620,7 @@ PyObject *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208750,10 +222635,12 @@ PyObject *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx
 
 PyObject *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysvalues) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("iterattributes", 0);
+  __Pyx_TraceCall("iterattributes", __pyx_f[24], 102, 0, __PYX_ERR(24, 102, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":103
  * 
@@ -208762,6 +222649,7 @@ PyObject *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysva
  *     return _attributeIteratorFactory(element, keysvalues)
  * 
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(24, 103, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 103, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":104
@@ -208771,6 +222659,7 @@ PyObject *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysva
  * 
  * cdef public api list collectAttributes(xmlNode* c_element, int keysvalues):
  */
+  __Pyx_TraceLine(104,0,__PYX_ERR(24, 104, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree__attributeIteratorFactory(__pyx_v_element, __pyx_v_keysvalues); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 104, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -208793,6 +222682,7 @@ PyObject *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysva
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208807,9 +222697,11 @@ PyObject *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysva
 
 PyObject *collectAttributes(xmlNode *__pyx_v_c_element, int __pyx_v_keysvalues) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("collectAttributes", 0);
+  __Pyx_TraceCall("collectAttributes", __pyx_f[24], 106, 0, __PYX_ERR(24, 106, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":107
  * 
@@ -208818,6 +222710,7 @@ PyObject *collectAttributes(xmlNode *__pyx_v_c_element, int __pyx_v_keysvalues)
  * 
  * cdef public api int setAttributeValue(_Element element, key, value) except -1:
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(24, 107, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_c_element, __pyx_v_keysvalues); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 107, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -208840,6 +222733,7 @@ PyObject *collectAttributes(xmlNode *__pyx_v_c_element, int __pyx_v_keysvalues)
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208854,9 +222748,11 @@ PyObject *collectAttributes(xmlNode *__pyx_v_c_element, int __pyx_v_keysvalues)
 
 int setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("setAttributeValue", 0);
+  __Pyx_TraceCall("setAttributeValue", __pyx_f[24], 109, 0, __PYX_ERR(24, 109, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":110
  * 
@@ -208865,6 +222761,7 @@ int setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key
  *     return _setAttributeValue(element, key, value)
  * 
  */
+  __Pyx_TraceLine(110,0,__PYX_ERR(24, 110, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 110, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":111
@@ -208874,6 +222771,7 @@ int setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key
  * 
  * cdef public api int delAttribute(_Element element, key) except -1:
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(24, 111, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__setAttributeValue(__pyx_v_element, __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 111, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -208891,6 +222789,7 @@ int setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key
   __Pyx_AddTraceback("lxml.etree.setAttributeValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208905,9 +222804,11 @@ int setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key
 
 int delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("delAttribute", 0);
+  __Pyx_TraceCall("delAttribute", __pyx_f[24], 113, 0, __PYX_ERR(24, 113, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":114
  * 
@@ -208916,6 +222817,7 @@ int delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
  *     return _delAttribute(element, key)
  * 
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(24, 114, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 114, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":115
@@ -208925,6 +222827,7 @@ int delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
  * 
  * cdef public api int delAttributeFromNsName(tree.xmlNode* c_element,
  */
+  __Pyx_TraceLine(115,0,__PYX_ERR(24, 115, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__delAttribute(__pyx_v_element, __pyx_v_key); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 115, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -208942,6 +222845,7 @@ int delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
   __Pyx_AddTraceback("lxml.etree.delAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208956,8 +222860,10 @@ int delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
 
 int delAttributeFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("delAttributeFromNsName", 0);
+  __Pyx_TraceCall("delAttributeFromNsName", __pyx_f[24], 117, 0, __PYX_ERR(24, 117, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":119
  * cdef public api int delAttributeFromNsName(tree.xmlNode* c_element,
@@ -208966,6 +222872,7 @@ int delAttributeFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__pyx_v_c_
  * 
  * cdef public api bint hasChild(xmlNode* c_node):
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(24, 119, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__delAttributeFromNsName(__pyx_v_c_element, __pyx_v_c_href, __pyx_v_c_name);
   goto __pyx_L0;
 
@@ -208978,7 +222885,11 @@ int delAttributeFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__pyx_v_c_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.delAttributeFromNsName", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -208993,8 +222904,10 @@ int delAttributeFromNsName(xmlNode *__pyx_v_c_element, const xmlChar *__pyx_v_c_
 
 int hasChild(xmlNode *__pyx_v_c_node) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("hasChild", 0);
+  __Pyx_TraceCall("hasChild", __pyx_f[24], 121, 0, __PYX_ERR(24, 121, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":122
  * 
@@ -209003,6 +222916,7 @@ int hasChild(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api xmlNode* findChild(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(24, 122, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__hasChild(__pyx_v_c_node);
   goto __pyx_L0;
 
@@ -209015,7 +222929,11 @@ int hasChild(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.hasChild", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209030,8 +222948,10 @@ int hasChild(xmlNode *__pyx_v_c_node) {
 
 xmlNode *findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("findChild", 0);
+  __Pyx_TraceCall("findChild", __pyx_f[24], 124, 0, __PYX_ERR(24, 124, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":125
  * 
@@ -209040,6 +222960,7 @@ xmlNode *findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  * 
  * cdef public api xmlNode* findChildForwards(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(24, 125, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__findChild(__pyx_v_c_node, __pyx_v_index);
   goto __pyx_L0;
 
@@ -209052,7 +222973,11 @@ xmlNode *findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.findChild", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209067,8 +222992,10 @@ xmlNode *findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
 
 xmlNode *findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("findChildForwards", 0);
+  __Pyx_TraceCall("findChildForwards", __pyx_f[24], 127, 0, __PYX_ERR(24, 127, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":128
  * 
@@ -209077,6 +223004,7 @@ xmlNode *findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  * 
  * cdef public api xmlNode* findChildBackwards(xmlNode* c_node, Py_ssize_t index):
  */
+  __Pyx_TraceLine(128,0,__PYX_ERR(24, 128, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, __pyx_v_index);
   goto __pyx_L0;
 
@@ -209089,7 +223017,11 @@ xmlNode *findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.findChildForwards", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209104,8 +223036,10 @@ xmlNode *findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
 
 xmlNode *findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("findChildBackwards", 0);
+  __Pyx_TraceCall("findChildBackwards", __pyx_f[24], 130, 0, __PYX_ERR(24, 130, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":131
  * 
@@ -209114,6 +223048,7 @@ xmlNode *findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  * 
  * cdef public api xmlNode* nextElement(xmlNode* c_node):
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(24, 131, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_node, __pyx_v_index);
   goto __pyx_L0;
 
@@ -209126,7 +223061,11 @@ xmlNode *findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.findChildBackwards", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209141,8 +223080,10 @@ xmlNode *findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
 
 xmlNode *nextElement(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("nextElement", 0);
+  __Pyx_TraceCall("nextElement", __pyx_f[24], 133, 0, __PYX_ERR(24, 133, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":134
  * 
@@ -209151,6 +223092,7 @@ xmlNode *nextElement(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api xmlNode* previousElement(xmlNode* c_node):
  */
+  __Pyx_TraceLine(134,0,__PYX_ERR(24, 134, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
   goto __pyx_L0;
 
@@ -209163,7 +223105,11 @@ xmlNode *nextElement(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.nextElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209178,8 +223124,10 @@ xmlNode *nextElement(xmlNode *__pyx_v_c_node) {
 
 xmlNode *previousElement(xmlNode *__pyx_v_c_node) {
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("previousElement", 0);
+  __Pyx_TraceCall("previousElement", __pyx_f[24], 136, 0, __PYX_ERR(24, 136, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":137
  * 
@@ -209188,6 +223136,7 @@ xmlNode *previousElement(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api void appendChild(_Element parent, _Element child):
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(24, 137, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
   goto __pyx_L0;
 
@@ -209200,7 +223149,11 @@ xmlNode *previousElement(xmlNode *__pyx_v_c_node) {
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.previousElement", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209214,9 +223167,11 @@ xmlNode *previousElement(xmlNode *__pyx_v_c_node) {
  */
 
 void appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v_child) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("appendChild", 0);
+  __Pyx_TraceCall("appendChild", __pyx_f[24], 139, 0, __PYX_ERR(24, 139, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":141
  * cdef public api void appendChild(_Element parent, _Element child):
@@ -209225,6 +223180,7 @@ void appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v
  * 
  * cdef public api int appendChildToElement(_Element parent, _Element child) except -1:
  */
+  __Pyx_TraceLine(141,0,__PYX_ERR(24, 141, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_child); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 141, __pyx_L1_error)
 
   /* "src/lxml/public-api.pxi":139
@@ -209240,6 +223196,7 @@ void appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v
   __pyx_L1_error:;
   __Pyx_WriteUnraisable("lxml.etree.appendChild", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -209253,9 +223210,11 @@ void appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v
 
 int appendChildToElement(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v_child) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("appendChildToElement", 0);
+  __Pyx_TraceCall("appendChildToElement", __pyx_f[24], 143, 0, __PYX_ERR(24, 143, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":144
  * 
@@ -209264,6 +223223,7 @@ int appendChildToElement(struct LxmlElement *__pyx_v_parent, struct LxmlElement
  * 
  * cdef public api object pyunicode(const_xmlChar* s):
  */
+  __Pyx_TraceLine(144,0,__PYX_ERR(24, 144, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_child); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 144, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -209281,6 +223241,7 @@ int appendChildToElement(struct LxmlElement *__pyx_v_parent, struct LxmlElement
   __Pyx_AddTraceback("lxml.etree.appendChildToElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209295,10 +223256,12 @@ int appendChildToElement(struct LxmlElement *__pyx_v_parent, struct LxmlElement
 
 PyObject *pyunicode(const xmlChar *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("pyunicode", 0);
+  __Pyx_TraceCall("pyunicode", __pyx_f[24], 146, 0, __PYX_ERR(24, 146, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":147
  * 
@@ -209307,6 +223270,7 @@ PyObject *pyunicode(const xmlChar *__pyx_v_s) {
  *         raise TypeError
  *     return funicode(s)
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(24, 147, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_s == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -209317,6 +223281,7 @@ PyObject *pyunicode(const xmlChar *__pyx_v_s) {
  *     return funicode(s)
  * 
  */
+    __Pyx_TraceLine(148,0,__PYX_ERR(24, 148, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, 0, 0, 0);
     __PYX_ERR(24, 148, __pyx_L1_error)
 
@@ -209336,6 +223301,7 @@ PyObject *pyunicode(const xmlChar *__pyx_v_s) {
  * 
  * cdef public api bytes utf8(object s):
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(24, 149, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -209358,6 +223324,7 @@ PyObject *pyunicode(const xmlChar *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209372,9 +223339,11 @@ PyObject *pyunicode(const xmlChar *__pyx_v_s) {
 
 PyObject *utf8(PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("utf8", 0);
+  __Pyx_TraceCall("utf8", __pyx_f[24], 151, 0, __PYX_ERR(24, 151, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":152
  * 
@@ -209383,6 +223352,7 @@ PyObject *utf8(PyObject *__pyx_v_s) {
  * 
  * cdef public api tuple getNsTag(object tag):
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(24, 152, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 152, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209405,6 +223375,7 @@ PyObject *utf8(PyObject *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209419,9 +223390,11 @@ PyObject *utf8(PyObject *__pyx_v_s) {
 
 PyObject *getNsTag(PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("getNsTag", 0);
+  __Pyx_TraceCall("getNsTag", __pyx_f[24], 154, 0, __PYX_ERR(24, 154, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":155
  * 
@@ -209430,6 +223403,7 @@ PyObject *getNsTag(PyObject *__pyx_v_tag) {
  * 
  * cdef public api tuple getNsTagWithEmptyNs(object tag):
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(24, 155, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209452,6 +223426,7 @@ PyObject *getNsTag(PyObject *__pyx_v_tag) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209466,9 +223441,11 @@ PyObject *getNsTag(PyObject *__pyx_v_tag) {
 
 PyObject *getNsTagWithEmptyNs(PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("getNsTagWithEmptyNs", 0);
+  __Pyx_TraceCall("getNsTagWithEmptyNs", __pyx_f[24], 157, 0, __PYX_ERR(24, 157, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":158
  * 
@@ -209477,6 +223454,7 @@ PyObject *getNsTagWithEmptyNs(PyObject *__pyx_v_tag) {
  * 
  * cdef public api object namespacedName(xmlNode* c_node):
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(24, 158, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTagWithEmptyNs(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 158, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209499,6 +223477,7 @@ PyObject *getNsTagWithEmptyNs(PyObject *__pyx_v_tag) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209513,9 +223492,11 @@ PyObject *getNsTagWithEmptyNs(PyObject *__pyx_v_tag) {
 
 PyObject *namespacedName(xmlNode *__pyx_v_c_node) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("namespacedName", 0);
+  __Pyx_TraceCall("namespacedName", __pyx_f[24], 160, 0, __PYX_ERR(24, 160, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":161
  * 
@@ -209524,6 +223505,7 @@ PyObject *namespacedName(xmlNode *__pyx_v_c_node) {
  * 
  * cdef public api object namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(24, 161, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedName(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 161, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209546,6 +223528,7 @@ PyObject *namespacedName(xmlNode *__pyx_v_c_node) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209560,9 +223543,11 @@ PyObject *namespacedName(xmlNode *__pyx_v_c_node) {
 
 PyObject *namespacedNameFromNsName(const xmlChar *__pyx_v_href, const xmlChar *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("namespacedNameFromNsName", 0);
+  __Pyx_TraceCall("namespacedNameFromNsName", __pyx_f[24], 163, 0, __PYX_ERR(24, 163, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":164
  * 
@@ -209571,6 +223556,7 @@ PyObject *namespacedNameFromNsName(const xmlChar *__pyx_v_href, const xmlChar *_
  * 
  * cdef public api void iteratorStoreNext(_ElementIterator iterator, _Element node):
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(24, 164, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 164, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209593,6 +223579,7 @@ PyObject *namespacedNameFromNsName(const xmlChar *__pyx_v_href, const xmlChar *_
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209606,8 +223593,10 @@ PyObject *namespacedNameFromNsName(const xmlChar *__pyx_v_href, const xmlChar *_
  */
 
 void iteratorStoreNext(struct LxmlElementIterator *__pyx_v_iterator, struct LxmlElement *__pyx_v_node) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("iteratorStoreNext", 0);
+  __Pyx_TraceCall("iteratorStoreNext", __pyx_f[24], 166, 0, __PYX_ERR(24, 166, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":168
  * cdef public api void iteratorStoreNext(_ElementIterator iterator, _Element node):
@@ -209616,6 +223605,7 @@ void iteratorStoreNext(struct LxmlElementIterator *__pyx_v_iterator, struct Lxml
  * 
  * cdef public api void initTagMatch(_ElementTagMatcher matcher, tag):
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(24, 168, __pyx_L1_error))
   ((struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *)__pyx_v_iterator->__pyx_base.__pyx_vtab)->_storeNext(__pyx_v_iterator, __pyx_v_node);
 
   /* "src/lxml/public-api.pxi":166
@@ -209627,6 +223617,11 @@ void iteratorStoreNext(struct LxmlElementIterator *__pyx_v_iterator, struct Lxml
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.etree.iteratorStoreNext", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -209639,9 +223634,11 @@ void iteratorStoreNext(struct LxmlElementIterator *__pyx_v_iterator, struct Lxml
  */
 
 void initTagMatch(struct LxmlElementTagMatcher *__pyx_v_matcher, PyObject *__pyx_v_tag) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("initTagMatch", 0);
+  __Pyx_TraceCall("initTagMatch", __pyx_f[24], 170, 0, __PYX_ERR(24, 170, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":172
  * cdef public api void initTagMatch(_ElementTagMatcher matcher, tag):
@@ -209650,6 +223647,7 @@ void initTagMatch(struct LxmlElementTagMatcher *__pyx_v_matcher, PyObject *__pyx
  * 
  * cdef public api tree.xmlNs* findOrBuildNodeNsPrefix(
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(24, 172, __pyx_L1_error))
   __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *)__pyx_v_matcher->__pyx_vtab)->_initTagMatch(__pyx_v_matcher, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -209668,6 +223666,7 @@ void initTagMatch(struct LxmlElementTagMatcher *__pyx_v_matcher, PyObject *__pyx
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_WriteUnraisable("lxml.etree.initTagMatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -209681,11 +223680,13 @@ void initTagMatch(struct LxmlElementTagMatcher *__pyx_v_matcher, PyObject *__pyx
 
 xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_href, const xmlChar *__pyx_v_prefix) {
   xmlNs *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   xmlNs *__pyx_t_3;
   __Pyx_RefNannySetupContext("findOrBuildNodeNsPrefix", 0);
+  __Pyx_TraceCall("findOrBuildNodeNsPrefix", __pyx_f[24], 174, 0, __PYX_ERR(24, 174, __pyx_L1_error));
 
   /* "src/lxml/public-api.pxi":176
  * cdef public api tree.xmlNs* findOrBuildNodeNsPrefix(
@@ -209694,6 +223695,7 @@ xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_
  *         raise TypeError
  *     return doc._findOrBuildNodeNs(c_node, href, prefix, 0)
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(24, 176, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
@@ -209704,6 +223706,7 @@ xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_
  *         raise TypeError             # <<<<<<<<<<<<<<
  *     return doc._findOrBuildNodeNs(c_node, href, prefix, 0)
  */
+    __Pyx_TraceLine(177,0,__PYX_ERR(24, 177, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, 0, 0, 0);
     __PYX_ERR(24, 177, __pyx_L1_error)
 
@@ -209721,6 +223724,7 @@ xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_
  *         raise TypeError
  *     return doc._findOrBuildNodeNs(c_node, href, prefix, 0)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(24, 178, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_node, __pyx_v_href, __pyx_v_prefix, 0); if (unlikely(__pyx_t_3 == ((xmlNs *)NULL))) __PYX_ERR(24, 178, __pyx_L1_error)
   __pyx_r = __pyx_t_3;
   goto __pyx_L0;
@@ -209738,6 +223742,7 @@ xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_
   __Pyx_AddTraceback("lxml.etree.findOrBuildNodeNsPrefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209767,9 +223772,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_MemDebug_1bytes_used(PyObject *__pyx_v_
 
 static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_bytes_used(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__MemDebug *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__394)
   __Pyx_RefNannySetupContext("bytes_used", 0);
+  __Pyx_TraceCall("bytes_used", __pyx_f[25], 7, 0, __PYX_ERR(25, 7, __pyx_L1_error));
 
   /* "src/lxml/debug.pxi":14
  *         the accuracy on 64 bit systems.
@@ -209778,6 +223786,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_bytes_used(CYTHON_UNUSED struc
  * 
  *     def blocks_used(self):
  */
+  __Pyx_TraceLine(14,0,__PYX_ERR(25, 14, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(xmlMemUsed()); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 14, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209800,6 +223809,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_bytes_used(CYTHON_UNUSED struc
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209829,9 +223839,12 @@ static PyObject *__pyx_pw_4lxml_5etree_9_MemDebug_3blocks_used(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_2blocks_used(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__MemDebug *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__395)
   __Pyx_RefNannySetupContext("blocks_used", 0);
+  __Pyx_TraceCall("blocks_used", __pyx_f[25], 16, 0, __PYX_ERR(25, 16, __pyx_L1_error));
 
   /* "src/lxml/debug.pxi":23
  *         the accuracy on 64 bit systems.
@@ -209840,6 +223853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_2blocks_used(CYTHON_UNUSED str
  * 
  *     def dict_size(self):
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(25, 23, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyInt_From_int(xmlMemBlocks()); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -209862,6 +223876,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_2blocks_used(CYTHON_UNUSED str
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -209892,10 +223907,13 @@ static PyObject *__pyx_pw_4lxml_5etree_9_MemDebug_5dict_size(PyObject *__pyx_v_s
 static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__MemDebug *__pyx_v_self) {
   xmlDict *__pyx_v_c_dict;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__396)
   __Pyx_RefNannySetupContext("dict_size", 0);
+  __Pyx_TraceCall("dict_size", __pyx_f[25], 25, 0, __PYX_ERR(25, 25, __pyx_L1_error));
 
   /* "src/lxml/debug.pxi":31
  *         for the current thread.  Each thread has its own dictionary.
@@ -209904,6 +223922,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struc
  *         if c_dict is NULL:
  *             raise MemoryError()
  */
+  __Pyx_TraceLine(31,0,__PYX_ERR(25, 31, __pyx_L1_error))
   __pyx_v_c_dict = __pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, NULL);
 
   /* "src/lxml/debug.pxi":32
@@ -209913,6 +223932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struc
  *             raise MemoryError()
  *         return tree.xmlDictSize(c_dict)
  */
+  __Pyx_TraceLine(32,0,__PYX_ERR(25, 32, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_dict == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -209923,6 +223943,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struc
  *         return tree.xmlDictSize(c_dict)
  * 
  */
+    __Pyx_TraceLine(33,0,__PYX_ERR(25, 33, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(25, 33, __pyx_L1_error)
 
     /* "src/lxml/debug.pxi":32
@@ -209941,6 +223962,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struc
  * 
  *     def dump(self, output_file=None, byte_count=None):
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(25, 34, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyInt_FromSize_t(xmlDictSize(__pyx_v_c_dict)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 34, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -209963,6 +223985,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_4dict_size(CYTHON_UNUSED struc
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -210050,6 +224073,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
   Py_ssize_t __pyx_v_c_count;
   FILE *__pyx_v_f;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -210069,7 +224093,9 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
   PyObject *__pyx_t_16 = NULL;
   PyObject *__pyx_t_17 = NULL;
   PyObject *__pyx_t_18 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__397)
   __Pyx_RefNannySetupContext("dump", 0);
+  __Pyx_TraceCall("dump", __pyx_f[25], 36, 0, __PYX_ERR(25, 36, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_output_file);
 
   /* "src/lxml/debug.pxi":49
@@ -210079,6 +224105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *             output_file = b'.memorylist'
  *         elif isinstance(output_file, unicode):
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(25, 49, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_output_file == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -210090,6 +224117,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *         elif isinstance(output_file, unicode):
  *             output_file.encode(sys.getfilesystemencoding())
  */
+    __Pyx_TraceLine(50,0,__PYX_ERR(25, 50, __pyx_L1_error))
     __Pyx_INCREF(__pyx_kp_b_memorylist);
     __Pyx_DECREF_SET(__pyx_v_output_file, __pyx_kp_b_memorylist);
 
@@ -210110,6 +224138,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *             output_file.encode(sys.getfilesystemencoding())
  * 
  */
+  __Pyx_TraceLine(51,0,__PYX_ERR(25, 51, __pyx_L1_error))
   __pyx_t_2 = PyUnicode_Check(__pyx_v_output_file); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -210121,6 +224150,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  * 
  *         f = stdio.fopen(output_file, "w")
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(25, 52, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_file, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 52, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 52, __pyx_L1_error)
@@ -210208,6 +224238,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *         if f is NULL:
  *             raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(25, 54, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_output_file); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(25, 54, __pyx_L1_error)
   __pyx_v_f = fopen(__pyx_t_8, ((char const *)"w"));
 
@@ -210218,6 +224249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *             raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
  *         try:
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(25, 55, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_f == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -210228,6 +224260,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *         try:
  *             if byte_count is None:
  */
+    __Pyx_TraceLine(56,0,__PYX_ERR(25, 56, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_file, __pyx_n_s_decode); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 56, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 56, __pyx_L1_error)
@@ -210325,6 +224358,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *             if byte_count is None:
  *                 tree.xmlMemDisplay(f)
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(25, 57, __pyx_L6_error))
   /*try:*/ {
 
     /* "src/lxml/debug.pxi":58
@@ -210334,6 +224368,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *                 tree.xmlMemDisplay(f)
  *             else:
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(25, 58, __pyx_L6_error))
     __pyx_t_1 = (__pyx_v_byte_count == Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -210345,6 +224380,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *             else:
  *                 c_count = byte_count
  */
+      __Pyx_TraceLine(59,0,__PYX_ERR(25, 59, __pyx_L6_error))
       xmlMemDisplay(__pyx_v_f);
 
       /* "src/lxml/debug.pxi":58
@@ -210364,6 +224400,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *                 tree.xmlMemDisplayLast(f, c_count)
  *         finally:
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(25, 61, __pyx_L6_error))
     /*else*/ {
       __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_byte_count); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 61, __pyx_L6_error)
       __pyx_v_c_count = __pyx_t_9;
@@ -210375,6 +224412,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  *         finally:
  *             stdio.fclose(f)
  */
+      __Pyx_TraceLine(62,0,__PYX_ERR(25, 62, __pyx_L6_error))
       xmlMemDisplayLast(__pyx_v_f, __pyx_v_c_count);
     }
     __pyx_L8:;
@@ -210387,6 +224425,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
  * 
  *     def show(self, output_file=None, block_count=None):
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(25, 64, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       (void)(fclose(__pyx_v_f));
@@ -210453,6 +224492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_6dump(CYTHON_UNUSED struct __p
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_output_file);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -210539,6 +224579,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_MemDebug_9show(PyObject *__pyx_v_self,
 static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __pyx_obj_4lxml_5etree__MemDebug *__pyx_v_self, PyObject *__pyx_v_output_file, PyObject *__pyx_v_block_count) {
   FILE *__pyx_v_f;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -210557,7 +224598,9 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
   PyObject *__pyx_t_15 = NULL;
   PyObject *__pyx_t_16 = NULL;
   PyObject *__pyx_t_17 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__398)
   __Pyx_RefNannySetupContext("show", 0);
+  __Pyx_TraceCall("show", __pyx_f[25], 66, 0, __PYX_ERR(25, 66, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_output_file);
 
   /* "src/lxml/debug.pxi":78
@@ -210567,6 +224610,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *             output_file = b'.memorydump'
  *         elif isinstance(output_file, unicode):
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(25, 78, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_output_file == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -210578,6 +224622,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *         elif isinstance(output_file, unicode):
  *             output_file.encode(sys.getfilesystemencoding())
  */
+    __Pyx_TraceLine(79,0,__PYX_ERR(25, 79, __pyx_L1_error))
     __Pyx_INCREF(__pyx_kp_b_memorydump);
     __Pyx_DECREF_SET(__pyx_v_output_file, __pyx_kp_b_memorydump);
 
@@ -210598,6 +224643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *             output_file.encode(sys.getfilesystemencoding())
  * 
  */
+  __Pyx_TraceLine(80,0,__PYX_ERR(25, 80, __pyx_L1_error))
   __pyx_t_2 = PyUnicode_Check(__pyx_v_output_file); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -210609,6 +224655,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  * 
  *         f = stdio.fopen(output_file, "w")
  */
+    __Pyx_TraceLine(81,0,__PYX_ERR(25, 81, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_file, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 81, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 81, __pyx_L1_error)
@@ -210696,6 +224743,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *         if f is NULL:
  *             raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(25, 83, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_output_file); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(25, 83, __pyx_L1_error)
   __pyx_v_f = fopen(__pyx_t_8, ((char const *)"w"));
 
@@ -210706,6 +224754,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *             raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
  *         try:
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(25, 84, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_f == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -210716,6 +224765,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *         try:
  *             tree.xmlMemShow(f, block_count if block_count is not None else tree.xmlMemBlocks())
  */
+    __Pyx_TraceLine(85,0,__PYX_ERR(25, 85, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_file, __pyx_n_s_decode); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 85, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 85, __pyx_L1_error)
@@ -210813,6 +224863,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *             tree.xmlMemShow(f, block_count if block_count is not None else tree.xmlMemBlocks())
  *         finally:
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(25, 86, __pyx_L6_error))
   /*try:*/ {
 
     /* "src/lxml/debug.pxi":87
@@ -210822,6 +224873,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  *         finally:
  *             stdio.fclose(f)
  */
+    __Pyx_TraceLine(87,0,__PYX_ERR(25, 87, __pyx_L6_error))
     __pyx_t_1 = (__pyx_v_block_count != Py_None);
     if ((__pyx_t_1 != 0)) {
       __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_block_count); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 87, __pyx_L6_error)
@@ -210839,6 +224891,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
  * 
  * memory_debugger = _MemDebug()
  */
+  __Pyx_TraceLine(89,0,__PYX_ERR(25, 89, __pyx_L1_error))
   /*finally:*/ {
     /*normal exit:*/{
       (void)(fclose(__pyx_v_f));
@@ -210905,6 +224958,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_MemDebug_8show(CYTHON_UNUSED struct __p
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_output_file);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -218568,15 +232622,6 @@ static int __pyx_tp_traverse_4lxml_5etree__ParserContext(PyObject *o, visitproc
   return 0;
 }
 
-static int __pyx_tp_clear_4lxml_5etree__ParserContext(PyObject *o) {
-  struct __pyx_obj_4lxml_5etree__ParserContext *p = (struct __pyx_obj_4lxml_5etree__ParserContext *)o;
-  __pyx_tp_clear_4lxml_5etree__ResolverContext(o);
-  Py_CLEAR(p->_error_log);
-  Py_CLEAR(p->_validator);
-  Py_CLEAR(p->_doc);
-  return 0;
-}
-
 static PyMethodDef __pyx_methods_4lxml_5etree__ParserContext[] = {
   {0, 0, 0, 0}
 };
@@ -218609,7 +232654,7 @@ static PyTypeObject __pyx_type_4lxml_5etree__ParserContext = {
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   0, /*tp_doc*/
   __pyx_tp_traverse_4lxml_5etree__ParserContext, /*tp_traverse*/
-  __pyx_tp_clear_4lxml_5etree__ParserContext, /*tp_clear*/
+  0, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
@@ -218941,7 +232986,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*/
-  "XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, 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    - resolve_entities   - replace entities by their text value (default: True)\n    - huge_tree          - d""isable 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    - encoding - override the document encoding\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*/
+  "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    - 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\n    Other keyword arguments:\n\n    - encoding - override the document encoding\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*/
@@ -219421,19 +233466,6 @@ static int __pyx_tp_traverse_4lxml_5etree__SaxParserContext(PyObject *o, visitpr
   return 0;
 }
 
-static int __pyx_tp_clear_4lxml_5etree__SaxParserContext(PyObject *o) {
-  struct __pyx_obj_4lxml_5etree__SaxParserContext *p = (struct __pyx_obj_4lxml_5etree__SaxParserContext *)o;
-  __pyx_tp_clear_4lxml_5etree__ParserContext(o);
-  Py_CLEAR(p->_target);
-  Py_CLEAR(p->_parser);
-  Py_CLEAR(p->_ns_stack);
-  Py_CLEAR(p->_node_stack);
-  Py_CLEAR(p->events_iterator);
-  Py_CLEAR(p->_root);
-  Py_CLEAR(p->_matcher);
-  return 0;
-}
-
 static PyMethodDef __pyx_methods_4lxml_5etree__SaxParserContext[] = {
   {0, 0, 0, 0}
 };
@@ -219466,7 +233498,7 @@ static PyTypeObject __pyx_type_4lxml_5etree__SaxParserContext = {
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   "This class maps SAX2 events to parser target events.\n    ", /*tp_doc*/
   __pyx_tp_traverse_4lxml_5etree__SaxParserContext, /*tp_traverse*/
-  __pyx_tp_clear_4lxml_5etree__SaxParserContext, /*tp_clear*/
+  0, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
@@ -219901,13 +233933,6 @@ static int __pyx_tp_traverse_4lxml_5etree__TargetParserContext(PyObject *o, visi
   return 0;
 }
 
-static int __pyx_tp_clear_4lxml_5etree__TargetParserContext(PyObject *o) {
-  struct __pyx_obj_4lxml_5etree__TargetParserContext *p = (struct __pyx_obj_4lxml_5etree__TargetParserContext *)o;
-  __pyx_tp_clear_4lxml_5etree__SaxParserContext(o);
-  Py_CLEAR(p->_python_target);
-  return 0;
-}
-
 static PyTypeObject __pyx_type_4lxml_5etree__TargetParserContext = {
   PyVarObject_HEAD_INIT(0, 0)
   "lxml.etree._TargetParserContext", /*tp_name*/
@@ -219936,7 +233961,7 @@ static PyTypeObject __pyx_type_4lxml_5etree__TargetParserContext = {
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   "This class maps SAX2 events to the ET parser target interface.\n    ", /*tp_doc*/
   __pyx_tp_traverse_4lxml_5etree__TargetParserContext, /*tp_traverse*/
-  __pyx_tp_clear_4lxml_5etree__TargetParserContext, /*tp_clear*/
+  0, /*tp_clear*/
   0, /*tp_richcompare*/
   0, /*tp_weaklistoffset*/
   0, /*tp_iter*/
@@ -228317,52 +242342,52 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_XSLT_strparam, __pyx_k_XSLT_strparam, sizeof(__pyx_k_XSLT_strparam), 0, 0, 1, 1},
   {&__pyx_kp_s_XSLT_stylesheet_not_initialised, __pyx_k_XSLT_stylesheet_not_initialised, sizeof(__pyx_k_XSLT_stylesheet_not_initialised), 0, 0, 1, 0},
   {&__pyx_n_s_XSLT_tostring, __pyx_k_XSLT_tostring, sizeof(__pyx_k_XSLT_tostring), 0, 0, 1, 1},
-  {&__pyx_kp_u__123, __pyx_k__123, sizeof(__pyx_k__123), 0, 1, 0, 0},
-  {&__pyx_kp_u__124, __pyx_k__124, sizeof(__pyx_k__124), 0, 1, 0, 0},
-  {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0},
-  {&__pyx_kp_b__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 0, 0, 0},
-  {&__pyx_kp_s__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 0, 1, 0},
-  {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0},
-  {&__pyx_kp_b__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 0, 0, 0},
-  {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0},
-  {&__pyx_kp_u__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0, 0},
-  {&__pyx_kp_s__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 0, 1, 0},
-  {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0},
-  {&__pyx_kp_s__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 0, 1, 0},
-  {&__pyx_kp_b__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 0, 0},
-  {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
+  {&__pyx_kp_b__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 0, 0},
+  {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0},
+  {&__pyx_kp_b__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 0, 0},
+  {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
+  {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0},
+  {&__pyx_kp_b__112, __pyx_k__112, sizeof(__pyx_k__112), 0, 0, 0, 0},
+  {&__pyx_kp_u__112, __pyx_k__112, sizeof(__pyx_k__112), 0, 1, 0, 0},
+  {&__pyx_kp_b__113, __pyx_k__113, sizeof(__pyx_k__113), 0, 0, 0, 0},
+  {&__pyx_kp_u__113, __pyx_k__113, sizeof(__pyx_k__113), 0, 1, 0, 0},
+  {&__pyx_kp_u__114, __pyx_k__114, sizeof(__pyx_k__114), 0, 1, 0, 0},
+  {&__pyx_kp_u__115, __pyx_k__115, sizeof(__pyx_k__115), 0, 1, 0, 0},
+  {&__pyx_kp_u__128, __pyx_k__128, sizeof(__pyx_k__128), 0, 1, 0, 0},
+  {&__pyx_kp_u__129, __pyx_k__129, sizeof(__pyx_k__129), 0, 1, 0, 0},
+  {&__pyx_kp_s__130, __pyx_k__130, sizeof(__pyx_k__130), 0, 0, 1, 0},
+  {&__pyx_kp_b__160, __pyx_k__160, sizeof(__pyx_k__160), 0, 0, 0, 0},
+  {&__pyx_kp_s__160, __pyx_k__160, sizeof(__pyx_k__160), 0, 0, 1, 0},
+  {&__pyx_kp_s__161, __pyx_k__161, sizeof(__pyx_k__161), 0, 0, 1, 0},
+  {&__pyx_kp_b__166, __pyx_k__166, sizeof(__pyx_k__166), 0, 0, 0, 0},
+  {&__pyx_kp_b__170, __pyx_k__170, sizeof(__pyx_k__170), 0, 0, 0, 0},
+  {&__pyx_kp_b__171, __pyx_k__171, sizeof(__pyx_k__171), 0, 0, 0, 0},
+  {&__pyx_n_s__214, __pyx_k__214, sizeof(__pyx_k__214), 0, 0, 1, 1},
+  {&__pyx_n_u__214, __pyx_k__214, sizeof(__pyx_k__214), 0, 1, 0, 1},
+  {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0},
+  {&__pyx_kp_b__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 0, 0},
+  {&__pyx_kp_s__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 1, 0},
+  {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0},
+  {&__pyx_kp_u__234, __pyx_k__234, sizeof(__pyx_k__234), 0, 1, 0, 0},
+  {&__pyx_kp_u__252, __pyx_k__252, sizeof(__pyx_k__252), 0, 1, 0, 0},
   {&__pyx_kp_b__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 0, 0, 0},
   {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0},
-  {&__pyx_kp_b__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 0, 0, 0},
-  {&__pyx_kp_s__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 0, 1, 0},
-  {&__pyx_kp_u__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 1, 0, 0},
-  {&__pyx_kp_u__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 1, 0, 0},
-  {&__pyx_kp_u__35, __pyx_k__35, sizeof(__pyx_k__35), 0, 1, 0, 0},
-  {&__pyx_kp_u__36, __pyx_k__36, sizeof(__pyx_k__36), 0, 1, 0, 0},
-  {&__pyx_kp_b__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 0, 0, 0},
-  {&__pyx_kp_u__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 1, 0, 0},
-  {&__pyx_kp_b__39, __pyx_k__39, sizeof(__pyx_k__39), 0, 0, 0, 0},
-  {&__pyx_kp_u__39, __pyx_k__39, sizeof(__pyx_k__39), 0, 1, 0, 0},
-  {&__pyx_kp_b__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 0, 0},
-  {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
-  {&__pyx_kp_u__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0, 0},
-  {&__pyx_kp_u__40, __pyx_k__40, sizeof(__pyx_k__40), 0, 1, 0, 0},
-  {&__pyx_kp_u__41, __pyx_k__41, sizeof(__pyx_k__41), 0, 1, 0, 0},
-  {&__pyx_kp_u__46, __pyx_k__46, sizeof(__pyx_k__46), 0, 1, 0, 0},
-  {&__pyx_kp_u__47, __pyx_k__47, sizeof(__pyx_k__47), 0, 1, 0, 0},
-  {&__pyx_kp_s__48, __pyx_k__48, sizeof(__pyx_k__48), 0, 0, 1, 0},
-  {&__pyx_kp_b__53, __pyx_k__53, sizeof(__pyx_k__53), 0, 0, 0, 0},
-  {&__pyx_kp_s__53, __pyx_k__53, sizeof(__pyx_k__53), 0, 0, 1, 0},
-  {&__pyx_kp_s__54, __pyx_k__54, sizeof(__pyx_k__54), 0, 0, 1, 0},
-  {&__pyx_kp_b__57, __pyx_k__57, sizeof(__pyx_k__57), 0, 0, 0, 0},
+  {&__pyx_kp_u__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 1, 0, 0},
+  {&__pyx_kp_u__348, __pyx_k__348, sizeof(__pyx_k__348), 0, 1, 0, 0},
+  {&__pyx_kp_u__349, __pyx_k__349, sizeof(__pyx_k__349), 0, 1, 0, 0},
+  {&__pyx_kp_s__37, __pyx_k__37, sizeof(__pyx_k__37), 0, 0, 1, 0},
+  {&__pyx_kp_u__37, __pyx_k__37, sizeof(__pyx_k__37), 0, 1, 0, 0},
+  {&__pyx_kp_s__56, __pyx_k__56, sizeof(__pyx_k__56), 0, 0, 1, 0},
   {&__pyx_kp_b__60, __pyx_k__60, sizeof(__pyx_k__60), 0, 0, 0, 0},
+  {&__pyx_kp_u__60, __pyx_k__60, sizeof(__pyx_k__60), 0, 1, 0, 0},
   {&__pyx_kp_b__61, __pyx_k__61, sizeof(__pyx_k__61), 0, 0, 0, 0},
-  {&__pyx_kp_b__635, __pyx_k__635, sizeof(__pyx_k__635), 0, 0, 0, 0},
-  {&__pyx_kp_b__637, __pyx_k__637, sizeof(__pyx_k__637), 0, 0, 0, 0},
-  {&__pyx_n_s__70, __pyx_k__70, sizeof(__pyx_k__70), 0, 0, 1, 1},
-  {&__pyx_n_u__70, __pyx_k__70, sizeof(__pyx_k__70), 0, 1, 0, 1},
-  {&__pyx_kp_u__72, __pyx_k__72, sizeof(__pyx_k__72), 0, 1, 0, 0},
-  {&__pyx_kp_u__76, __pyx_k__76, sizeof(__pyx_k__76), 0, 1, 0, 0},
+  {&__pyx_kp_s__61, __pyx_k__61, sizeof(__pyx_k__61), 0, 0, 1, 0},
+  {&__pyx_kp_u__61, __pyx_k__61, sizeof(__pyx_k__61), 0, 1, 0, 0},
+  {&__pyx_kp_u__63, __pyx_k__63, sizeof(__pyx_k__63), 0, 1, 0, 0},
+  {&__pyx_kp_u__64, __pyx_k__64, sizeof(__pyx_k__64), 0, 1, 0, 0},
+  {&__pyx_kp_u__65, __pyx_k__65, sizeof(__pyx_k__65), 0, 1, 0, 0},
+  {&__pyx_kp_b__663, __pyx_k__663, sizeof(__pyx_k__663), 0, 0, 0, 0},
+  {&__pyx_kp_b__665, __pyx_k__665, sizeof(__pyx_k__665), 0, 0, 0, 0},
   {&__pyx_n_s_abspath, __pyx_k_abspath, sizeof(__pyx_k_abspath), 0, 0, 1, 1},
   {&__pyx_n_s_accepted_domains, __pyx_k_accepted_domains, sizeof(__pyx_k_accepted_domains), 0, 0, 1, 1},
   {&__pyx_n_s_access_control, __pyx_k_access_control, sizeof(__pyx_k_access_control), 0, 0, 1, 1},
@@ -229143,8 +243168,8 @@ static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 3465, __pyx_L1_error)
   __pyx_builtin_ReferenceError = __Pyx_GetBuiltinName(__pyx_n_s_ReferenceError); if (!__pyx_builtin_ReferenceError) __PYX_ERR(6, 18, __pyx_L1_error)
   __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(7, 52, __pyx_L1_error)
-  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(2, 637, __pyx_L1_error)
-  __pyx_builtin_LookupError = __Pyx_GetBuiltinName(__pyx_n_s_LookupError); if (!__pyx_builtin_LookupError) __PYX_ERR(2, 822, __pyx_L1_error)
+  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(2, 638, __pyx_L1_error)
+  __pyx_builtin_LookupError = __Pyx_GetBuiltinName(__pyx_n_s_LookupError); if (!__pyx_builtin_LookupError) __PYX_ERR(2, 823, __pyx_L1_error)
   __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(8, 701, __pyx_L1_error)
   __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 3542, __pyx_L1_error)
   return 0;
@@ -229163,9 +243188,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     _tagValidOrRaise(prefix_utf)
  *     _uriValidOrRaise(uri_utf)
  */
-  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Prefix_format_reserved_for_inter); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 184, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple_);
-  __Pyx_GIVEREF(__pyx_tuple_);
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Prefix_format_reserved_for_inter); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 184, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__8);
+  __Pyx_GIVEREF(__pyx_tuple__8);
 
   /* "lxml/etree.pyx":224
  * cdef __unpackDottedVersion(version):
@@ -229174,18 +243199,18 @@ static int __Pyx_InitCachedConstants(void) {
  *     for item in l:
  *         try:
  */
-  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_ascii); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__2);
-  __Pyx_GIVEREF(__pyx_tuple__2);
-  __pyx_tuple__5 = PyTuple_Pack(2, __pyx_kp_u__3, __pyx_kp_u__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__5);
-  __Pyx_GIVEREF(__pyx_tuple__5);
-  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u__4); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
-  __pyx_slice__7 = PySlice_New(Py_None, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(0, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__7);
-  __Pyx_GIVEREF(__pyx_slice__7);
+  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_ascii); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__9);
+  __Pyx_GIVEREF(__pyx_tuple__9);
+  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_u__10, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u__11); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
+  __pyx_slice__14 = PySlice_New(Py_None, __pyx_int_4, Py_None); if (unlikely(!__pyx_slice__14)) __PYX_ERR(0, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__14);
+  __Pyx_GIVEREF(__pyx_slice__14);
 
   /* "lxml/etree.pyx":229
  *             item = int(item)
@@ -229194,9 +243219,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 count = item[3:]
  *                 item = -300
  */
-  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_u_dev); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 229, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__8);
-  __Pyx_GIVEREF(__pyx_tuple__8);
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_u_dev); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
 
   /* "lxml/etree.pyx":230
  *         except ValueError:
@@ -229205,9 +243230,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 item = -300
  *             elif item.startswith(u'alpha'):
  */
-  __pyx_slice__9 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__9)) __PYX_ERR(0, 230, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__9);
-  __Pyx_GIVEREF(__pyx_slice__9);
+  __pyx_slice__16 = PySlice_New(__pyx_int_3, Py_None, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__16);
+  __Pyx_GIVEREF(__pyx_slice__16);
 
   /* "lxml/etree.pyx":232
  *                 count = item[3:]
@@ -229216,9 +243241,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 count = item[5:]
  *                 item = -200
  */
-  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_u_alpha); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 232, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
+  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_u_alpha); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 232, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
 
   /* "lxml/etree.pyx":233
  *                 item = -300
@@ -229227,9 +243252,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 item = -200
  *             elif item.startswith(u'beta'):
  */
-  __pyx_slice__11 = PySlice_New(__pyx_int_5, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) __PYX_ERR(0, 233, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__11);
-  __Pyx_GIVEREF(__pyx_slice__11);
+  __pyx_slice__18 = PySlice_New(__pyx_int_5, Py_None, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(0, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__18);
+  __Pyx_GIVEREF(__pyx_slice__18);
 
   /* "lxml/etree.pyx":235
  *                 count = item[5:]
@@ -229238,9 +243263,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 count = item[4:]
  *                 item = -100
  */
-  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_u_beta); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 235, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_u_beta); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
 
   /* "lxml/etree.pyx":236
  *                 item = -200
@@ -229249,9 +243274,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 item = -100
  *             else:
  */
-  __pyx_slice__13 = PySlice_New(__pyx_int_4, Py_None, Py_None); if (unlikely(!__pyx_slice__13)) __PYX_ERR(0, 236, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__13);
-  __Pyx_GIVEREF(__pyx_slice__13);
+  __pyx_slice__20 = PySlice_New(__pyx_int_4, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 236, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__20);
+  __Pyx_GIVEREF(__pyx_slice__20);
 
   /* "src/lxml/proxy.pxi":566
  *     """
@@ -229260,9 +243285,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type
  */
-  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Illegal_document_provided_NULL); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(4, 566, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Illegal_document_provided_NULL); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(4, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
 
   /* "src/lxml/apihelpers.pxi":1278
  *     # prevent cycles
@@ -229271,9 +243296,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     # store possible text node
  *     c_next = c_node.next
  */
-  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(5, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
+  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(5, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__24);
+  __Pyx_GIVEREF(__pyx_tuple__24);
 
   /* "src/lxml/apihelpers.pxi":1297
  *     # prevent cycles
@@ -229282,9 +243307,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     # store possible text node
  *     c_next = c_node.next
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(5, 1297, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(5, 1297, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
 
   /* "src/lxml/apihelpers.pxi":1330
  *         if element._c_node is c_node:
@@ -229293,9 +243318,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     # store possible text node
  *     c_next = c_node.next
  */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_cannot_add_ancestor_as_sibling_p); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(5, 1330, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_cannot_add_ancestor_as_sibling_p); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(5, 1330, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
 
   /* "src/lxml/apihelpers.pxi":1439
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
@@ -229304,9 +243329,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
  *     return utf8_string
  */
-  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_All_strings_must_be_XML_compatib); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(5, 1439, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_All_strings_must_be_XML_compatib); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(5, 1439, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
 
   /* "src/lxml/apihelpers.pxi":1452
  *     methods, e.g. _Element.__repr__().
@@ -229315,9 +243340,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * 
  */
-  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_unicode_escape); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(5, 1452, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_unicode_escape); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(5, 1452, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
 
   /* "src/lxml/apihelpers.pxi":1494
  *         return filename8
@@ -229326,9 +243351,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * cdef object _decodeFilename(const_xmlChar* c_path):
  */
-  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(5, 1494, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__22);
-  __Pyx_GIVEREF(__pyx_tuple__22);
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(5, 1494, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
 
   /* "src/lxml/apihelpers.pxi":1543
  *         return (<unicode>filename).encode('utf8')
@@ -229337,9 +243362,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * cdef tuple _getNsTag(tag):
  */
-  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(5, 1543, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__23);
-  __Pyx_GIVEREF(__pyx_tuple__23);
+  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(5, 1543, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
+  __Pyx_GIVEREF(__pyx_tuple__30);
 
   /* "src/lxml/xmlerror.pxi":595
  *     except KeyError:
@@ -229348,9 +243373,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return log
  * 
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 595, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__27);
-  __Pyx_GIVEREF(__pyx_tuple__27);
+  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 595, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__54);
+  __Pyx_GIVEREF(__pyx_tuple__54);
 
   /* "src/lxml/xmlerror.pxi":795
  *             if not line:
@@ -229359,9 +243384,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             value = int(value)
  *             setattr(cls, name, value)
  */
-  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s__28); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 795, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__29);
-  __Pyx_GIVEREF(__pyx_tuple__29);
+  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s__56); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 795, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__57);
+  __Pyx_GIVEREF(__pyx_tuple__57);
 
   /* "lxml/etree.pyx":564
  *                 match = _find_invalid_public_id_characters(value)
@@ -229370,9 +243395,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 value = _utf8(value)
  *                 c_value = tree.xmlStrdup(_xcstr(value))
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 564, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 564, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__59);
+  __Pyx_GIVEREF(__pyx_tuple__59);
 
   /* "lxml/etree.pyx":595
  *                 # enclosed in single quotes or quotes.
@@ -229381,9 +243406,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                         'System URL may not contain both single (\') and double quotes (").')
  *                 c_value = tree.xmlStrdup(_xcstr(bvalue))
  */
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_System_URL_may_not_contain_both); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 595, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_System_URL_may_not_contain_both); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
   /* "lxml/etree.pyx":1181
  *         #u"__nonzero__(self)" # currently fails in Py3.1
@@ -229392,9 +243417,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             u"The behavior of this method will change in future versions. "
  *             u"Use specific 'len(elem)' or 'elem is not None' test instead.",
  */
-  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_kp_u_The_behavior_of_this_method_will, __pyx_builtin_FutureWarning); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 1181, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
+  __pyx_tuple__78 = PyTuple_Pack(2, __pyx_kp_u_The_behavior_of_this_method_will, __pyx_builtin_FutureWarning); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 1181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__78);
+  __Pyx_GIVEREF(__pyx_tuple__78);
 
   /* "lxml/etree.pyx":2000
  *         if method == 'c14n':
@@ -229403,9 +243428,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  */
-  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 2000, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
+  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(0, 2000, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__122);
+  __Pyx_GIVEREF(__pyx_tuple__122);
 
   /* "lxml/etree.pyx":2002
  *                 raise ValueError("Cannot specify encoding with C14N")
@@ -229414,9 +243439,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 2002, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
+  __pyx_tuple__123 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(0, 2002, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__123);
+  __Pyx_GIVEREF(__pyx_tuple__123);
 
   /* "lxml/etree.pyx":2008
  *             return
@@ -229425,9 +243450,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 2008, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__124 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(0, 2008, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__124);
+  __Pyx_GIVEREF(__pyx_tuple__124);
 
   /* "lxml/etree.pyx":2034
  *         if docstring is not None and doctype is None:
@@ -229436,9 +243461,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)
  */
-  __pyx_tuple__45 = PyTuple_Pack(2, __pyx_kp_s_The_docstring_option_is_deprecat, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 2034, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
+  __pyx_tuple__125 = PyTuple_Pack(2, __pyx_kp_s_The_docstring_option_is_deprecat, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(0, 2034, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__125);
+  __Pyx_GIVEREF(__pyx_tuple__125);
 
   /* "lxml/etree.pyx":2200
  *         root = self.getroot()
@@ -229447,9 +243472,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 path = "." + path
  *         return root.find(path, namespaces)
  */
-  __pyx_slice__49 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__49)) __PYX_ERR(0, 2200, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__49);
-  __Pyx_GIVEREF(__pyx_slice__49);
+  __pyx_slice__134 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__134)) __PYX_ERR(0, 2200, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__134);
+  __Pyx_GIVEREF(__pyx_slice__134);
 
   /* "lxml/etree.pyx":2217
  *         root = self.getroot()
@@ -229458,9 +243483,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 path = "." + path
  *         return root.findtext(path, default, namespaces)
  */
-  __pyx_slice__50 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__50)) __PYX_ERR(0, 2217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__50);
-  __Pyx_GIVEREF(__pyx_slice__50);
+  __pyx_slice__136 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__136)) __PYX_ERR(0, 2217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__136);
+  __Pyx_GIVEREF(__pyx_slice__136);
 
   /* "lxml/etree.pyx":2234
  *         root = self.getroot()
@@ -229469,9 +243494,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 path = "." + path
  *         return root.findall(path, namespaces)
  */
-  __pyx_slice__51 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__51)) __PYX_ERR(0, 2234, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__51);
-  __Pyx_GIVEREF(__pyx_slice__51);
+  __pyx_slice__138 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__138)) __PYX_ERR(0, 2234, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__138);
+  __Pyx_GIVEREF(__pyx_slice__138);
 
   /* "lxml/etree.pyx":2251
  *         root = self.getroot()
@@ -229480,9 +243505,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 path = "." + path
  *         return root.iterfind(path, namespaces)
  */
-  __pyx_slice__52 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__52)) __PYX_ERR(0, 2251, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__52);
-  __Pyx_GIVEREF(__pyx_slice__52);
+  __pyx_slice__140 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__140)) __PYX_ERR(0, 2251, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__140);
+  __Pyx_GIVEREF(__pyx_slice__140);
 
   /* "lxml/etree.pyx":2946
  *         _assertValidNode(element)
@@ -229491,9 +243516,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         else:
  *             events = (u"start",)
  */
-  __pyx_tuple__55 = PyTuple_Pack(2, __pyx_n_u_start, __pyx_n_u_end); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 2946, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__55);
-  __Pyx_GIVEREF(__pyx_tuple__55);
+  __pyx_tuple__162 = PyTuple_Pack(2, __pyx_n_u_start, __pyx_n_u_end); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(0, 2946, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__162);
+  __Pyx_GIVEREF(__pyx_tuple__162);
 
   /* "lxml/etree.pyx":2948
  *             events = (u"start", u"end")
@@ -229502,9 +243527,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._start_element = element
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  */
-  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_n_u_start); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 2948, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__56);
-  __Pyx_GIVEREF(__pyx_tuple__56);
+  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_n_u_start); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(0, 2948, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__163);
+  __Pyx_GIVEREF(__pyx_tuple__163);
 
   /* "lxml/etree.pyx":3016
  *     else:
@@ -229513,9 +243538,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  * 
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_b__3); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 3016, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__58);
-  __Pyx_GIVEREF(__pyx_tuple__58);
+  __pyx_tuple__167 = PyTuple_Pack(1, __pyx_kp_b__10); if (unlikely(!__pyx_tuple__167)) __PYX_ERR(0, 3016, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__167);
+  __Pyx_GIVEREF(__pyx_tuple__167);
 
   /* "lxml/etree.pyx":3017
  *         text = _utf8(text)
@@ -229524,9 +243549,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     c_doc = _newXMLDoc()
  */
-  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Comment_may_not_contain_or_end_w); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 3017, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__59);
-  __Pyx_GIVEREF(__pyx_tuple__59);
+  __pyx_tuple__168 = PyTuple_Pack(1, __pyx_kp_s_Comment_may_not_contain_or_end_w); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(0, 3017, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__168);
+  __Pyx_GIVEREF(__pyx_tuple__168);
 
   /* "lxml/etree.pyx":3230
  *     cdef _Document doc
@@ -229535,9 +243560,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                          " efficient, use fromstring() instead")
  *     if parser is None:
  */
-  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_passing_a_single_string_into_fro); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 3230, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__62);
-  __Pyx_GIVEREF(__pyx_tuple__62);
+  __pyx_tuple__179 = PyTuple_Pack(1, __pyx_kp_s_passing_a_single_string_into_fro); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(0, 3230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__179);
+  __Pyx_GIVEREF(__pyx_tuple__179);
 
   /* "lxml/etree.pyx":3312
  *     if method == 'c14n':
@@ -229546,9 +243571,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if xml_declaration:
  *             raise ValueError("Cannot enable XML declaration in C14N")
  */
-  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 3312, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__63);
-  __Pyx_GIVEREF(__pyx_tuple__63);
+  __pyx_tuple__183 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__183)) __PYX_ERR(0, 3312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__183);
+  __Pyx_GIVEREF(__pyx_tuple__183);
 
   /* "lxml/etree.pyx":3314
  *             raise ValueError("Cannot specify encoding with C14N")
@@ -229557,9 +243582,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  *     if not with_comments:
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 3314, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__64);
-  __Pyx_GIVEREF(__pyx_tuple__64);
+  __pyx_tuple__184 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(0, 3314, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__184);
+  __Pyx_GIVEREF(__pyx_tuple__184);
 
   /* "lxml/etree.pyx":3317
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
@@ -229568,9 +243593,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  *         if xml_declaration:
  */
-  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 3317, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__65);
-  __Pyx_GIVEREF(__pyx_tuple__65);
+  __pyx_tuple__185 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__185)) __PYX_ERR(0, 3317, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__185);
+  __Pyx_GIVEREF(__pyx_tuple__185);
 
   /* "lxml/etree.pyx":3465
  *     """
@@ -229579,9 +243604,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     cdef xmlDoc* c_doc
  */
-  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_PyCapsule_usage_requires_Python); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 3465, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__66);
-  __Pyx_GIVEREF(__pyx_tuple__66);
+  __pyx_tuple__190 = PyTuple_Pack(1, __pyx_kp_s_PyCapsule_usage_requires_Python); if (unlikely(!__pyx_tuple__190)) __PYX_ERR(0, 3465, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__190);
+  __Pyx_GIVEREF(__pyx_tuple__190);
 
   /* "src/lxml/readonlytree.pxi":18
  *         """
@@ -229590,9 +243615,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return 0
  * 
  */
-  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_Proxy_invalidated); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(6, 18, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__67);
-  __Pyx_GIVEREF(__pyx_tuple__67);
+  __pyx_tuple__191 = PyTuple_Pack(1, __pyx_kp_s_Proxy_invalidated); if (unlikely(!__pyx_tuple__191)) __PYX_ERR(6, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__191);
+  __Pyx_GIVEREF(__pyx_tuple__191);
 
   /* "src/lxml/readonlytree.pxi":196
  *             children = [ el for el in children if el.tag == tag ]
@@ -229601,9 +243626,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return iter(children)
  * 
  */
-  __pyx_slice__68 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__68)) __PYX_ERR(6, 196, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__68);
-  __Pyx_GIVEREF(__pyx_slice__68);
+  __pyx_slice__195 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__195)) __PYX_ERR(6, 196, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__195);
+  __Pyx_GIVEREF(__pyx_slice__195);
 
   /* "src/lxml/nsclasses.pxi":44
  *             class_dict_iterable = class_dict_iterable.items()
@@ -229612,9 +243637,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 self[name] = item
  * 
  */
-  __pyx_slice__69 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__69)) __PYX_ERR(9, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__69);
-  __Pyx_GIVEREF(__pyx_slice__69);
+  __pyx_slice__213 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__213)) __PYX_ERR(9, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__213);
+  __Pyx_GIVEREF(__pyx_slice__213);
 
   /* "src/lxml/parser.pxi":461
  *             elif not isinstance(filename, bytes):
@@ -229623,42 +243648,42 @@ static int __Pyx_InitCachedConstants(void) {
  *                 if not isinstance(filename, bytes):
  *                     filename = None
  */
-  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(2, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
+  __pyx_tuple__233 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__233)) __PYX_ERR(2, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__233);
+  __Pyx_GIVEREF(__pyx_tuple__233);
 
-  /* "src/lxml/parser.pxi":1545
+  /* "src/lxml/parser.pxi":1546
  *         XMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(2, 1545, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__73);
-  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_tuple__241 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__241)) __PYX_ERR(2, 1546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__241);
+  __Pyx_GIVEREF(__pyx_tuple__241);
 
-  /* "src/lxml/parser.pxi":1718
+  /* "src/lxml/parser.pxi":1719
  *         HTMLParser.__init__(self, **kwargs)
  *         if events is None:
  *             events = ('end',)             # <<<<<<<<<<<<<<
  *         self._setBaseURL(base_url)
  *         self._collectEvents(events, tag)
  */
-  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(2, 1718, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__74);
-  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_tuple__245 = PyTuple_Pack(1, __pyx_n_s_end); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(2, 1719, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__245);
+  __Pyx_GIVEREF(__pyx_tuple__245);
 
-  /* "src/lxml/parser.pxi":1871
+  /* "src/lxml/parser.pxi":1872
  *     if isinstance(text, unicode):
  *         if _hasEncodingDeclaration(text):
  *             raise ValueError(             # <<<<<<<<<<<<<<
  *                 u"Unicode strings with encoding declaration are not supported. "
  *                 u"Please use bytes input or XML fragments without declaration.")
  */
-  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_u_Unicode_strings_with_encoding_de); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(2, 1871, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__75);
-  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_tuple__247 = PyTuple_Pack(1, __pyx_kp_u_Unicode_strings_with_encoding_de); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(2, 1872, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__247);
+  __Pyx_GIVEREF(__pyx_tuple__247);
 
   /* "src/lxml/serializer.pxi":119
  *     if enchandler is NULL and c_enc is not NULL:
@@ -229667,9 +243692,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise LookupError, f"unknown encoding: '{encoding}'"
  *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
  */
-  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(8, 119, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__77);
-  __Pyx_GIVEREF(__pyx_tuple__77);
+  __pyx_tuple__256 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__256)) __PYX_ERR(8, 119, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__256);
+  __Pyx_GIVEREF(__pyx_tuple__256);
 
   /* "src/lxml/serializer.pxi":833
  *             writer   = _FilelikeWriter(f, compression=compression)
@@ -229678,9 +243703,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 bytes_count = c14n.xmlC14NDocSaveTo(
  *                     c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
  */
-  __pyx_tuple__78 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(8, 833, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__78);
-  __Pyx_GIVEREF(__pyx_tuple__78);
+  __pyx_tuple__257 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(8, 833, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__257);
+  __Pyx_GIVEREF(__pyx_tuple__257);
 
   /* "src/lxml/serializer.pxi":932
  *         assert self.output_file is not None
@@ -229689,9 +243714,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not hasattr(self.output_file, 'write'):
  *             raise TypeError("Output file needs an async .write() method")
  */
-  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_s_Cannot_asynchronously_write_to_a); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(8, 932, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__80);
-  __Pyx_GIVEREF(__pyx_tuple__80);
+  __pyx_tuple__261 = PyTuple_Pack(1, __pyx_kp_s_Cannot_asynchronously_write_to_a); if (unlikely(!__pyx_tuple__261)) __PYX_ERR(8, 932, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__261);
+  __Pyx_GIVEREF(__pyx_tuple__261);
 
   /* "src/lxml/serializer.pxi":934
  *             raise TypeError("Cannot asynchronously write to a plain file")
@@ -229700,9 +243725,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         self.async_writer = _AsyncIncrementalFileWriter(
  *             self.output_file, self.encoding, self.compresslevel,
  */
-  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_s_Output_file_needs_an_async_write); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(8, 934, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__81);
-  __Pyx_GIVEREF(__pyx_tuple__81);
+  __pyx_tuple__262 = PyTuple_Pack(1, __pyx_kp_s_Output_file_needs_an_async_write); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(8, 934, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__262);
+  __Pyx_GIVEREF(__pyx_tuple__262);
 
   /* "src/lxml/serializer.pxi":1006
  *         cdef int c_standalone
@@ -229711,9 +243736,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._status >= WRITER_DECL_WRITTEN:
  *             raise LxmlSyntaxError("XML declaration already written")
  */
-  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_kp_s_only_XML_documents_have_declarat); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(8, 1006, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__83);
-  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_tuple__265 = PyTuple_Pack(1, __pyx_kp_s_only_XML_documents_have_declarat); if (unlikely(!__pyx_tuple__265)) __PYX_ERR(8, 1006, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__265);
+  __Pyx_GIVEREF(__pyx_tuple__265);
 
   /* "src/lxml/serializer.pxi":1008
  *             raise LxmlSyntaxError("only XML documents have declarations")
@@ -229722,9 +243747,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         version = _utf8orNone(version)
  *         c_version = _xcstr(version) if version is not None else NULL
  */
-  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_kp_s_XML_declaration_already_written); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(8, 1008, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__84);
-  __Pyx_GIVEREF(__pyx_tuple__84);
+  __pyx_tuple__266 = PyTuple_Pack(1, __pyx_kp_s_XML_declaration_already_written); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(8, 1008, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__266);
+  __Pyx_GIVEREF(__pyx_tuple__266);
 
   /* "src/lxml/serializer.pxi":1035
  *             return
@@ -229733,9 +243758,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         doctype = _utf8(doctype)
  *         _writeDoctype(self._c_out, _xcstr(doctype))
  */
-  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_kp_s_DOCTYPE_already_written_or_canno); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(8, 1035, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__85);
-  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_tuple__268 = PyTuple_Pack(1, __pyx_kp_s_DOCTYPE_already_written_or_canno); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(8, 1035, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__268);
+  __Pyx_GIVEREF(__pyx_tuple__268);
 
   /* "src/lxml/serializer.pxi":1091
  *     cdef _write_start_element(self, element_config):
@@ -229744,9 +243769,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         ns, name, attributes, nsmap = element_config
  *         flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
  */
-  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(8, 1091, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__86);
-  __Pyx_GIVEREF(__pyx_tuple__86);
+  __pyx_tuple__271 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__271)) __PYX_ERR(8, 1091, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__271);
+  __Pyx_GIVEREF(__pyx_tuple__271);
 
   /* "src/lxml/serializer.pxi":1134
  *     cdef _write_end_element(self, element_config):
@@ -229755,9 +243780,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  */
-  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(8, 1134, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__87);
-  __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_tuple__272 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__272)) __PYX_ERR(8, 1134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__272);
+  __Pyx_GIVEREF(__pyx_tuple__272);
 
   /* "src/lxml/serializer.pxi":1135
  *         if self._status != WRITER_IN_ELEMENT:
@@ -229766,12 +243791,12 @@ static int __Pyx_InitCachedConstants(void) {
  *             raise LxmlSyntaxError("inconsistent exit action in context manager")
  * 
  */
-  __pyx_slice__88 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__88)) __PYX_ERR(8, 1135, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__88);
-  __Pyx_GIVEREF(__pyx_slice__88);
-  __pyx_slice__89 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__89)) __PYX_ERR(8, 1135, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__89);
-  __Pyx_GIVEREF(__pyx_slice__89);
+  __pyx_slice__273 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__273)) __PYX_ERR(8, 1135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__273);
+  __Pyx_GIVEREF(__pyx_slice__273);
+  __pyx_slice__274 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__274)) __PYX_ERR(8, 1135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__274);
+  __Pyx_GIVEREF(__pyx_slice__274);
 
   /* "src/lxml/serializer.pxi":1136
  *             raise LxmlSyntaxError("not in an element")
@@ -229780,9 +243805,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *         # If previous write operations failed, the context manager exit might still call us.
  */
-  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(8, 1136, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__90);
-  __Pyx_GIVEREF(__pyx_tuple__90);
+  __pyx_tuple__275 = PyTuple_Pack(1, __pyx_kp_s_inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(8, 1136, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__275);
+  __Pyx_GIVEREF(__pyx_tuple__275);
 
   /* "src/lxml/serializer.pxi":1143
  *         ok_to_write = self._c_out.error == xmlerror.XML_ERR_OK
@@ -229791,9 +243816,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if ok_to_write:
  *             tree.xmlOutputBufferWrite(self._c_out, 2, '</')
  */
-  __pyx_slice__91 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__91)) __PYX_ERR(8, 1143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__91);
-  __Pyx_GIVEREF(__pyx_slice__91);
+  __pyx_slice__276 = PySlice_New(__pyx_int_1, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__276)) __PYX_ERR(8, 1143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__276);
+  __Pyx_GIVEREF(__pyx_slice__276);
 
   /* "src/lxml/serializer.pxi":1205
  *                 if self._status != WRITER_IN_ELEMENT:
@@ -229802,9 +243827,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 bstring = _utf8(content)
  *                 if not bstring:
  */
-  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(8, 1205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__92);
-  __Pyx_GIVEREF(__pyx_tuple__92);
+  __pyx_tuple__278 = PyTuple_Pack(1, __pyx_kp_s_not_in_an_element); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(8, 1205, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__278);
+  __Pyx_GIVEREF(__pyx_tuple__278);
 
   /* "src/lxml/serializer.pxi":1221
  *             elif iselement(content):
@@ -229813,9 +243838,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
  *                                    self._c_encoding, NULL, c_method,
  */
-  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(8, 1221, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__93);
-  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_tuple__279 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_trailing_element_t); if (unlikely(!__pyx_tuple__279)) __PYX_ERR(8, 1221, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__279);
+  __Pyx_GIVEREF(__pyx_tuple__279);
 
   /* "src/lxml/serializer.pxi":1249
  *         if raise_on_error:
@@ -229824,9 +243849,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             if self._element_stack:
  *                 raise LxmlSyntaxError("pending open tags on close")
  */
-  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_no_content_written); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(8, 1249, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__94);
-  __Pyx_GIVEREF(__pyx_tuple__94);
+  __pyx_tuple__281 = PyTuple_Pack(1, __pyx_kp_s_no_content_written); if (unlikely(!__pyx_tuple__281)) __PYX_ERR(8, 1249, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__281);
+  __Pyx_GIVEREF(__pyx_tuple__281);
 
   /* "src/lxml/serializer.pxi":1251
  *                 raise LxmlSyntaxError("no content written")
@@ -229835,9 +243860,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         error_result = self._c_out.error
  *         if error_result == xmlerror.XML_ERR_OK:
  */
-  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_s_pending_open_tags_on_close); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(8, 1251, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__95);
-  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_tuple__282 = PyTuple_Pack(1, __pyx_kp_s_pending_open_tags_on_close); if (unlikely(!__pyx_tuple__282)) __PYX_ERR(8, 1251, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__282);
+  __Pyx_GIVEREF(__pyx_tuple__282);
 
   /* "src/lxml/serializer.pxi":1423
  *     def __enter__(self):
@@ -229846,9 +243871,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer._method = self._new_method
  *         self._entered = True
  */
-  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_s_Inconsistent_enter_action_in_con); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(8, 1423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__103);
-  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_tuple__297 = PyTuple_Pack(1, __pyx_kp_s_Inconsistent_enter_action_in_con); if (unlikely(!__pyx_tuple__297)) __PYX_ERR(8, 1423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__297);
+  __Pyx_GIVEREF(__pyx_tuple__297);
 
   /* "src/lxml/serializer.pxi":1429
  *     def __exit__(self, exc_type, exc_val, exc_tb):
@@ -229857,9 +243882,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._writer._method != self._new_method:
  *             raise LxmlSyntaxError("Method changed outside of context manager")
  */
-  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_kp_s_Inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(8, 1429, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__104);
-  __Pyx_GIVEREF(__pyx_tuple__104);
+  __pyx_tuple__299 = PyTuple_Pack(1, __pyx_kp_s_Inconsistent_exit_action_in_cont); if (unlikely(!__pyx_tuple__299)) __PYX_ERR(8, 1429, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__299);
+  __Pyx_GIVEREF(__pyx_tuple__299);
 
   /* "src/lxml/serializer.pxi":1431
  *             raise LxmlSyntaxError("Inconsistent exit action in context manager")
@@ -229868,9 +243893,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer._method = self._old_method
  *         self._exited = True
  */
-  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_kp_s_Method_changed_outside_of_contex); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(8, 1431, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__105);
-  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_tuple__300 = PyTuple_Pack(1, __pyx_kp_s_Method_changed_outside_of_contex); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(8, 1431, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__300);
+  __Pyx_GIVEREF(__pyx_tuple__300);
 
   /* "src/lxml/iterparse.pxi":67
  *     cdef bint _close_source_after_read
@@ -229879,9 +243904,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                  attribute_defaults=False, dtd_validation=False,
  *                  load_dtd=False, no_network=True, remove_blank_text=False,
  */
-  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(13, 67, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__108);
-  __Pyx_GIVEREF(__pyx_tuple__108);
+  __pyx_tuple__303 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__303)) __PYX_ERR(13, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__303);
+  __Pyx_GIVEREF(__pyx_tuple__303);
 
   /* "src/lxml/iterparse.pxi":219
  *     @cython.final
@@ -229890,9 +243915,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not isinstance(data, bytes):
  *             self._close_source()
  */
-  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_int_32768); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(13, 219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__109);
-  __Pyx_GIVEREF(__pyx_tuple__109);
+  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_int_32768); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(13, 219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__306);
+  __Pyx_GIVEREF(__pyx_tuple__306);
 
   /* "src/lxml/iterparse.pxi":222
  *         if not isinstance(data, bytes):
@@ -229901,9 +243926,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not data:
  *             try:
  */
-  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(13, 222, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__110);
-  __Pyx_GIVEREF(__pyx_tuple__110);
+  __pyx_tuple__307 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__307)) __PYX_ERR(13, 222, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__307);
+  __Pyx_GIVEREF(__pyx_tuple__307);
 
   /* "src/lxml/iterparse.pxi":261
  *     cdef _IterwalkSkipStates _skip_state
@@ -229912,9 +243937,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef _Element root
  *         cdef int ns_count
  */
-  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(13, 261, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__111);
-  __Pyx_GIVEREF(__pyx_tuple__111);
+  __pyx_tuple__308 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(13, 261, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__308);
+  __Pyx_GIVEREF(__pyx_tuple__308);
 
   /* "src/lxml/iterparse.pxi":338
  *             if self._events[0][0] in ('start', 'start-ns'):
@@ -229923,9 +243948,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     def skip_subtree(self):
  */
-  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(13, 338, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__112);
-  __Pyx_GIVEREF(__pyx_tuple__112);
+  __pyx_tuple__309 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__309)) __PYX_ERR(13, 338, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__309);
+  __Pyx_GIVEREF(__pyx_tuple__309);
 
   /* "src/lxml/iterparse.pxi":376
  *                 self._events.append( (u"end", node) )
@@ -229934,9 +243959,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             for i in range(ns_count):
  *                 self._events.append(event)
  */
-  __pyx_tuple__113 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(13, 376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__113);
-  __Pyx_GIVEREF(__pyx_tuple__113);
+  __pyx_tuple__311 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__311)) __PYX_ERR(13, 376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__311);
+  __Pyx_GIVEREF(__pyx_tuple__311);
 
   /* "src/lxml/xmlid.pxi":15
  *     global _find_id_attributes
@@ -229945,9 +243970,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     # ElementTree compatible implementation: parse and look for 'id' attributes
  */
-  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_u_string_id); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(14, 15, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__114);
-  __Pyx_GIVEREF(__pyx_tuple__114);
+  __pyx_tuple__313 = PyTuple_Pack(1, __pyx_kp_u_string_id); if (unlikely(!__pyx_tuple__313)) __PYX_ERR(14, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__313);
+  __Pyx_GIVEREF(__pyx_tuple__313);
 
   /* "src/lxml/xmlid.pxi":21
  *     dic = {}
@@ -229956,9 +243981,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     return (root, dic)
  * 
  */
-  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_n_u_id); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(14, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__115);
-  __Pyx_GIVEREF(__pyx_tuple__115);
+  __pyx_tuple__314 = PyTuple_Pack(1, __pyx_n_u_id); if (unlikely(!__pyx_tuple__314)) __PYX_ERR(14, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__314);
+  __Pyx_GIVEREF(__pyx_tuple__314);
 
   /* "src/lxml/xmlid.pxi":114
  *         if self._keys is None:
@@ -229967,9 +243992,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     def __iter__(self):
  */
-  __pyx_slice__116 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__116)) __PYX_ERR(14, 114, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__116);
-  __Pyx_GIVEREF(__pyx_slice__116);
+  __pyx_slice__321 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__321)) __PYX_ERR(14, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__321);
+  __Pyx_GIVEREF(__pyx_slice__321);
 
   /* "src/lxml/xmlid.pxi":132
  *         if self._items is None:
@@ -229978,9 +244003,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *     def iteritems(self):
  */
-  __pyx_slice__117 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__117)) __PYX_ERR(14, 132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__117);
-  __Pyx_GIVEREF(__pyx_slice__117);
+  __pyx_slice__324 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__324)) __PYX_ERR(14, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__324);
+  __Pyx_GIVEREF(__pyx_slice__324);
 
   /* "src/lxml/extensions.pxi":446
  *         if function_mapping is None:
@@ -229989,9 +244014,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         for function_name in function_mapping:
  *             functions[(ns, function_name)] = getattr(module, function_name)
  */
-  __pyx_tuple__118 = PyTuple_Pack(1, __pyx_n_u__70); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(17, 446, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__118);
-  __Pyx_GIVEREF(__pyx_tuple__118);
+  __pyx_tuple__333 = PyTuple_Pack(1, __pyx_n_u__214); if (unlikely(!__pyx_tuple__333)) __PYX_ERR(17, 446, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__333);
+  __Pyx_GIVEREF(__pyx_tuple__333);
 
   /* "src/lxml/extensions.pxi":521
  *                 return ()
@@ -230000,9 +244025,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         result_list = []
  *         root = Element(u'matches')
  */
-  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_u__16); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(17, 521, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__119);
-  __Pyx_GIVEREF(__pyx_tuple__119);
+  __pyx_tuple__336 = PyTuple_Pack(1, __pyx_kp_u__23); if (unlikely(!__pyx_tuple__336)) __PYX_ERR(17, 521, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__336);
+  __Pyx_GIVEREF(__pyx_tuple__336);
 
   /* "src/lxml/extensions.pxi":523
  *             results.extend( result.groups(u'') )
@@ -230011,9 +244036,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         join_groups = u''.join
  *         for s_match in results:
  */
-  __pyx_tuple__120 = PyTuple_Pack(1, __pyx_n_u_matches); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(17, 523, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__120);
-  __Pyx_GIVEREF(__pyx_tuple__120);
+  __pyx_tuple__337 = PyTuple_Pack(1, __pyx_n_u_matches); if (unlikely(!__pyx_tuple__337)) __PYX_ERR(17, 523, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__337);
+  __Pyx_GIVEREF(__pyx_tuple__337);
 
   /* "src/lxml/xpath.pxi":499
  *                 i += 1
@@ -230022,9 +244047,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 namespace = (<bytes>namespace).decode('utf8')
  *                 namespaces[prefix.decode('utf8')] = namespace
  */
-  __pyx_slice__121 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__121)) __PYX_ERR(18, 499, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__121);
-  __Pyx_GIVEREF(__pyx_slice__121);
+  __pyx_slice__346 = PySlice_New(__pyx_int_1, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__346)) __PYX_ERR(18, 499, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__346);
+  __Pyx_GIVEREF(__pyx_slice__346);
 
   /* "src/lxml/xpath.pxi":505
  *                 # FIXME: this also replaces {namespaces} within strings!
@@ -230032,9 +244057,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         path = path_utf.decode('utf8')             # <<<<<<<<<<<<<<
  *         return path, namespaces
  */
-  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(18, 505, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__122);
-  __Pyx_GIVEREF(__pyx_tuple__122);
+  __pyx_tuple__347 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__347)) __PYX_ERR(18, 505, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__347);
+  __Pyx_GIVEREF(__pyx_tuple__347);
 
   /* "src/lxml/xslt.pxi":399
  *         c_doc._private = <python.PyObject*>self._xslt_resolver_context
@@ -230043,9 +244068,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
  * 
  */
-  __pyx_tuple__125 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(3, 399, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__125);
-  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_tuple__350 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__350)) __PYX_ERR(3, 399, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__350);
+  __Pyx_GIVEREF(__pyx_tuple__350);
 
   /* "src/lxml/xslt.pxi":466
  *         """
@@ -230054,9 +244079,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         xslt.xsltMaxDepth = max_depth
  * 
  */
-  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_kp_s_cannot_set_a_maximum_stylesheet); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(3, 466, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__126);
-  __Pyx_GIVEREF(__pyx_tuple__126);
+  __pyx_tuple__353 = PyTuple_Pack(1, __pyx_kp_s_cannot_set_a_maximum_stylesheet); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(3, 466, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__353);
+  __Pyx_GIVEREF(__pyx_tuple__353);
 
   /* "src/lxml/xslt.pxi":635
  *         if self._access_control is not None:
@@ -230065,9 +244090,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             c_result = xslt.xsltApplyStylesheetUser(
  *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
  */
-  __pyx_tuple__127 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(3, 635, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__127);
-  __Pyx_GIVEREF(__pyx_tuple__127);
+  __pyx_tuple__358 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__358)) __PYX_ERR(3, 635, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__358);
+  __Pyx_GIVEREF(__pyx_tuple__358);
 
   /* "src/lxml/xslt.pxi":734
  *             doc = self._doc
@@ -230076,9 +244101,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         c_compression = compression or 0
  *         if _isString(file):
  */
-  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_kp_s_No_document_to_serialise); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(3, 734, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__128);
-  __Pyx_GIVEREF(__pyx_tuple__128);
+  __pyx_tuple__360 = PyTuple_Pack(1, __pyx_kp_s_No_document_to_serialise); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(3, 734, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__360);
+  __Pyx_GIVEREF(__pyx_tuple__360);
 
   /* "src/lxml/xslt.pxi":890
  *     global __findStylesheetByID
@@ -230087,9 +244112,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             u"//xsl:stylesheet[@xml:id = $id]",
  *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
  */
-  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_kp_u_xsl_stylesheet_xml_id_id); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(3, 890, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__129);
-  __Pyx_GIVEREF(__pyx_tuple__129);
+  __pyx_tuple__362 = PyTuple_Pack(1, __pyx_kp_u_xsl_stylesheet_xml_id_id); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(3, 890, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__362);
+  __Pyx_GIVEREF(__pyx_tuple__362);
 
   /* "src/lxml/xsltext.pxi":224
  *                 e = unicode(e).encode(u"UTF-8")
@@ -230098,9 +244123,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             message = python.PyBytes_FromFormat(
  *                 "Error executing extension element '%s': %s",
  */
-  __pyx_tuple__130 = PyTuple_Pack(1, __pyx_kp_u_UTF_8); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(19, 224, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__130);
-  __Pyx_GIVEREF(__pyx_tuple__130);
+  __pyx_tuple__368 = PyTuple_Pack(1, __pyx_kp_u_UTF_8); if (unlikely(!__pyx_tuple__368)) __PYX_ERR(19, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__368);
+  __Pyx_GIVEREF(__pyx_tuple__368);
 
   /* "src/lxml/dtd.pxi":279
  *             if _isString(file):
@@ -230109,9 +244134,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file))
  *             elif hasattr(file, 'read'):
  */
-  __pyx_tuple__133 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(20, 279, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__133);
-  __Pyx_GIVEREF(__pyx_tuple__133);
+  __pyx_tuple__378 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__378)) __PYX_ERR(20, 279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__378);
+  __Pyx_GIVEREF(__pyx_tuple__378);
 
   /* "src/lxml/dtd.pxi":286
  *                 raise DTDParseError, u"file must be a filename or file-like object"
@@ -230120,9 +244145,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
  *         else:
  */
-  __pyx_tuple__134 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(20, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__134);
-  __Pyx_GIVEREF(__pyx_tuple__134);
+  __pyx_tuple__379 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__379)) __PYX_ERR(20, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__379);
+  __Pyx_GIVEREF(__pyx_tuple__379);
 
   /* "src/lxml/dtd.pxi":362
  *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
@@ -230131,9 +244156,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *         # work around error reporting bug in libxml2 <= 2.9.1 (and later?)
  */
-  __pyx_tuple__137 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(20, 362, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__137);
-  __Pyx_GIVEREF(__pyx_tuple__137);
+  __pyx_tuple__384 = PyTuple_Pack(1, __pyx_kp_u_Failed_to_create_validation_cont); if (unlikely(!__pyx_tuple__384)) __PYX_ERR(20, 362, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__384);
+  __Pyx_GIVEREF(__pyx_tuple__384);
 
   /* "src/lxml/dtd.pxi":370
  * 
@@ -230142,9 +244167,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
  *                 ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
  */
-  __pyx_tuple__138 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(20, 370, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__138);
-  __Pyx_GIVEREF(__pyx_tuple__138);
+  __pyx_tuple__385 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(20, 370, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__385);
+  __Pyx_GIVEREF(__pyx_tuple__385);
 
   /* "src/lxml/dtd.pxi":392
  *     error_log = _ErrorLog()
@@ -230153,9 +244178,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         c_dtd = dtd_parser._readDtd()
  * 
  */
-  __pyx_tuple__139 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(20, 392, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__139);
-  __Pyx_GIVEREF(__pyx_tuple__139);
+  __pyx_tuple__386 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__386)) __PYX_ERR(20, 392, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__386);
+  __Pyx_GIVEREF(__pyx_tuple__386);
 
   /* "src/lxml/relaxng.pxi":13
  * cdef int _require_rnc2rng() except -1:
@@ -230164,9 +244189,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             'compact syntax not supported (please install rnc2rng)')
  *     return 0
  */
-  __pyx_tuple__140 = PyTuple_Pack(1, __pyx_kp_s_compact_syntax_not_supported_ple); if (unlikely(!__pyx_tuple__140)) __PYX_ERR(21, 13, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__140);
-  __Pyx_GIVEREF(__pyx_tuple__140);
+  __pyx_tuple__387 = PyTuple_Pack(1, __pyx_kp_s_compact_syntax_not_supported_ple); if (unlikely(!__pyx_tuple__387)) __PYX_ERR(21, 13, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__387);
+  __Pyx_GIVEREF(__pyx_tuple__387);
 
   /* "src/lxml/relaxng.pxi":58
  *         elif file is not None:
@@ -230175,9 +244200,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     _require_rnc2rng()
  *                     rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  */
-  __pyx_slice__141 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__141)) __PYX_ERR(21, 58, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__141);
-  __Pyx_GIVEREF(__pyx_slice__141);
+  __pyx_slice__388 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__388)) __PYX_ERR(21, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__388);
+  __Pyx_GIVEREF(__pyx_slice__388);
 
   /* "src/lxml/relaxng.pxi":68
  *                     doc = None
@@ -230186,9 +244211,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                         parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
  *             elif (_getFilenameForFile(file) or '')[-4:].lower() == '.rnc':
  */
-  __pyx_tuple__142 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__142)) __PYX_ERR(21, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__142);
-  __Pyx_GIVEREF(__pyx_tuple__142);
+  __pyx_tuple__389 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__389)) __PYX_ERR(21, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__389);
+  __Pyx_GIVEREF(__pyx_tuple__389);
 
   /* "src/lxml/relaxng.pxi":70
  *                     with self._error_log:
@@ -230197,9 +244222,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 _require_rnc2rng()
  *                 rng_data = _rnc2rng.dumps(_rnc2rng.load(file))
  */
-  __pyx_slice__143 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__143)) __PYX_ERR(21, 70, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__143);
-  __Pyx_GIVEREF(__pyx_slice__143);
+  __pyx_slice__390 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__390)) __PYX_ERR(21, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__390);
+  __Pyx_GIVEREF(__pyx_slice__390);
 
   /* "src/lxml/schematron.pxi":97
  *                 filename = file
@@ -230208,9 +244233,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
  *         else:
  */
-  __pyx_tuple__144 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(23, 97, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__144);
-  __Pyx_GIVEREF(__pyx_tuple__144);
+  __pyx_tuple__392 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__392)) __PYX_ERR(23, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__392);
+  __Pyx_GIVEREF(__pyx_tuple__392);
 
   /* "src/lxml/schematron.pxi":109
  * 
@@ -230219,9 +244244,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
  *         finally:
  */
-  __pyx_tuple__145 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(23, 109, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__145);
-  __Pyx_GIVEREF(__pyx_tuple__145);
+  __pyx_tuple__393 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__393)) __PYX_ERR(23, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__393);
+  __Pyx_GIVEREF(__pyx_tuple__393);
 
   /* "lxml/etree.pyx":97
  * 
@@ -230230,10 +244255,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__146 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__146)) __PYX_ERR(0, 97, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__146);
-  __Pyx_GIVEREF(__pyx_tuple__146);
-  __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__146, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getitem, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __pyx_tuple__399 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__399)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__399);
+  __Pyx_GIVEREF(__pyx_tuple__399);
+  __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__399, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getitem, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 97, __pyx_L1_error)
 
   /* "lxml/etree.pyx":100
  *         raise KeyError, key
@@ -230242,10 +244267,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__148 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(0, 100, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__148);
-  __Pyx_GIVEREF(__pyx_tuple__148);
-  __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__148, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_setitem, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __pyx_tuple__400 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__400)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__400);
+  __Pyx_GIVEREF(__pyx_tuple__400);
+  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__400, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_setitem, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 100, __pyx_L1_error)
 
   /* "lxml/etree.pyx":103
  *         raise KeyError, key
@@ -230254,10 +244279,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         raise KeyError, key
  * 
  */
-  __pyx_tuple__150 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(0, 103, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__150);
-  __Pyx_GIVEREF(__pyx_tuple__150);
-  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__150, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_delitem, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(0, 103, __pyx_L1_error)
+  __pyx_tuple__401 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__401)) __PYX_ERR(0, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__401);
+  __Pyx_GIVEREF(__pyx_tuple__401);
+  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_delitem, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 103, __pyx_L1_error)
 
   /* "lxml/etree.pyx":106
  *         raise KeyError, key
@@ -230266,10 +244291,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return False
  * 
  */
-  __pyx_tuple__152 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(0, 106, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__152);
-  __Pyx_GIVEREF(__pyx_tuple__152);
-  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_contains, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __pyx_tuple__402 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__402)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__402);
+  __Pyx_GIVEREF(__pyx_tuple__402);
+  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__402, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_contains, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 106, __pyx_L1_error)
 
   /* "lxml/etree.pyx":109
  *         return False
@@ -230278,10 +244303,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return 0
  * 
  */
-  __pyx_tuple__154 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(0, 109, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__154);
-  __Pyx_GIVEREF(__pyx_tuple__154);
-  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__154, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_len, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(0, 109, __pyx_L1_error)
+  __pyx_tuple__403 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__403)) __PYX_ERR(0, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__403);
+  __Pyx_GIVEREF(__pyx_tuple__403);
+  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_len, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 109, __pyx_L1_error)
 
   /* "lxml/etree.pyx":112
  *         return 0
@@ -230290,10 +244315,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return ITER_EMPTY
  *     iterkeys = itervalues = iteritems = __iter__
  */
-  __pyx_tuple__156 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(0, 112, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__156);
-  __Pyx_GIVEREF(__pyx_tuple__156);
-  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter_2, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(0, 112, __pyx_L1_error)
+  __pyx_tuple__404 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__404)) __PYX_ERR(0, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__404);
+  __Pyx_GIVEREF(__pyx_tuple__404);
+  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__404, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter_2, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 112, __pyx_L1_error)
 
   /* "lxml/etree.pyx":155
  * 
@@ -230302,9 +244327,9 @@ static int __Pyx_InitCachedConstants(void) {
  * cdef char* _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING)
  * 
  */
-  __pyx_tuple__158 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(0, 155, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__158);
-  __Pyx_GIVEREF(__pyx_tuple__158);
+  __pyx_tuple__405 = PyTuple_Pack(1, __pyx_kp_s_UTF_8); if (unlikely(!__pyx_tuple__405)) __PYX_ERR(0, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__405);
+  __Pyx_GIVEREF(__pyx_tuple__405);
 
   /* "lxml/etree.pyx":174
  * }
@@ -230313,9 +244338,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def register_namespace(prefix, uri):
  */
-  __pyx_tuple__159 = PyTuple_Pack(1, __pyx_kp_b_ns_d_2); if (unlikely(!__pyx_tuple__159)) __PYX_ERR(0, 174, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__159);
-  __Pyx_GIVEREF(__pyx_tuple__159);
+  __pyx_tuple__406 = PyTuple_Pack(1, __pyx_kp_b_ns_d_2); if (unlikely(!__pyx_tuple__406)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__406);
+  __Pyx_GIVEREF(__pyx_tuple__406);
 
   /* "lxml/etree.pyx":176
  * cdef object _check_internal_prefix = re.compile(b"ns\d+$").match
@@ -230324,10 +244349,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Registers a namespace prefix that newly created Elements in that
  *     namespace will use.  The registry is global, and any existing
  */
-  __pyx_tuple__160 = PyTuple_Pack(6, __pyx_n_s_prefix, __pyx_n_s_uri, __pyx_n_s_prefix_utf, __pyx_n_s_uri_utf, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__160)) __PYX_ERR(0, 176, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__160);
-  __Pyx_GIVEREF(__pyx_tuple__160);
-  __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__160, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_register_namespace, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __pyx_tuple__407 = PyTuple_Pack(6, __pyx_n_s_prefix, __pyx_n_s_uri, __pyx_n_s_prefix_utf, __pyx_n_s_uri_utf, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__407)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__407);
+  __Pyx_GIVEREF(__pyx_tuple__407);
+  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_register_namespace, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 176, __pyx_L1_error)
 
   /* "lxml/etree.pyx":255
  * try:
@@ -230336,9 +244361,9 @@ static int __Pyx_InitCachedConstants(void) {
  * except Exception:
  *     print u"Unknown libxml2 version: %s" % (<unsigned char*>tree.xmlParserVersion).decode("latin1")
  */
-  __pyx_tuple__162 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(0, 255, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__162);
-  __Pyx_GIVEREF(__pyx_tuple__162);
+  __pyx_tuple__408 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__408)) __PYX_ERR(0, 255, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__408);
+  __Pyx_GIVEREF(__pyx_tuple__408);
 
   /* "src/lxml/xmlerror.pxi":11
  * # module level API functions
@@ -230347,7 +244372,7 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""clear_error_log()
  * 
  */
-  __pyx_codeobj__163 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_clear_error_log_2, 11, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__163)) __PYX_ERR(1, 11, __pyx_L1_error)
+  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_clear_error_log_2, 11, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(1, 11, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":187
  *         self.last_error = last_error
@@ -230356,10 +244381,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _BaseErrorLog(self._first_error, self.last_error)
  * 
  */
-  __pyx_tuple__164 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(1, 187, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__164);
-  __Pyx_GIVEREF(__pyx_tuple__164);
-  __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(1, 187, __pyx_L1_error)
+  __pyx_tuple__409 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(1, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__409);
+  __Pyx_GIVEREF(__pyx_tuple__409);
+  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(1, 187, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":193
  *         return u''
@@ -230368,10 +244393,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         pass
  * 
  */
-  __pyx_tuple__166 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(1, 193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__166);
-  __Pyx_GIVEREF(__pyx_tuple__166);
-  __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) __PYX_ERR(1, 193, __pyx_L1_error)
+  __pyx_tuple__410 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__410)) __PYX_ERR(1, 193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__410);
+  __Pyx_GIVEREF(__pyx_tuple__410);
+  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__410, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 193, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":283
  *         self._entries = entries
@@ -230380,10 +244405,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Creates a shallow copy of this error log.  Reuses the list of
  *         entries.
  */
-  __pyx_tuple__168 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(1, 283, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__168);
-  __Pyx_GIVEREF(__pyx_tuple__168);
-  __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__168, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(1, 283, __pyx_L1_error)
+  __pyx_tuple__411 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__411)) __PYX_ERR(1, 283, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__411);
+  __Pyx_GIVEREF(__pyx_tuple__411);
+  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__411, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(1, 283, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":321
  *         return len(self._entries) > self._offset
@@ -230392,10 +244417,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Filter the errors by the given domains and return a new error log
  *         containing the matches.
  */
-  __pyx_tuple__170 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_domains, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(1, 321, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__170);
-  __Pyx_GIVEREF(__pyx_tuple__170);
-  __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_domains, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) __PYX_ERR(1, 321, __pyx_L1_error)
+  __pyx_tuple__412 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_domains, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__412)) __PYX_ERR(1, 321, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__412);
+  __Pyx_GIVEREF(__pyx_tuple__412);
+  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__412, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_domains, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(1, 321, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":331
  *         return _ListErrorLog(filtered, None, None)
@@ -230404,10 +244429,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_types(self, types)
  * 
  */
-  __pyx_tuple__172 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_types, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(1, 331, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__172);
-  __Pyx_GIVEREF(__pyx_tuple__172);
-  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_types, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(1, 331, __pyx_L1_error)
+  __pyx_tuple__413 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_types, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__413)) __PYX_ERR(1, 331, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__413);
+  __Pyx_GIVEREF(__pyx_tuple__413);
+  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__413, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_types, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(1, 331, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":343
  *         return _ListErrorLog(filtered, None, None)
@@ -230416,10 +244441,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_levels(self, levels)
  * 
  */
-  __pyx_tuple__174 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_levels, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(1, 343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__174);
-  __Pyx_GIVEREF(__pyx_tuple__174);
-  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_levels, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(1, 343, __pyx_L1_error)
+  __pyx_tuple__414 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_levels, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__414)) __PYX_ERR(1, 343, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__414);
+  __Pyx_GIVEREF(__pyx_tuple__414);
+  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__414, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_levels, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(1, 343, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":355
  *         return _ListErrorLog(filtered, None, None)
@@ -230428,10 +244453,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_from_level(self, level)
  * 
  */
-  __pyx_tuple__176 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_level, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__176)) __PYX_ERR(1, 355, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__176);
-  __Pyx_GIVEREF(__pyx_tuple__176);
-  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_level, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(1, 355, __pyx_L1_error)
+  __pyx_tuple__415 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_level, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__415)) __PYX_ERR(1, 355, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__415);
+  __Pyx_GIVEREF(__pyx_tuple__415);
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__415, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_level, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(1, 355, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":364
  *         return _ListErrorLog(filtered, None, None)
@@ -230440,10 +244465,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_from_fatals(self)
  * 
  */
-  __pyx_tuple__178 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__178)) __PYX_ERR(1, 364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__178);
-  __Pyx_GIVEREF(__pyx_tuple__178);
-  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_fatals, 364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) __PYX_ERR(1, 364, __pyx_L1_error)
+  __pyx_tuple__416 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__416)) __PYX_ERR(1, 364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__416);
+  __Pyx_GIVEREF(__pyx_tuple__416);
+  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__416, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_fatals, 364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(1, 364, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":371
  *         return self.filter_from_level(ErrorLevels.FATAL)
@@ -230452,10 +244477,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_from_errors(self)
  * 
  */
-  __pyx_tuple__180 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(1, 371, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__180);
-  __Pyx_GIVEREF(__pyx_tuple__180);
-  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_errors, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(1, 371, __pyx_L1_error)
+  __pyx_tuple__417 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__417)) __PYX_ERR(1, 371, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__417);
+  __Pyx_GIVEREF(__pyx_tuple__417);
+  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_errors, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 371, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":378
  *         return self.filter_from_level(ErrorLevels.ERROR)
@@ -230464,10 +244489,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""filter_from_warnings(self)
  * 
  */
-  __pyx_tuple__182 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__182)) __PYX_ERR(1, 378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__182);
-  __Pyx_GIVEREF(__pyx_tuple__182);
-  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_warnings, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) __PYX_ERR(1, 378, __pyx_L1_error)
+  __pyx_tuple__418 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__418)) __PYX_ERR(1, 378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__418);
+  __Pyx_GIVEREF(__pyx_tuple__418);
+  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__418, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_filter_from_warnings, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 378, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":437
  *         return self.connect()
@@ -230476,10 +244501,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         #  TODO: make this a cdef function when Cython supports it
  *         self.disconnect()
  */
-  __pyx_tuple__184 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(1, 437, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__184);
-  __Pyx_GIVEREF(__pyx_tuple__184);
-  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_exit, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(1, 437, __pyx_L1_error)
+  __pyx_tuple__419 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__419)) __PYX_ERR(1, 437, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__419);
+  __Pyx_GIVEREF(__pyx_tuple__419);
+  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__419, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_exit, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 437, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":457
  *         return 0
@@ -230488,10 +244513,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._first_error = None
  *         self.last_error = None
  */
-  __pyx_tuple__186 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__186)) __PYX_ERR(1, 457, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__186);
-  __Pyx_GIVEREF(__pyx_tuple__186);
-  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_clear, 457, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(1, 457, __pyx_L1_error)
+  __pyx_tuple__420 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__420)) __PYX_ERR(1, 457, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__420);
+  __Pyx_GIVEREF(__pyx_tuple__420);
+  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__420, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_clear, 457, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(1, 457, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":463
  *         del self._entries[:]
@@ -230500,10 +244525,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  */
-  __pyx_tuple__188 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__188)) __PYX_ERR(1, 463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__188);
-  __Pyx_GIVEREF(__pyx_tuple__188);
-  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__188, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 463, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(1, 463, __pyx_L1_error)
+  __pyx_tuple__421 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__421)) __PYX_ERR(1, 463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__421);
+  __Pyx_GIVEREF(__pyx_tuple__421);
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 463, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 463, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":473
  *         return iter(self._entries[self._offset:])
@@ -230512,10 +244537,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_tuple__190 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__190)) __PYX_ERR(1, 473, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__190);
-  __Pyx_GIVEREF(__pyx_tuple__190);
-  __pyx_codeobj__191 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__190, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 473, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(1, 473, __pyx_L1_error)
+  __pyx_tuple__422 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__422)) __PYX_ERR(1, 473, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__422);
+  __Pyx_GIVEREF(__pyx_tuple__422);
+  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__422, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 473, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(1, 473, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":483
  *         self._accepted_domains = tuple(domains)
@@ -230524,10 +244549,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if entry.domain in self._accepted_domains:
  *             _ErrorLog.receive(self, entry)
  */
-  __pyx_tuple__192 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__192)) __PYX_ERR(1, 483, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__192);
-  __Pyx_GIVEREF(__pyx_tuple__192);
-  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(1, 483, __pyx_L1_error)
+  __pyx_tuple__423 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__423)) __PYX_ERR(1, 483, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__423);
+  __Pyx_GIVEREF(__pyx_tuple__423);
+  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(1, 483, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":493
  *         self._max_len = max_len
@@ -230536,10 +244561,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_tuple__194 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__194)) __PYX_ERR(1, 493, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__194);
-  __Pyx_GIVEREF(__pyx_tuple__194);
-  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 493, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(1, 493, __pyx_L1_error)
+  __pyx_tuple__424 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__424)) __PYX_ERR(1, 493, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__424);
+  __Pyx_GIVEREF(__pyx_tuple__424);
+  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__424, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 493, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(1, 493, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":544
  *         self._log = logger.log
@@ -230548,10 +244573,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Dummy method that returns an empty error log.
  *         """
  */
-  __pyx_tuple__196 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__196)) __PYX_ERR(1, 544, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__196);
-  __Pyx_GIVEREF(__pyx_tuple__196);
-  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(1, 544, __pyx_L1_error)
+  __pyx_tuple__425 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__425)) __PYX_ERR(1, 544, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__425);
+  __Pyx_GIVEREF(__pyx_tuple__425);
+  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__425, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 544, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":549
  *         return _ListErrorLog([], None, None)
@@ -230560,10 +244585,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""log(self, log_entry, message, *args)
  * 
  */
-  __pyx_tuple__198 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_log_entry, __pyx_n_s_message, __pyx_n_s_args); if (unlikely(!__pyx_tuple__198)) __PYX_ERR(1, 549, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__198);
-  __Pyx_GIVEREF(__pyx_tuple__198);
-  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_log, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(1, 549, __pyx_L1_error)
+  __pyx_tuple__426 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_log_entry, __pyx_n_s_message, __pyx_n_s_args); if (unlikely(!__pyx_tuple__426)) __PYX_ERR(1, 549, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__426);
+  __Pyx_GIVEREF(__pyx_tuple__426);
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__426, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_log, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(1, 549, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":566
  *             )
@@ -230572,10 +244597,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""receive(self, log_entry)
  * 
  */
-  __pyx_tuple__200 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_log_entry); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(1, 566, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__200);
-  __Pyx_GIVEREF(__pyx_tuple__200);
-  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(1, 566, __pyx_L1_error)
+  __pyx_tuple__427 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_log_entry); if (unlikely(!__pyx_tuple__427)) __PYX_ERR(1, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__427);
+  __Pyx_GIVEREF(__pyx_tuple__427);
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__427, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(1, 566, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":582
  * # libxml2/libxslt
@@ -230584,9 +244609,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * 
  */
-  __pyx_tuple__202 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(1, 582, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__202);
-  __Pyx_GIVEREF(__pyx_tuple__202);
+  __pyx_tuple__428 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__428)) __PYX_ERR(1, 582, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__428);
+  __Pyx_GIVEREF(__pyx_tuple__428);
 
   /* "src/lxml/xmlerror.pxi":616
  * 
@@ -230595,10 +244620,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""use_global_python_log(log)
  * 
  */
-  __pyx_tuple__203 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__203)) __PYX_ERR(1, 616, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__203);
-  __Pyx_GIVEREF(__pyx_tuple__203);
-  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_use_global_python_log, 616, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(1, 616, __pyx_L1_error)
+  __pyx_tuple__429 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__429)) __PYX_ERR(1, 616, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__429);
+  __Pyx_GIVEREF(__pyx_tuple__429);
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__429, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_use_global_python_log, 616, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 616, __pyx_L1_error)
 
   /* "src/lxml/xmlerror.pxi":804
  * 
@@ -230607,9 +244632,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"Libxml2 error levels"
  * 
  */
-  __pyx_tuple__205 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__205)) __PYX_ERR(1, 804, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__205);
-  __Pyx_GIVEREF(__pyx_tuple__205);
+  __pyx_tuple__430 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__430)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__430);
+  __Pyx_GIVEREF(__pyx_tuple__430);
 
   /* "src/lxml/xmlerror.pxi":807
  *     u"Libxml2 error levels"
@@ -230618,9 +244643,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"Libxml2 error domains"
  * 
  */
-  __pyx_tuple__206 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(1, 807, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__206);
-  __Pyx_GIVEREF(__pyx_tuple__206);
+  __pyx_tuple__431 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__431)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__431);
+  __Pyx_GIVEREF(__pyx_tuple__431);
 
   /* "src/lxml/xmlerror.pxi":810
  *     u"Libxml2 error domains"
@@ -230629,9 +244654,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"Libxml2 error types"
  * 
  */
-  __pyx_tuple__207 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__207)) __PYX_ERR(1, 810, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__207);
-  __Pyx_GIVEREF(__pyx_tuple__207);
+  __pyx_tuple__432 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__432)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__432);
+  __Pyx_GIVEREF(__pyx_tuple__432);
 
   /* "src/lxml/xmlerror.pxi":813
  *     u"Libxml2 error types"
@@ -230640,9 +244665,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"Libxml2 RelaxNG error types"
  * 
  */
-  __pyx_tuple__208 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(1, 813, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__208);
-  __Pyx_GIVEREF(__pyx_tuple__208);
+  __pyx_tuple__433 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__433)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__433);
+  __Pyx_GIVEREF(__pyx_tuple__433);
 
   /* "lxml/etree.pyx":506
  * 
@@ -230651,9 +244676,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     ur"[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#@$_%-]+").search
  * 
  */
-  __pyx_tuple__209 = PyTuple_Pack(1, __pyx_kp_u_x20_x0D_x0Aa_zA_Z0_9); if (unlikely(!__pyx_tuple__209)) __PYX_ERR(0, 506, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__209);
-  __Pyx_GIVEREF(__pyx_tuple__209);
+  __pyx_tuple__434 = PyTuple_Pack(1, __pyx_kp_u_x20_x0D_x0Aa_zA_Z0_9); if (unlikely(!__pyx_tuple__434)) __PYX_ERR(0, 506, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__434);
+  __Pyx_GIVEREF(__pyx_tuple__434);
 
   /* "lxml/etree.pyx":540
  *         return  tree.xmlCreateIntSubset(c_doc, c_name, NULL, NULL)
@@ -230662,10 +244687,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Removes DOCTYPE and internal subset from the document."""
  *         cdef xmlDoc* c_doc = self._doc._c_doc
  */
-  __pyx_tuple__210 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_doc, __pyx_n_s_c_dtd); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(0, 540, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__210);
-  __Pyx_GIVEREF(__pyx_tuple__210);
-  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __pyx_tuple__435 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_doc, __pyx_n_s_c_dtd); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__435);
+  __Pyx_GIVEREF(__pyx_tuple__435);
+  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__435, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 540, __pyx_L1_error)
 
   /* "lxml/etree.pyx":697
  *     cdef object _tag
@@ -230674,10 +244699,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""_init(self)
  * 
  */
-  __pyx_tuple__212 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(0, 697, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__212);
-  __Pyx_GIVEREF(__pyx_tuple__212);
-  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_init_2, 697, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(0, 697, __pyx_L1_error)
+  __pyx_tuple__436 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__436)) __PYX_ERR(0, 697, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__436);
+  __Pyx_GIVEREF(__pyx_tuple__436);
+  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__436, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_init_2, 697, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 697, __pyx_L1_error)
 
   /* "lxml/etree.pyx":784
  *             _removeNode(self._doc, c_node)
@@ -230686,10 +244711,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"__deepcopy__(self, memo)"
  *         return self.__copy__()
  */
-  __pyx_tuple__214 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(0, 784, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__214);
-  __Pyx_GIVEREF(__pyx_tuple__214);
-  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 784, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(0, 784, __pyx_L1_error)
+  __pyx_tuple__437 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__437)) __PYX_ERR(0, 784, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__437);
+  __Pyx_GIVEREF(__pyx_tuple__437);
+  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__437, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 784, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 784, __pyx_L1_error)
 
   /* "lxml/etree.pyx":788
  *         return self.__copy__()
@@ -230698,10 +244723,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"__copy__(self)"
  *         cdef xmlDoc* c_doc
  */
-  __pyx_tuple__216 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_c_doc, __pyx_n_s_c_node, __pyx_n_s_new_doc, __pyx_n_s_root); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(0, 788, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__216);
-  __Pyx_GIVEREF(__pyx_tuple__216);
-  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 788, __pyx_L1_error)
+  __pyx_tuple__438 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_c_doc, __pyx_n_s_c_node, __pyx_n_s_new_doc, __pyx_n_s_root); if (unlikely(!__pyx_tuple__438)) __PYX_ERR(0, 788, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__438);
+  __Pyx_GIVEREF(__pyx_tuple__438);
+  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__438, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 788, __pyx_L1_error)
 
   /* "lxml/etree.pyx":807
  *         return _elementFactory(new_doc, c_node)
@@ -230710,10 +244735,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set(self, key, value)
  * 
  */
-  __pyx_tuple__218 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 807, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__218);
-  __Pyx_GIVEREF(__pyx_tuple__218);
-  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_set, 807, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 807, __pyx_L1_error)
+  __pyx_tuple__439 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__439)) __PYX_ERR(0, 807, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__439);
+  __Pyx_GIVEREF(__pyx_tuple__439);
+  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__439, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_set, 807, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 807, __pyx_L1_error)
 
   /* "lxml/etree.pyx":815
  *         _setAttributeValue(self, key, value)
@@ -230722,10 +244747,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""append(self, element)
  * 
  */
-  __pyx_tuple__220 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 815, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__220);
-  __Pyx_GIVEREF(__pyx_tuple__220);
-  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append, 815, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __pyx_tuple__440 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__440)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__440);
+  __Pyx_GIVEREF(__pyx_tuple__440);
+  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__440, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append, 815, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 815, __pyx_L1_error)
 
   /* "lxml/etree.pyx":824
  *         _appendChild(self, element)
@@ -230734,10 +244759,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""addnext(self, element)
  * 
  */
-  __pyx_tuple__222 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(0, 824, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__222);
-  __Pyx_GIVEREF(__pyx_tuple__222);
-  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_addnext, 824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(0, 824, __pyx_L1_error)
+  __pyx_tuple__441 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__441)) __PYX_ERR(0, 824, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__441);
+  __Pyx_GIVEREF(__pyx_tuple__441);
+  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__441, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_addnext, 824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 824, __pyx_L1_error)
 
   /* "lxml/etree.pyx":843
  *         _appendSibling(self, element)
@@ -230746,10 +244771,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""addprevious(self, element)
  * 
  */
-  __pyx_tuple__224 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(0, 843, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__224);
-  __Pyx_GIVEREF(__pyx_tuple__224);
-  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_addprevious, 843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __pyx_tuple__442 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_element); if (unlikely(!__pyx_tuple__442)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__442);
+  __Pyx_GIVEREF(__pyx_tuple__442);
+  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__442, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_addprevious, 843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 843, __pyx_L1_error)
 
   /* "lxml/etree.pyx":862
  *         _prependSibling(self, element)
@@ -230758,10 +244783,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""extend(self, elements)
  * 
  */
-  __pyx_tuple__226 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(0, 862, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__226);
-  __Pyx_GIVEREF(__pyx_tuple__226);
-  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_extend, 862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_tuple__443 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__443);
+  __Pyx_GIVEREF(__pyx_tuple__443);
+  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__443, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_extend, 862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 862, __pyx_L1_error)
 
   /* "lxml/etree.pyx":875
  *             _appendChild(self, element)
@@ -230770,10 +244795,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""clear(self)
  * 
  */
-  __pyx_tuple__228 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_c_attr, __pyx_n_s_c_attr_next, __pyx_n_s_c_node, __pyx_n_s_c_node_next); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(0, 875, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__228);
-  __Pyx_GIVEREF(__pyx_tuple__228);
-  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 875, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(0, 875, __pyx_L1_error)
+  __pyx_tuple__444 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_c_attr, __pyx_n_s_c_attr_next, __pyx_n_s_c_node, __pyx_n_s_c_node_next); if (unlikely(!__pyx_tuple__444)) __PYX_ERR(0, 875, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__444);
+  __Pyx_GIVEREF(__pyx_tuple__444);
+  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__444, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 875, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 875, __pyx_L1_error)
 
   /* "lxml/etree.pyx":906
  *                 c_node = c_node_next
@@ -230782,10 +244807,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""insert(self, index, element)
  * 
  */
-  __pyx_tuple__230 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_element, __pyx_n_s_c_node, __pyx_n_s_c_next, __pyx_n_s_c_source_doc); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(0, 906, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__230);
-  __Pyx_GIVEREF(__pyx_tuple__230);
-  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_insert, 906, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(0, 906, __pyx_L1_error)
+  __pyx_tuple__445 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_element, __pyx_n_s_c_node, __pyx_n_s_c_next, __pyx_n_s_c_source_doc); if (unlikely(!__pyx_tuple__445)) __PYX_ERR(0, 906, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__445);
+  __Pyx_GIVEREF(__pyx_tuple__445);
+  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__445, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_insert, 906, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 906, __pyx_L1_error)
 
   /* "lxml/etree.pyx":926
  *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
@@ -230794,10 +244819,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""remove(self, element)
  * 
  */
-  __pyx_tuple__232 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_c_node, __pyx_n_s_c_next); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 926, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__232);
-  __Pyx_GIVEREF(__pyx_tuple__232);
-  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_remove, 926, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(0, 926, __pyx_L1_error)
+  __pyx_tuple__446 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_c_node, __pyx_n_s_c_next); if (unlikely(!__pyx_tuple__446)) __PYX_ERR(0, 926, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__446);
+  __Pyx_GIVEREF(__pyx_tuple__446);
+  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__446, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_remove, 926, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 926, __pyx_L1_error)
 
   /* "lxml/etree.pyx":946
  *         moveNodeToDocument(self._doc, c_node.doc, c_node)
@@ -230806,10 +244831,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                 _Element new_element not None):
  *         u"""replace(self, old_element, new_element)
  */
-  __pyx_tuple__234 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_old_element, __pyx_n_s_new_element, __pyx_n_s_c_old_node, __pyx_n_s_c_old_next, __pyx_n_s_c_new_node, __pyx_n_s_c_new_next, __pyx_n_s_c_source_doc); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 946, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__234);
-  __Pyx_GIVEREF(__pyx_tuple__234);
-  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_replace, 946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(0, 946, __pyx_L1_error)
+  __pyx_tuple__447 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_old_element, __pyx_n_s_new_element, __pyx_n_s_c_old_node, __pyx_n_s_c_old_next, __pyx_n_s_c_new_node, __pyx_n_s_c_new_next, __pyx_n_s_c_source_doc); if (unlikely(!__pyx_tuple__447)) __PYX_ERR(0, 946, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__447);
+  __Pyx_GIVEREF(__pyx_tuple__447);
+  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__447, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_replace, 946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 946, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1203
  *         return ElementChildIterator(self)
@@ -230818,10 +244843,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"__reversed__(self)"
  *         return ElementChildIterator(self, reversed=True)
  */
-  __pyx_tuple__236 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 1203, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__236);
-  __Pyx_GIVEREF(__pyx_tuple__236);
-  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_reversed_2, 1203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(0, 1203, __pyx_L1_error)
+  __pyx_tuple__448 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__448)) __PYX_ERR(0, 1203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__448);
+  __Pyx_GIVEREF(__pyx_tuple__448);
+  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__448, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_reversed_2, 1203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 1203, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1207
  *         return ElementChildIterator(self, reversed=True)
@@ -230830,10 +244855,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""index(self, child, start=None, stop=None)
  * 
  */
-  __pyx_tuple__238 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_child, __pyx_n_s_start, __pyx_n_s_stop, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_c_start, __pyx_n_s_c_stop, __pyx_n_s_c_child, __pyx_n_s_c_start_node); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(0, 1207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__238);
-  __Pyx_GIVEREF(__pyx_tuple__238);
-  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_index, 1207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_tuple__449 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_child, __pyx_n_s_start, __pyx_n_s_stop, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_c_start, __pyx_n_s_c_stop, __pyx_n_s_c_child, __pyx_n_s_c_start_node); if (unlikely(!__pyx_tuple__449)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__449);
+  __Pyx_GIVEREF(__pyx_tuple__449);
+  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_index, 1207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1207, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1294
  *             raise ValueError, u"list.index(x): x not in list"
@@ -230842,10 +244867,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""get(self, key, default=None)
  * 
  */
-  __pyx_tuple__240 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(0, 1294, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__240);
-  __Pyx_GIVEREF(__pyx_tuple__240);
-  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__240, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(0, 1294, __pyx_L1_error)
+  __pyx_tuple__450 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__450)) __PYX_ERR(0, 1294, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__450);
+  __Pyx_GIVEREF(__pyx_tuple__450);
+  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__450, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 1294, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1302
  *         return _getAttributeValue(self, key, default)
@@ -230854,10 +244879,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""keys(self)
  * 
  */
-  __pyx_tuple__242 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(0, 1302, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__242);
-  __Pyx_GIVEREF(__pyx_tuple__242);
-  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__242, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 1302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(0, 1302, __pyx_L1_error)
+  __pyx_tuple__451 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__451)) __PYX_ERR(0, 1302, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__451);
+  __Pyx_GIVEREF(__pyx_tuple__451);
+  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 1302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1302, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1311
  *         return _collectAttributes(self._c_node, 1)
@@ -230866,10 +244891,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""values(self)
  * 
  */
-  __pyx_tuple__244 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__244)) __PYX_ERR(0, 1311, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__244);
-  __Pyx_GIVEREF(__pyx_tuple__244);
-  __pyx_codeobj__245 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__244, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 1311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(0, 1311, __pyx_L1_error)
+  __pyx_tuple__452 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__452)) __PYX_ERR(0, 1311, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__452);
+  __Pyx_GIVEREF(__pyx_tuple__452);
+  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__452, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 1311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 1311, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1320
  *         return _collectAttributes(self._c_node, 2)
@@ -230878,10 +244903,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""items(self)
  * 
  */
-  __pyx_tuple__246 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__246)) __PYX_ERR(0, 1320, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__246);
-  __Pyx_GIVEREF(__pyx_tuple__246);
-  __pyx_codeobj__247 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__246, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 1320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(0, 1320, __pyx_L1_error)
+  __pyx_tuple__453 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__453)) __PYX_ERR(0, 1320, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__453);
+  __Pyx_GIVEREF(__pyx_tuple__453);
+  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 1320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 1320, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1329
  *         return _collectAttributes(self._c_node, 3)
@@ -230890,10 +244915,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getchildren(self)
  * 
  */
-  __pyx_tuple__248 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__248)) __PYX_ERR(0, 1329, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__248);
-  __Pyx_GIVEREF(__pyx_tuple__248);
-  __pyx_codeobj__249 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__248, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getchildren, 1329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __pyx_tuple__454 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__454)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__454);
+  __Pyx_GIVEREF(__pyx_tuple__454);
+  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__454, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getchildren, 1329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 1329, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1342
  *         return _collectChildren(self)
@@ -230902,10 +244927,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getparent(self)
  * 
  */
-  __pyx_tuple__250 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(0, 1342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__250);
-  __Pyx_GIVEREF(__pyx_tuple__250);
-  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__250, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getparent, 1342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __pyx_tuple__455 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__455)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__455);
+  __Pyx_GIVEREF(__pyx_tuple__455);
+  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__455, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getparent, 1342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 1342, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1354
  *         return _elementFactory(self._doc, c_node)
@@ -230914,10 +244939,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getnext(self)
  * 
  */
-  __pyx_tuple__252 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__252)) __PYX_ERR(0, 1354, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__252);
-  __Pyx_GIVEREF(__pyx_tuple__252);
-  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__252, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getnext, 1354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __pyx_tuple__456 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__456)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__456);
+  __Pyx_GIVEREF(__pyx_tuple__456);
+  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__456, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getnext, 1354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 1354, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1366
  *         return _elementFactory(self._doc, c_node)
@@ -230926,10 +244951,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getprevious(self)
  * 
  */
-  __pyx_tuple__254 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__254)) __PYX_ERR(0, 1366, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__254);
-  __Pyx_GIVEREF(__pyx_tuple__254);
-  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__254, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getprevious, 1366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(0, 1366, __pyx_L1_error)
+  __pyx_tuple__457 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__457)) __PYX_ERR(0, 1366, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__457);
+  __Pyx_GIVEREF(__pyx_tuple__457);
+  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__457, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getprevious, 1366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 1366, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1378
  *         return _elementFactory(self._doc, c_node)
@@ -230938,10 +244963,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""itersiblings(self, tag=None, *tags, preceding=False)
  * 
  */
-  __pyx_tuple__256 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_preceding, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__256)) __PYX_ERR(0, 1378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__256);
-  __Pyx_GIVEREF(__pyx_tuple__256);
-  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__256, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itersiblings, 1378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(0, 1378, __pyx_L1_error)
+  __pyx_tuple__458 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_preceding, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__458)) __PYX_ERR(0, 1378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__458);
+  __Pyx_GIVEREF(__pyx_tuple__458);
+  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itersiblings, 1378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 1378, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1396
  *         return SiblingsIterator(self, tags, preceding=preceding)
@@ -230950,10 +244975,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterancestors(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__258 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__258)) __PYX_ERR(0, 1396, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__258);
-  __Pyx_GIVEREF(__pyx_tuple__258);
-  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterancestors, 1396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(0, 1396, __pyx_L1_error)
+  __pyx_tuple__459 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__459)) __PYX_ERR(0, 1396, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__459);
+  __Pyx_GIVEREF(__pyx_tuple__459);
+  __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__459, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterancestors, 1396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 1396, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1408
  *         return AncestorsIterator(self, tags)
@@ -230962,10 +244987,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterdescendants(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__260 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(0, 1408, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__260);
-  __Pyx_GIVEREF(__pyx_tuple__260);
-  __pyx_codeobj__261 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__260, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterdescendants, 1408, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(0, 1408, __pyx_L1_error)
+  __pyx_tuple__460 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__460)) __PYX_ERR(0, 1408, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__460);
+  __Pyx_GIVEREF(__pyx_tuple__460);
+  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterdescendants, 1408, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1408, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1421
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
@@ -230974,10 +244999,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterchildren(self, tag=None, *tags, reversed=False)
  * 
  */
-  __pyx_tuple__262 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(0, 1421, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__262);
-  __Pyx_GIVEREF(__pyx_tuple__262);
-  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterchildren, 1421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(0, 1421, __pyx_L1_error)
+  __pyx_tuple__461 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__461)) __PYX_ERR(0, 1421, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__461);
+  __Pyx_GIVEREF(__pyx_tuple__461);
+  __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__461, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterchildren, 1421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 1421, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1434
  *         return ElementChildIterator(self, tags, reversed=reversed)
@@ -230986,10 +245011,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getroottree(self)
  * 
  */
-  __pyx_tuple__264 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(0, 1434, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__264);
-  __Pyx_GIVEREF(__pyx_tuple__264);
-  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroottree, 1434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(0, 1434, __pyx_L1_error)
+  __pyx_tuple__462 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__462)) __PYX_ERR(0, 1434, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__462);
+  __Pyx_GIVEREF(__pyx_tuple__462);
+  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__462, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroottree, 1434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1434, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1446
  *         return _elementTreeFactory(self._doc, None)
@@ -230998,10 +245023,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getiterator(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__266 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(0, 1446, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__266);
-  __Pyx_GIVEREF(__pyx_tuple__266);
-  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__266, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 1446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(0, 1446, __pyx_L1_error)
+  __pyx_tuple__463 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__463)) __PYX_ERR(0, 1446, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__463);
+  __Pyx_GIVEREF(__pyx_tuple__463);
+  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__463, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 1446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 1446, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1468
  *         return ElementDepthFirstIterator(self, tags)
@@ -231010,10 +245035,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__268 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(0, 1468, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__268);
-  __Pyx_GIVEREF(__pyx_tuple__268);
-  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__268, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 1468, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(0, 1468, __pyx_L1_error)
+  __pyx_tuple__464 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(0, 1468, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__464);
+  __Pyx_GIVEREF(__pyx_tuple__464);
+  __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__464, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 1468, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(0, 1468, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1492
  *         return ElementDepthFirstIterator(self, tags)
@@ -231022,10 +245047,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""itertext(self, tag=None, *tags, with_tail=True)
  * 
  */
-  __pyx_tuple__270 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_with_tail, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(0, 1492, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__270);
-  __Pyx_GIVEREF(__pyx_tuple__270);
-  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__270, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itertext, 1492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(0, 1492, __pyx_L1_error)
+  __pyx_tuple__465 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_with_tail, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__465)) __PYX_ERR(0, 1492, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__465);
+  __Pyx_GIVEREF(__pyx_tuple__465);
+  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__465, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itertext, 1492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1492, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1507
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
@@ -231034,10 +245059,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__272 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__272)) __PYX_ERR(0, 1507, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__272);
-  __Pyx_GIVEREF(__pyx_tuple__272);
-  __pyx_codeobj__273 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__272, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_makeelement, 1507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __pyx_tuple__466 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__466)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__466);
+  __Pyx_GIVEREF(__pyx_tuple__466);
+  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__466, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_makeelement, 1507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 1507, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1516
  *                             attrib, nsmap, _extra)
@@ -231046,10 +245071,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__274 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__274)) __PYX_ERR(0, 1516, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__274);
-  __Pyx_GIVEREF(__pyx_tuple__274);
-  __pyx_codeobj__275 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__274, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_find, 1516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(0, 1516, __pyx_L1_error)
+  __pyx_tuple__467 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__467)) __PYX_ERR(0, 1516, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__467);
+  __Pyx_GIVEREF(__pyx_tuple__467);
+  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__467, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_find, 1516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 1516, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1529
  *         return _elementpath.find(self, path, namespaces)
@@ -231058,10 +245083,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_tuple__276 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__276)) __PYX_ERR(0, 1529, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__276);
-  __Pyx_GIVEREF(__pyx_tuple__276);
-  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__276, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findtext, 1529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(0, 1529, __pyx_L1_error)
+  __pyx_tuple__468 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(0, 1529, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__468);
+  __Pyx_GIVEREF(__pyx_tuple__468);
+  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__468, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findtext, 1529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1529, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1542
  *         return _elementpath.findtext(self, path, default, namespaces)
@@ -231070,10 +245095,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__278 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(0, 1542, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__278);
-  __Pyx_GIVEREF(__pyx_tuple__278);
-  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findall, 1542, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(0, 1542, __pyx_L1_error)
+  __pyx_tuple__469 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__469)) __PYX_ERR(0, 1542, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__469);
+  __Pyx_GIVEREF(__pyx_tuple__469);
+  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__469, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findall, 1542, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 1542, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1555
  *         return _elementpath.findall(self, path, namespaces)
@@ -231082,10 +245107,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__280 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__280)) __PYX_ERR(0, 1555, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__280);
-  __Pyx_GIVEREF(__pyx_tuple__280);
-  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__280, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterfind, 1555, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(0, 1555, __pyx_L1_error)
+  __pyx_tuple__470 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__470)) __PYX_ERR(0, 1555, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__470);
+  __Pyx_GIVEREF(__pyx_tuple__470);
+  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__470, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterfind, 1555, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(0, 1555, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1568
  *         return _elementpath.iterfind(self, path, namespaces)
@@ -231094,10 +245119,10 @@ static int __Pyx_InitCachedConstants(void) {
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_tuple__282 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_path_2, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_smart_strings, __pyx_n_s_variables_2, __pyx_n_s_evaluator); if (unlikely(!__pyx_tuple__282)) __PYX_ERR(0, 1568, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__282);
-  __Pyx_GIVEREF(__pyx_tuple__282);
-  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 3, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__282, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 1568, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(0, 1568, __pyx_L1_error)
+  __pyx_tuple__471 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_path_2, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_smart_strings, __pyx_n_s_variables_2, __pyx_n_s_evaluator); if (unlikely(!__pyx_tuple__471)) __PYX_ERR(0, 1568, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__471);
+  __Pyx_GIVEREF(__pyx_tuple__471);
+  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(2, 3, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__471, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 1568, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1568, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1579
  *         return evaluator(_path, **_variables)
@@ -231106,10 +245131,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """
  *         Run the CSS expression on this element and its children,
  */
-  __pyx_tuple__284 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_expr, __pyx_n_s_translator, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_tuple__284)) __PYX_ERR(0, 1579, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__284);
-  __Pyx_GIVEREF(__pyx_tuple__284);
-  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__284, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_cssselect, 1579, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(0, 1579, __pyx_L1_error)
+  __pyx_tuple__472 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_expr, __pyx_n_s_translator, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_tuple__472)) __PYX_ERR(0, 1579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__472);
+  __Pyx_GIVEREF(__pyx_tuple__472);
+  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__472, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_cssselect, 1579, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(0, 1579, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1629
  *         raise TypeError, u"this element does not have children or attributes"
@@ -231118,10 +245143,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"set(self, key, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__286 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(0, 1629, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__286);
-  __Pyx_GIVEREF(__pyx_tuple__286);
-  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_set, 1629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(0, 1629, __pyx_L1_error)
+  __pyx_tuple__473 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__473)) __PYX_ERR(0, 1629, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__473);
+  __Pyx_GIVEREF(__pyx_tuple__473);
+  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__473, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_set, 1629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 1629, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1633
  *         self._raiseImmutable()
@@ -231130,10 +245155,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"append(self, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__288 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(0, 1633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__288);
-  __Pyx_GIVEREF(__pyx_tuple__288);
-  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__288, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append, 1633, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(0, 1633, __pyx_L1_error)
+  __pyx_tuple__474 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__474)) __PYX_ERR(0, 1633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__474);
+  __Pyx_GIVEREF(__pyx_tuple__474);
+  __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__474, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append, 1633, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 1633, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1637
  *         self._raiseImmutable()
@@ -231142,10 +245167,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"insert(self, index, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__290 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_value); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(0, 1637, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__290);
-  __Pyx_GIVEREF(__pyx_tuple__290);
-  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_insert, 1637, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(0, 1637, __pyx_L1_error)
+  __pyx_tuple__475 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_value); if (unlikely(!__pyx_tuple__475)) __PYX_ERR(0, 1637, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__475);
+  __Pyx_GIVEREF(__pyx_tuple__475);
+  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__475, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_insert, 1637, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 1637, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1676
  *         return 0
@@ -231154,10 +245179,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"get(self, key, default=None)"
  *         return None
  */
-  __pyx_tuple__292 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__292)) __PYX_ERR(0, 1676, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__292);
-  __Pyx_GIVEREF(__pyx_tuple__292);
-  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__292, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(0, 1676, __pyx_L1_error)
+  __pyx_tuple__476 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__476)) __PYX_ERR(0, 1676, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__476);
+  __Pyx_GIVEREF(__pyx_tuple__476);
+  __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(0, 1676, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1680
  *         return None
@@ -231166,10 +245191,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"keys(self)"
  *         return []
  */
-  __pyx_tuple__294 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(0, 1680, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__294);
-  __Pyx_GIVEREF(__pyx_tuple__294);
-  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 1680, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(0, 1680, __pyx_L1_error)
+  __pyx_tuple__477 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__477)) __PYX_ERR(0, 1680, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__477);
+  __Pyx_GIVEREF(__pyx_tuple__477);
+  __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__477, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 1680, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 1680, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1684
  *         return []
@@ -231178,10 +245203,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"items(self)"
  *         return []
  */
-  __pyx_tuple__296 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(0, 1684, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__296);
-  __Pyx_GIVEREF(__pyx_tuple__296);
-  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__296, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 1684, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(0, 1684, __pyx_L1_error)
+  __pyx_tuple__478 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__478)) __PYX_ERR(0, 1684, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__478);
+  __Pyx_GIVEREF(__pyx_tuple__478);
+  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 1684, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(0, 1684, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1688
  *         return []
@@ -231190,10 +245215,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"values(self)"
  *         return []
  */
-  __pyx_tuple__298 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(0, 1688, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__298);
-  __Pyx_GIVEREF(__pyx_tuple__298);
-  __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 1688, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __pyx_tuple__479 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__479)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__479);
+  __Pyx_GIVEREF(__pyx_tuple__479);
+  __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__479, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 1688, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(0, 1688, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1725
  *             return "<?%s?>" % strrepr(self.target)
@@ -231202,10 +245227,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""get(self, key, default=None)
  * 
  */
-  __pyx_tuple__300 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(0, 1725, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__300);
-  __Pyx_GIVEREF(__pyx_tuple__300);
-  __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1725, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(0, 1725, __pyx_L1_error)
+  __pyx_tuple__480 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__480)) __PYX_ERR(0, 1725, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__480);
+  __Pyx_GIVEREF(__pyx_tuple__480);
+  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__480, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 1725, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(0, 1725, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1869
  *         return 0
@@ -231214,10 +245239,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""parse(self, source, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__302 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(0, 1869, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__302);
-  __Pyx_GIVEREF(__pyx_tuple__302);
-  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(3, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__302, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(0, 1869, __pyx_L1_error)
+  __pyx_tuple__481 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__481)) __PYX_ERR(0, 1869, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__481);
+  __Pyx_GIVEREF(__pyx_tuple__481);
+  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(3, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(0, 1869, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1885
  *         return self._context_node
@@ -231226,10 +245251,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""_setroot(self, root)
  * 
  */
-  __pyx_tuple__304 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(0, 1885, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__304);
-  __Pyx_GIVEREF(__pyx_tuple__304);
-  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__304, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_setroot, 1885, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(0, 1885, __pyx_L1_error)
+  __pyx_tuple__482 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__482)) __PYX_ERR(0, 1885, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__482);
+  __Pyx_GIVEREF(__pyx_tuple__482);
+  __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__482, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_setroot, 1885, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(0, 1885, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1896
  *         self._doc = None
@@ -231238,10 +245263,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getroot(self)
  * 
  */
-  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(0, 1896, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__306);
-  __Pyx_GIVEREF(__pyx_tuple__306);
-  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__306, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroot, 1896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(0, 1896, __pyx_L1_error)
+  __pyx_tuple__483 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__483)) __PYX_ERR(0, 1896, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__483);
+  __Pyx_GIVEREF(__pyx_tuple__483);
+  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroot, 1896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(0, 1896, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1903
  *         return self._context_node
@@ -231250,10 +245275,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  */
-  __pyx_tuple__308 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(0, 1903, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__308);
-  __Pyx_GIVEREF(__pyx_tuple__308);
-  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__308, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 1903, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(0, 1903, __pyx_L1_error)
+  __pyx_tuple__484 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__484)) __PYX_ERR(0, 1903, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__484);
+  __Pyx_GIVEREF(__pyx_tuple__484);
+  __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__484, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 1903, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(0, 1903, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1906
  *         return _elementTreeFactory(self._doc, self._context_node)
@@ -231262,10 +245287,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef _Element root
  *         cdef _Document doc
  */
-  __pyx_tuple__310 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_memo, __pyx_n_s_root, __pyx_n_s_doc_2, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(0, 1906, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__310);
-  __Pyx_GIVEREF(__pyx_tuple__310);
-  __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 1906, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(0, 1906, __pyx_L1_error)
+  __pyx_tuple__485 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_memo, __pyx_n_s_root, __pyx_n_s_doc_2, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__485)) __PYX_ERR(0, 1906, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__485);
+  __Pyx_GIVEREF(__pyx_tuple__485);
+  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 1906, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(0, 1906, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1946
  *             return None
@@ -231274,10 +245299,10 @@ static int __Pyx_InitCachedConstants(void) {
  *               pretty_print=False, xml_declaration=None, with_tail=True,
  *               standalone=None, doctype=None, compression=0,
  */
-  __pyx_tuple__312 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_encoding, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_xml_declaration, __pyx_n_s_with_tail, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_compression, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_inclusive_ns_prefixes, __pyx_n_s_docstring, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone, __pyx_n_s_warnings); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(0, 1946, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__312);
-  __Pyx_GIVEREF(__pyx_tuple__312);
-  __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(2, 12, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__312, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_write, 1946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(0, 1946, __pyx_L1_error)
+  __pyx_tuple__486 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_encoding, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_xml_declaration, __pyx_n_s_with_tail, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_compression, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_inclusive_ns_prefixes, __pyx_n_s_docstring, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone, __pyx_n_s_warnings); if (unlikely(!__pyx_tuple__486)) __PYX_ERR(0, 1946, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__486);
+  __Pyx_GIVEREF(__pyx_tuple__486);
+  __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(2, 12, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__486, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_write, 1946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) __PYX_ERR(0, 1946, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2043
  *                     is_standalone, compression)
@@ -231286,10 +245311,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getpath(self, element)
  * 
  */
-  __pyx_tuple__314 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_doc_2, __pyx_n_s_root, __pyx_n_s_c_doc, __pyx_n_s_c_path, __pyx_n_s_path); if (unlikely(!__pyx_tuple__314)) __PYX_ERR(0, 2043, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__314);
-  __Pyx_GIVEREF(__pyx_tuple__314);
-  __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__314, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getpath, 2043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(0, 2043, __pyx_L1_error)
+  __pyx_tuple__487 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_doc_2, __pyx_n_s_root, __pyx_n_s_c_doc, __pyx_n_s_c_path, __pyx_n_s_path); if (unlikely(!__pyx_tuple__487)) __PYX_ERR(0, 2043, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__487);
+  __Pyx_GIVEREF(__pyx_tuple__487);
+  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__487, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getpath, 2043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(0, 2043, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2081
  *         return path
@@ -231298,10 +245323,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getelementpath(self, element)
  * 
  */
-  __pyx_tuple__316 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_root, __pyx_n_s_count, __pyx_n_s_path, __pyx_n_s_c_element, __pyx_n_s_c_name, __pyx_n_s_c_href, __pyx_n_s_tag, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(0, 2081, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__316);
-  __Pyx_GIVEREF(__pyx_tuple__316);
-  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__316, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getelementpath, 2081, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(0, 2081, __pyx_L1_error)
+  __pyx_tuple__488 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_element, __pyx_n_s_root, __pyx_n_s_count, __pyx_n_s_path, __pyx_n_s_c_element, __pyx_n_s_c_name, __pyx_n_s_c_href, __pyx_n_s_tag, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__488)) __PYX_ERR(0, 2081, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__488);
+  __Pyx_GIVEREF(__pyx_tuple__488);
+  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__488, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getelementpath, 2081, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(0, 2081, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2145
  *         return '/'.join(path)
@@ -231310,10 +245335,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getiterator(self, *tags, tag=None)
  * 
  */
-  __pyx_tuple__318 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(0, 2145, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__318);
-  __Pyx_GIVEREF(__pyx_tuple__318);
-  __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__318, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 2145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(0, 2145, __pyx_L1_error)
+  __pyx_tuple__489 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(0, 2145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__489);
+  __Pyx_GIVEREF(__pyx_tuple__489);
+  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 2145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(0, 2145, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2169
  *         return root.getiterator(*tags)
@@ -231322,10 +245347,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__320 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__320)) __PYX_ERR(0, 2169, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__320);
-  __Pyx_GIVEREF(__pyx_tuple__320);
-  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__320, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 2169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(0, 2169, __pyx_L1_error)
+  __pyx_tuple__490 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__490)) __PYX_ERR(0, 2169, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__490);
+  __Pyx_GIVEREF(__pyx_tuple__490);
+  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__490, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 2169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(0, 2169, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2187
  *         return root.iter(*tags)
@@ -231334,10 +245359,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__322 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(0, 2187, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__322);
-  __Pyx_GIVEREF(__pyx_tuple__322);
-  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_find, 2187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(0, 2187, __pyx_L1_error)
+  __pyx_tuple__491 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(0, 2187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__491);
+  __Pyx_GIVEREF(__pyx_tuple__491);
+  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__491, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_find, 2187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(0, 2187, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2204
  *         return root.find(path, namespaces)
@@ -231346,10 +245371,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_tuple__324 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(0, 2204, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__324);
-  __Pyx_GIVEREF(__pyx_tuple__324);
-  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findtext, 2204, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(0, 2204, __pyx_L1_error)
+  __pyx_tuple__492 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__492)) __PYX_ERR(0, 2204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__492);
+  __Pyx_GIVEREF(__pyx_tuple__492);
+  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__492, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findtext, 2204, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(0, 2204, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2221
  *         return root.findtext(path, default, namespaces)
@@ -231358,10 +245383,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__326 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(0, 2221, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__326);
-  __Pyx_GIVEREF(__pyx_tuple__326);
-  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findall, 2221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(0, 2221, __pyx_L1_error)
+  __pyx_tuple__493 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(0, 2221, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__493);
+  __Pyx_GIVEREF(__pyx_tuple__493);
+  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_findall, 2221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(0, 2221, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2238
  *         return root.findall(path, namespaces)
@@ -231370,10 +245395,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__328 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(0, 2238, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__328);
-  __Pyx_GIVEREF(__pyx_tuple__328);
-  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterfind, 2238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(0, 2238, __pyx_L1_error)
+  __pyx_tuple__494 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__494)) __PYX_ERR(0, 2238, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__494);
+  __Pyx_GIVEREF(__pyx_tuple__494);
+  __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__494, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterfind, 2238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(0, 2238, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2255
  *         return root.iterfind(path, namespaces)
@@ -231382,10 +245407,10 @@ static int __Pyx_InitCachedConstants(void) {
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_tuple__330 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_path_2, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_smart_strings, __pyx_n_s_variables_2, __pyx_n_s_evaluator); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(0, 2255, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__330);
-  __Pyx_GIVEREF(__pyx_tuple__330);
-  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(2, 3, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__330, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 2255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(0, 2255, __pyx_L1_error)
+  __pyx_tuple__495 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_path_2, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_smart_strings, __pyx_n_s_variables_2, __pyx_n_s_evaluator); if (unlikely(!__pyx_tuple__495)) __PYX_ERR(0, 2255, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__495);
+  __Pyx_GIVEREF(__pyx_tuple__495);
+  __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(2, 3, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 2255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(0, 2255, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2280
  *         return evaluator(_path, **_variables)
@@ -231394,10 +245419,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""xslt(self, _xslt, extensions=None, access_control=None, **_kw)
  * 
  */
-  __pyx_tuple__332 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_xslt, __pyx_n_s_extensions, __pyx_n_s_access_control, __pyx_n_s_kw, __pyx_n_s_style); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(0, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__332);
-  __Pyx_GIVEREF(__pyx_tuple__332);
-  __pyx_codeobj__333 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__332, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xslt_3, 2280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__333)) __PYX_ERR(0, 2280, __pyx_L1_error)
+  __pyx_tuple__496 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_xslt, __pyx_n_s_extensions, __pyx_n_s_access_control, __pyx_n_s_kw, __pyx_n_s_style); if (unlikely(!__pyx_tuple__496)) __PYX_ERR(0, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__496);
+  __Pyx_GIVEREF(__pyx_tuple__496);
+  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__496, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xslt_3, 2280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(0, 2280, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2299
  *         return style(self, **_kw)
@@ -231406,10 +245431,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""relaxng(self, relaxng)
  * 
  */
-  __pyx_tuple__334 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_relaxng, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__334)) __PYX_ERR(0, 2299, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__334);
-  __Pyx_GIVEREF(__pyx_tuple__334);
-  __pyx_codeobj__335 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__334, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_relaxng, 2299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__335)) __PYX_ERR(0, 2299, __pyx_L1_error)
+  __pyx_tuple__497 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_relaxng, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(0, 2299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__497);
+  __Pyx_GIVEREF(__pyx_tuple__497);
+  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_relaxng, 2299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(0, 2299, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2317
  *         return schema.validate(self)
@@ -231418,10 +245443,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""xmlschema(self, xmlschema)
  * 
  */
-  __pyx_tuple__336 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xmlschema, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__336)) __PYX_ERR(0, 2317, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__336);
-  __Pyx_GIVEREF(__pyx_tuple__336);
-  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xmlschema, 2317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(0, 2317, __pyx_L1_error)
+  __pyx_tuple__498 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xmlschema, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__498)) __PYX_ERR(0, 2317, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__498);
+  __Pyx_GIVEREF(__pyx_tuple__498);
+  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__498, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xmlschema, 2317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(0, 2317, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2335
  *         return schema.validate(self)
@@ -231430,10 +245455,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""xinclude(self)
  * 
  */
-  __pyx_tuple__338 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(0, 2335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__338);
-  __Pyx_GIVEREF(__pyx_tuple__338);
-  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xinclude, 2335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(0, 2335, __pyx_L1_error)
+  __pyx_tuple__499 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__499)) __PYX_ERR(0, 2335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__499);
+  __Pyx_GIVEREF(__pyx_tuple__499);
+  __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__499, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xinclude, 2335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) __PYX_ERR(0, 2335, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2350
  *         XInclude()(self._context_node)
@@ -231442,10 +245467,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                    compression=0, inclusive_ns_prefixes=None):
  *         u"""write_c14n(self, file, exclusive=False, with_comments=True,
  */
-  __pyx_tuple__340 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_compression, __pyx_n_s_inclusive_ns_prefixes); if (unlikely(!__pyx_tuple__340)) __PYX_ERR(0, 2350, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__340);
-  __Pyx_GIVEREF(__pyx_tuple__340);
-  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(2, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__340, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_write_c14n, 2350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(0, 2350, __pyx_L1_error)
+  __pyx_tuple__500 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_compression, __pyx_n_s_inclusive_ns_prefixes); if (unlikely(!__pyx_tuple__500)) __PYX_ERR(0, 2350, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__500);
+  __Pyx_GIVEREF(__pyx_tuple__500);
+  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(2, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__500, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_write_c14n, 2350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(0, 2350, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2414
  *         _delAttribute(self._element, key)
@@ -231454,10 +245479,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  */
-  __pyx_tuple__342 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_sequence_or_dict, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__342)) __PYX_ERR(0, 2414, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__342);
-  __Pyx_GIVEREF(__pyx_tuple__342);
-  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_update, 2414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(0, 2414, __pyx_L1_error)
+  __pyx_tuple__501 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_sequence_or_dict, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__501)) __PYX_ERR(0, 2414, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__501);
+  __Pyx_GIVEREF(__pyx_tuple__501);
+  __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__501, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_update, 2414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(0, 2414, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2421
  *             _setAttributeValue(self._element, key, value)
@@ -231466,10 +245491,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if len(default) > 1:
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  */
-  __pyx_tuple__344 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default, __pyx_n_s_result); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(0, 2421, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__344);
-  __Pyx_GIVEREF(__pyx_tuple__344);
-  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_pop, 2421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(0, 2421, __pyx_L1_error)
+  __pyx_tuple__502 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default, __pyx_n_s_result); if (unlikely(!__pyx_tuple__502)) __PYX_ERR(0, 2421, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__502);
+  __Pyx_GIVEREF(__pyx_tuple__502);
+  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__502, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_pop, 2421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) __PYX_ERR(0, 2421, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2434
  *         return result
@@ -231478,10 +245503,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node = self._element._c_node
  */
-  __pyx_tuple__346 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(0, 2434, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__346);
-  __Pyx_GIVEREF(__pyx_tuple__346);
-  __pyx_codeobj__347 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__346, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 2434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__347)) __PYX_ERR(0, 2434, __pyx_L1_error)
+  __pyx_tuple__503 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__503)) __PYX_ERR(0, 2434, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__503);
+  __Pyx_GIVEREF(__pyx_tuple__503);
+  __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__503, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear, 2434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(0, 2434, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2445
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
@@ -231490,10 +245515,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__348 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__348)) __PYX_ERR(0, 2445, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__348);
-  __Pyx_GIVEREF(__pyx_tuple__348);
-  __pyx_codeobj__349 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__348, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 2445, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__349)) __PYX_ERR(0, 2445, __pyx_L1_error)
+  __pyx_tuple__504 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__504)) __PYX_ERR(0, 2445, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__504);
+  __Pyx_GIVEREF(__pyx_tuple__504);
+  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__504, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_copy_2, 2445, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(0, 2445, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2449
  *         return dict(_collectAttributes(self._element._c_node, 3))
@@ -231502,10 +245527,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__350 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__350)) __PYX_ERR(0, 2449, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__350);
-  __Pyx_GIVEREF(__pyx_tuple__350);
-  __pyx_codeobj__351 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__350, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 2449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__351)) __PYX_ERR(0, 2449, __pyx_L1_error)
+  __pyx_tuple__505 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__505)) __PYX_ERR(0, 2449, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__505);
+  __Pyx_GIVEREF(__pyx_tuple__505);
+  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_deepcopy, 2449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(0, 2449, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2479
  *         return c
@@ -231514,10 +245539,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return _getAttributeValue(self._element, key, default)
  */
-  __pyx_tuple__352 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__352)) __PYX_ERR(0, 2479, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__352);
-  __Pyx_GIVEREF(__pyx_tuple__352);
-  __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__352, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 2479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(0, 2479, __pyx_L1_error)
+  __pyx_tuple__506 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__506)) __PYX_ERR(0, 2479, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__506);
+  __Pyx_GIVEREF(__pyx_tuple__506);
+  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__506, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_get, 2479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) __PYX_ERR(0, 2479, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2483
  *         return _getAttributeValue(self._element, key, default)
@@ -231526,10 +245551,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 1)
  */
-  __pyx_tuple__354 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(0, 2483, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__354);
-  __Pyx_GIVEREF(__pyx_tuple__354);
-  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__354, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 2483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(0, 2483, __pyx_L1_error)
+  __pyx_tuple__507 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__507)) __PYX_ERR(0, 2483, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__507);
+  __Pyx_GIVEREF(__pyx_tuple__507);
+  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__507, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_keys, 2483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(0, 2483, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2491
  *         return iter(_collectAttributes(self._element._c_node, 1))
@@ -231538,10 +245563,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 1))
  */
-  __pyx_tuple__356 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(0, 2491, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__356);
-  __Pyx_GIVEREF(__pyx_tuple__356);
-  __pyx_codeobj__357 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterkeys, 2491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__357)) __PYX_ERR(0, 2491, __pyx_L1_error)
+  __pyx_tuple__508 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__508)) __PYX_ERR(0, 2491, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__508);
+  __Pyx_GIVEREF(__pyx_tuple__508);
+  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterkeys, 2491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) __PYX_ERR(0, 2491, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2495
  *         return iter(_collectAttributes(self._element._c_node, 1))
@@ -231550,10 +245575,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 2)
  */
-  __pyx_tuple__358 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__358)) __PYX_ERR(0, 2495, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__358);
-  __Pyx_GIVEREF(__pyx_tuple__358);
-  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__358, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 2495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(0, 2495, __pyx_L1_error)
+  __pyx_tuple__509 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__509)) __PYX_ERR(0, 2495, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__509);
+  __Pyx_GIVEREF(__pyx_tuple__509);
+  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__509, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 2495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(0, 2495, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2499
  *         return _collectAttributes(self._element._c_node, 2)
@@ -231562,10 +245587,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 2))
  */
-  __pyx_tuple__360 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(0, 2499, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__360);
-  __Pyx_GIVEREF(__pyx_tuple__360);
-  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itervalues, 2499, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(0, 2499, __pyx_L1_error)
+  __pyx_tuple__510 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__510)) __PYX_ERR(0, 2499, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__510);
+  __Pyx_GIVEREF(__pyx_tuple__510);
+  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__510, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itervalues, 2499, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) __PYX_ERR(0, 2499, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2503
  *         return iter(_collectAttributes(self._element._c_node, 2))
@@ -231574,10 +245599,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 3)
  */
-  __pyx_tuple__362 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(0, 2503, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__362);
-  __Pyx_GIVEREF(__pyx_tuple__362);
-  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__362, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 2503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(0, 2503, __pyx_L1_error)
+  __pyx_tuple__511 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__511)) __PYX_ERR(0, 2503, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__511);
+  __Pyx_GIVEREF(__pyx_tuple__511);
+  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__511, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_items, 2503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(0, 2503, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2507
  *         return _collectAttributes(self._element._c_node, 3)
@@ -231586,10 +245611,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__364 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(0, 2507, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__364);
-  __Pyx_GIVEREF(__pyx_tuple__364);
-  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iteritems, 2507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(0, 2507, __pyx_L1_error)
+  __pyx_tuple__512 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(0, 2507, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__512);
+  __Pyx_GIVEREF(__pyx_tuple__512);
+  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__512, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iteritems, 2507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) __PYX_ERR(0, 2507, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2511
  *         return iter(_collectAttributes(self._element._c_node, 3))
@@ -231598,10 +245623,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidNode(self._element)
  *         return key in self
  */
-  __pyx_tuple__366 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__366)) __PYX_ERR(0, 2511, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__366);
-  __Pyx_GIVEREF(__pyx_tuple__366);
-  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__366, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_has_key, 2511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(0, 2511, __pyx_L1_error)
+  __pyx_tuple__513 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__513)) __PYX_ERR(0, 2511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__513);
+  __Pyx_GIVEREF(__pyx_tuple__513);
+  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__513, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_has_key, 2511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(0, 2511, __pyx_L1_error)
 
   /* "lxml/etree.pyx":2988
  * # module-level API for ElementTree
@@ -231610,13 +245635,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__368 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__368)) __PYX_ERR(0, 2988, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__368);
-  __Pyx_GIVEREF(__pyx_tuple__368);
-  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__368, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Element, 2988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(0, 2988, __pyx_L1_error)
-  __pyx_tuple__370 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__370)) __PYX_ERR(0, 2988, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__370);
-  __Pyx_GIVEREF(__pyx_tuple__370);
+  __pyx_tuple__514 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(0, 2988, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__514);
+  __Pyx_GIVEREF(__pyx_tuple__514);
+  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__514, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Element, 2988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) __PYX_ERR(0, 2988, __pyx_L1_error)
+  __pyx_tuple__515 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__515)) __PYX_ERR(0, 2988, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__515);
+  __Pyx_GIVEREF(__pyx_tuple__515);
 
   /* "lxml/etree.pyx":3002
  * 
@@ -231625,13 +245650,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Comment(text=None)
  * 
  */
-  __pyx_tuple__371 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__371)) __PYX_ERR(0, 3002, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__371);
-  __Pyx_GIVEREF(__pyx_tuple__371);
-  __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__371, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Comment, 3002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(0, 3002, __pyx_L1_error)
-  __pyx_tuple__373 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__373)) __PYX_ERR(0, 3002, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__373);
-  __Pyx_GIVEREF(__pyx_tuple__373);
+  __pyx_tuple__516 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__516)) __PYX_ERR(0, 3002, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__516);
+  __Pyx_GIVEREF(__pyx_tuple__516);
+  __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__516, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Comment, 3002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(0, 3002, __pyx_L1_error)
+  __pyx_tuple__517 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(0, 3002, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__517);
+  __Pyx_GIVEREF(__pyx_tuple__517);
 
   /* "lxml/etree.pyx":3026
  * 
@@ -231640,13 +245665,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""ProcessingInstruction(target, text=None)
  * 
  */
-  __pyx_tuple__374 = PyTuple_Pack(5, __pyx_n_s_target, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__374)) __PYX_ERR(0, 3026, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__374);
-  __Pyx_GIVEREF(__pyx_tuple__374);
-  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__374, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_ProcessingInstruction, 3026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(0, 3026, __pyx_L1_error)
-  __pyx_tuple__376 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__376)) __PYX_ERR(0, 3026, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__376);
-  __Pyx_GIVEREF(__pyx_tuple__376);
+  __pyx_tuple__518 = PyTuple_Pack(5, __pyx_n_s_target, __pyx_n_s_text, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(0, 3026, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__518);
+  __Pyx_GIVEREF(__pyx_tuple__518);
+  __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__518, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_ProcessingInstruction, 3026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(0, 3026, __pyx_L1_error)
+  __pyx_tuple__519 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__519)) __PYX_ERR(0, 3026, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__519);
+  __Pyx_GIVEREF(__pyx_tuple__519);
 
   /* "lxml/etree.pyx":3079
  * 
@@ -231655,10 +245680,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Entity(name)
  * 
  */
-  __pyx_tuple__377 = PyTuple_Pack(6, __pyx_n_s_name_2, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc, __pyx_n_s_name_utf, __pyx_n_s_c_name); if (unlikely(!__pyx_tuple__377)) __PYX_ERR(0, 3079, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__377);
-  __Pyx_GIVEREF(__pyx_tuple__377);
-  __pyx_codeobj__378 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__377, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Entity, 3079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__378)) __PYX_ERR(0, 3079, __pyx_L1_error)
+  __pyx_tuple__520 = PyTuple_Pack(6, __pyx_n_s_name_2, __pyx_n_s_doc_2, __pyx_n_s_c_node, __pyx_n_s_c_doc, __pyx_n_s_name_utf, __pyx_n_s_c_name); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(0, 3079, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__520);
+  __Pyx_GIVEREF(__pyx_tuple__520);
+  __pyx_codeobj__172 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__520, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Entity, 3079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__172)) __PYX_ERR(0, 3079, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3105
  * 
@@ -231667,13 +245692,13 @@ static int __Pyx_InitCachedConstants(void) {
  *                attrib=None, nsmap=None, **_extra):
  *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
  */
-  __pyx_tuple__379 = PyTuple_Pack(5, __pyx_n_s_parent, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__379)) __PYX_ERR(0, 3105, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__379);
-  __Pyx_GIVEREF(__pyx_tuple__379);
-  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__379, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_SubElement, 3105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(0, 3105, __pyx_L1_error)
-  __pyx_tuple__381 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__381)) __PYX_ERR(0, 3105, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__381);
-  __Pyx_GIVEREF(__pyx_tuple__381);
+  __pyx_tuple__521 = PyTuple_Pack(5, __pyx_n_s_parent, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__521)) __PYX_ERR(0, 3105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__521);
+  __Pyx_GIVEREF(__pyx_tuple__521);
+  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__521, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_SubElement, 3105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(0, 3105, __pyx_L1_error)
+  __pyx_tuple__522 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(0, 3105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__522);
+  __Pyx_GIVEREF(__pyx_tuple__522);
 
   /* "lxml/etree.pyx":3115
  * 
@@ -231682,13 +245707,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""ElementTree(element=None, file=None, parser=None)
  * 
  */
-  __pyx_tuple__382 = PyTuple_Pack(10, __pyx_n_s_element, __pyx_n_s_file, __pyx_n_s_parser, __pyx_n_s_c_next, __pyx_n_s_c_node, __pyx_n_s_c_node_copy, __pyx_n_s_c_doc, __pyx_n_s_etree, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__382)) __PYX_ERR(0, 3115, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__382);
-  __Pyx_GIVEREF(__pyx_tuple__382);
-  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__382, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_ElementTree, 3115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(0, 3115, __pyx_L1_error)
-  __pyx_tuple__384 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__384)) __PYX_ERR(0, 3115, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__384);
-  __Pyx_GIVEREF(__pyx_tuple__384);
+  __pyx_tuple__523 = PyTuple_Pack(10, __pyx_n_s_element, __pyx_n_s_file, __pyx_n_s_parser, __pyx_n_s_c_next, __pyx_n_s_c_node, __pyx_n_s_c_node_copy, __pyx_n_s_c_doc, __pyx_n_s_etree, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__523)) __PYX_ERR(0, 3115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__523);
+  __Pyx_GIVEREF(__pyx_tuple__523);
+  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__523, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_ElementTree, 3115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) __PYX_ERR(0, 3115, __pyx_L1_error)
+  __pyx_tuple__524 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__524)) __PYX_ERR(0, 3115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__524);
+  __Pyx_GIVEREF(__pyx_tuple__524);
 
   /* "lxml/etree.pyx":3141
  * 
@@ -231697,13 +245722,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""HTML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__385 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(0, 3141, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__385);
-  __Pyx_GIVEREF(__pyx_tuple__385);
-  __pyx_codeobj__386 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__385, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_HTML, 3141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__386)) __PYX_ERR(0, 3141, __pyx_L1_error)
-  __pyx_tuple__387 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__387)) __PYX_ERR(0, 3141, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__387);
-  __Pyx_GIVEREF(__pyx_tuple__387);
+  __pyx_tuple__525 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__525)) __PYX_ERR(0, 3141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__525);
+  __Pyx_GIVEREF(__pyx_tuple__525);
+  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__525, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_HTML, 3141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(0, 3141, __pyx_L1_error)
+  __pyx_tuple__526 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(0, 3141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__526);
+  __Pyx_GIVEREF(__pyx_tuple__526);
 
   /* "lxml/etree.pyx":3167
  * 
@@ -231712,13 +245737,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__388 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__388)) __PYX_ERR(0, 3167, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__388);
-  __Pyx_GIVEREF(__pyx_tuple__388);
-  __pyx_codeobj__389 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__388, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_XML, 3167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__389)) __PYX_ERR(0, 3167, __pyx_L1_error)
-  __pyx_tuple__390 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__390)) __PYX_ERR(0, 3167, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__390);
-  __Pyx_GIVEREF(__pyx_tuple__390);
+  __pyx_tuple__527 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__527)) __PYX_ERR(0, 3167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__527);
+  __Pyx_GIVEREF(__pyx_tuple__527);
+  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__527, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_XML, 3167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(0, 3167, __pyx_L1_error)
+  __pyx_tuple__528 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__528)) __PYX_ERR(0, 3167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__528);
+  __Pyx_GIVEREF(__pyx_tuple__528);
 
   /* "lxml/etree.pyx":3198
  * 
@@ -231727,13 +245752,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""fromstring(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__391 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__391)) __PYX_ERR(0, 3198, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__391);
-  __Pyx_GIVEREF(__pyx_tuple__391);
-  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstring, 3198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(0, 3198, __pyx_L1_error)
-  __pyx_tuple__393 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__393)) __PYX_ERR(0, 3198, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__393);
-  __Pyx_GIVEREF(__pyx_tuple__393);
+  __pyx_tuple__529 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__529)) __PYX_ERR(0, 3198, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__529);
+  __Pyx_GIVEREF(__pyx_tuple__529);
+  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__529, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstring, 3198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(0, 3198, __pyx_L1_error)
+  __pyx_tuple__530 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__530)) __PYX_ERR(0, 3198, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__530);
+  __Pyx_GIVEREF(__pyx_tuple__530);
 
   /* "lxml/etree.pyx":3219
  * 
@@ -231742,13 +245767,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""fromstringlist(strings, parser=None)
  * 
  */
-  __pyx_tuple__394 = PyTuple_Pack(5, __pyx_n_s_strings, __pyx_n_s_parser, __pyx_n_s_doc_2, __pyx_n_s_feed, __pyx_n_s_data); if (unlikely(!__pyx_tuple__394)) __PYX_ERR(0, 3219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__394);
-  __Pyx_GIVEREF(__pyx_tuple__394);
-  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__394, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstringlist, 3219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(0, 3219, __pyx_L1_error)
-  __pyx_tuple__396 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__396)) __PYX_ERR(0, 3219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__396);
-  __Pyx_GIVEREF(__pyx_tuple__396);
+  __pyx_tuple__531 = PyTuple_Pack(5, __pyx_n_s_strings, __pyx_n_s_parser, __pyx_n_s_doc_2, __pyx_n_s_feed, __pyx_n_s_data); if (unlikely(!__pyx_tuple__531)) __PYX_ERR(0, 3219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__531);
+  __Pyx_GIVEREF(__pyx_tuple__531);
+  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__531, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstringlist, 3219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(0, 3219, __pyx_L1_error)
+  __pyx_tuple__532 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(0, 3219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__532);
+  __Pyx_GIVEREF(__pyx_tuple__532);
 
   /* "lxml/etree.pyx":3240
  * 
@@ -231757,10 +245782,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""iselement(element)
  * 
  */
-  __pyx_tuple__397 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__397)) __PYX_ERR(0, 3240, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__397);
-  __Pyx_GIVEREF(__pyx_tuple__397);
-  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__397, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iselement, 3240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(0, 3240, __pyx_L1_error)
+  __pyx_tuple__533 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__533)) __PYX_ERR(0, 3240, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__533);
+  __Pyx_GIVEREF(__pyx_tuple__533);
+  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__533, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iselement, 3240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) __PYX_ERR(0, 3240, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3248
  * 
@@ -231769,10 +245794,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""dump(elem, pretty_print=True, with_tail=True)
  * 
  */
-  __pyx_tuple__399 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__399)) __PYX_ERR(0, 3248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__399);
-  __Pyx_GIVEREF(__pyx_tuple__399);
-  __pyx_codeobj__400 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__399, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_dump, 3248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(0, 3248, __pyx_L1_error)
+  __pyx_tuple__534 = PyTuple_Pack(4, __pyx_n_s_elem, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_xml); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(0, 3248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__534);
+  __Pyx_GIVEREF(__pyx_tuple__534);
+  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_dump, 3248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(0, 3248, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3261
  * 
@@ -231781,10 +245806,10 @@ static int __Pyx_InitCachedConstants(void) {
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_tuple__401 = PyTuple_Pack(13, __pyx_n_s_element_or_tree, __pyx_n_s_encoding, __pyx_n_s_method, __pyx_n_s_xml_declaration, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_inclusive_ns_prefixes, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone); if (unlikely(!__pyx_tuple__401)) __PYX_ERR(0, 3261, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__401);
-  __Pyx_GIVEREF(__pyx_tuple__401);
-  __pyx_codeobj__402 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostring, 3261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__402)) __PYX_ERR(0, 3261, __pyx_L1_error)
+  __pyx_tuple__535 = PyTuple_Pack(13, __pyx_n_s_element_or_tree, __pyx_n_s_encoding, __pyx_n_s_method, __pyx_n_s_xml_declaration, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_exclusive, __pyx_n_s_with_comments, __pyx_n_s_inclusive_ns_prefixes, __pyx_n_s_write_declaration, __pyx_n_s_is_standalone); if (unlikely(!__pyx_tuple__535)) __PYX_ERR(0, 3261, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__535);
+  __Pyx_GIVEREF(__pyx_tuple__535);
+  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostring, 3261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(0, 3261, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3354
  * 
@@ -231793,10 +245818,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""tostringlist(element_or_tree, *args, **kwargs)
  * 
  */
-  __pyx_tuple__403 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__403)) __PYX_ERR(0, 3354, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__403);
-  __Pyx_GIVEREF(__pyx_tuple__403);
-  __pyx_codeobj__404 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostringlist, 3354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__404)) __PYX_ERR(0, 3354, __pyx_L1_error)
+  __pyx_tuple__536 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(0, 3354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__536);
+  __Pyx_GIVEREF(__pyx_tuple__536);
+  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostringlist, 3354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(0, 3354, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3366
  * 
@@ -231805,10 +245830,10 @@ static int __Pyx_InitCachedConstants(void) {
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_tuple__405 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__405)) __PYX_ERR(0, 3366, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__405);
-  __Pyx_GIVEREF(__pyx_tuple__405);
-  __pyx_codeobj__406 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tounicode, 3366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__406)) __PYX_ERR(0, 3366, __pyx_L1_error)
+  __pyx_tuple__537 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_method, __pyx_n_s_pretty_print, __pyx_n_s_with_tail, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(0, 3366, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__537);
+  __Pyx_GIVEREF(__pyx_tuple__537);
+  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tounicode, 3366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(0, 3366, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3400
  * 
@@ -231817,13 +245842,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""parse(source, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__407 = PyTuple_Pack(5, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__407)) __PYX_ERR(0, 3400, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__407);
-  __Pyx_GIVEREF(__pyx_tuple__407);
-  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 3400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(0, 3400, __pyx_L1_error)
-  __pyx_tuple__409 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(0, 3400, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__409);
-  __Pyx_GIVEREF(__pyx_tuple__409);
+  __pyx_tuple__538 = PyTuple_Pack(5, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2, __pyx_n_s_result_container); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(0, 3400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__538);
+  __Pyx_GIVEREF(__pyx_tuple__538);
+  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 3400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(0, 3400, __pyx_L1_error)
+  __pyx_tuple__539 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__539)) __PYX_ERR(0, 3400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__539);
+  __Pyx_GIVEREF(__pyx_tuple__539);
 
   /* "lxml/etree.pyx":3432
  * 
@@ -231832,13 +245857,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """adopt_external_document(capsule, parser=None)
  * 
  */
-  __pyx_tuple__410 = PyTuple_Pack(5, __pyx_n_s_capsule, __pyx_n_s_parser, __pyx_n_s_c_doc, __pyx_n_s_is_owned, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__410)) __PYX_ERR(0, 3432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__410);
-  __Pyx_GIVEREF(__pyx_tuple__410);
-  __pyx_codeobj__411 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__410, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_adopt_external_document, 3432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__411)) __PYX_ERR(0, 3432, __pyx_L1_error)
-  __pyx_tuple__412 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__412)) __PYX_ERR(0, 3432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__412);
-  __Pyx_GIVEREF(__pyx_tuple__412);
+  __pyx_tuple__540 = PyTuple_Pack(5, __pyx_n_s_capsule, __pyx_n_s_parser, __pyx_n_s_c_doc, __pyx_n_s_is_owned, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(0, 3432, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__540);
+  __Pyx_GIVEREF(__pyx_tuple__540);
+  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_adopt_external_document, 3432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(0, 3432, __pyx_L1_error)
+  __pyx_tuple__541 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__541)) __PYX_ERR(0, 3432, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__541);
+  __Pyx_GIVEREF(__pyx_tuple__541);
 
   /* "src/lxml/readonlytree.pxi":160
  *         return c_node != NULL
@@ -231847,10 +245872,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"__deepcopy__(self, memo)"
  *         return self.__copy__()
  */
-  __pyx_tuple__413 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__413)) __PYX_ERR(6, 160, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__413);
-  __Pyx_GIVEREF(__pyx_tuple__413);
-  __pyx_codeobj__414 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__413, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_deepcopy, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__414)) __PYX_ERR(6, 160, __pyx_L1_error)
+  __pyx_tuple__542 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(6, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__542);
+  __Pyx_GIVEREF(__pyx_tuple__542);
+  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_deepcopy, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(6, 160, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":164
  *         return self.__copy__()
@@ -231859,10 +245884,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"__copy__(self)"
  *         cdef xmlDoc* c_doc
  */
-  __pyx_tuple__415 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__415)) __PYX_ERR(6, 164, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__415);
-  __Pyx_GIVEREF(__pyx_tuple__415);
-  __pyx_codeobj__416 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__415, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_copy_2, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__416)) __PYX_ERR(6, 164, __pyx_L1_error)
+  __pyx_tuple__543 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(6, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__543);
+  __Pyx_GIVEREF(__pyx_tuple__543);
+  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_copy_2, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(6, 164, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":187
  *         return iter(self.getchildren())
@@ -231871,10 +245896,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""iterchildren(self, tag=None, reversed=False)
  * 
  */
-  __pyx_tuple__417 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_children, __pyx_n_s_el); if (unlikely(!__pyx_tuple__417)) __PYX_ERR(6, 187, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__417);
-  __Pyx_GIVEREF(__pyx_tuple__417);
-  __pyx_codeobj__418 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_iterchildren, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__418)) __PYX_ERR(6, 187, __pyx_L1_error)
+  __pyx_tuple__544 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_children, __pyx_n_s_el); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(6, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__544);
+  __Pyx_GIVEREF(__pyx_tuple__544);
+  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__544, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_iterchildren, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(6, 187, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":199
  *         return iter(children)
@@ -231883,10 +245908,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Returns all subelements. The elements are returned in document
  *         order.
  */
-  __pyx_tuple__419 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__419)) __PYX_ERR(6, 199, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__419);
-  __Pyx_GIVEREF(__pyx_tuple__419);
-  __pyx_codeobj__420 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__419, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getchildren, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__420)) __PYX_ERR(6, 199, __pyx_L1_error)
+  __pyx_tuple__545 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__545)) __PYX_ERR(6, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__545);
+  __Pyx_GIVEREF(__pyx_tuple__545);
+  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getchildren, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(6, 199, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":214
  *         return result
@@ -231895,10 +245920,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Returns the parent of this element or None for the root element.
  *         """
  */
-  __pyx_tuple__421 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_parent); if (unlikely(!__pyx_tuple__421)) __PYX_ERR(6, 214, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__421);
-  __Pyx_GIVEREF(__pyx_tuple__421);
-  __pyx_codeobj__422 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__421, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getparent, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(6, 214, __pyx_L1_error)
+  __pyx_tuple__546 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_parent); if (unlikely(!__pyx_tuple__546)) __PYX_ERR(6, 214, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__546);
+  __Pyx_GIVEREF(__pyx_tuple__546);
+  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__546, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getparent, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(6, 214, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":225
  *             return _newReadOnlyProxy(self._source_proxy, c_parent)
@@ -231907,10 +245932,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Returns the following sibling of this element or None.
  *         """
  */
-  __pyx_tuple__423 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__423)) __PYX_ERR(6, 225, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__423);
-  __Pyx_GIVEREF(__pyx_tuple__423);
-  __pyx_codeobj__424 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__423, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getnext, 225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__424)) __PYX_ERR(6, 225, __pyx_L1_error)
+  __pyx_tuple__547 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__547)) __PYX_ERR(6, 225, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__547);
+  __Pyx_GIVEREF(__pyx_tuple__547);
+  __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getnext, 225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(6, 225, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":235
  *         return None
@@ -231919,10 +245944,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Returns the preceding sibling of this element or None.
  *         """
  */
-  __pyx_tuple__425 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__425)) __PYX_ERR(6, 235, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__425);
-  __Pyx_GIVEREF(__pyx_tuple__425);
-  __pyx_codeobj__426 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__425, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getprevious, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__426)) __PYX_ERR(6, 235, __pyx_L1_error)
+  __pyx_tuple__548 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__548)) __PYX_ERR(6, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__548);
+  __Pyx_GIVEREF(__pyx_tuple__548);
+  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__548, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_getprevious, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(6, 235, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":293
  *             return None
@@ -231931,10 +245956,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Gets an element attribute.
  *         """
  */
-  __pyx_tuple__427 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__427)) __PYX_ERR(6, 293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__427);
-  __Pyx_GIVEREF(__pyx_tuple__427);
-  __pyx_codeobj__428 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__427, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_get, 293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__428)) __PYX_ERR(6, 293, __pyx_L1_error)
+  __pyx_tuple__549 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(6, 293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__549);
+  __Pyx_GIVEREF(__pyx_tuple__549);
+  __pyx_codeobj__200 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_get, 293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__200)) __PYX_ERR(6, 293, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":299
  *         return _getNodeAttributeValue(self._c_node, key, default)
@@ -231943,10 +245968,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Gets a list of attribute names. The names are returned in an
  *         arbitrary order (just like for an ordinary Python dictionary).
  */
-  __pyx_tuple__429 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__429)) __PYX_ERR(6, 299, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__429);
-  __Pyx_GIVEREF(__pyx_tuple__429);
-  __pyx_codeobj__430 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__429, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_keys, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__430)) __PYX_ERR(6, 299, __pyx_L1_error)
+  __pyx_tuple__550 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__550)) __PYX_ERR(6, 299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__550);
+  __Pyx_GIVEREF(__pyx_tuple__550);
+  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__550, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_keys, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(6, 299, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":306
  *         return _collectAttributes(self._c_node, 1)
@@ -231955,10 +245980,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Gets element attributes, as a sequence. The attributes are returned
  *         in an arbitrary order.
  */
-  __pyx_tuple__431 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__431)) __PYX_ERR(6, 306, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__431);
-  __Pyx_GIVEREF(__pyx_tuple__431);
-  __pyx_codeobj__432 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__431, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_values, 306, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__432)) __PYX_ERR(6, 306, __pyx_L1_error)
+  __pyx_tuple__551 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(6, 306, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__551);
+  __Pyx_GIVEREF(__pyx_tuple__551);
+  __pyx_codeobj__202 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_values, 306, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) __PYX_ERR(6, 306, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":313
  *         return _collectAttributes(self._c_node, 2)
@@ -231967,10 +245992,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Gets element attributes, as a sequence. The attributes are returned
  *         in an arbitrary order.
  */
-  __pyx_tuple__433 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__433)) __PYX_ERR(6, 313, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__433);
-  __Pyx_GIVEREF(__pyx_tuple__433);
-  __pyx_codeobj__434 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__433, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_items, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__434)) __PYX_ERR(6, 313, __pyx_L1_error)
+  __pyx_tuple__552 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__552)) __PYX_ERR(6, 313, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__552);
+  __Pyx_GIVEREF(__pyx_tuple__552);
+  __pyx_codeobj__203 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__552, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_items, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(6, 313, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":379
  *         return 0
@@ -231979,10 +246004,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Append a copy of an Element to the list of children.
  *         """
  */
-  __pyx_tuple__435 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other_element); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(6, 379, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__435);
-  __Pyx_GIVEREF(__pyx_tuple__435);
-  __pyx_codeobj__436 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__435, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_append, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__436)) __PYX_ERR(6, 379, __pyx_L1_error)
+  __pyx_tuple__553 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other_element); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(6, 379, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__553);
+  __Pyx_GIVEREF(__pyx_tuple__553);
+  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__553, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_append, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(6, 379, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":396
  *         _moveTail(c_next, c_node)
@@ -231991,10 +246016,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Append a copy of all Elements from a sequence to the list of
  *         children.
  */
-  __pyx_tuple__437 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__437)) __PYX_ERR(6, 396, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__437);
-  __Pyx_GIVEREF(__pyx_tuple__437);
-  __pyx_codeobj__438 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__437, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_extend, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__438)) __PYX_ERR(6, 396, __pyx_L1_error)
+  __pyx_tuple__554 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(6, 396, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__554);
+  __Pyx_GIVEREF(__pyx_tuple__554);
+  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_extend, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(6, 396, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":476
  *     text content (i.e. everything that adds to the subtree).
@@ -232003,10 +246028,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Append a copy of an Element to the list of children.
  *         """
  */
-  __pyx_tuple__439 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other_element); if (unlikely(!__pyx_tuple__439)) __PYX_ERR(6, 476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__439);
-  __Pyx_GIVEREF(__pyx_tuple__439);
-  __pyx_codeobj__440 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__439, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_append, 476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__440)) __PYX_ERR(6, 476, __pyx_L1_error)
+  __pyx_tuple__555 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other_element); if (unlikely(!__pyx_tuple__555)) __PYX_ERR(6, 476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__555);
+  __Pyx_GIVEREF(__pyx_tuple__555);
+  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__555, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_append, 476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(6, 476, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":488
  *         _moveTail(c_next, c_node)
@@ -232015,10 +246040,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Append a copy of all Elements from a sequence to the list of
  *         children.
  */
-  __pyx_tuple__441 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__441)) __PYX_ERR(6, 488, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__441);
-  __Pyx_GIVEREF(__pyx_tuple__441);
-  __pyx_codeobj__442 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__441, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_extend, 488, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(6, 488, __pyx_L1_error)
+  __pyx_tuple__556 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_elements, __pyx_n_s_element); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(6, 488, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__556);
+  __Pyx_GIVEREF(__pyx_tuple__556);
+  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_readonlytree_pxi, __pyx_n_s_extend, 488, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(6, 488, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":248
  *             self._fallback_function = _lookupDefaultElementClass
@@ -232027,10 +246052,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set_fallback(self, lookup)
  * 
  */
-  __pyx_tuple__443 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(7, 248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__443);
-  __Pyx_GIVEREF(__pyx_tuple__443);
-  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__443, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_set_fallback, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(7, 248, __pyx_L1_error)
+  __pyx_tuple__557 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__557)) __PYX_ERR(7, 248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__557);
+  __Pyx_GIVEREF(__pyx_tuple__557);
+  __pyx_codeobj__208 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__557, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_set_fallback, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(7, 248, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":430
  *         self._lookup_function = _custom_class_lookup
@@ -232039,10 +246064,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"lookup(self, type, doc, namespace, name)"
  *         return None
  */
-  __pyx_tuple__445 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_type, __pyx_n_s_doc_2, __pyx_n_s_namespace, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__445)) __PYX_ERR(7, 430, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__445);
-  __Pyx_GIVEREF(__pyx_tuple__445);
-  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__445, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_lookup, 430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(7, 430, __pyx_L1_error)
+  __pyx_tuple__558 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_type, __pyx_n_s_doc_2, __pyx_n_s_namespace, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(7, 430, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__558);
+  __Pyx_GIVEREF(__pyx_tuple__558);
+  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__558, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_lookup, 430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(7, 430, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":512
  *         self._lookup_function = _python_class_lookup
@@ -232051,10 +246076,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""lookup(self, doc, element)
  * 
  */
-  __pyx_tuple__447 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__447)) __PYX_ERR(7, 512, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__447);
-  __Pyx_GIVEREF(__pyx_tuple__447);
-  __pyx_codeobj__448 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__447, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_lookup, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(7, 512, __pyx_L1_error)
+  __pyx_tuple__559 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__559)) __PYX_ERR(7, 512, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__559);
+  __Pyx_GIVEREF(__pyx_tuple__559);
+  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_lookup, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(7, 512, __pyx_L1_error)
 
   /* "src/lxml/classlookup.pxi":549
  *     LOOKUP_ELEMENT_CLASS = function
@@ -232063,13 +246088,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""set_element_class_lookup(lookup = None)
  * 
  */
-  __pyx_tuple__449 = PyTuple_Pack(1, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__449)) __PYX_ERR(7, 549, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__449);
-  __Pyx_GIVEREF(__pyx_tuple__449);
-  __pyx_codeobj__450 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_set_element_class_lookup, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__450)) __PYX_ERR(7, 549, __pyx_L1_error)
-  __pyx_tuple__451 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__451)) __PYX_ERR(7, 549, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__451);
-  __Pyx_GIVEREF(__pyx_tuple__451);
+  __pyx_tuple__560 = PyTuple_Pack(1, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__560)) __PYX_ERR(7, 549, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__560);
+  __Pyx_GIVEREF(__pyx_tuple__560);
+  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__560, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_classlookup_pxi, __pyx_n_s_set_element_class_lookup, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(7, 549, __pyx_L1_error)
+  __pyx_tuple__561 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__561)) __PYX_ERR(7, 549, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__561);
+  __Pyx_GIVEREF(__pyx_tuple__561);
 
   /* "src/lxml/nsclasses.pxi":29
  *         self._entries = {}
@@ -232078,10 +246103,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""update(self, class_dict_iterable)
  * 
  */
-  __pyx_tuple__452 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_class_dict_iterable, __pyx_n_s_name_2, __pyx_n_s_item); if (unlikely(!__pyx_tuple__452)) __PYX_ERR(9, 29, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__452);
-  __Pyx_GIVEREF(__pyx_tuple__452);
-  __pyx_codeobj__453 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__452, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_update, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__453)) __PYX_ERR(9, 29, __pyx_L1_error)
+  __pyx_tuple__562 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_class_dict_iterable, __pyx_n_s_name_2, __pyx_n_s_item); if (unlikely(!__pyx_tuple__562)) __PYX_ERR(9, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__562);
+  __Pyx_GIVEREF(__pyx_tuple__562);
+  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__562, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_update, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(9, 29, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":74
  *         return iter(self._entries)
@@ -232090,10 +246115,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return list(self._entries.items())
  * 
  */
-  __pyx_tuple__454 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__454)) __PYX_ERR(9, 74, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__454);
-  __Pyx_GIVEREF(__pyx_tuple__454);
-  __pyx_codeobj__455 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__454, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_items, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__455)) __PYX_ERR(9, 74, __pyx_L1_error)
+  __pyx_tuple__563 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__563)) __PYX_ERR(9, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__563);
+  __Pyx_GIVEREF(__pyx_tuple__563);
+  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__563, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_items, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(9, 74, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":77
  *         return list(self._entries.items())
@@ -232102,10 +246127,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return iter(self._entries.items())
  * 
  */
-  __pyx_tuple__456 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__456)) __PYX_ERR(9, 77, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__456);
-  __Pyx_GIVEREF(__pyx_tuple__456);
-  __pyx_codeobj__457 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__456, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_iteritems, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__457)) __PYX_ERR(9, 77, __pyx_L1_error)
+  __pyx_tuple__564 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__564)) __PYX_ERR(9, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__564);
+  __Pyx_GIVEREF(__pyx_tuple__564);
+  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__564, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_iteritems, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(9, 77, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":80
  *         return iter(self._entries.items())
@@ -232114,10 +246139,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._entries.clear()
  * 
  */
-  __pyx_tuple__458 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__458)) __PYX_ERR(9, 80, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__458);
-  __Pyx_GIVEREF(__pyx_tuple__458);
-  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_clear, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(9, 80, __pyx_L1_error)
+  __pyx_tuple__565 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(9, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__565);
+  __Pyx_GIVEREF(__pyx_tuple__565);
+  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_clear, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(9, 80, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":99
  *         return obj
@@ -232126,10 +246151,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self[name] = obj
  *         return obj
  */
-  __pyx_tuple__460 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name_2, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__460)) __PYX_ERR(9, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__460);
-  __Pyx_GIVEREF(__pyx_tuple__460);
-  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_deco, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(9, 99, __pyx_L1_error)
+  __pyx_tuple__566 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name_2, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__566)) __PYX_ERR(9, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__566);
+  __Pyx_GIVEREF(__pyx_tuple__566);
+  __pyx_codeobj__218 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__566, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_deco, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__218)) __PYX_ERR(9, 99, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":147
  *         self._lookup_function = _find_nselement_class
@@ -232138,10 +246163,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""get_namespace(self, ns_uri)
  * 
  */
-  __pyx_tuple__462 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__462)) __PYX_ERR(9, 147, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__462);
-  __Pyx_GIVEREF(__pyx_tuple__462);
-  __pyx_codeobj__463 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__462, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_get_namespace, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__463)) __PYX_ERR(9, 147, __pyx_L1_error)
+  __pyx_tuple__567 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__567)) __PYX_ERR(9, 147, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__567);
+  __Pyx_GIVEREF(__pyx_tuple__567);
+  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_get_namespace, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(9, 147, __pyx_L1_error)
 
   /* "src/lxml/nsclasses.pxi":207
  * __FUNCTION_NAMESPACE_REGISTRIES = {}
@@ -232150,10 +246175,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""FunctionNamespace(ns_uri)
  * 
  */
-  __pyx_tuple__464 = PyTuple_Pack(3, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(9, 207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__464);
-  __Pyx_GIVEREF(__pyx_tuple__464);
-  __pyx_codeobj__465 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__464, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_FunctionNamespace, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__465)) __PYX_ERR(9, 207, __pyx_L1_error)
+  __pyx_tuple__568 = PyTuple_Pack(3, __pyx_n_s_ns_uri, __pyx_n_s_ns_utf, __pyx_n_s_registry); if (unlikely(!__pyx_tuple__568)) __PYX_ERR(9, 207, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__568);
+  __Pyx_GIVEREF(__pyx_tuple__568);
+  __pyx_codeobj__220 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__568, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_nsclasses_pxi, __pyx_n_s_FunctionNamespace, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__220)) __PYX_ERR(9, 207, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":25
  * cdef class Resolver:
@@ -232162,10 +246187,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""resolve(self, system_url, public_id, context)
  * 
  */
-  __pyx_tuple__466 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_system_url, __pyx_n_s_public_id, __pyx_n_s_context); if (unlikely(!__pyx_tuple__466)) __PYX_ERR(10, 25, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__466);
-  __Pyx_GIVEREF(__pyx_tuple__466);
-  __pyx_codeobj__467 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__466, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__467)) __PYX_ERR(10, 25, __pyx_L1_error)
+  __pyx_tuple__569 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_system_url, __pyx_n_s_public_id, __pyx_n_s_context); if (unlikely(!__pyx_tuple__569)) __PYX_ERR(10, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__569);
+  __Pyx_GIVEREF(__pyx_tuple__569);
+  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(10, 25, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":36
  *         return None
@@ -232174,10 +246199,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""resolve_empty(self, context)
  * 
  */
-  __pyx_tuple__468 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(10, 36, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__468);
-  __Pyx_GIVEREF(__pyx_tuple__468);
-  __pyx_codeobj__469 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__468, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_empty, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(10, 36, __pyx_L1_error)
+  __pyx_tuple__570 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__570)) __PYX_ERR(10, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__570);
+  __Pyx_GIVEREF(__pyx_tuple__570);
+  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_empty, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) __PYX_ERR(10, 36, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":48
  *         return doc_ref
@@ -232186,10 +246211,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""resolve_string(self, string, context, base_url=None)
  * 
  */
-  __pyx_tuple__470 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_string_2, __pyx_n_s_context, __pyx_n_s_base_url, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__470)) __PYX_ERR(10, 48, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__470);
-  __Pyx_GIVEREF(__pyx_tuple__470);
-  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__470, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_string, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(10, 48, __pyx_L1_error)
+  __pyx_tuple__571 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_string_2, __pyx_n_s_context, __pyx_n_s_base_url, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__571)) __PYX_ERR(10, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__571);
+  __Pyx_GIVEREF(__pyx_tuple__571);
+  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__571, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_string, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(10, 48, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":69
  *         return doc_ref
@@ -232198,10 +246223,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""resolve_filename(self, filename, context)
  * 
  */
-  __pyx_tuple__472 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_filename, __pyx_n_s_context, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__472)) __PYX_ERR(10, 69, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__472);
-  __Pyx_GIVEREF(__pyx_tuple__472);
-  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__472, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_filename, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __pyx_tuple__572 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_filename, __pyx_n_s_context, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__572)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__572);
+  __Pyx_GIVEREF(__pyx_tuple__572);
+  __pyx_codeobj__224 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__572, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_filename, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__224)) __PYX_ERR(10, 69, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":83
  *         return doc_ref
@@ -232210,10 +246235,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""resolve_file(self, f, context, base_url=None, close=True)
  * 
  */
-  __pyx_tuple__474 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_f, __pyx_n_s_context, __pyx_n_s_base_url, __pyx_n_s_close, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__474)) __PYX_ERR(10, 83, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__474);
-  __Pyx_GIVEREF(__pyx_tuple__474);
-  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(3, 2, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__474, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_file, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(10, 83, __pyx_L1_error)
+  __pyx_tuple__573 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_f, __pyx_n_s_context, __pyx_n_s_base_url, __pyx_n_s_close, __pyx_n_s_doc_ref); if (unlikely(!__pyx_tuple__573)) __PYX_ERR(10, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__573);
+  __Pyx_GIVEREF(__pyx_tuple__573);
+  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(3, 2, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__573, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve_file, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(10, 83, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":120
  *         self._default_resolver = default_resolver
@@ -232222,10 +246247,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""add(self, resolver)
  * 
  */
-  __pyx_tuple__476 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_resolver); if (unlikely(!__pyx_tuple__476)) __PYX_ERR(10, 120, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__476);
-  __Pyx_GIVEREF(__pyx_tuple__476);
-  __pyx_codeobj__477 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_add, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__477)) __PYX_ERR(10, 120, __pyx_L1_error)
+  __pyx_tuple__574 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_resolver); if (unlikely(!__pyx_tuple__574)) __PYX_ERR(10, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__574);
+  __Pyx_GIVEREF(__pyx_tuple__574);
+  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__574, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_add, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) __PYX_ERR(10, 120, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":133
  *         self._resolvers.add(resolver)
@@ -232234,10 +246259,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"remove(self, resolver)"
  *         self._resolvers.discard(resolver)
  */
-  __pyx_tuple__478 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_resolver); if (unlikely(!__pyx_tuple__478)) __PYX_ERR(10, 133, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__478);
-  __Pyx_GIVEREF(__pyx_tuple__478);
-  __pyx_codeobj__479 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_remove, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(10, 133, __pyx_L1_error)
+  __pyx_tuple__575 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_resolver); if (unlikely(!__pyx_tuple__575)) __PYX_ERR(10, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__575);
+  __Pyx_GIVEREF(__pyx_tuple__575);
+  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__575, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_remove, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(10, 133, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":143
  *         return registry
@@ -232246,10 +246271,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"copy(self)"
  *         return self._copy()
  */
-  __pyx_tuple__480 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__480)) __PYX_ERR(10, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__480);
-  __Pyx_GIVEREF(__pyx_tuple__480);
-  __pyx_codeobj__481 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__480, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_copy, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__481)) __PYX_ERR(10, 143, __pyx_L1_error)
+  __pyx_tuple__576 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__576)) __PYX_ERR(10, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__576);
+  __Pyx_GIVEREF(__pyx_tuple__576);
+  __pyx_codeobj__228 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__576, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_copy, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) __PYX_ERR(10, 143, __pyx_L1_error)
 
   /* "src/lxml/docloader.pxi":147
  *         return self._copy()
@@ -232258,10 +246283,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"resolve(self, system_url, public_id, context)"
  *         for resolver in self._resolvers:
  */
-  __pyx_tuple__482 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_system_url, __pyx_n_s_public_id, __pyx_n_s_context, __pyx_n_s_resolver, __pyx_n_s_result); if (unlikely(!__pyx_tuple__482)) __PYX_ERR(10, 147, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__482);
-  __Pyx_GIVEREF(__pyx_tuple__482);
-  __pyx_codeobj__483 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__482, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__483)) __PYX_ERR(10, 147, __pyx_L1_error)
+  __pyx_tuple__577 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_system_url, __pyx_n_s_public_id, __pyx_n_s_context, __pyx_n_s_resolver, __pyx_n_s_result); if (unlikely(!__pyx_tuple__577)) __PYX_ERR(10, 147, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__577);
+  __Pyx_GIVEREF(__pyx_tuple__577);
+  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__577, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_docloader_pxi, __pyx_n_s_resolve, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(10, 147, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":12
  *     For compatibility with ElementTree 1.3 and later.
@@ -232270,13 +246295,13 @@ static int __Pyx_InitCachedConstants(void) {
  *         super(_ParseError, self).__init__(message)
  *         self.lineno, self.offset = (line, column - 1)
  */
-  __pyx_tuple__484 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_code, __pyx_n_s_line_2, __pyx_n_s_column_2, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__484)) __PYX_ERR(2, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__484);
-  __Pyx_GIVEREF(__pyx_tuple__484);
-  __pyx_codeobj__485 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__484, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_init, 12, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__485)) __PYX_ERR(2, 12, __pyx_L1_error)
-  __pyx_tuple__486 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__486)) __PYX_ERR(2, 12, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__486);
-  __Pyx_GIVEREF(__pyx_tuple__486);
+  __pyx_tuple__578 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_message, __pyx_n_s_code, __pyx_n_s_line_2, __pyx_n_s_column_2, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__578)) __PYX_ERR(2, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__578);
+  __Pyx_GIVEREF(__pyx_tuple__578);
+  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__578, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_init, 12, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(2, 12, __pyx_L1_error)
+  __pyx_tuple__579 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__579)) __PYX_ERR(2, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__579);
+  __Pyx_GIVEREF(__pyx_tuple__579);
 
   /* "src/lxml/parser.pxi":19
  * 
@@ -232285,10 +246310,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self.lineno, self.offset + 1
  * 
  */
-  __pyx_tuple__487 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__487)) __PYX_ERR(2, 19, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__487);
-  __Pyx_GIVEREF(__pyx_tuple__487);
-  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__487, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_position, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(2, 19, __pyx_L1_error)
+  __pyx_tuple__580 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__580)) __PYX_ERR(2, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__580);
+  __Pyx_GIVEREF(__pyx_tuple__580);
+  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__580, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_position, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(2, 19, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":23
  * 
@@ -232297,213 +246322,213 @@ static int __Pyx_InitCachedConstants(void) {
  *         self.lineno, column = new_pos
  *         self.offset = column - 1
  */
-  __pyx_tuple__489 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_new_pos, __pyx_n_s_column_2); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(2, 23, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__489);
-  __Pyx_GIVEREF(__pyx_tuple__489);
-  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_position, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(2, 23, __pyx_L1_error)
+  __pyx_tuple__581 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_new_pos, __pyx_n_s_column_2); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(2, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__581);
+  __Pyx_GIVEREF(__pyx_tuple__581);
+  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_position, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) __PYX_ERR(2, 23, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":960
+  /* "src/lxml/parser.pxi":961
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
  *         self.set_element_class_lookup(lookup)
  */
-  __pyx_tuple__491 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(2, 960, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__491);
-  __Pyx_GIVEREF(__pyx_tuple__491);
-  __pyx_codeobj__492 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__491, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_setElementClassLookup, 960, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(2, 960, __pyx_L1_error)
+  __pyx_tuple__582 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__582)) __PYX_ERR(2, 961, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__582);
+  __Pyx_GIVEREF(__pyx_tuple__582);
+  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__582, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_setElementClassLookup, 961, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(2, 961, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":964
+  /* "src/lxml/parser.pxi":965
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
  * 
  */
-  __pyx_tuple__493 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(2, 964, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__493);
-  __Pyx_GIVEREF(__pyx_tuple__493);
-  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_set_element_class_lookup, 964, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(2, 964, __pyx_L1_error)
+  __pyx_tuple__583 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__583)) __PYX_ERR(2, 965, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__583);
+  __Pyx_GIVEREF(__pyx_tuple__583);
+  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__583, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_set_element_class_lookup, 965, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(2, 965, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":991
+  /* "src/lxml/parser.pxi":992
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
  *         u"""copy(self)
  * 
  */
-  __pyx_tuple__495 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__495)) __PYX_ERR(2, 991, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__495);
-  __Pyx_GIVEREF(__pyx_tuple__495);
-  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_copy, 991, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(2, 991, __pyx_L1_error)
+  __pyx_tuple__584 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__584)) __PYX_ERR(2, 992, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__584);
+  __Pyx_GIVEREF(__pyx_tuple__584);
+  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__584, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_copy, 992, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(2, 992, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":998
+  /* "src/lxml/parser.pxi":999
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__497 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(2, 998, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__497);
-  __Pyx_GIVEREF(__pyx_tuple__497);
-  __pyx_codeobj__498 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_makeelement, 998, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(2, 998, __pyx_L1_error)
+  __pyx_tuple__585 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__585)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__585);
+  __Pyx_GIVEREF(__pyx_tuple__585);
+  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__585, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_makeelement, 999, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) __PYX_ERR(2, 999, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1241
+  /* "src/lxml/parser.pxi":1242
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
  * 
  */
-  __pyx_tuple__499 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__499)) __PYX_ERR(2, 1241, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__499);
-  __Pyx_GIVEREF(__pyx_tuple__499);
-  __pyx_codeobj__500 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__499, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_feed, 1241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__500)) __PYX_ERR(2, 1241, __pyx_L1_error)
+  __pyx_tuple__586 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__586)) __PYX_ERR(2, 1242, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__586);
+  __Pyx_GIVEREF(__pyx_tuple__586);
+  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__586, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_feed, 1242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(2, 1242, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1367
+  /* "src/lxml/parser.pxi":1368
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
  *         u"""close(self)
  * 
  */
-  __pyx_tuple__501 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__501)) __PYX_ERR(2, 1367, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__501);
-  __Pyx_GIVEREF(__pyx_tuple__501);
-  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__501, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_close, 1367, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(2, 1367, __pyx_L1_error)
+  __pyx_tuple__587 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__587)) __PYX_ERR(2, 1368, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__587);
+  __Pyx_GIVEREF(__pyx_tuple__587);
+  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__587, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_close, 1368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(2, 1368, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1549
+  /* "src/lxml/parser.pxi":1550
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator
  * 
  */
-  __pyx_tuple__503 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__503)) __PYX_ERR(2, 1549, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__503);
-  __Pyx_GIVEREF(__pyx_tuple__503);
-  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__503, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_read_events, 1549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(2, 1549, __pyx_L1_error)
+  __pyx_tuple__588 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__588)) __PYX_ERR(2, 1550, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__588);
+  __Pyx_GIVEREF(__pyx_tuple__588);
+  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__588, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_read_events, 1550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(2, 1550, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1601
+  /* "src/lxml/parser.pxi":1602
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(parser=None)
  * 
  */
-  __pyx_tuple__505 = PyTuple_Pack(1, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__505)) __PYX_ERR(2, 1601, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__505);
-  __Pyx_GIVEREF(__pyx_tuple__505);
-  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_set_default_parser, 1601, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(2, 1601, __pyx_L1_error)
-  __pyx_tuple__507 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__507)) __PYX_ERR(2, 1601, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__507);
-  __Pyx_GIVEREF(__pyx_tuple__507);
+  __pyx_tuple__589 = PyTuple_Pack(1, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__589)) __PYX_ERR(2, 1602, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__589);
+  __Pyx_GIVEREF(__pyx_tuple__589);
+  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__589, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_set_default_parser, 1602, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(2, 1602, __pyx_L1_error)
+  __pyx_tuple__590 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__590)) __PYX_ERR(2, 1602, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__590);
+  __Pyx_GIVEREF(__pyx_tuple__590);
 
-  /* "src/lxml/parser.pxi":1617
+  /* "src/lxml/parser.pxi":1618
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  */
-  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_get_default_parser, 1617, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(2, 1617, __pyx_L1_error)
+  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_get_default_parser, 1618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(2, 1618, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1722
+  /* "src/lxml/parser.pxi":1723
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator
  * 
  */
-  __pyx_tuple__509 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__509)) __PYX_ERR(2, 1722, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__509);
-  __Pyx_GIVEREF(__pyx_tuple__509);
-  __pyx_codeobj__510 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__509, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_read_events, 1722, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(2, 1722, __pyx_L1_error)
+  __pyx_tuple__591 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__591)) __PYX_ERR(2, 1723, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__591);
+  __Pyx_GIVEREF(__pyx_tuple__591);
+  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__591, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parser_pxi, __pyx_n_s_read_events, 1723, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(2, 1723, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":469
+  /* "src/lxml/saxparser.pxi":470
  * 
  * 
  * cdef tuple NS_END_EVENT = ('end-ns', None)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_tuple__511 = PyTuple_Pack(2, __pyx_kp_s_end_ns, Py_None); if (unlikely(!__pyx_tuple__511)) __PYX_ERR(11, 469, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__511);
-  __Pyx_GIVEREF(__pyx_tuple__511);
+  __pyx_tuple__592 = PyTuple_Pack(2, __pyx_kp_s_end_ns, Py_None); if (unlikely(!__pyx_tuple__592)) __PYX_ERR(11, 470, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__592);
+  __Pyx_GIVEREF(__pyx_tuple__592);
 
-  /* "src/lxml/saxparser.pxi":721
+  /* "src/lxml/saxparser.pxi":722
  *     # Python level event handlers
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         u"""close(self)
  * 
  */
-  __pyx_tuple__512 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(11, 721, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__512);
-  __Pyx_GIVEREF(__pyx_tuple__512);
-  __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__512, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_close, 721, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(11, 721, __pyx_L1_error)
+  __pyx_tuple__593 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__593)) __PYX_ERR(11, 722, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__593);
+  __Pyx_GIVEREF(__pyx_tuple__593);
+  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__593, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_close, 722, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(11, 722, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":731
+  /* "src/lxml/saxparser.pxi":732
  *         return self._last
  * 
  *     def data(self, data):             # <<<<<<<<<<<<<<
  *         u"""data(self, data)
  * 
  */
-  __pyx_tuple__514 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(11, 731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__514);
-  __Pyx_GIVEREF(__pyx_tuple__514);
-  __pyx_codeobj__515 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__514, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_data, 731, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(11, 731, __pyx_L1_error)
+  __pyx_tuple__594 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__594)) __PYX_ERR(11, 732, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__594);
+  __Pyx_GIVEREF(__pyx_tuple__594);
+  __pyx_codeobj__249 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__594, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_data, 732, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(11, 732, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":739
+  /* "src/lxml/saxparser.pxi":740
  *         self._handleSaxData(data)
  * 
  *     def start(self, tag, attrs, nsmap=None):             # <<<<<<<<<<<<<<
  *         u"""start(self, tag, attrs, nsmap=None)
  * 
  */
-  __pyx_tuple__516 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrs, __pyx_n_s_nsmap); if (unlikely(!__pyx_tuple__516)) __PYX_ERR(11, 739, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__516);
-  __Pyx_GIVEREF(__pyx_tuple__516);
-  __pyx_codeobj__517 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__516, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_start, 739, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__517)) __PYX_ERR(11, 739, __pyx_L1_error)
+  __pyx_tuple__595 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrs, __pyx_n_s_nsmap); if (unlikely(!__pyx_tuple__595)) __PYX_ERR(11, 740, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__595);
+  __Pyx_GIVEREF(__pyx_tuple__595);
+  __pyx_codeobj__250 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__595, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_start, 740, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(11, 740, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":748
+  /* "src/lxml/saxparser.pxi":749
  *         return self._handleSaxStart(tag, attrs, nsmap)
  * 
  *     def end(self, tag):             # <<<<<<<<<<<<<<
  *         u"""end(self, tag)
  * 
  */
-  __pyx_tuple__518 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_element); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(11, 748, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__518);
-  __Pyx_GIVEREF(__pyx_tuple__518);
-  __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__518, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_end, 748, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(11, 748, __pyx_L1_error)
+  __pyx_tuple__596 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_element); if (unlikely(!__pyx_tuple__596)) __PYX_ERR(11, 749, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__596);
+  __Pyx_GIVEREF(__pyx_tuple__596);
+  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__596, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_end, 749, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(11, 749, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":758
+  /* "src/lxml/saxparser.pxi":759
  *         return element
  * 
  *     def pi(self, target, data):             # <<<<<<<<<<<<<<
  *         u"""pi(self, target, data)
  *         """
  */
-  __pyx_tuple__520 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_data); if (unlikely(!__pyx_tuple__520)) __PYX_ERR(11, 758, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__520);
-  __Pyx_GIVEREF(__pyx_tuple__520);
-  __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__520, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_pi, 758, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(11, 758, __pyx_L1_error)
+  __pyx_tuple__597 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_data); if (unlikely(!__pyx_tuple__597)) __PYX_ERR(11, 759, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__597);
+  __Pyx_GIVEREF(__pyx_tuple__597);
+  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__597, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_pi, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(11, 759, __pyx_L1_error)
 
-  /* "src/lxml/saxparser.pxi":763
+  /* "src/lxml/saxparser.pxi":764
  *         return self._handleSaxPi(target, data)
  * 
  *     def comment(self, comment):             # <<<<<<<<<<<<<<
  *         u"""comment(self, comment)
  *         """
  */
-  __pyx_tuple__522 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_comment); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(11, 763, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__522);
-  __Pyx_GIVEREF(__pyx_tuple__522);
-  __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_comment, 763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(11, 763, __pyx_L1_error)
+  __pyx_tuple__598 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_comment); if (unlikely(!__pyx_tuple__598)) __PYX_ERR(11, 764, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__598);
+  __Pyx_GIVEREF(__pyx_tuple__598);
+  __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__598, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_saxparser_pxi, __pyx_n_s_comment, 764, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(11, 764, __pyx_L1_error)
 
   /* "src/lxml/parsertarget.pxi":14
  *     # to push the Python level parser result through the parser
@@ -232512,10 +246537,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self.result = result
  * 
  */
-  __pyx_tuple__524 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__524)) __PYX_ERR(12, 14, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__524);
-  __Pyx_GIVEREF(__pyx_tuple__524);
-  __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__524, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parsertarget_pxi, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(12, 14, __pyx_L1_error)
+  __pyx_tuple__599 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__599)) __PYX_ERR(12, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__599);
+  __Pyx_GIVEREF(__pyx_tuple__599);
+  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__599, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_parsertarget_pxi, __pyx_n_s_init, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(12, 14, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":914
  *         self.method = OUTPUT_METHOD_XML
@@ -232524,10 +246549,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         assert self.output_file is not None
  *         self.writer = _IncrementalFileWriter(
  */
-  __pyx_tuple__526 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(8, 914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__526);
-  __Pyx_GIVEREF(__pyx_tuple__526);
-  __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__526, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(8, 914, __pyx_L1_error)
+  __pyx_tuple__600 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__600)) __PYX_ERR(8, 914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__600);
+  __Pyx_GIVEREF(__pyx_tuple__600);
+  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__600, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 914, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(8, 914, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":921
  *         return self.writer
@@ -232536,10 +246561,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self.writer is not None:
  *             old_writer, self.writer = self.writer, None
  */
-  __pyx_tuple__528 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__528)) __PYX_ERR(8, 921, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__528);
-  __Pyx_GIVEREF(__pyx_tuple__528);
-  __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__528, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 921, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(8, 921, __pyx_L1_error)
+  __pyx_tuple__601 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__601)) __PYX_ERR(8, 921, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__601);
+  __Pyx_GIVEREF(__pyx_tuple__601);
+  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__601, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 921, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(8, 921, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":929
  *                 self.output_file = None
@@ -232548,10 +246573,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         assert self.output_file is not None
  *         if isinstance(self.output_file, basestring):
  */
-  __pyx_tuple__530 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__530)) __PYX_ERR(8, 929, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__530);
-  __Pyx_GIVEREF(__pyx_tuple__530);
-  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__530, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 929, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(8, 929, __pyx_L1_error)
+  __pyx_tuple__602 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__602)) __PYX_ERR(8, 929, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__602);
+  __Pyx_GIVEREF(__pyx_tuple__602);
+  __pyx_codeobj__260 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__602, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 929, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(8, 929, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":940
  *         return self.async_writer
@@ -232560,10 +246585,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self.async_writer is not None:
  *             old_writer, self.async_writer = self.async_writer, None
  */
-  __pyx_tuple__531 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__531)) __PYX_ERR(8, 940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__531);
-  __Pyx_GIVEREF(__pyx_tuple__531);
-  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__531, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 940, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(8, 940, __pyx_L1_error)
+  __pyx_tuple__603 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb, __pyx_n_s_old_writer, __pyx_n_s_raise_on_error); if (unlikely(!__pyx_tuple__603)) __PYX_ERR(8, 940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__603);
+  __Pyx_GIVEREF(__pyx_tuple__603);
+  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__603, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 940, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(8, 940, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":997
  *             tree.xmlOutputBufferClose(self._c_out)
@@ -232572,10 +246597,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """write_declaration(self, version=None, standalone=None, doctype=None)
  * 
  */
-  __pyx_tuple__532 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_c_version, __pyx_n_s_c_standalone); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(8, 997, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__532);
-  __Pyx_GIVEREF(__pyx_tuple__532);
-  __pyx_codeobj__533 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__532, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(8, 997, __pyx_L1_error)
+  __pyx_tuple__604 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_c_version, __pyx_n_s_c_standalone); if (unlikely(!__pyx_tuple__604)) __PYX_ERR(8, 997, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__604);
+  __Pyx_GIVEREF(__pyx_tuple__604);
+  __pyx_codeobj__264 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__604, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__264)) __PYX_ERR(8, 997, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1026
  *         self._handle_error(self._c_out.error)
@@ -232584,10 +246609,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """write_doctype(self, doctype)
  * 
  */
-  __pyx_tuple__534 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(8, 1026, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__534);
-  __Pyx_GIVEREF(__pyx_tuple__534);
-  __pyx_codeobj__535 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__535)) __PYX_ERR(8, 1026, __pyx_L1_error)
+  __pyx_tuple__605 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_doctype); if (unlikely(!__pyx_tuple__605)) __PYX_ERR(8, 1026, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__605);
+  __Pyx_GIVEREF(__pyx_tuple__605);
+  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__605, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1026, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(8, 1026, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1043
  *         self._handle_error(self._c_out.error)
@@ -232596,10 +246621,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """method(self, method)
  * 
  */
-  __pyx_tuple__536 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_method, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(8, 1043, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__536);
-  __Pyx_GIVEREF(__pyx_tuple__536);
-  __pyx_codeobj__537 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__537)) __PYX_ERR(8, 1043, __pyx_L1_error)
+  __pyx_tuple__606 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_method, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__606)) __PYX_ERR(8, 1043, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__606);
+  __Pyx_GIVEREF(__pyx_tuple__606);
+  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__606, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1043, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(8, 1043, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1053
  *         return _MethodChanger(self, c_method)
@@ -232608,10 +246633,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """element(self, tag, attrib=None, nsmap=None, method, **_extra)
  * 
  */
-  __pyx_tuple__538 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_attributes, __pyx_n_s_name_2, __pyx_n_s_value, __pyx_n_s_ns, __pyx_n_s_reversed_nsmap, __pyx_n_s_prefix, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(8, 1053, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__538);
-  __Pyx_GIVEREF(__pyx_tuple__538);
-  __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1053, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(8, 1053, __pyx_L1_error)
+  __pyx_tuple__607 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_attributes, __pyx_n_s_name_2, __pyx_n_s_value, __pyx_n_s_ns, __pyx_n_s_reversed_nsmap, __pyx_n_s_prefix, __pyx_n_s_c_method); if (unlikely(!__pyx_tuple__607)) __PYX_ERR(8, 1053, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__607);
+  __Pyx_GIVEREF(__pyx_tuple__607);
+  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__607, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1053, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(8, 1053, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1190
  *         return flat_namespaces_map, new_namespaces
@@ -232620,10 +246645,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """write(self, *args, with_tail=True, pretty_print=False, method=None)
  * 
  */
-  __pyx_tuple__540 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_c_method, __pyx_n_s_content, __pyx_n_s_bstring, __pyx_n_s_ns, __pyx_n_s_name_2, __pyx_n_s__70); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(8, 1190, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__540);
-  __Pyx_GIVEREF(__pyx_tuple__540);
-  __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(1, 3, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(8, 1190, __pyx_L1_error)
+  __pyx_tuple__608 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_c_method, __pyx_n_s_content, __pyx_n_s_bstring, __pyx_n_s_ns, __pyx_n_s_name_2, __pyx_n_s__214); if (unlikely(!__pyx_tuple__608)) __PYX_ERR(8, 1190, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__608);
+  __Pyx_GIVEREF(__pyx_tuple__608);
+  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(1, 3, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__608, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(8, 1190, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1237
  *             self._handle_error(self._c_out.error)
@@ -232632,10 +246657,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """flush(self)
  * 
  */
-  __pyx_tuple__542 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(8, 1237, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__542);
-  __Pyx_GIVEREF(__pyx_tuple__542);
-  __pyx_codeobj__543 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__543)) __PYX_ERR(8, 1237, __pyx_L1_error)
+  __pyx_tuple__609 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__609)) __PYX_ERR(8, 1237, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__609);
+  __Pyx_GIVEREF(__pyx_tuple__609);
+  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__609, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(8, 1237, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1284
  *         return data
@@ -232644,10 +246669,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._data.append(data)
  * 
  */
-  __pyx_tuple__544 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(8, 1284, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__544);
-  __Pyx_GIVEREF(__pyx_tuple__544);
-  __pyx_codeobj__545 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__544, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1284, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__545)) __PYX_ERR(8, 1284, __pyx_L1_error)
+  __pyx_tuple__610 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__610)) __PYX_ERR(8, 1284, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__610);
+  __Pyx_GIVEREF(__pyx_tuple__610);
+  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__610, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1284, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(8, 1284, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1287
  *         self._data.append(data)
@@ -232656,10 +246681,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         pass
  * 
  */
-  __pyx_tuple__546 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__546)) __PYX_ERR(8, 1287, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__546);
-  __Pyx_GIVEREF(__pyx_tuple__546);
-  __pyx_codeobj__547 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__546, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__547)) __PYX_ERR(8, 1287, __pyx_L1_error)
+  __pyx_tuple__611 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__611)) __PYX_ERR(8, 1287, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__611);
+  __Pyx_GIVEREF(__pyx_tuple__611);
+  __pyx_codeobj__284 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__611, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close, 1287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(8, 1287, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1316
  *         return None
@@ -232668,10 +246693,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer.flush()
  *         data = self._buffer.collect()
  */
-  __pyx_tuple__548 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__548)) __PYX_ERR(8, 1316, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__548);
-  __Pyx_GIVEREF(__pyx_tuple__548);
-  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__548, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(8, 1316, __pyx_L1_error)
+  __pyx_tuple__612 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(8, 1316, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__612);
+  __Pyx_GIVEREF(__pyx_tuple__612);
+  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_flush, 1316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(8, 1316, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1322
  *             await self._async_outfile.write(data)
@@ -232680,10 +246705,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer.write_declaration(version, standalone, doctype)
  *         data = self._flush()
  */
-  __pyx_tuple__549 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(8, 1322, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__549);
-  __Pyx_GIVEREF(__pyx_tuple__549);
-  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(8, 1322, __pyx_L1_error)
+  __pyx_tuple__613 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_version, __pyx_n_s_standalone, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__613)) __PYX_ERR(8, 1322, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__613);
+  __Pyx_GIVEREF(__pyx_tuple__613);
+  __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__613, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_declaration, 1322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(8, 1322, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1328
  *             await self._async_outfile.write(data)
@@ -232692,10 +246717,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer.write_doctype(doctype)
  *         data = self._flush()
  */
-  __pyx_tuple__550 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__550)) __PYX_ERR(8, 1328, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__550);
-  __Pyx_GIVEREF(__pyx_tuple__550);
-  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__550, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(8, 1328, __pyx_L1_error)
+  __pyx_tuple__614 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doctype, __pyx_n_s_data); if (unlikely(!__pyx_tuple__614)) __PYX_ERR(8, 1328, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__614);
+  __Pyx_GIVEREF(__pyx_tuple__614);
+  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__614, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write_doctype, 1328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(8, 1328, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1334
  *             await self._async_outfile.write(data)
@@ -232704,10 +246729,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
  *         data = self._flush()
  */
-  __pyx_tuple__551 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(8, 1334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__551);
-  __Pyx_GIVEREF(__pyx_tuple__551);
-  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 3, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(8, 1334, __pyx_L1_error)
+  __pyx_tuple__615 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_with_tail, __pyx_n_s_pretty_print, __pyx_n_s_method, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__615)) __PYX_ERR(8, 1334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__615);
+  __Pyx_GIVEREF(__pyx_tuple__615);
+  __pyx_codeobj__288 = (PyObject*)__Pyx_PyCode_New(1, 3, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_write, 1334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(8, 1334, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1340
  *             await self._async_outfile.write(data)
@@ -232716,10 +246741,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self._writer.method(method)
  * 
  */
-  __pyx_tuple__552 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_method); if (unlikely(!__pyx_tuple__552)) __PYX_ERR(8, 1340, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__552);
-  __Pyx_GIVEREF(__pyx_tuple__552);
-  __pyx_codeobj__553 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__552, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__553)) __PYX_ERR(8, 1340, __pyx_L1_error)
+  __pyx_tuple__616 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_method); if (unlikely(!__pyx_tuple__616)) __PYX_ERR(8, 1340, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__616);
+  __Pyx_GIVEREF(__pyx_tuple__616);
+  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__616, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_method, 1340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(8, 1340, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1343
  *         return self._writer.method(method)
@@ -232728,10 +246753,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra)
  *         return _AsyncFileWriterElement(element_writer, self)
  */
-  __pyx_tuple__554 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_element_writer); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(8, 1343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__554);
-  __Pyx_GIVEREF(__pyx_tuple__554);
-  __pyx_codeobj__555 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__555)) __PYX_ERR(8, 1343, __pyx_L1_error)
+  __pyx_tuple__617 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_method, __pyx_n_s_extra, __pyx_n_s_element_writer); if (unlikely(!__pyx_tuple__617)) __PYX_ERR(8, 1343, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__617);
+  __Pyx_GIVEREF(__pyx_tuple__617);
+  __pyx_codeobj__290 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__617, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_element, 1343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__290)) __PYX_ERR(8, 1343, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1347
  *         return _AsyncFileWriterElement(element_writer, self)
@@ -232740,10 +246765,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer._close(raise_on_error)
  *         data = self._buffer.collect()
  */
-  __pyx_tuple__556 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_raise_on_error, __pyx_n_s_raise_on_error, __pyx_n_s_data); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(8, 1347, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__556);
-  __Pyx_GIVEREF(__pyx_tuple__556);
-  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close_2, 1347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(8, 1347, __pyx_L1_error)
+  __pyx_tuple__618 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_raise_on_error, __pyx_n_s_raise_on_error, __pyx_n_s_data); if (unlikely(!__pyx_tuple__618)) __PYX_ERR(8, 1347, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__618);
+  __Pyx_GIVEREF(__pyx_tuple__618);
+  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__618, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_close_2, 1347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(8, 1347, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1367
  *         self._writer = writer
@@ -232752,10 +246777,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._element_writer.__enter__()
  *         data = self._writer._flush()
  */
-  __pyx_tuple__557 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__557)) __PYX_ERR(8, 1367, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__557);
-  __Pyx_GIVEREF(__pyx_tuple__557);
-  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__557, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1367, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(8, 1367, __pyx_L1_error)
+  __pyx_tuple__619 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__619)) __PYX_ERR(8, 1367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__619);
+  __Pyx_GIVEREF(__pyx_tuple__619);
+  __pyx_codeobj__292 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1367, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(8, 1367, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1373
  *             await self._writer._async_outfile.write(data)
@@ -232764,10 +246789,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._element_writer.__exit__(*args)
  *         data = self._writer._flush()
  */
-  __pyx_tuple__558 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(8, 1373, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__558);
-  __Pyx_GIVEREF(__pyx_tuple__558);
-  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__558, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1373, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(8, 1373, __pyx_L1_error)
+  __pyx_tuple__620 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_data); if (unlikely(!__pyx_tuple__620)) __PYX_ERR(8, 1373, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__620);
+  __Pyx_GIVEREF(__pyx_tuple__620);
+  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__620, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1373, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(8, 1373, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1395
  *         self._old_method = writer._method
@@ -232776,10 +246801,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer._method = self._new_method
  *         self._writer._write_start_element(self._element)
  */
-  __pyx_tuple__559 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__559)) __PYX_ERR(8, 1395, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__559);
-  __Pyx_GIVEREF(__pyx_tuple__559);
-  __pyx_codeobj__560 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__560)) __PYX_ERR(8, 1395, __pyx_L1_error)
+  __pyx_tuple__621 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__621)) __PYX_ERR(8, 1395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__621);
+  __Pyx_GIVEREF(__pyx_tuple__621);
+  __pyx_codeobj__294 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__621, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__294)) __PYX_ERR(8, 1395, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1399
  *         self._writer._write_start_element(self._element)
@@ -232788,10 +246813,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._writer._write_end_element(self._element)
  *         self._writer._method = self._old_method
  */
-  __pyx_tuple__561 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__561)) __PYX_ERR(8, 1399, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__561);
-  __Pyx_GIVEREF(__pyx_tuple__561);
-  __pyx_codeobj__562 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__561, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__562)) __PYX_ERR(8, 1399, __pyx_L1_error)
+  __pyx_tuple__622 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__622)) __PYX_ERR(8, 1399, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__622);
+  __Pyx_GIVEREF(__pyx_tuple__622);
+  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__622, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(8, 1399, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1421
  *         self._exited = False
@@ -232800,10 +246825,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._entered:
  *             raise LxmlSyntaxError("Inconsistent enter action in context manager")
  */
-  __pyx_tuple__563 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__563)) __PYX_ERR(8, 1421, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__563);
-  __Pyx_GIVEREF(__pyx_tuple__563);
-  __pyx_codeobj__564 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__563, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__564)) __PYX_ERR(8, 1421, __pyx_L1_error)
+  __pyx_tuple__623 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__623)) __PYX_ERR(8, 1421, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__623);
+  __Pyx_GIVEREF(__pyx_tuple__623);
+  __pyx_codeobj__296 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__623, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_enter, 1421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__296)) __PYX_ERR(8, 1421, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1427
  *         self._entered = True
@@ -232812,10 +246837,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._exited:
  *             raise LxmlSyntaxError("Inconsistent exit action in context manager")
  */
-  __pyx_tuple__565 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(8, 1427, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__565);
-  __Pyx_GIVEREF(__pyx_tuple__565);
-  __pyx_codeobj__566 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1427, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__566)) __PYX_ERR(8, 1427, __pyx_L1_error)
+  __pyx_tuple__624 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_exc_type, __pyx_n_s_exc_val, __pyx_n_s_exc_tb); if (unlikely(!__pyx_tuple__624)) __PYX_ERR(8, 1427, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__624);
+  __Pyx_GIVEREF(__pyx_tuple__624);
+  __pyx_codeobj__298 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__624, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_exit, 1427, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__298)) __PYX_ERR(8, 1427, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1435
  *         self._exited = True
@@ -232824,10 +246849,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         # for your async convenience
  *         return self.__enter__()
  */
-  __pyx_tuple__567 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__567)) __PYX_ERR(8, 1435, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__567);
-  __Pyx_GIVEREF(__pyx_tuple__567);
-  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(8, 1435, __pyx_L1_error)
+  __pyx_tuple__625 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__625)) __PYX_ERR(8, 1435, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__625);
+  __Pyx_GIVEREF(__pyx_tuple__625);
+  __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__625, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aenter, 1435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(8, 1435, __pyx_L1_error)
 
   /* "src/lxml/serializer.pxi":1439
  *         return self.__enter__()
@@ -232836,10 +246861,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         # for your async convenience
  *         return self.__exit__(*args)
  */
-  __pyx_tuple__568 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__568)) __PYX_ERR(8, 1439, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__568);
-  __Pyx_GIVEREF(__pyx_tuple__568);
-  __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__568, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1439, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(8, 1439, __pyx_L1_error)
+  __pyx_tuple__626 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__626)) __PYX_ERR(8, 1439, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__626);
+  __Pyx_GIVEREF(__pyx_tuple__626);
+  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__626, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1439, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(8, 1439, __pyx_L1_error)
 
   /* "src/lxml/iterparse.pxi":148
  *             return self._parser.version
@@ -232848,10 +246873,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set_element_class_lookup(self, lookup = None)
  * 
  */
-  __pyx_tuple__569 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__569)) __PYX_ERR(13, 148, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__569);
-  __Pyx_GIVEREF(__pyx_tuple__569);
-  __pyx_codeobj__570 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_set_element_class_lookup, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__570)) __PYX_ERR(13, 148, __pyx_L1_error)
+  __pyx_tuple__627 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_lookup); if (unlikely(!__pyx_tuple__627)) __PYX_ERR(13, 148, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__627);
+  __Pyx_GIVEREF(__pyx_tuple__627);
+  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__627, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_set_element_class_lookup, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(13, 148, __pyx_L1_error)
 
   /* "src/lxml/iterparse.pxi":157
  *         self._parser.set_element_class_lookup(lookup)
@@ -232860,10 +246885,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__571 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__571)) __PYX_ERR(13, 157, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__571);
-  __Pyx_GIVEREF(__pyx_tuple__571);
-  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__571, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_makeelement, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(13, 157, __pyx_L1_error)
+  __pyx_tuple__628 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__628)) __PYX_ERR(13, 157, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__628);
+  __Pyx_GIVEREF(__pyx_tuple__628);
+  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_makeelement, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(13, 157, __pyx_L1_error)
 
   /* "src/lxml/iterparse.pxi":340
  *         return self._pop_event(0)
@@ -232872,10 +246897,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """Prevent descending into the current subtree.
  *         Instead, the next returned event will be the 'end' event of the current element
  */
-  __pyx_tuple__573 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__573)) __PYX_ERR(13, 340, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__573);
-  __Pyx_GIVEREF(__pyx_tuple__573);
-  __pyx_codeobj__574 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__573, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_skip_subtree, 340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__574)) __PYX_ERR(13, 340, __pyx_L1_error)
+  __pyx_tuple__629 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__629)) __PYX_ERR(13, 340, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__629);
+  __Pyx_GIVEREF(__pyx_tuple__629);
+  __pyx_codeobj__310 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__629, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_skip_subtree, 340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__310)) __PYX_ERR(13, 340, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":3
  * cdef object _find_id_attributes
@@ -232884,13 +246909,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XMLID(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__575 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_dic, __pyx_n_s_root, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__575)) __PYX_ERR(14, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__575);
-  __Pyx_GIVEREF(__pyx_tuple__575);
-  __pyx_codeobj__576 = (PyObject*)__Pyx_PyCode_New(2, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__575, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_XMLID, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__576)) __PYX_ERR(14, 3, __pyx_L1_error)
-  __pyx_tuple__577 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__577)) __PYX_ERR(14, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__577);
-  __Pyx_GIVEREF(__pyx_tuple__577);
+  __pyx_tuple__630 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_dic, __pyx_n_s_root, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__630)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__630);
+  __Pyx_GIVEREF(__pyx_tuple__630);
+  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(2, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__630, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_XMLID, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __pyx_tuple__631 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__631)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__631);
+  __Pyx_GIVEREF(__pyx_tuple__631);
 
   /* "src/lxml/xmlid.pxi":24
  *     return (root, dic)
@@ -232899,13 +246924,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XMLDTDID(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__578 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_root); if (unlikely(!__pyx_tuple__578)) __PYX_ERR(14, 24, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__578);
-  __Pyx_GIVEREF(__pyx_tuple__578);
-  __pyx_codeobj__579 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__578, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_XMLDTDID, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__579)) __PYX_ERR(14, 24, __pyx_L1_error)
-  __pyx_tuple__580 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__580)) __PYX_ERR(14, 24, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__580);
-  __Pyx_GIVEREF(__pyx_tuple__580);
+  __pyx_tuple__632 = PyTuple_Pack(4, __pyx_n_s_text, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_root); if (unlikely(!__pyx_tuple__632)) __PYX_ERR(14, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__632);
+  __Pyx_GIVEREF(__pyx_tuple__632);
+  __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__632, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_XMLDTDID, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(14, 24, __pyx_L1_error)
+  __pyx_tuple__633 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__633)) __PYX_ERR(14, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__633);
+  __Pyx_GIVEREF(__pyx_tuple__633);
 
   /* "src/lxml/xmlid.pxi":44
  *         return (root, _IDDict(root))
@@ -232914,13 +246939,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""parseid(source, parser=None)
  * 
  */
-  __pyx_tuple__581 = PyTuple_Pack(4, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(14, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__581);
-  __Pyx_GIVEREF(__pyx_tuple__581);
-  __pyx_codeobj__582 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_parseid, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__582)) __PYX_ERR(14, 44, __pyx_L1_error)
-  __pyx_tuple__583 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__583)) __PYX_ERR(14, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__583);
-  __Pyx_GIVEREF(__pyx_tuple__583);
+  __pyx_tuple__634 = PyTuple_Pack(4, __pyx_n_s_source, __pyx_n_s_parser, __pyx_n_s_base_url, __pyx_n_s_doc_2); if (unlikely(!__pyx_tuple__634)) __PYX_ERR(14, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__634);
+  __Pyx_GIVEREF(__pyx_tuple__634);
+  __pyx_codeobj__316 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__634, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_parseid, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__316)) __PYX_ERR(14, 44, __pyx_L1_error)
+  __pyx_tuple__635 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__635)) __PYX_ERR(14, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__635);
+  __Pyx_GIVEREF(__pyx_tuple__635);
 
   /* "src/lxml/xmlid.pxi":78
  *         self._items = None
@@ -232929,10 +246954,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _IDDict(self._doc)
  * 
  */
-  __pyx_tuple__584 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__584)) __PYX_ERR(14, 78, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__584);
-  __Pyx_GIVEREF(__pyx_tuple__584);
-  __pyx_codeobj__585 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__584, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_copy, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__585)) __PYX_ERR(14, 78, __pyx_L1_error)
+  __pyx_tuple__636 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__636)) __PYX_ERR(14, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__636);
+  __Pyx_GIVEREF(__pyx_tuple__636);
+  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_copy, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(14, 78, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":95
  *         return _elementFactory(self._doc, c_attr.parent)
@@ -232941,10 +246966,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self[id_name]
  * 
  */
-  __pyx_tuple__586 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_id_name); if (unlikely(!__pyx_tuple__586)) __PYX_ERR(14, 95, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__586);
-  __Pyx_GIVEREF(__pyx_tuple__586);
-  __pyx_codeobj__587 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__586, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_get, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__587)) __PYX_ERR(14, 95, __pyx_L1_error)
+  __pyx_tuple__637 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_id_name); if (unlikely(!__pyx_tuple__637)) __PYX_ERR(14, 95, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__637);
+  __Pyx_GIVEREF(__pyx_tuple__637);
+  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__637, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_get, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(14, 95, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":105
  *         return c_id is not NULL
@@ -232953,10 +246978,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return id_name in self
  * 
  */
-  __pyx_tuple__588 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_id_name); if (unlikely(!__pyx_tuple__588)) __PYX_ERR(14, 105, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__588);
-  __Pyx_GIVEREF(__pyx_tuple__588);
-  __pyx_codeobj__589 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__588, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_has_key, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__589)) __PYX_ERR(14, 105, __pyx_L1_error)
+  __pyx_tuple__638 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_id_name); if (unlikely(!__pyx_tuple__638)) __PYX_ERR(14, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__638);
+  __Pyx_GIVEREF(__pyx_tuple__638);
+  __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__638, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_has_key, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(14, 105, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":111
  *         return repr(dict(self))
@@ -232965,10 +246990,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._keys is None:
  *             self._keys = self._build_keys()
  */
-  __pyx_tuple__590 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__590)) __PYX_ERR(14, 111, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__590);
-  __Pyx_GIVEREF(__pyx_tuple__590);
-  __pyx_codeobj__591 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__590, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_keys, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__591)) __PYX_ERR(14, 111, __pyx_L1_error)
+  __pyx_tuple__639 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__639)) __PYX_ERR(14, 111, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__639);
+  __Pyx_GIVEREF(__pyx_tuple__639);
+  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__639, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_keys, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(14, 111, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":121
  *         return iter(self._keys)
@@ -232977,10 +247002,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self
  * 
  */
-  __pyx_tuple__592 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__592)) __PYX_ERR(14, 121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__592);
-  __Pyx_GIVEREF(__pyx_tuple__592);
-  __pyx_codeobj__593 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__592, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_iterkeys, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__593)) __PYX_ERR(14, 121, __pyx_L1_error)
+  __pyx_tuple__640 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__640)) __PYX_ERR(14, 121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__640);
+  __Pyx_GIVEREF(__pyx_tuple__640);
+  __pyx_codeobj__322 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__640, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_iterkeys, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(14, 121, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":129
  *         return len(self._keys)
@@ -232989,10 +247014,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._items is None:
  *             self._items = self._build_items()
  */
-  __pyx_tuple__594 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__594)) __PYX_ERR(14, 129, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__594);
-  __Pyx_GIVEREF(__pyx_tuple__594);
-  __pyx_codeobj__595 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__594, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_items, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__595)) __PYX_ERR(14, 129, __pyx_L1_error)
+  __pyx_tuple__641 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__641)) __PYX_ERR(14, 129, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__641);
+  __Pyx_GIVEREF(__pyx_tuple__641);
+  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__641, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_items, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(14, 129, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":134
  *         return self._items[:]
@@ -233001,10 +247026,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self._items is None:
  *             self._items = self._build_items()
  */
-  __pyx_tuple__596 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__596)) __PYX_ERR(14, 134, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__596);
-  __Pyx_GIVEREF(__pyx_tuple__596);
-  __pyx_codeobj__597 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__596, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_iteritems, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__597)) __PYX_ERR(14, 134, __pyx_L1_error)
+  __pyx_tuple__642 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__642)) __PYX_ERR(14, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__642);
+  __Pyx_GIVEREF(__pyx_tuple__642);
+  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__642, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_iteritems, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(14, 134, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":139
  *         return iter(self._items)
@@ -233013,10 +247038,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef list values = []
  *         if self._items is None:
  */
-  __pyx_tuple__598 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_values, __pyx_n_s_item, __pyx_n_s_value); if (unlikely(!__pyx_tuple__598)) __PYX_ERR(14, 139, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__598);
-  __Pyx_GIVEREF(__pyx_tuple__598);
-  __pyx_codeobj__599 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__598, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_values, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__599)) __PYX_ERR(14, 139, __pyx_L1_error)
+  __pyx_tuple__643 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_values, __pyx_n_s_item, __pyx_n_s_value); if (unlikely(!__pyx_tuple__643)) __PYX_ERR(14, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__643);
+  __Pyx_GIVEREF(__pyx_tuple__643);
+  __pyx_codeobj__326 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__643, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_values, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__326)) __PYX_ERR(14, 139, __pyx_L1_error)
 
   /* "src/lxml/xmlid.pxi":149
  *         return values
@@ -233025,10 +247050,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return iter(self.values())
  * 
  */
-  __pyx_tuple__600 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__600)) __PYX_ERR(14, 149, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__600);
-  __Pyx_GIVEREF(__pyx_tuple__600);
-  __pyx_codeobj__601 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__600, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_itervalues, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__601)) __PYX_ERR(14, 149, __pyx_L1_error)
+  __pyx_tuple__644 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__644)) __PYX_ERR(14, 149, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__644);
+  __Pyx_GIVEREF(__pyx_tuple__644);
+  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__644, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlid_pxi, __pyx_n_s_itervalues, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(14, 149, __pyx_L1_error)
 
   /* "src/lxml/cleanup.pxi":3
  * # functions for tree cleanup and removing elements from subtrees
@@ -233037,13 +247062,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None)
  * 
  */
-  __pyx_tuple__602 = PyTuple_Pack(7, __pyx_n_s_tree_or_element, __pyx_n_s_top_nsmap, __pyx_n_s_keep_ns_prefixes, __pyx_n_s_element, __pyx_n_s_c_element, __pyx_n_s_doc_2, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__602)) __PYX_ERR(16, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__602);
-  __Pyx_GIVEREF(__pyx_tuple__602);
-  __pyx_codeobj__603 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__602, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_cleanup_namespaces, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__603)) __PYX_ERR(16, 3, __pyx_L1_error)
-  __pyx_tuple__604 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__604)) __PYX_ERR(16, 3, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__604);
-  __Pyx_GIVEREF(__pyx_tuple__604);
+  __pyx_tuple__645 = PyTuple_Pack(7, __pyx_n_s_tree_or_element, __pyx_n_s_top_nsmap, __pyx_n_s_keep_ns_prefixes, __pyx_n_s_element, __pyx_n_s_c_element, __pyx_n_s_doc_2, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__645)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__645);
+  __Pyx_GIVEREF(__pyx_tuple__645);
+  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__645, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_cleanup_namespaces, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __pyx_tuple__646 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__646)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__646);
+  __Pyx_GIVEREF(__pyx_tuple__646);
 
   /* "src/lxml/cleanup.pxi":33
  * 
@@ -233052,10 +247077,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_attributes(tree_or_element, *attribute_names)
  * 
  */
-  __pyx_tuple__605 = PyTuple_Pack(4, __pyx_n_s_tree_or_element, __pyx_n_s_attribute_names, __pyx_n_s_matcher, __pyx_n_s_element); if (unlikely(!__pyx_tuple__605)) __PYX_ERR(16, 33, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__605);
-  __Pyx_GIVEREF(__pyx_tuple__605);
-  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__605, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_attributes, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(16, 33, __pyx_L1_error)
+  __pyx_tuple__647 = PyTuple_Pack(4, __pyx_n_s_tree_or_element, __pyx_n_s_attribute_names, __pyx_n_s_matcher, __pyx_n_s_element); if (unlikely(!__pyx_tuple__647)) __PYX_ERR(16, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__647);
+  __Pyx_GIVEREF(__pyx_tuple__647);
+  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__647, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_attributes, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(16, 33, __pyx_L1_error)
 
   /* "src/lxml/cleanup.pxi":74
  * 
@@ -233064,10 +247089,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_elements(tree_or_element, *tag_names, with_tail=True)
  * 
  */
-  __pyx_tuple__607 = PyTuple_Pack(6, __pyx_n_s_tree_or_element, __pyx_n_s_with_tail, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__607)) __PYX_ERR(16, 74, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__607);
-  __Pyx_GIVEREF(__pyx_tuple__607);
-  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(1, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__607, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_elements, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(16, 74, __pyx_L1_error)
+  __pyx_tuple__648 = PyTuple_Pack(6, __pyx_n_s_tree_or_element, __pyx_n_s_with_tail, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__648)) __PYX_ERR(16, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__648);
+  __Pyx_GIVEREF(__pyx_tuple__648);
+  __pyx_codeobj__330 = (PyObject*)__Pyx_PyCode_New(1, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__648, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_elements, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__330)) __PYX_ERR(16, 74, __pyx_L1_error)
 
   /* "src/lxml/cleanup.pxi":145
  * 
@@ -233076,10 +247101,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""strip_tags(tree_or_element, *tag_names)
  * 
  */
-  __pyx_tuple__609 = PyTuple_Pack(5, __pyx_n_s_tree_or_element, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__609)) __PYX_ERR(16, 145, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__609);
-  __Pyx_GIVEREF(__pyx_tuple__609);
-  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__609, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_tags, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(16, 145, __pyx_L1_error)
+  __pyx_tuple__649 = PyTuple_Pack(5, __pyx_n_s_tree_or_element, __pyx_n_s_tag_names, __pyx_n_s_matcher, __pyx_n_s_doc_2, __pyx_n_s_element); if (unlikely(!__pyx_tuple__649)) __PYX_ERR(16, 145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__649);
+  __Pyx_GIVEREF(__pyx_tuple__649);
+  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__649, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_cleanup_pxi, __pyx_n_s_strip_tags, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(16, 145, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":368
  * 
@@ -233088,9 +247113,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     b"Number encoding",
  *     b"Unfinished literal",
  */
-  __pyx_tuple__611 = PyTuple_Pack(26, __pyx_n_b_Ok, __pyx_kp_b_Number_encoding, __pyx_kp_b_Unfinished_literal, __pyx_kp_b_Start_of_literal, __pyx_kp_b_Expected_for_variable_reference, __pyx_kp_b_Undefined_variable, __pyx_kp_b_Invalid_predicate, __pyx_kp_b_Invalid_expression, __pyx_kp_b_Missing_closing_curly_brace, __pyx_kp_b_Unregistered_function, __pyx_kp_b_Invalid_operand, __pyx_kp_b_Invalid_type, __pyx_kp_b_Invalid_number_of_arguments, __pyx_kp_b_Invalid_context_size, __pyx_kp_b_Invalid_context_position, __pyx_kp_b_Memory_allocation_error, __pyx_kp_b_Syntax_error, __pyx_kp_b_Resource_error, __pyx_kp_b_Sub_resource_error, __pyx_kp_b_Undefined_namespace_prefix, __pyx_kp_b_Encoding_error, __pyx_kp_b_Char_out_of_XML_range, __pyx_kp_b_Invalid_or_incomplete_context, __pyx_kp_b_Stack_usage_error, __pyx_kp_b_Forbidden_variable, __pyx_kp_b_Unknown_error); if (unlikely(!__pyx_tuple__611)) __PYX_ERR(17, 368, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__611);
-  __Pyx_GIVEREF(__pyx_tuple__611);
+  __pyx_tuple__650 = PyTuple_Pack(26, __pyx_n_b_Ok, __pyx_kp_b_Number_encoding, __pyx_kp_b_Unfinished_literal, __pyx_kp_b_Start_of_literal, __pyx_kp_b_Expected_for_variable_reference, __pyx_kp_b_Undefined_variable, __pyx_kp_b_Invalid_predicate, __pyx_kp_b_Invalid_expression, __pyx_kp_b_Missing_closing_curly_brace, __pyx_kp_b_Unregistered_function, __pyx_kp_b_Invalid_operand, __pyx_kp_b_Invalid_type, __pyx_kp_b_Invalid_number_of_arguments, __pyx_kp_b_Invalid_context_size, __pyx_kp_b_Invalid_context_position, __pyx_kp_b_Memory_allocation_error, __pyx_kp_b_Syntax_error, __pyx_kp_b_Resource_error, __pyx_kp_b_Sub_resource_error, __pyx_kp_b_Undefined_namespace_prefix, __pyx_kp_b_Encoding_error, __pyx_kp_b_Char_out_of_XML_range, __pyx_kp_b_Invalid_or_incomplete_context, __pyx_kp_b_Stack_usage_error, __pyx_kp_b_Forbidden_variable, __pyx_kp_b_Unknown_error); if (unlikely(!__pyx_tuple__650)) __PYX_ERR(17, 368, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__650);
+  __Pyx_GIVEREF(__pyx_tuple__650);
 
   /* "src/lxml/extensions.pxi":426
  * 
@@ -233099,13 +247124,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Extension(module, function_mapping=None, ns=None)
  * 
  */
-  __pyx_tuple__612 = PyTuple_Pack(7, __pyx_n_s_module, __pyx_n_s_function_mapping, __pyx_n_s_ns, __pyx_n_s_functions, __pyx_n_s_function_name, __pyx_n_s_xpath_name, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(17, 426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__612);
-  __Pyx_GIVEREF(__pyx_tuple__612);
-  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(2, 1, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__612, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_Extension, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(17, 426, __pyx_L1_error)
-  __pyx_tuple__614 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__614)) __PYX_ERR(17, 426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__614);
-  __Pyx_GIVEREF(__pyx_tuple__614);
+  __pyx_tuple__651 = PyTuple_Pack(7, __pyx_n_s_module, __pyx_n_s_function_mapping, __pyx_n_s_ns, __pyx_n_s_functions, __pyx_n_s_function_name, __pyx_n_s_xpath_name, __pyx_n_s_name_2); if (unlikely(!__pyx_tuple__651)) __PYX_ERR(17, 426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__651);
+  __Pyx_GIVEREF(__pyx_tuple__651);
+  __pyx_codeobj__332 = (PyObject*)__Pyx_PyCode_New(2, 1, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__651, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_Extension, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(17, 426, __pyx_L1_error)
+  __pyx_tuple__652 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__652)) __PYX_ERR(17, 426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__652);
+  __Pyx_GIVEREF(__pyx_tuple__652);
 
   /* "src/lxml/extensions.pxi":498
  *         return rexp_compiled
@@ -233114,10 +247139,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         flags = self._make_string(flags)
  *         s = self._make_string(s)
  */
-  __pyx_tuple__615 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_rexpc); if (unlikely(!__pyx_tuple__615)) __PYX_ERR(17, 498, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__615);
-  __Pyx_GIVEREF(__pyx_tuple__615);
-  __pyx_codeobj__616 = (PyObject*)__Pyx_PyCode_New(5, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__615, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_test, 498, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__616)) __PYX_ERR(17, 498, __pyx_L1_error)
+  __pyx_tuple__653 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_rexpc); if (unlikely(!__pyx_tuple__653)) __PYX_ERR(17, 498, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__653);
+  __Pyx_GIVEREF(__pyx_tuple__653);
+  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(5, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__653, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_test, 498, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(17, 498, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":507
  *             return True
@@ -233126,10 +247151,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef list result_list
  *         flags = self._make_string(flags)
  */
-  __pyx_tuple__617 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_result_list, __pyx_n_s_rexpc, __pyx_n_s_results, __pyx_n_s_result, __pyx_n_s_root, __pyx_n_s_join_groups, __pyx_n_s_s_match, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__617)) __PYX_ERR(17, 507, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__617);
-  __Pyx_GIVEREF(__pyx_tuple__617);
-  __pyx_codeobj__618 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__617, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_match, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__618)) __PYX_ERR(17, 507, __pyx_L1_error)
+  __pyx_tuple__654 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_result_list, __pyx_n_s_rexpc, __pyx_n_s_results, __pyx_n_s_result, __pyx_n_s_root, __pyx_n_s_join_groups, __pyx_n_s_s_match, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__654)) __PYX_ERR(17, 507, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__654);
+  __Pyx_GIVEREF(__pyx_tuple__654);
+  __pyx_codeobj__335 = (PyObject*)__Pyx_PyCode_New(5, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__654, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_match, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__335)) __PYX_ERR(17, 507, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":533
  *         return result_list
@@ -233138,10 +247163,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         replacement = self._make_string(replacement)
  *         flags = self._make_string(flags)
  */
-  __pyx_tuple__619 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_replacement, __pyx_n_s_rexpc, __pyx_n_s_count); if (unlikely(!__pyx_tuple__619)) __PYX_ERR(17, 533, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__619);
-  __Pyx_GIVEREF(__pyx_tuple__619);
-  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(6, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_replace, 533, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(17, 533, __pyx_L1_error)
+  __pyx_tuple__655 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_ctxt, __pyx_n_s_s_4, __pyx_n_s_rexp, __pyx_n_s_flags, __pyx_n_s_replacement, __pyx_n_s_rexpc, __pyx_n_s_count); if (unlikely(!__pyx_tuple__655)) __PYX_ERR(17, 533, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__655);
+  __Pyx_GIVEREF(__pyx_tuple__655);
+  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(6, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__655, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_replace, 533, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(17, 533, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":730
  *     cdef readonly bint is_attribute
@@ -233150,10 +247175,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self._parent
  * 
  */
-  __pyx_tuple__621 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__621)) __PYX_ERR(17, 730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__621);
-  __Pyx_GIVEREF(__pyx_tuple__621);
-  __pyx_codeobj__622 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__621, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 730, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__622)) __PYX_ERR(17, 730, __pyx_L1_error)
+  __pyx_tuple__656 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__656)) __PYX_ERR(17, 730, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__656);
+  __Pyx_GIVEREF(__pyx_tuple__656);
+  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__656, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 730, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(17, 730, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":738
  *         # we need to use a Python class here, or PyPy will crash on creation
@@ -233162,10 +247187,10 @@ static int __Pyx_InitCachedConstants(void) {
  *             return self._parent
  * 
  */
-  __pyx_tuple__623 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__623)) __PYX_ERR(17, 738, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__623);
-  __Pyx_GIVEREF(__pyx_tuple__623);
-  __pyx_codeobj__624 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__623, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 738, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__624)) __PYX_ERR(17, 738, __pyx_L1_error)
+  __pyx_tuple__657 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__657)) __PYX_ERR(17, 738, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__657);
+  __Pyx_GIVEREF(__pyx_tuple__657);
+  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__657, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 738, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(17, 738, __pyx_L1_error)
 
   /* "src/lxml/extensions.pxi":744
  *     # we need to use a Python class here, bytes cannot be C-subclassed
@@ -233174,10 +247199,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self._parent
  * 
  */
-  __pyx_tuple__625 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__625)) __PYX_ERR(17, 744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__625);
-  __Pyx_GIVEREF(__pyx_tuple__625);
-  __pyx_codeobj__626 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__625, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__626)) __PYX_ERR(17, 744, __pyx_L1_error)
+  __pyx_tuple__658 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__658)) __PYX_ERR(17, 744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__658);
+  __Pyx_GIVEREF(__pyx_tuple__658);
+  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__658, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_extensions_pxi, __pyx_n_s_getparent, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(17, 744, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":152
  *         self._context.set_context(xpathCtxt)
@@ -233186,10 +247211,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""evaluate(self, _eval_arg, **_variables)
  * 
  */
-  __pyx_tuple__627 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_eval_arg, __pyx_n_s_variables_2); if (unlikely(!__pyx_tuple__627)) __PYX_ERR(18, 152, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__627);
-  __Pyx_GIVEREF(__pyx_tuple__627);
-  __pyx_codeobj__628 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__627, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_evaluate, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__628)) __PYX_ERR(18, 152, __pyx_L1_error)
+  __pyx_tuple__659 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_eval_arg, __pyx_n_s_variables_2); if (unlikely(!__pyx_tuple__659)) __PYX_ERR(18, 152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__659);
+  __Pyx_GIVEREF(__pyx_tuple__659);
+  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__659, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_evaluate, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(18, 152, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":268
  *         self.set_context(xpathCtxt)
@@ -233198,10 +247223,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Register a namespace with the XPath context.
  *         """
  */
-  __pyx_tuple__629 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__629)) __PYX_ERR(18, 268, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__629);
-  __Pyx_GIVEREF(__pyx_tuple__629);
-  __pyx_codeobj__630 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__629, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_register_namespace, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__630)) __PYX_ERR(18, 268, __pyx_L1_error)
+  __pyx_tuple__660 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__660)) __PYX_ERR(18, 268, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__660);
+  __Pyx_GIVEREF(__pyx_tuple__660);
+  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__660, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_register_namespace, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(18, 268, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":274
  *         self._context.addNamespace(prefix, uri)
@@ -233210,10 +247235,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Register a prefix -> uri dict.
  *         """
  */
-  __pyx_tuple__631 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_namespaces, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__631)) __PYX_ERR(18, 274, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__631);
-  __Pyx_GIVEREF(__pyx_tuple__631);
-  __pyx_codeobj__632 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__631, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_register_namespaces, 274, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__632)) __PYX_ERR(18, 274, __pyx_L1_error)
+  __pyx_tuple__661 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_namespaces, __pyx_n_s_prefix, __pyx_n_s_uri); if (unlikely(!__pyx_tuple__661)) __PYX_ERR(18, 274, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__661);
+  __Pyx_GIVEREF(__pyx_tuple__661);
+  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__661, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_register_namespaces, 274, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(18, 274, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":369
  * 
@@ -233222,10 +247247,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                    regexp=True, smart_strings=True):
  *     u"""XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
  */
-  __pyx_tuple__633 = PyTuple_Pack(5, __pyx_n_s_etree_or_element, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_regexp, __pyx_n_s_smart_strings); if (unlikely(!__pyx_tuple__633)) __PYX_ERR(18, 369, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__633);
-  __Pyx_GIVEREF(__pyx_tuple__633);
-  __pyx_codeobj__634 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__633, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_XPathEvaluator, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__634)) __PYX_ERR(18, 369, __pyx_L1_error)
+  __pyx_tuple__662 = PyTuple_Pack(5, __pyx_n_s_etree_or_element, __pyx_n_s_namespaces, __pyx_n_s_extensions, __pyx_n_s_regexp, __pyx_n_s_smart_strings); if (unlikely(!__pyx_tuple__662)) __PYX_ERR(18, 369, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__662);
+  __Pyx_GIVEREF(__pyx_tuple__662);
+  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xpath_pxi, __pyx_n_s_XPathEvaluator, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(18, 369, __pyx_L1_error)
 
   /* "src/lxml/xpath.pxi":467
  * cdef object _replace_strings
@@ -233234,9 +247259,9 @@ static int __Pyx_InitCachedConstants(void) {
  * _find_namespaces = re.compile(b'({[^}]+})').findall
  * 
  */
-  __pyx_tuple__636 = PyTuple_Pack(1, __pyx_kp_b__635); if (unlikely(!__pyx_tuple__636)) __PYX_ERR(18, 467, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__636);
-  __Pyx_GIVEREF(__pyx_tuple__636);
+  __pyx_tuple__664 = PyTuple_Pack(1, __pyx_kp_b__663); if (unlikely(!__pyx_tuple__664)) __PYX_ERR(18, 467, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__664);
+  __Pyx_GIVEREF(__pyx_tuple__664);
 
   /* "src/lxml/xpath.pxi":468
  * cdef object _find_namespaces
@@ -233245,9 +247270,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * cdef class ETXPath(XPath):
  */
-  __pyx_tuple__638 = PyTuple_Pack(1, __pyx_kp_b__637); if (unlikely(!__pyx_tuple__638)) __PYX_ERR(18, 468, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__638);
-  __Pyx_GIVEREF(__pyx_tuple__638);
+  __pyx_tuple__666 = PyTuple_Pack(1, __pyx_kp_b__665); if (unlikely(!__pyx_tuple__666)) __PYX_ERR(18, 468, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__666);
+  __Pyx_GIVEREF(__pyx_tuple__666);
 
   /* "src/lxml/xslt.pxi":436
  * 
@@ -233256,10 +247281,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""strparam(strval)
  * 
  */
-  __pyx_tuple__639 = PyTuple_Pack(1, __pyx_n_s_strval); if (unlikely(!__pyx_tuple__639)) __PYX_ERR(3, 436, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__639);
-  __Pyx_GIVEREF(__pyx_tuple__639);
-  __pyx_codeobj__640 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__639, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_strparam, 436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__640)) __PYX_ERR(3, 436, __pyx_L1_error)
+  __pyx_tuple__667 = PyTuple_Pack(1, __pyx_n_s_strval); if (unlikely(!__pyx_tuple__667)) __PYX_ERR(3, 436, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__667);
+  __Pyx_GIVEREF(__pyx_tuple__667);
+  __pyx_codeobj__351 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_strparam, 436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__351)) __PYX_ERR(3, 436, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":450
  * 
@@ -233268,10 +247293,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set_global_max_depth(max_depth)
  * 
  */
-  __pyx_tuple__641 = PyTuple_Pack(1, __pyx_n_s_max_depth); if (unlikely(!__pyx_tuple__641)) __PYX_ERR(3, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__641);
-  __Pyx_GIVEREF(__pyx_tuple__641);
-  __pyx_codeobj__642 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__641, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_set_global_max_depth, 450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__642)) __PYX_ERR(3, 450, __pyx_L1_error)
+  __pyx_tuple__668 = PyTuple_Pack(1, __pyx_n_s_max_depth); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(3, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__668);
+  __Pyx_GIVEREF(__pyx_tuple__668);
+  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__668, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_set_global_max_depth, 450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(3, 450, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":469
  *         xslt.xsltMaxDepth = max_depth
@@ -233280,10 +247305,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""apply(self, _input,  profile_run=False, **kw)
  * 
  */
-  __pyx_tuple__643 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_input, __pyx_n_s_profile_run, __pyx_n_s_kw_2); if (unlikely(!__pyx_tuple__643)) __PYX_ERR(3, 469, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__643);
-  __Pyx_GIVEREF(__pyx_tuple__643);
-  __pyx_codeobj__644 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__643, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_apply, 469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__644)) __PYX_ERR(3, 469, __pyx_L1_error)
+  __pyx_tuple__669 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_input, __pyx_n_s_profile_run, __pyx_n_s_kw_2); if (unlikely(!__pyx_tuple__669)) __PYX_ERR(3, 469, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__669);
+  __Pyx_GIVEREF(__pyx_tuple__669);
+  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__669, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_apply, 469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(3, 469, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":475
  *         return self(_input, profile_run=profile_run, **kw)
@@ -233292,10 +247317,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""tostring(self, result_tree)
  * 
  */
-  __pyx_tuple__645 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result_tree); if (unlikely(!__pyx_tuple__645)) __PYX_ERR(3, 475, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__645);
-  __Pyx_GIVEREF(__pyx_tuple__645);
-  __pyx_codeobj__646 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__645, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_tostring, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__646)) __PYX_ERR(3, 475, __pyx_L1_error)
+  __pyx_tuple__670 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result_tree); if (unlikely(!__pyx_tuple__670)) __PYX_ERR(3, 475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__670);
+  __Pyx_GIVEREF(__pyx_tuple__670);
+  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__670, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_tostring, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(3, 475, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":484
  *         return str(result_tree)
@@ -233304,10 +247329,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self.__copy__()
  * 
  */
-  __pyx_tuple__647 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__647)) __PYX_ERR(3, 484, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__647);
-  __Pyx_GIVEREF(__pyx_tuple__647);
-  __pyx_codeobj__648 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__647, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_deepcopy, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__648)) __PYX_ERR(3, 484, __pyx_L1_error)
+  __pyx_tuple__671 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__671)) __PYX_ERR(3, 484, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__671);
+  __Pyx_GIVEREF(__pyx_tuple__671);
+  __pyx_codeobj__356 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__671, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_deepcopy, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__356)) __PYX_ERR(3, 484, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":487
  *         return self.__copy__()
@@ -233316,10 +247341,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _copyXSLT(self)
  * 
  */
-  __pyx_tuple__649 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__649)) __PYX_ERR(3, 487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__649);
-  __Pyx_GIVEREF(__pyx_tuple__649);
-  __pyx_codeobj__650 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__649, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_copy_2, 487, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__650)) __PYX_ERR(3, 487, __pyx_L1_error)
+  __pyx_tuple__672 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__672)) __PYX_ERR(3, 487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__672);
+  __Pyx_GIVEREF(__pyx_tuple__672);
+  __pyx_codeobj__357 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__672, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_copy_2, 487, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__357)) __PYX_ERR(3, 487, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":713
  *     cdef Py_ssize_t _buffer_refcnt
@@ -233328,10 +247353,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """write_output(self, file, *, compression=0)
  * 
  */
-  __pyx_tuple__651 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_compression, __pyx_n_s_writer, __pyx_n_s_doc_2, __pyx_n_s_r, __pyx_n_s_c_compression, __pyx_n_s_c_encoding, __pyx_n_s_c_buffer, __pyx_n_s_file_path, __pyx_n_s_c_filename); if (unlikely(!__pyx_tuple__651)) __PYX_ERR(3, 713, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__651);
-  __Pyx_GIVEREF(__pyx_tuple__651);
-  __pyx_codeobj__652 = (PyObject*)__Pyx_PyCode_New(2, 1, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__651, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_write_output, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__652)) __PYX_ERR(3, 713, __pyx_L1_error)
+  __pyx_tuple__673 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_file, __pyx_n_s_compression, __pyx_n_s_writer, __pyx_n_s_doc_2, __pyx_n_s_r, __pyx_n_s_c_compression, __pyx_n_s_c_encoding, __pyx_n_s_c_buffer, __pyx_n_s_file_path, __pyx_n_s_c_filename); if (unlikely(!__pyx_tuple__673)) __PYX_ERR(3, 713, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__673);
+  __Pyx_GIVEREF(__pyx_tuple__673);
+  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(2, 1, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__673, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_write_output, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(3, 713, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":788
  *         return result
@@ -233340,10 +247365,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef xmlChar* encoding
  *         cdef xmlChar* s = NULL
  */
-  __pyx_tuple__653 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_encoding, __pyx_n_s_s_4, __pyx_n_s_l, __pyx_n_s_result); if (unlikely(!__pyx_tuple__653)) __PYX_ERR(3, 788, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__653);
-  __Pyx_GIVEREF(__pyx_tuple__653);
-  __pyx_codeobj__654 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__653, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_unicode_2, 788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__654)) __PYX_ERR(3, 788, __pyx_L1_error)
+  __pyx_tuple__674 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_encoding, __pyx_n_s_s_4, __pyx_n_s_l, __pyx_n_s_result); if (unlikely(!__pyx_tuple__674)) __PYX_ERR(3, 788, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__674);
+  __Pyx_GIVEREF(__pyx_tuple__674);
+  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__674, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_unicode_2, 788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(3, 788, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":882
  * # XSLT PI support
@@ -233352,9 +247377,9 @@ static int __Pyx_InitCachedConstants(void) {
  * cdef object _FIND_PI_HREF = _RE_PI_HREF.findall
  * cdef object _REPLACE_PI_HREF = _RE_PI_HREF.sub
  */
-  __pyx_tuple__655 = PyTuple_Pack(1, __pyx_kp_u_s_href_s_s); if (unlikely(!__pyx_tuple__655)) __PYX_ERR(3, 882, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__655);
-  __Pyx_GIVEREF(__pyx_tuple__655);
+  __pyx_tuple__675 = PyTuple_Pack(1, __pyx_kp_u_s_href_s_s); if (unlikely(!__pyx_tuple__675)) __PYX_ERR(3, 882, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__675);
+  __Pyx_GIVEREF(__pyx_tuple__675);
 
   /* "src/lxml/xslt.pxi":896
  * 
@@ -233363,10 +247388,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""parseXSL(self, parser=None)
  * 
  */
-  __pyx_tuple__656 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_parser, __pyx_n_s_result_doc, __pyx_n_s_result_node, __pyx_n_s_href_utf, __pyx_n_s_c_href, __pyx_n_s_c_attr, __pyx_n_s_hrefs, __pyx_n_s_root); if (unlikely(!__pyx_tuple__656)) __PYX_ERR(3, 896, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__656);
-  __Pyx_GIVEREF(__pyx_tuple__656);
-  __pyx_codeobj__657 = (PyObject*)__Pyx_PyCode_New(2, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__656, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_parseXSL, 896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__657)) __PYX_ERR(3, 896, __pyx_L1_error)
+  __pyx_tuple__676 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_parser, __pyx_n_s_result_doc, __pyx_n_s_result_node, __pyx_n_s_href_utf, __pyx_n_s_c_href, __pyx_n_s_c_attr, __pyx_n_s_hrefs, __pyx_n_s_root); if (unlikely(!__pyx_tuple__676)) __PYX_ERR(3, 896, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__676);
+  __Pyx_GIVEREF(__pyx_tuple__676);
+  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(2, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__676, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_parseXSL, 896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(3, 896, __pyx_L1_error)
 
   /* "src/lxml/xslt.pxi":953
  *         return _elementTreeFactory(result_node._doc, result_node)
@@ -233375,10 +247400,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""set(self, key, value)
  * 
  */
-  __pyx_tuple__658 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value, __pyx_n_s_attrib, __pyx_n_s_text); if (unlikely(!__pyx_tuple__658)) __PYX_ERR(3, 953, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__658);
-  __Pyx_GIVEREF(__pyx_tuple__658);
-  __pyx_codeobj__659 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__658, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_set, 953, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__659)) __PYX_ERR(3, 953, __pyx_L1_error)
+  __pyx_tuple__677 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value, __pyx_n_s_attrib, __pyx_n_s_text); if (unlikely(!__pyx_tuple__677)) __PYX_ERR(3, 953, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__677);
+  __Pyx_GIVEREF(__pyx_tuple__677);
+  __pyx_codeobj__364 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__677, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xslt_pxi, __pyx_n_s_set, 953, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__364)) __PYX_ERR(3, 953, __pyx_L1_error)
 
   /* "src/lxml/xsltext.pxi":6
  *     u"""Base class of an XSLT extension element.
@@ -233387,10 +247412,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""execute(self, context, self_node, input_node, output_parent)
  *         Execute this extension element.
  */
-  __pyx_tuple__660 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_self_node, __pyx_n_s_input_node, __pyx_n_s_output_parent); if (unlikely(!__pyx_tuple__660)) __PYX_ERR(19, 6, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__660);
-  __Pyx_GIVEREF(__pyx_tuple__660);
-  __pyx_codeobj__661 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__660, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_execute, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__661)) __PYX_ERR(19, 6, __pyx_L1_error)
+  __pyx_tuple__678 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_self_node, __pyx_n_s_input_node, __pyx_n_s_output_parent); if (unlikely(!__pyx_tuple__678)) __PYX_ERR(19, 6, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__678);
+  __Pyx_GIVEREF(__pyx_tuple__678);
+  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_execute, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(19, 6, __pyx_L1_error)
 
   /* "src/lxml/xsltext.pxi":22
  *         pass
@@ -233399,10 +247424,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                         *, elements_only=False, remove_blank_text=False):
  *         u"""apply_templates(self, context, node, output_parent=None, elements_only=False, remove_blank_text=False)
  */
-  __pyx_tuple__662 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_node, __pyx_n_s_output_parent, __pyx_n_s_elements_only, __pyx_n_s_remove_blank_text, __pyx_n_s_c_parent, __pyx_n_s_c_node, __pyx_n_s_c_context_node); if (unlikely(!__pyx_tuple__662)) __PYX_ERR(19, 22, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__662);
-  __Pyx_GIVEREF(__pyx_tuple__662);
-  __pyx_codeobj__663 = (PyObject*)__Pyx_PyCode_New(4, 2, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_apply_templates, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__663)) __PYX_ERR(19, 22, __pyx_L1_error)
+  __pyx_tuple__679 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_node, __pyx_n_s_output_parent, __pyx_n_s_elements_only, __pyx_n_s_remove_blank_text, __pyx_n_s_c_parent, __pyx_n_s_c_node, __pyx_n_s_c_context_node); if (unlikely(!__pyx_tuple__679)) __PYX_ERR(19, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__679);
+  __Pyx_GIVEREF(__pyx_tuple__679);
+  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(4, 2, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__679, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_apply_templates, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(19, 22, __pyx_L1_error)
 
   /* "src/lxml/xsltext.pxi":74
  *             tree.xmlFreeNode(c_parent)
@@ -233411,10 +247436,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                          *, elements_only=False, remove_blank_text=False):
  *         u"""process_children(self, context, output_parent=None, elements_only=False, remove_blank_text=False)
  */
-  __pyx_tuple__664 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_output_parent, __pyx_n_s_elements_only, __pyx_n_s_remove_blank_text, __pyx_n_s_c_parent, __pyx_n_s_c_ctxt, __pyx_n_s_c_old_output_parent); if (unlikely(!__pyx_tuple__664)) __PYX_ERR(19, 74, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__664);
-  __Pyx_GIVEREF(__pyx_tuple__664);
-  __pyx_codeobj__665 = (PyObject*)__Pyx_PyCode_New(3, 2, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__664, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_process_children, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__665)) __PYX_ERR(19, 74, __pyx_L1_error)
+  __pyx_tuple__680 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_context, __pyx_n_s_output_parent, __pyx_n_s_elements_only, __pyx_n_s_remove_blank_text, __pyx_n_s_c_parent, __pyx_n_s_c_ctxt, __pyx_n_s_c_old_output_parent); if (unlikely(!__pyx_tuple__680)) __PYX_ERR(19, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__680);
+  __Pyx_GIVEREF(__pyx_tuple__680);
+  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(3, 2, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__680, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xsltext_pxi, __pyx_n_s_process_children, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(19, 74, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3517
  *         self._error_log = _ErrorLog()
@@ -233423,10 +247448,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""validate(self, etree)
  * 
  */
-  __pyx_tuple__666 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__666)) __PYX_ERR(0, 3517, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__666);
-  __Pyx_GIVEREF(__pyx_tuple__666);
-  __pyx_codeobj__667 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__666, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_validate, 3517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__667)) __PYX_ERR(0, 3517, __pyx_L1_error)
+  __pyx_tuple__681 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__681)) __PYX_ERR(0, 3517, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__681);
+  __Pyx_GIVEREF(__pyx_tuple__681);
+  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__681, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_validate, 3517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(0, 3517, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3526
  *         return self(etree)
@@ -233435,10 +247460,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""assertValid(self, etree)
  * 
  */
-  __pyx_tuple__668 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__668)) __PYX_ERR(0, 3526, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__668);
-  __Pyx_GIVEREF(__pyx_tuple__668);
-  __pyx_codeobj__669 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__668, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_assertValid, 3526, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__669)) __PYX_ERR(0, 3526, __pyx_L1_error)
+  __pyx_tuple__682 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__682)) __PYX_ERR(0, 3526, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__682);
+  __Pyx_GIVEREF(__pyx_tuple__682);
+  __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__682, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_assertValid, 3526, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(0, 3526, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3536
  *                                   self._error_log)
@@ -233447,10 +247472,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""assert_(self, etree)
  * 
  */
-  __pyx_tuple__670 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__670)) __PYX_ERR(0, 3536, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__670);
-  __Pyx_GIVEREF(__pyx_tuple__670);
-  __pyx_codeobj__671 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__670, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_assert, 3536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__671)) __PYX_ERR(0, 3536, __pyx_L1_error)
+  __pyx_tuple__683 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__683)) __PYX_ERR(0, 3536, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__683);
+  __Pyx_GIVEREF(__pyx_tuple__683);
+  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_assert, 3536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(0, 3536, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3545
  *                 u"Document does not comply with schema")
@@ -233459,10 +247484,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                               message, filename):
  *         self._error_log._receiveGeneric(domain, type, level, line, message,
  */
-  __pyx_tuple__672 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_domain, __pyx_n_s_type, __pyx_n_s_level, __pyx_n_s_line_2, __pyx_n_s_message, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__672)) __PYX_ERR(0, 3545, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__672);
-  __Pyx_GIVEREF(__pyx_tuple__672);
-  __pyx_codeobj__673 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__672, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append_log_message, 3545, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__673)) __PYX_ERR(0, 3545, __pyx_L1_error)
+  __pyx_tuple__684 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_domain, __pyx_n_s_type, __pyx_n_s_level, __pyx_n_s_line_2, __pyx_n_s_message, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__684)) __PYX_ERR(0, 3545, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__684);
+  __Pyx_GIVEREF(__pyx_tuple__684);
+  __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__684, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_append_log_message, 3545, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(0, 3545, __pyx_L1_error)
 
   /* "lxml/etree.pyx":3550
  *                                         filename)
@@ -233471,10 +247496,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._error_log.clear()
  * 
  */
-  __pyx_tuple__674 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__674)) __PYX_ERR(0, 3550, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__674);
-  __Pyx_GIVEREF(__pyx_tuple__674);
-  __pyx_codeobj__675 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__674, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear_error_log, 3550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__675)) __PYX_ERR(0, 3550, __pyx_L1_error)
+  __pyx_tuple__685 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__685)) __PYX_ERR(0, 3550, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__685);
+  __Pyx_GIVEREF(__pyx_tuple__685);
+  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__685, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_clear_error_log, 3550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(0, 3550, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":163
  *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
@@ -233483,10 +247508,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidDTDNode(self, self._c_node)
  *         cdef tree.xmlEnumeration *c_node = self._c_node.tree
  */
-  __pyx_tuple__676 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__676)) __PYX_ERR(20, 163, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__676);
-  __Pyx_GIVEREF(__pyx_tuple__676);
-  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__676, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_itervalues, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(20, 163, __pyx_L1_error)
+  __pyx_tuple__686 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__686)) __PYX_ERR(20, 163, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__686);
+  __Pyx_GIVEREF(__pyx_tuple__686);
+  __pyx_codeobj__374 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__686, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_itervalues, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__374)) __PYX_ERR(20, 163, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":170
  *             c_node = c_node.next
@@ -233495,10 +247520,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return list(self.itervalues())
  * 
  */
-  __pyx_tuple__677 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__677)) __PYX_ERR(20, 170, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__677);
-  __Pyx_GIVEREF(__pyx_tuple__677);
-  __pyx_codeobj__678 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__677, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_values, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__678)) __PYX_ERR(20, 170, __pyx_L1_error)
+  __pyx_tuple__687 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__687)) __PYX_ERR(20, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__687);
+  __Pyx_GIVEREF(__pyx_tuple__687);
+  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__687, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_values, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(20, 170, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":223
  *                return None
@@ -233507,10 +247532,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         _assertValidDTDNode(self, self._c_node)
  *         cdef tree.xmlAttribute *c_node = self._c_node.attributes
  */
-  __pyx_tuple__679 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__679)) __PYX_ERR(20, 223, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__679);
-  __Pyx_GIVEREF(__pyx_tuple__679);
-  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__679, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterattributes, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(20, 223, __pyx_L1_error)
+  __pyx_tuple__688 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__688)) __PYX_ERR(20, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__688);
+  __Pyx_GIVEREF(__pyx_tuple__688);
+  __pyx_codeobj__376 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterattributes, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__376)) __PYX_ERR(20, 223, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":233
  *             c_node = c_node.nexth
@@ -233519,10 +247544,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return list(self.iterattributes())
  * 
  */
-  __pyx_tuple__680 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__680)) __PYX_ERR(20, 233, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__680);
-  __Pyx_GIVEREF(__pyx_tuple__680);
-  __pyx_codeobj__681 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__680, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_attributes, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__681)) __PYX_ERR(20, 233, __pyx_L1_error)
+  __pyx_tuple__689 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__689)) __PYX_ERR(20, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__689);
+  __Pyx_GIVEREF(__pyx_tuple__689);
+  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__689, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_attributes, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(20, 233, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":314
  *            return funicodeOrNone(self._c_dtd.SystemID)
@@ -233531,10 +247556,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
  *         while c_node is not NULL:
  */
-  __pyx_tuple__682 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__682)) __PYX_ERR(20, 314, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__682);
-  __Pyx_GIVEREF(__pyx_tuple__682);
-  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__682, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterelements, 314, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(20, 314, __pyx_L1_error)
+  __pyx_tuple__690 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__690)) __PYX_ERR(20, 314, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__690);
+  __Pyx_GIVEREF(__pyx_tuple__690);
+  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__690, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterelements, 314, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(20, 314, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":324
  *             c_node = c_node.next
@@ -233543,10 +247568,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return list(self.iterelements())
  * 
  */
-  __pyx_tuple__683 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__683)) __PYX_ERR(20, 324, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__683);
-  __Pyx_GIVEREF(__pyx_tuple__683);
-  __pyx_codeobj__684 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_elements, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__684)) __PYX_ERR(20, 324, __pyx_L1_error)
+  __pyx_tuple__691 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__691)) __PYX_ERR(20, 324, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__691);
+  __Pyx_GIVEREF(__pyx_tuple__691);
+  __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__691, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_elements, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(20, 324, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":327
  *         return list(self.iterelements())
@@ -233555,10 +247580,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
  *         while c_node is not NULL:
  */
-  __pyx_tuple__685 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__685)) __PYX_ERR(20, 327, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__685);
-  __Pyx_GIVEREF(__pyx_tuple__685);
-  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__685, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterentities, 327, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(20, 327, __pyx_L1_error)
+  __pyx_tuple__692 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_node); if (unlikely(!__pyx_tuple__692)) __PYX_ERR(20, 327, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__692);
+  __Pyx_GIVEREF(__pyx_tuple__692);
+  __pyx_codeobj__382 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_iterentities, 327, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__382)) __PYX_ERR(20, 327, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":337
  *             c_node = c_node.next
@@ -233567,10 +247592,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return list(self.iterentities())
  * 
  */
-  __pyx_tuple__686 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__686)) __PYX_ERR(20, 337, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__686);
-  __Pyx_GIVEREF(__pyx_tuple__686);
-  __pyx_codeobj__687 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__686, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_entities, 337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__687)) __PYX_ERR(20, 337, __pyx_L1_error)
+  __pyx_tuple__693 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__693)) __PYX_ERR(20, 337, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__693);
+  __Pyx_GIVEREF(__pyx_tuple__693);
+  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__693, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_dtd_pxi, __pyx_n_s_entities, 337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(20, 337, __pyx_L1_error)
 
   /* "src/lxml/relaxng.pxi":154
  * 
@@ -233579,10 +247604,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """Parse a RelaxNG schema in compact syntax from a text string
  * 
  */
-  __pyx_tuple__688 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_src, __pyx_n_s_base_url, __pyx_n_s_rng_str); if (unlikely(!__pyx_tuple__688)) __PYX_ERR(21, 154, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__688);
-  __Pyx_GIVEREF(__pyx_tuple__688);
-  __pyx_codeobj__689 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_relaxng_pxi, __pyx_n_s_from_rnc_string, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__689)) __PYX_ERR(21, 154, __pyx_L1_error)
+  __pyx_tuple__694 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_src, __pyx_n_s_base_url, __pyx_n_s_rng_str); if (unlikely(!__pyx_tuple__694)) __PYX_ERR(21, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__694);
+  __Pyx_GIVEREF(__pyx_tuple__694);
+  __pyx_codeobj__391 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__694, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_relaxng_pxi, __pyx_n_s_from_rnc_string, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__391)) __PYX_ERR(21, 154, __pyx_L1_error)
 
   /* "src/lxml/xmlschema.pxi":21
  * # XMLSchema
@@ -233591,9 +247616,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"boolean(//xs:attribute[@default or @fixed][1])",
  *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
  */
-  __pyx_tuple__690 = PyTuple_Pack(1, __pyx_kp_u_boolean_xs_attribute_default_or); if (unlikely(!__pyx_tuple__690)) __PYX_ERR(22, 21, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__690);
-  __Pyx_GIVEREF(__pyx_tuple__690);
+  __pyx_tuple__695 = PyTuple_Pack(1, __pyx_kp_u_boolean_xs_attribute_default_or); if (unlikely(!__pyx_tuple__695)) __PYX_ERR(22, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__695);
+  __Pyx_GIVEREF(__pyx_tuple__695);
 
   /* "src/lxml/debug.pxi":7
  *     """Debugging support for the memory allocation in libxml2.
@@ -233602,10 +247627,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """bytes_used(self)
  * 
  */
-  __pyx_tuple__691 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__691)) __PYX_ERR(25, 7, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__691);
-  __Pyx_GIVEREF(__pyx_tuple__691);
-  __pyx_codeobj__692 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__691, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_bytes_used, 7, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__692)) __PYX_ERR(25, 7, __pyx_L1_error)
+  __pyx_tuple__696 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__696)) __PYX_ERR(25, 7, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__696);
+  __Pyx_GIVEREF(__pyx_tuple__696);
+  __pyx_codeobj__394 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_bytes_used, 7, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__394)) __PYX_ERR(25, 7, __pyx_L1_error)
 
   /* "src/lxml/debug.pxi":16
  *         return tree.xmlMemUsed()
@@ -233614,10 +247639,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """blocks_used(self)
  * 
  */
-  __pyx_tuple__693 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__693)) __PYX_ERR(25, 16, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__693);
-  __Pyx_GIVEREF(__pyx_tuple__693);
-  __pyx_codeobj__694 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__693, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_blocks_used, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__694)) __PYX_ERR(25, 16, __pyx_L1_error)
+  __pyx_tuple__697 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__697)) __PYX_ERR(25, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__697);
+  __Pyx_GIVEREF(__pyx_tuple__697);
+  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_blocks_used, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(25, 16, __pyx_L1_error)
 
   /* "src/lxml/debug.pxi":25
  *         return tree.xmlMemBlocks()
@@ -233626,10 +247651,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """dict_size(self)
  * 
  */
-  __pyx_tuple__695 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_dict); if (unlikely(!__pyx_tuple__695)) __PYX_ERR(25, 25, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__695);
-  __Pyx_GIVEREF(__pyx_tuple__695);
-  __pyx_codeobj__696 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__695, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_dict_size, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__696)) __PYX_ERR(25, 25, __pyx_L1_error)
+  __pyx_tuple__698 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_dict); if (unlikely(!__pyx_tuple__698)) __PYX_ERR(25, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__698);
+  __Pyx_GIVEREF(__pyx_tuple__698);
+  __pyx_codeobj__396 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__698, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_dict_size, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__396)) __PYX_ERR(25, 25, __pyx_L1_error)
 
   /* "src/lxml/debug.pxi":36
  *         return tree.xmlDictSize(c_dict)
@@ -233638,10 +247663,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """dump(self, output_file=None, byte_count=None)
  * 
  */
-  __pyx_tuple__697 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_output_file, __pyx_n_s_byte_count, __pyx_n_s_c_count, __pyx_n_s_f); if (unlikely(!__pyx_tuple__697)) __PYX_ERR(25, 36, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__697);
-  __Pyx_GIVEREF(__pyx_tuple__697);
-  __pyx_codeobj__698 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_dump, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__698)) __PYX_ERR(25, 36, __pyx_L1_error)
+  __pyx_tuple__699 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_output_file, __pyx_n_s_byte_count, __pyx_n_s_c_count, __pyx_n_s_f); if (unlikely(!__pyx_tuple__699)) __PYX_ERR(25, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__699);
+  __Pyx_GIVEREF(__pyx_tuple__699);
+  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_dump, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(25, 36, __pyx_L1_error)
 
   /* "src/lxml/debug.pxi":66
  *             stdio.fclose(f)
@@ -233650,10 +247675,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """show(self, output_file=None, block_count=None)
  * 
  */
-  __pyx_tuple__699 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_output_file, __pyx_n_s_block_count, __pyx_n_s_f); if (unlikely(!__pyx_tuple__699)) __PYX_ERR(25, 66, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__699);
-  __Pyx_GIVEREF(__pyx_tuple__699);
-  __pyx_codeobj__700 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_show, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__700)) __PYX_ERR(25, 66, __pyx_L1_error)
+  __pyx_tuple__700 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_output_file, __pyx_n_s_block_count, __pyx_n_s_f); if (unlikely(!__pyx_tuple__700)) __PYX_ERR(25, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__700);
+  __Pyx_GIVEREF(__pyx_tuple__700);
+  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__700, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_debug_pxi, __pyx_n_s_show, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(25, 66, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -234680,12 +248705,12 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__ParserContext._handleParseResult = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult;
   __pyx_vtable_4lxml_5etree__ParserContext._handleParseResultDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc;
   __pyx_type_4lxml_5etree__ParserContext.tp_base = __pyx_ptype_4lxml_5etree__ResolverContext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserContext) < 0) __PYX_ERR(2, 512, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserContext) < 0) __PYX_ERR(2, 513, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ParserContext.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ParserContext.tp_dictoffset && __pyx_type_4lxml_5etree__ParserContext.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ParserContext.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserContext) < 0) __PYX_ERR(2, 512, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserContext) < 0) __PYX_ERR(2, 513, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ParserContext = &__pyx_type_4lxml_5etree__ParserContext;
   __pyx_vtabptr_4lxml_5etree__BaseParser = &__pyx_vtable_4lxml_5etree__BaseParser;
   __pyx_vtable_4lxml_5etree__BaseParser._setBaseURL = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *))__pyx_f_4lxml_5etree_11_BaseParser__setBaseURL;
@@ -234702,80 +248727,80 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__BaseParser._parseDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *, int, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDoc;
   __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFile = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile;
   __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFilelike = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseParser) < 0) __PYX_ERR(2, 780, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseParser) < 0) __PYX_ERR(2, 781, __pyx_L1_error)
   __pyx_type_4lxml_5etree__BaseParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__BaseParser.tp_dictoffset && __pyx_type_4lxml_5etree__BaseParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__BaseParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseParser.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseParser) < 0) __PYX_ERR(2, 780, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseParser.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseParser) < 0) __PYX_ERR(2, 781, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__BaseParser = &__pyx_type_4lxml_5etree__BaseParser;
   __pyx_vtabptr_4lxml_5etree__FeedParser = &__pyx_vtable_4lxml_5etree__FeedParser;
   __pyx_vtable_4lxml_5etree__FeedParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseParser;
   __pyx_vtable_4lxml_5etree__FeedParser.feed = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__FeedParser *, PyObject *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_11_FeedParser_feed;
   __pyx_vtable_4lxml_5etree__FeedParser.close = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__FeedParser *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_11_FeedParser_close;
   __pyx_type_4lxml_5etree__FeedParser.tp_base = __pyx_ptype_4lxml_5etree__BaseParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1229, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1230, __pyx_L1_error)
   __pyx_type_4lxml_5etree__FeedParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__FeedParser.tp_dictoffset && __pyx_type_4lxml_5etree__FeedParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__FeedParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FeedParser.tp_dict, __pyx_vtabptr_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1229, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "_FeedParser", (PyObject *)&__pyx_type_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1229, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FeedParser.tp_dict, __pyx_vtabptr_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1230, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "_FeedParser", (PyObject *)&__pyx_type_4lxml_5etree__FeedParser) < 0) __PYX_ERR(2, 1230, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__FeedParser = &__pyx_type_4lxml_5etree__FeedParser;
   __pyx_vtabptr_4lxml_5etree_XMLParser = &__pyx_vtable_4lxml_5etree_XMLParser;
   __pyx_vtable_4lxml_5etree_XMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
   __pyx_type_4lxml_5etree_XMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1440, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1441, __pyx_L1_error)
   __pyx_type_4lxml_5etree_XMLParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_XMLParser.tp_dictoffset && __pyx_type_4lxml_5etree_XMLParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_XMLParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1440, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "XMLParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1440, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1441, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "XMLParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLParser) < 0) __PYX_ERR(2, 1441, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_XMLParser = &__pyx_type_4lxml_5etree_XMLParser;
   __pyx_vtabptr_4lxml_5etree_XMLPullParser = &__pyx_vtable_4lxml_5etree_XMLPullParser;
   __pyx_vtable_4lxml_5etree_XMLPullParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XMLParser;
   __pyx_type_4lxml_5etree_XMLPullParser.tp_base = __pyx_ptype_4lxml_5etree_XMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1524, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1525, __pyx_L1_error)
   __pyx_type_4lxml_5etree_XMLPullParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_XMLPullParser.tp_dictoffset && __pyx_type_4lxml_5etree_XMLPullParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_XMLPullParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1524, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "XMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1524, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1525, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "XMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLPullParser) < 0) __PYX_ERR(2, 1525, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_XMLPullParser = &__pyx_type_4lxml_5etree_XMLPullParser;
   __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser = &__pyx_vtable_4lxml_5etree_ETCompatXMLParser;
   __pyx_vtable_4lxml_5etree_ETCompatXMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XMLParser;
   __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_base = __pyx_ptype_4lxml_5etree_XMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1553, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1554, __pyx_L1_error)
   __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dictoffset && __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1553, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "ETCompatXMLParser", (PyObject *)&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1553, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1554, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "ETCompatXMLParser", (PyObject *)&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) __PYX_ERR(2, 1554, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_ETCompatXMLParser = &__pyx_type_4lxml_5etree_ETCompatXMLParser;
   __pyx_vtabptr_4lxml_5etree_HTMLParser = &__pyx_vtable_4lxml_5etree_HTMLParser;
   __pyx_vtable_4lxml_5etree_HTMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
   __pyx_type_4lxml_5etree_HTMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1632, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1633, __pyx_L1_error)
   __pyx_type_4lxml_5etree_HTMLParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_HTMLParser.tp_dictoffset && __pyx_type_4lxml_5etree_HTMLParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_HTMLParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1632, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "HTMLParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1632, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1633, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "HTMLParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLParser) < 0) __PYX_ERR(2, 1633, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_HTMLParser = &__pyx_type_4lxml_5etree_HTMLParser;
   __pyx_vtabptr_4lxml_5etree_HTMLPullParser = &__pyx_vtable_4lxml_5etree_HTMLPullParser;
   __pyx_vtable_4lxml_5etree_HTMLPullParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_HTMLParser;
   __pyx_type_4lxml_5etree_HTMLPullParser.tp_base = __pyx_ptype_4lxml_5etree_HTMLParser;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1697, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1698, __pyx_L1_error)
   __pyx_type_4lxml_5etree_HTMLPullParser.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_HTMLPullParser.tp_dictoffset && __pyx_type_4lxml_5etree_HTMLPullParser.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_HTMLPullParser.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1697, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "HTMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1697, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLPullParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1698, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "HTMLPullParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLPullParser) < 0) __PYX_ERR(2, 1698, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_HTMLPullParser = &__pyx_type_4lxml_5etree_HTMLPullParser;
   __pyx_vtabptr_4lxml_5etree__SaxParserTarget = &__pyx_vtable_4lxml_5etree__SaxParserTarget;
   __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxStart = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart;
@@ -234804,14 +248829,14 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__SaxParserContext.flushEvents = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserContext *))__pyx_f_4lxml_5etree_17_SaxParserContext_flushEvents;
   __pyx_vtable_4lxml_5etree__SaxParserContext._handleSaxException = (void (*)(struct __pyx_obj_4lxml_5etree__SaxParserContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException;
   __pyx_type_4lxml_5etree__SaxParserContext.tp_base = __pyx_ptype_4lxml_5etree__ParserContext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__SaxParserContext) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__SaxParserContext) < 0) __PYX_ERR(11, 63, __pyx_L1_error)
   __pyx_type_4lxml_5etree__SaxParserContext.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__SaxParserContext.tp_dictoffset && __pyx_type_4lxml_5etree__SaxParserContext.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__SaxParserContext.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__SaxParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__SaxParserContext) < 0) __PYX_ERR(11, 62, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__SaxParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__SaxParserContext) < 0) __PYX_ERR(11, 63, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__SaxParserContext = &__pyx_type_4lxml_5etree__SaxParserContext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParseEventsIterator) < 0) __PYX_ERR(11, 223, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParseEventsIterator) < 0) __PYX_ERR(11, 224, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ParseEventsIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ParseEventsIterator.tp_dictoffset && __pyx_type_4lxml_5etree__ParseEventsIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ParseEventsIterator.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
@@ -234826,13 +248851,13 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxComment = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment;
   __pyx_vtable_4lxml_5etree_TreeBuilder._flush = (int (*)(struct __pyx_obj_4lxml_5etree_TreeBuilder *))__pyx_f_4lxml_5etree_11TreeBuilder__flush;
   __pyx_type_4lxml_5etree_TreeBuilder.tp_base = __pyx_ptype_4lxml_5etree__SaxParserTarget;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 631, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 632, __pyx_L1_error)
   __pyx_type_4lxml_5etree_TreeBuilder.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_TreeBuilder.tp_dictoffset && __pyx_type_4lxml_5etree_TreeBuilder.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_TreeBuilder.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_TreeBuilder.tp_dict, __pyx_vtabptr_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 631, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "TreeBuilder", (PyObject *)&__pyx_type_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 631, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_TreeBuilder.tp_dict, __pyx_vtabptr_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 632, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "TreeBuilder", (PyObject *)&__pyx_type_4lxml_5etree_TreeBuilder) < 0) __PYX_ERR(11, 632, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_TreeBuilder = &__pyx_type_4lxml_5etree_TreeBuilder;
   __pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget = &__pyx_vtable_4lxml_5etree__PythonSaxParserTarget;
   __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base = *__pyx_vtabptr_4lxml_5etree__SaxParserTarget;
@@ -234858,12 +248883,12 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__TargetParserContext._setTarget = (int (*)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, PyObject *))__pyx_f_4lxml_5etree_20_TargetParserContext__setTarget;
   __pyx_vtable_4lxml_5etree__TargetParserContext._cleanupTargetParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, xmlDoc *))__pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext;
   __pyx_type_4lxml_5etree__TargetParserContext.tp_base = __pyx_ptype_4lxml_5etree__SaxParserContext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__TargetParserContext) < 0) __PYX_ERR(12, 102, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__TargetParserContext) < 0) __PYX_ERR(12, 103, __pyx_L1_error)
   __pyx_type_4lxml_5etree__TargetParserContext.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__TargetParserContext.tp_dictoffset && __pyx_type_4lxml_5etree__TargetParserContext.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__TargetParserContext.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__TargetParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__TargetParserContext) < 0) __PYX_ERR(12, 102, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__TargetParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__TargetParserContext) < 0) __PYX_ERR(12, 103, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__TargetParserContext = &__pyx_type_4lxml_5etree__TargetParserContext;
   __pyx_type_4lxml_5etree_SerialisationError.tp_base = __pyx_ptype_4lxml_5etree_LxmlError;
   if (PyType_Ready(&__pyx_type_4lxml_5etree_SerialisationError) < 0) __PYX_ERR(8, 7, __pyx_L1_error)
@@ -235670,7 +249695,7 @@ static int __Pyx_modinit_type_import_code(void) {
   __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
-  #if CYTHON_COMPILING_IN_PYPY
+  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
   sizeof(PyTypeObject),
   #else
   sizeof(PyHeapTypeObject),
@@ -235716,7 +249741,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -235773,6 +249798,7 @@ static int __pyx_pymod_exec_etree(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -235885,6 +249911,7 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_etree(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/etree.pyx":10
  * from __future__ import absolute_import
@@ -235893,6 +249920,7 @@ if (!__Pyx_RefNanny) {
  * 
  * __all__ = [
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(0, 10, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_docformat, __pyx_kp_u_restructuredtext_en) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
 
   /* "lxml/etree.pyx":12
@@ -235902,6 +249930,7 @@ if (!__Pyx_RefNanny) {
  *     'AttributeBasedElementClassLookup', 'C14NError', 'CDATA',
  *     'Comment', 'CommentBase', 'CustomElementClassLookup', 'DEBUG',
  */
+  __Pyx_TraceLine(12,0,__PYX_ERR(0, 12, __pyx_L1_error))
   __pyx_t_1 = PyList_New(111); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_AttributeBasedElementClassLookup);
@@ -236247,6 +250276,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object BytesIO, StringIO
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(0, 63, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_abspath);
@@ -236271,6 +250301,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object OrderedDict = None
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(0, 66, __pyx_L1_error))
   __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_BytesIO);
@@ -236305,6 +250336,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     from collections import OrderedDict
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_OrderedDict);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_OrderedDict, Py_None);
@@ -236317,6 +250349,7 @@ if (!__Pyx_RefNanny) {
  *     from collections import OrderedDict
  * except ImportError:
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(0, 69, __pyx_L2_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -236333,6 +250366,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     pass
  */
+      __Pyx_TraceLine(70,0,__PYX_ERR(0, 70, __pyx_L2_error))
       __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L2_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_n_s_OrderedDict);
@@ -236373,6 +250407,7 @@ if (!__Pyx_RefNanny) {
  *     pass
  * 
  */
+    __Pyx_TraceLine(71,0,__PYX_ERR(0, 71, __pyx_L4_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_ErrRestore(0,0,0);
@@ -236408,6 +250443,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object sys
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_elementpath);
@@ -236432,6 +250468,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object re
  */
+  __Pyx_TraceLine(78,0,__PYX_ERR(0, 78, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_sys);
@@ -236446,6 +250483,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object partial
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(0, 81, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_re, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_re);
@@ -236460,6 +250498,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object islice
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(0, 84, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_partial);
@@ -236484,6 +250523,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object ITER_EMPTY = iter(())
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(0, 87, __pyx_L1_error))
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_islice);
@@ -236508,6 +250548,7 @@ if (!__Pyx_RefNanny) {
  * 
  * try:
  */
+  __Pyx_TraceLine(89,0,__PYX_ERR(0, 89, __pyx_L1_error))
   __pyx_t_1 = PyObject_GetIter(__pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
@@ -236522,6 +250563,7 @@ if (!__Pyx_RefNanny) {
  *     from collections.abc import MutableMapping  # Py3.3+
  * except ImportError:
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(0, 91, __pyx_L8_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -236538,6 +250580,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     from collections import MutableMapping  # Py2.6+
  */
+      __Pyx_TraceLine(92,0,__PYX_ERR(0, 92, __pyx_L8_error))
       __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L8_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_n_s_MutableMapping);
@@ -236575,6 +250618,7 @@ if (!__Pyx_RefNanny) {
  *     from collections import MutableMapping  # Py2.6+
  * 
  */
+    __Pyx_TraceLine(93,0,__PYX_ERR(0, 93, __pyx_L10_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -236590,6 +250634,7 @@ if (!__Pyx_RefNanny) {
  * 
  * class _ImmutableMapping(MutableMapping):
  */
+      __Pyx_TraceLine(94,0,__PYX_ERR(0, 94, __pyx_L10_except_error))
       __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L10_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_n_s_MutableMapping);
@@ -236638,6 +250683,7 @@ if (!__Pyx_RefNanny) {
  *     def __getitem__(self, key):
  *         raise KeyError, key
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_MutableMapping); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error)
@@ -236657,7 +250703,8 @@ if (!__Pyx_RefNanny) {
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_1__getitem__, 0, __pyx_n_s_ImmutableMapping___getitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_1__getitem__, 0, __pyx_n_s_ImmutableMapping___getitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 97, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_getitem, __pyx_t_9) < 0) __PYX_ERR(0, 97, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236669,7 +250716,8 @@ if (!__Pyx_RefNanny) {
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_3__setitem__, 0, __pyx_n_s_ImmutableMapping___setitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_TraceLine(100,0,__PYX_ERR(0, 100, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_3__setitem__, 0, __pyx_n_s_ImmutableMapping___setitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_setitem, __pyx_t_9) < 0) __PYX_ERR(0, 100, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236681,7 +250729,8 @@ if (!__Pyx_RefNanny) {
  *         raise KeyError, key
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_5__delitem__, 0, __pyx_n_s_ImmutableMapping___delitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 103, __pyx_L1_error)
+  __Pyx_TraceLine(103,0,__PYX_ERR(0, 103, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_5__delitem__, 0, __pyx_n_s_ImmutableMapping___delitem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 103, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_delitem, __pyx_t_9) < 0) __PYX_ERR(0, 103, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236693,7 +250742,8 @@ if (!__Pyx_RefNanny) {
  *         return False
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_7__contains__, 0, __pyx_n_s_ImmutableMapping___contains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_7__contains__, 0, __pyx_n_s_ImmutableMapping___contains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 106, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_contains, __pyx_t_9) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236705,7 +250755,8 @@ if (!__Pyx_RefNanny) {
  *         return 0
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_9__len__, 0, __pyx_n_s_ImmutableMapping___len, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 109, __pyx_L1_error)
+  __Pyx_TraceLine(109,0,__PYX_ERR(0, 109, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_9__len__, 0, __pyx_n_s_ImmutableMapping___len, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 109, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_len, __pyx_t_9) < 0) __PYX_ERR(0, 109, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236717,7 +250768,8 @@ if (!__Pyx_RefNanny) {
  *         return ITER_EMPTY
  *     iterkeys = itervalues = iteritems = __iter__
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_11__iter__, 0, __pyx_n_s_ImmutableMapping___iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 112, __pyx_L1_error)
+  __Pyx_TraceLine(112,0,__PYX_ERR(0, 112, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ImmutableMapping_11__iter__, 0, __pyx_n_s_ImmutableMapping___iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_iter_2, __pyx_t_9) < 0) __PYX_ERR(0, 112, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -236729,6 +250781,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object IMMUTABLE_EMPTY_MAPPING = _ImmutableMapping()
  */
+  __Pyx_TraceLine(114,0,__PYX_ERR(0, 114, __pyx_L1_error))
   __pyx_t_9 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_iter_2);
   if (unlikely(!__pyx_t_9)) {
     PyErr_Clear();
@@ -236748,6 +250801,7 @@ if (!__Pyx_RefNanny) {
  *     def __getitem__(self, key):
  *         raise KeyError, key
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ImmutableMapping, __pyx_t_1, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ImmutableMapping, __pyx_t_9) < 0) __PYX_ERR(0, 96, __pyx_L1_error)
@@ -236763,6 +250817,7 @@ if (!__Pyx_RefNanny) {
  * del MutableMapping, _ImmutableMapping
  * 
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(0, 116, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ImmutableMapping); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 116, __pyx_L1_error)
@@ -236780,6 +250835,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(0, 117, __pyx_L1_error))
   if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_MutableMapping) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
   if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_ImmutableMapping) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
 
@@ -236790,6 +250846,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # A struct to store a cached qualified tag name+href pair.
  */
+  __Pyx_TraceLine(135,0,__PYX_ERR(0, 135, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUG, __pyx_int_1) < 0) __PYX_ERR(0, 135, __pyx_L1_error)
 
   /* "lxml/etree.pyx":146
@@ -236799,6 +250856,7 @@ if (!__Pyx_RefNanny) {
  * tree.xmlThrDefLineNumbersDefaultValue(1)
  * 
  */
+  __Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error))
   (void)(xmlThrDefIndentTreeOutput(1));
 
   /* "lxml/etree.pyx":147
@@ -236808,6 +250866,7 @@ if (!__Pyx_RefNanny) {
  * 
  * _initThreadLogging()
  */
+  __Pyx_TraceLine(147,0,__PYX_ERR(0, 147, __pyx_L1_error))
   (void)(xmlThrDefLineNumbersDefaultValue(1));
 
   /* "lxml/etree.pyx":149
@@ -236817,6 +250876,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # initialize parser (and threading)
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(0, 149, __pyx_L1_error))
   __pyx_f_4lxml_5etree__initThreadLogging();
 
   /* "lxml/etree.pyx":152
@@ -236826,6 +250886,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # filename encoding
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(0, 152, __pyx_L1_error))
   xmlInitParser();
 
   /* "lxml/etree.pyx":155
@@ -236835,6 +250896,7 @@ if (!__Pyx_RefNanny) {
  * cdef char* _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING)
  * 
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(0, 155, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error)
@@ -236869,7 +250931,7 @@ if (!__Pyx_RefNanny) {
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__158, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 155, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__405, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (!(likely(PyBytes_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 155, __pyx_L1_error)
@@ -236885,6 +250947,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # set up some default namespace prefixes
  */
+  __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
   __pyx_t_7 = __pyx_v_4lxml_5etree__FILENAME_ENCODING;
   __Pyx_INCREF(__pyx_t_7);
   __pyx_v_4lxml_5etree__C_FILENAME_ENCODING = PyBytes_AS_STRING(__pyx_t_7);
@@ -236897,6 +250960,7 @@ if (!__Pyx_RefNanny) {
  *     b"http://www.w3.org/1999/xhtml": b"html",
  *     b"http://www.w3.org/1999/XSL/Transform": b"xsl",
  */
+  __Pyx_TraceLine(160,0,__PYX_ERR(0, 160, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_t_7, __pyx_kp_b_http_www_w3_org_XML_1998_namespa, __pyx_n_b_xml) < 0) __PYX_ERR(0, 160, __pyx_L1_error)
@@ -236920,9 +250984,10 @@ if (!__Pyx_RefNanny) {
  * 
  * def register_namespace(prefix, uri):
  */
+  __Pyx_TraceLine(174,0,__PYX_ERR(0, 174, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__159, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__406, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 174, __pyx_L1_error)
@@ -236940,7 +251005,8 @@ if (!__Pyx_RefNanny) {
  *     u"""Registers a namespace prefix that newly created Elements in that
  *     namespace will use.  The registry is global, and any existing
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_1register_namespace, 0, __pyx_n_s_register_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_TraceLine(176,0,__PYX_ERR(0, 176, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_1register_namespace, 0, __pyx_n_s_register_namespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_register_namespace, __pyx_t_7) < 0) __PYX_ERR(0, 176, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -236952,6 +251018,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(0, 209, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_Error));
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__Error);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree__Error, ((PyObject *)__pyx_ptype_4lxml_5etree_Error));
@@ -236964,6 +251031,7 @@ if (!__Pyx_RefNanny) {
  *     """Base class for all syntax errors.
  *     """
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(0, 213, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_LxmlError));
@@ -236991,6 +251059,7 @@ if (!__Pyx_RefNanny) {
  *     _LIBXML_VERSION_INT = int(
  *         re.match(u'[0-9]+', (<unsigned char*>tree.xmlParserVersion).decode("ascii")).group(0))
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(0, 253, __pyx_L19_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -237007,6 +251076,7 @@ if (!__Pyx_RefNanny) {
  * except Exception:
  *     print u"Unknown libxml2 version: %s" % (<unsigned char*>tree.xmlParserVersion).decode("latin1")
  */
+      __Pyx_TraceLine(255,0,__PYX_ERR(0, 255, __pyx_L19_error))
       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L19_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_11 = ((unsigned char *)xmlParserVersion);
@@ -237028,7 +251098,7 @@ if (!__Pyx_RefNanny) {
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L19_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__162, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L19_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__408, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L19_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -237039,6 +251109,7 @@ if (!__Pyx_RefNanny) {
  *         re.match(u'[0-9]+', (<unsigned char*>tree.xmlParserVersion).decode("ascii")).group(0))
  * except Exception:
  */
+      __Pyx_TraceLine(254,0,__PYX_ERR(0, 254, __pyx_L19_error))
       __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L19_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237072,6 +251143,7 @@ if (!__Pyx_RefNanny) {
  *     print u"Unknown libxml2 version: %s" % (<unsigned char*>tree.xmlParserVersion).decode("latin1")
  *     _LIBXML_VERSION_INT = 0
  */
+    __Pyx_TraceLine(256,0,__PYX_ERR(0, 256, __pyx_L21_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -237087,6 +251159,7 @@ if (!__Pyx_RefNanny) {
  *     _LIBXML_VERSION_INT = 0
  * 
  */
+      __Pyx_TraceLine(257,0,__PYX_ERR(0, 257, __pyx_L21_except_error))
       __pyx_t_11 = ((unsigned char *)xmlParserVersion);
       __pyx_t_9 = __Pyx_decode_c_string(((char const *)__pyx_t_11), 0, strlen(((char const *)__pyx_t_11)), NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 257, __pyx_L21_except_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -237103,6 +251176,7 @@ if (!__Pyx_RefNanny) {
  * 
  * LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT)
  */
+      __Pyx_TraceLine(258,0,__PYX_ERR(0, 258, __pyx_L21_except_error))
       __pyx_v_4lxml_5etree__LIBXML_VERSION_INT = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237139,6 +251213,7 @@ if (!__Pyx_RefNanny) {
  * LIBXML_COMPILED_VERSION = __unpackIntVersion(tree.LIBXML_VERSION)
  * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)
  */
+  __Pyx_TraceLine(260,0,__PYX_ERR(0, 260, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree___unpackIntVersion(__pyx_v_4lxml_5etree__LIBXML_VERSION_INT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 260, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_LIBXML_VERSION, __pyx_t_7) < 0) __PYX_ERR(0, 260, __pyx_L1_error)
@@ -237151,6 +251226,7 @@ if (!__Pyx_RefNanny) {
  * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)
  * 
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(0, 261, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree___unpackIntVersion(LIBXML_VERSION); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_LIBXML_COMPILED_VERSION, __pyx_t_7) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
@@ -237163,6 +251239,7 @@ if (!__Pyx_RefNanny) {
  * 
  * __version__ = tree.LXML_VERSION_STRING.decode("ascii")
  */
+  __Pyx_TraceLine(262,0,__PYX_ERR(0, 262, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyBytes_FromString(LXML_VERSION_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __pyx_f_4lxml_5etree___unpackDottedVersion(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
@@ -237178,6 +251255,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(264,0,__PYX_ERR(0, 264, __pyx_L1_error))
   __pyx_t_1 = __Pyx_decode_c_string(LXML_VERSION_STRING, 0, strlen(LXML_VERSION_STRING), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_version_2, __pyx_t_1) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
@@ -237190,6 +251268,7 @@ if (!__Pyx_RefNanny) {
  *     ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U)
  * 
  */
+  __Pyx_TraceLine(626,0,__PYX_ERR(5, 626, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 626, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -237200,6 +251279,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub
  */
+  __Pyx_TraceLine(627,0,__PYX_ERR(5, 627, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_U); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 627, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
@@ -237210,6 +251290,7 @@ if (!__Pyx_RefNanny) {
  *     ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U)
  * 
  */
+  __Pyx_TraceLine(626,0,__PYX_ERR(5, 626, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 626, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_kp_u_xml_s_encoding_s_s_s);
@@ -237234,6 +251315,7 @@ if (!__Pyx_RefNanny) {
  * cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match
  * 
  */
+  __Pyx_TraceLine(629,0,__PYX_ERR(5, 629, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s_sub); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
@@ -237248,6 +251330,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object _stripEncodingDeclaration(object xml_string):
  */
+  __Pyx_TraceLine(630,0,__PYX_ERR(5, 630, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 630, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
@@ -237262,7 +251345,8 @@ if (!__Pyx_RefNanny) {
  *     u"""clear_error_log()
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3clear_error_log, 0, __pyx_n_s_clear_error_log_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__163)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 11, __pyx_L1_error)
+  __Pyx_TraceLine(11,0,__PYX_ERR(1, 11, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3clear_error_log, 0, __pyx_n_s_clear_error_log_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_error_log_2, __pyx_t_7) < 0) __PYX_ERR(1, 11, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237274,7 +251358,8 @@ if (!__Pyx_RefNanny) {
  *         return _BaseErrorLog(self._first_error, self.last_error)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_BaseErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 187, __pyx_L1_error)
+  __Pyx_TraceLine(187,0,__PYX_ERR(1, 187, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_BaseErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 187, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237287,7 +251372,8 @@ if (!__Pyx_RefNanny) {
  *         pass
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_BaseErrorLog_7receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 193, __pyx_L1_error)
+  __Pyx_TraceLine(193,0,__PYX_ERR(1, 193, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_BaseErrorLog_7receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 193, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 193, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237300,7 +251386,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Creates a shallow copy of this error log.  Reuses the list of
  *         entries.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 283, __pyx_L1_error)
+  __Pyx_TraceLine(283,0,__PYX_ERR(1, 283, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 283, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 283, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237313,7 +251400,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Filter the errors by the given domains and return a new error log
  *         containing the matches.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_17filter_domains, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_domains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 321, __pyx_L1_error)
+  __Pyx_TraceLine(321,0,__PYX_ERR(1, 321, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_17filter_domains, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_domains, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_domains, __pyx_t_7) < 0) __PYX_ERR(1, 321, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237326,7 +251414,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_types(self, types)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_19filter_types, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_types, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 331, __pyx_L1_error)
+  __Pyx_TraceLine(331,0,__PYX_ERR(1, 331, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_19filter_types, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_types, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 331, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_types, __pyx_t_7) < 0) __PYX_ERR(1, 331, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237339,7 +251428,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_levels(self, levels)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_21filter_levels, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_levels, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 343, __pyx_L1_error)
+  __Pyx_TraceLine(343,0,__PYX_ERR(1, 343, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_21filter_levels, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_levels, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_levels, __pyx_t_7) < 0) __PYX_ERR(1, 343, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237352,7 +251442,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_from_level(self, level)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_23filter_from_level, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_level, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 355, __pyx_L1_error)
+  __Pyx_TraceLine(355,0,__PYX_ERR(1, 355, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_23filter_from_level, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_level, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 355, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_level, __pyx_t_7) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237365,7 +251456,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_from_fatals(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_25filter_from_fatals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_fatals, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 364, __pyx_L1_error)
+  __Pyx_TraceLine(364,0,__PYX_ERR(1, 364, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_25filter_from_fatals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_fatals, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_fatals, __pyx_t_7) < 0) __PYX_ERR(1, 364, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237378,7 +251470,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_from_errors(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_27filter_from_errors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_errors, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 371, __pyx_L1_error)
+  __Pyx_TraceLine(371,0,__PYX_ERR(1, 371, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_27filter_from_errors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_errors, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 371, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_errors, __pyx_t_7) < 0) __PYX_ERR(1, 371, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237391,7 +251484,8 @@ if (!__Pyx_RefNanny) {
  *         u"""filter_from_warnings(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_29filter_from_warnings, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_warnin, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 378, __pyx_L1_error)
+  __Pyx_TraceLine(378,0,__PYX_ERR(1, 378, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13_ListErrorLog_29filter_from_warnings, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ListErrorLog_filter_from_warnin, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 378, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_warnings, __pyx_t_7) < 0) __PYX_ERR(1, 378, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237404,7 +251498,8 @@ if (!__Pyx_RefNanny) {
  *         #  TODO: make this a cdef function when Cython supports it
  *         self.disconnect()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 437, __pyx_L1_error)
+  __Pyx_TraceLine(437,0,__PYX_ERR(1, 437, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_exit, __pyx_t_7) < 0) __PYX_ERR(1, 437, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237417,7 +251512,8 @@ if (!__Pyx_RefNanny) {
  *         self._first_error = None
  *         self.last_error = None
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_7clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 457, __pyx_L1_error)
+  __Pyx_TraceLine(457,0,__PYX_ERR(1, 457, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_7clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_clear, __pyx_t_7) < 0) __PYX_ERR(1, 457, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237430,7 +251526,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_9copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 463, __pyx_L1_error)
+  __Pyx_TraceLine(463,0,__PYX_ERR(1, 463, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_9copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 463, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 463, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237443,7 +251540,8 @@ if (!__Pyx_RefNanny) {
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_13receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__191)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 473, __pyx_L1_error)
+  __Pyx_TraceLine(473,0,__PYX_ERR(1, 473, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_ErrorLog_13receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 473, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 473, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237456,7 +251554,8 @@ if (!__Pyx_RefNanny) {
  *         if entry.domain in self._accepted_domains:
  *             _ErrorLog.receive(self, entry)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DomainErrorLog_3receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DomainErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 483, __pyx_L1_error)
+  __Pyx_TraceLine(483,0,__PYX_ERR(1, 483, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DomainErrorLog_3receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DomainErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 483, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DomainErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 483, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237469,7 +251568,8 @@ if (!__Pyx_RefNanny) {
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_RotatingErrorLog_3receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RotatingErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 493, __pyx_L1_error)
+  __Pyx_TraceLine(493,0,__PYX_ERR(1, 493, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_RotatingErrorLog_3receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RotatingErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 493, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 493, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237482,7 +251582,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Dummy method that returns an empty error log.
  *         """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 544, __pyx_L1_error)
+  __Pyx_TraceLine(544,0,__PYX_ERR(1, 544, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 544, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237495,7 +251596,8 @@ if (!__Pyx_RefNanny) {
  *         u"""log(self, log_entry, message, *args)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_5log, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 549, __pyx_L1_error)
+  __Pyx_TraceLine(549,0,__PYX_ERR(1, 549, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_5log, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_log, __pyx_t_7) < 0) __PYX_ERR(1, 549, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237508,7 +251610,8 @@ if (!__Pyx_RefNanny) {
  *         u"""receive(self, log_entry)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_7receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 566, __pyx_L1_error)
+  __Pyx_TraceLine(566,0,__PYX_ERR(1, 566, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10PyErrorLog_7receive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyErrorLog_receive, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 566, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237521,7 +251624,8 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__202, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 582, __pyx_L1_error)
+  __Pyx_TraceLine(582,0,__PYX_ERR(1, 582, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__428, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 582, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_7));
@@ -237535,7 +251639,8 @@ if (!__Pyx_RefNanny) {
  *     u"""use_global_python_log(log)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_5use_global_python_log, 0, __pyx_n_s_use_global_python_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 616, __pyx_L1_error)
+  __Pyx_TraceLine(616,0,__PYX_ERR(1, 616, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_5use_global_python_log, 0, __pyx_n_s_use_global_python_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 616, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_use_global_python_log, __pyx_t_7) < 0) __PYX_ERR(1, 616, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237547,11 +251652,12 @@ if (!__Pyx_RefNanny) {
  *     u"Libxml2 error levels"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__205); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __Pyx_TraceLine(804,0,__PYX_ERR(1, 804, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__430); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 804, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__205, __pyx_n_s_ErrorLevels, __pyx_n_s_ErrorLevels, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_levels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__430, __pyx_n_s_ErrorLevels, __pyx_n_s_ErrorLevels, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_levels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 804, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorLevels, __pyx_tuple__205, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorLevels, __pyx_tuple__430, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 804, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorLevels, __pyx_t_1) < 0) __PYX_ERR(1, 804, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237565,11 +251671,12 @@ if (!__Pyx_RefNanny) {
  *     u"Libxml2 error domains"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__206); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __Pyx_TraceLine(807,0,__PYX_ERR(1, 807, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__431); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 807, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__206, __pyx_n_s_ErrorDomains, __pyx_n_s_ErrorDomains, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_domains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__431, __pyx_n_s_ErrorDomains, __pyx_n_s_ErrorDomains, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_domains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 807, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorDomains, __pyx_tuple__206, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorDomains, __pyx_tuple__431, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 807, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorDomains, __pyx_t_1) < 0) __PYX_ERR(1, 807, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237583,11 +251690,12 @@ if (!__Pyx_RefNanny) {
  *     u"Libxml2 error types"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__207); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __Pyx_TraceLine(810,0,__PYX_ERR(1, 810, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__432); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 810, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__207, __pyx_n_s_ErrorTypes, __pyx_n_s_ErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__432, __pyx_n_s_ErrorTypes, __pyx_n_s_ErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_error_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 810, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorTypes, __pyx_tuple__207, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorTypes, __pyx_tuple__432, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 810, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorTypes, __pyx_t_1) < 0) __PYX_ERR(1, 810, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237601,11 +251709,12 @@ if (!__Pyx_RefNanny) {
  *     u"Libxml2 RelaxNG error types"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__208); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __Pyx_TraceLine(813,0,__PYX_ERR(1, 813, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__433); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 813, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__208, __pyx_n_s_RelaxNGErrorTypes, __pyx_n_s_RelaxNGErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_RelaxNG_error_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__433, __pyx_n_s_RelaxNGErrorTypes, __pyx_n_s_RelaxNGErrorTypes, (PyObject *) NULL, __pyx_n_s_lxml_etree, __pyx_kp_s_Libxml2_RelaxNG_error_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 813, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_RelaxNGErrorTypes, __pyx_tuple__208, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_RelaxNGErrorTypes, __pyx_tuple__433, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 813, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_1) < 0) __PYX_ERR(1, 813, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -237619,6 +251728,7 @@ if (!__Pyx_RefNanny) {
  * NONE=0
  * WARNING=1
  */
+  __Pyx_TraceLine(820,0,__PYX_ERR(1, 820, __pyx_L1_error))
   __Pyx_INCREF(__pyx_kp_s_NONE_0_WARNING_1_ERROR_2_FATAL_3);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_LEVELS, __pyx_kp_s_NONE_0_WARNING_1_ERROR_2_FATAL_3);
@@ -237631,6 +251741,7 @@ if (!__Pyx_RefNanny) {
  * NONE=0
  * PARSER=1
  */
+  __Pyx_TraceLine(827,0,__PYX_ERR(1, 827, __pyx_L1_error))
   __Pyx_INCREF(__pyx_kp_s_NONE_0_PARSER_1_TREE_2_NAMESPACE);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_DOMAINS, __pyx_kp_s_NONE_0_PARSER_1_TREE_2_NAMESPACE);
@@ -237643,6 +251754,7 @@ if (!__Pyx_RefNanny) {
  * ERR_OK=0
  * ERR_INTERNAL_ERROR=1
  */
+  __Pyx_TraceLine(861,0,__PYX_ERR(1, 861, __pyx_L1_error))
   __Pyx_INCREF(__pyx_kp_s_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES, __pyx_kp_s_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER);
@@ -237655,6 +251767,7 @@ if (!__Pyx_RefNanny) {
  * RELAXNG_OK=0
  * RELAXNG_ERR_MEMORY=1
  */
+  __Pyx_TraceLine(1598,0,__PYX_ERR(1, 1598, __pyx_L1_error))
   __Pyx_INCREF(__pyx_kp_s_RELAXNG_OK_0_RELAXNG_ERR_MEMORY);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, __pyx_kp_s_RELAXNG_OK_0_RELAXNG_ERR_MEMORY);
@@ -237665,6 +251778,7 @@ if (!__Pyx_RefNanny) {
  * 
  * __initErrorConstants()             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(1642,0,__PYX_ERR(1, 1642, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree___initErrorConstants(); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1642, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237676,6 +251790,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef _Document _documentFactory(xmlDoc* c_doc, _BaseParser parser):
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(0, 492, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_5etree___initPrefixCache(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 492, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__PREFIX_CACHE);
@@ -237690,9 +251805,10 @@ if (!__Pyx_RefNanny) {
  *     ur"[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#@$_%-]+").search
  * 
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(0, 506, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__209, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__434, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -237703,6 +251819,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(507,0,__PYX_ERR(0, 507, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_search); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -237718,7 +251835,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Removes DOCTYPE and internal subset from the document."""
  *         cdef xmlDoc* c_doc = self._doc._c_doc
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7DocInfo_3clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DocInfo_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__211)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __Pyx_TraceLine(540,0,__PYX_ERR(0, 540, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7DocInfo_3clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DocInfo_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DocInfo->tp_dict, __pyx_n_s_clear, __pyx_t_7) < 0) __PYX_ERR(0, 540, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237731,7 +251849,8 @@ if (!__Pyx_RefNanny) {
  *         u"""_init(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element__init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 697, __pyx_L1_error)
+  __Pyx_TraceLine(697,0,__PYX_ERR(0, 697, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element__init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 697, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_init_2, __pyx_t_7) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237744,7 +251863,8 @@ if (!__Pyx_RefNanny) {
  *         u"__deepcopy__(self, memo)"
  *         return self.__copy__()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_9__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 784, __pyx_L1_error)
+  __Pyx_TraceLine(784,0,__PYX_ERR(0, 784, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_9__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_deepcopy, __pyx_t_7) < 0) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237757,7 +251877,8 @@ if (!__Pyx_RefNanny) {
  *         u"__copy__(self)"
  *         cdef xmlDoc* c_doc
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_11__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 788, __pyx_L1_error)
+  __Pyx_TraceLine(788,0,__PYX_ERR(0, 788, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_11__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_copy_2, __pyx_t_7) < 0) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237770,7 +251891,8 @@ if (!__Pyx_RefNanny) {
  *         u"""set(self, key, value)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_13set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 807, __pyx_L1_error)
+  __Pyx_TraceLine(807,0,__PYX_ERR(0, 807, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_13set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 807, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_set, __pyx_t_7) < 0) __PYX_ERR(0, 807, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237783,7 +251905,8 @@ if (!__Pyx_RefNanny) {
  *         u"""append(self, element)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_15append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __Pyx_TraceLine(815,0,__PYX_ERR(0, 815, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_15append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_append, __pyx_t_7) < 0) __PYX_ERR(0, 815, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237796,7 +251919,8 @@ if (!__Pyx_RefNanny) {
  *         u"""addnext(self, element)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_17addnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_addnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 824, __pyx_L1_error)
+  __Pyx_TraceLine(824,0,__PYX_ERR(0, 824, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_17addnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_addnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 824, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_addnext, __pyx_t_7) < 0) __PYX_ERR(0, 824, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237809,7 +251933,8 @@ if (!__Pyx_RefNanny) {
  *         u"""addprevious(self, element)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_19addprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_addprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __Pyx_TraceLine(843,0,__PYX_ERR(0, 843, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_19addprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_addprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_addprevious, __pyx_t_7) < 0) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237822,7 +251947,8 @@ if (!__Pyx_RefNanny) {
  *         u"""extend(self, elements)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_21extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __Pyx_TraceLine(862,0,__PYX_ERR(0, 862, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_21extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_extend, __pyx_t_7) < 0) __PYX_ERR(0, 862, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237835,7 +251961,8 @@ if (!__Pyx_RefNanny) {
  *         u"""clear(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_23clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 875, __pyx_L1_error)
+  __Pyx_TraceLine(875,0,__PYX_ERR(0, 875, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_23clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_clear, __pyx_t_7) < 0) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237848,7 +251975,8 @@ if (!__Pyx_RefNanny) {
  *         u"""insert(self, index, element)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_25insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_insert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 906, __pyx_L1_error)
+  __Pyx_TraceLine(906,0,__PYX_ERR(0, 906, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_25insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_insert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 906, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_insert, __pyx_t_7) < 0) __PYX_ERR(0, 906, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237861,7 +251989,8 @@ if (!__Pyx_RefNanny) {
  *         u"""remove(self, element)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_27remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_remove, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+  __Pyx_TraceLine(926,0,__PYX_ERR(0, 926, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_27remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_remove, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_remove, __pyx_t_7) < 0) __PYX_ERR(0, 926, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237874,7 +252003,8 @@ if (!__Pyx_RefNanny) {
  *                 _Element new_element not None):
  *         u"""replace(self, old_element, new_element)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_29replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_replace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L1_error)
+  __Pyx_TraceLine(946,0,__PYX_ERR(0, 946, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_29replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_replace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_replace, __pyx_t_7) < 0) __PYX_ERR(0, 946, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237887,7 +252017,8 @@ if (!__Pyx_RefNanny) {
  *         u"__reversed__(self)"
  *         return ElementChildIterator(self, reversed=True)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_43__reversed__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___reversed, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error)
+  __Pyx_TraceLine(1203,0,__PYX_ERR(0, 1203, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_43__reversed__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element___reversed, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_reversed_2, __pyx_t_7) < 0) __PYX_ERR(0, 1203, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237900,7 +252031,8 @@ if (!__Pyx_RefNanny) {
  *         u"""index(self, child, start=None, stop=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_45index, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_index, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __Pyx_TraceLine(1207,0,__PYX_ERR(0, 1207, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_45index, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_index, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(0, 1207, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237913,7 +252045,8 @@ if (!__Pyx_RefNanny) {
  *         u"""get(self, key, default=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_47get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1294, __pyx_L1_error)
+  __Pyx_TraceLine(1294,0,__PYX_ERR(0, 1294, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_47get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1294, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 1294, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237926,7 +252059,8 @@ if (!__Pyx_RefNanny) {
  *         u"""keys(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_49keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1302, __pyx_L1_error)
+  __Pyx_TraceLine(1302,0,__PYX_ERR(0, 1302, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_49keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_keys, __pyx_t_7) < 0) __PYX_ERR(0, 1302, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237939,7 +252073,8 @@ if (!__Pyx_RefNanny) {
  *         u"""values(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_51values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__245)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1311, __pyx_L1_error)
+  __Pyx_TraceLine(1311,0,__PYX_ERR(0, 1311, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_51values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1311, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_values, __pyx_t_7) < 0) __PYX_ERR(0, 1311, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237952,7 +252087,8 @@ if (!__Pyx_RefNanny) {
  *         u"""items(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_53items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__247)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1320, __pyx_L1_error)
+  __Pyx_TraceLine(1320,0,__PYX_ERR(0, 1320, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_53items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_items, __pyx_t_7) < 0) __PYX_ERR(0, 1320, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237965,7 +252101,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getchildren(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_55getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __Pyx_TraceLine(1329,0,__PYX_ERR(0, 1329, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_55getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getchildren, __pyx_t_7) < 0) __PYX_ERR(0, 1329, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237978,7 +252115,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getparent(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_57getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __Pyx_TraceLine(1342,0,__PYX_ERR(0, 1342, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_57getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1342, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getparent, __pyx_t_7) < 0) __PYX_ERR(0, 1342, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -237991,7 +252129,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getnext(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_59getnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __Pyx_TraceLine(1354,0,__PYX_ERR(0, 1354, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_59getnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1354, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getnext, __pyx_t_7) < 0) __PYX_ERR(0, 1354, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238004,7 +252143,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getprevious(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_61getprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__255)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1366, __pyx_L1_error)
+  __Pyx_TraceLine(1366,0,__PYX_ERR(0, 1366, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_61getprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getprevious, __pyx_t_7) < 0) __PYX_ERR(0, 1366, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238017,7 +252157,8 @@ if (!__Pyx_RefNanny) {
  *         u"""itersiblings(self, tag=None, *tags, preceding=False)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_63itersiblings, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_itersiblings, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__257)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1378, __pyx_L1_error)
+  __Pyx_TraceLine(1378,0,__PYX_ERR(0, 1378, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_63itersiblings, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_itersiblings, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1378, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_itersiblings, __pyx_t_7) < 0) __PYX_ERR(0, 1378, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238030,7 +252171,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterancestors(self, tag=None, *tags)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_65iterancestors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterancestors, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1396, __pyx_L1_error)
+  __Pyx_TraceLine(1396,0,__PYX_ERR(0, 1396, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_65iterancestors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterancestors, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1396, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterancestors, __pyx_t_7) < 0) __PYX_ERR(0, 1396, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238043,7 +252185,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterdescendants(self, tag=None, *tags)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_67iterdescendants, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterdescendants, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__261)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1408, __pyx_L1_error)
+  __Pyx_TraceLine(1408,0,__PYX_ERR(0, 1408, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_67iterdescendants, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterdescendants, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1408, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterdescendants, __pyx_t_7) < 0) __PYX_ERR(0, 1408, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238056,7 +252199,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterchildren(self, tag=None, *tags, reversed=False)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_69iterchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1421, __pyx_L1_error)
+  __Pyx_TraceLine(1421,0,__PYX_ERR(0, 1421, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_69iterchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1421, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterchildren, __pyx_t_7) < 0) __PYX_ERR(0, 1421, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238069,7 +252213,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getroottree(self)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_71getroottree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getroottree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
+  __Pyx_TraceLine(1434,0,__PYX_ERR(0, 1434, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_71getroottree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getroottree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getroottree, __pyx_t_7) < 0) __PYX_ERR(0, 1434, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238082,7 +252227,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getiterator(self, tag=None, *tags)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_73getiterator, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getiterator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1446, __pyx_L1_error)
+  __Pyx_TraceLine(1446,0,__PYX_ERR(0, 1446, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_73getiterator, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_getiterator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getiterator, __pyx_t_7) < 0) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238095,7 +252241,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_75iter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1468, __pyx_L1_error)
+  __Pyx_TraceLine(1468,0,__PYX_ERR(0, 1468, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_75iter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iter, __pyx_t_7) < 0) __PYX_ERR(0, 1468, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238108,7 +252255,8 @@ if (!__Pyx_RefNanny) {
  *         u"""itertext(self, tag=None, *tags, with_tail=True)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_77itertext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_itertext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__271)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1492, __pyx_L1_error)
+  __Pyx_TraceLine(1492,0,__PYX_ERR(0, 1492, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_77itertext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_itertext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1492, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_itertext, __pyx_t_7) < 0) __PYX_ERR(0, 1492, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238121,7 +252269,8 @@ if (!__Pyx_RefNanny) {
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_79makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__273)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __Pyx_TraceLine(1507,0,__PYX_ERR(0, 1507, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_79makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_makeelement, __pyx_t_7) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238134,7 +252283,8 @@ if (!__Pyx_RefNanny) {
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_81find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_find, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__275)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1516, __pyx_L1_error)
+  __Pyx_TraceLine(1516,0,__PYX_ERR(0, 1516, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_81find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_find, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_find, __pyx_t_7) < 0) __PYX_ERR(0, 1516, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238147,7 +252297,8 @@ if (!__Pyx_RefNanny) {
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_83findtext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_findtext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__277)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1529, __pyx_L1_error)
+  __Pyx_TraceLine(1529,0,__PYX_ERR(0, 1529, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_83findtext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_findtext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1529, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_findtext, __pyx_t_7) < 0) __PYX_ERR(0, 1529, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238160,7 +252311,8 @@ if (!__Pyx_RefNanny) {
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_85findall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_findall, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1542, __pyx_L1_error)
+  __Pyx_TraceLine(1542,0,__PYX_ERR(0, 1542, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_85findall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_findall, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1542, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_findall, __pyx_t_7) < 0) __PYX_ERR(0, 1542, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238173,7 +252325,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_87iterfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterfind, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__281)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1555, __pyx_L1_error)
+  __Pyx_TraceLine(1555,0,__PYX_ERR(0, 1555, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_87iterfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_iterfind, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1555, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterfind, __pyx_t_7) < 0) __PYX_ERR(0, 1555, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238186,7 +252339,8 @@ if (!__Pyx_RefNanny) {
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_89xpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_xpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
+  __Pyx_TraceLine(1568,0,__PYX_ERR(0, 1568, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_89xpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_xpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_xpath, __pyx_t_7) < 0) __PYX_ERR(0, 1568, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238199,7 +252353,8 @@ if (!__Pyx_RefNanny) {
  *         """
  *         Run the CSS expression on this element and its children,
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_91cssselect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_cssselect, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1579, __pyx_L1_error)
+  __Pyx_TraceLine(1579,0,__PYX_ERR(0, 1579, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8_Element_91cssselect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Element_cssselect, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1579, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_cssselect, __pyx_t_7) < 0) __PYX_ERR(0, 1579, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238212,7 +252367,8 @@ if (!__Pyx_RefNanny) {
  *         u"set(self, key, value)"
  *         self._raiseImmutable()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_1set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1629, __pyx_L1_error)
+  __Pyx_TraceLine(1629,0,__PYX_ERR(0, 1629, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_1set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_set, __pyx_t_7) < 0) __PYX_ERR(0, 1629, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238225,7 +252381,8 @@ if (!__Pyx_RefNanny) {
  *         u"append(self, value)"
  *         self._raiseImmutable()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_3append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1633, __pyx_L1_error)
+  __Pyx_TraceLine(1633,0,__PYX_ERR(0, 1633, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_3append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1633, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_append, __pyx_t_7) < 0) __PYX_ERR(0, 1633, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238238,7 +252395,8 @@ if (!__Pyx_RefNanny) {
  *         u"insert(self, index, value)"
  *         self._raiseImmutable()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_5insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_insert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
+  __Pyx_TraceLine(1637,0,__PYX_ERR(0, 1637, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_5insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_insert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_insert, __pyx_t_7) < 0) __PYX_ERR(0, 1637, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238251,7 +252409,8 @@ if (!__Pyx_RefNanny) {
  *         u"get(self, key, default=None)"
  *         return None
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_13get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1676, __pyx_L1_error)
+  __Pyx_TraceLine(1676,0,__PYX_ERR(0, 1676, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_13get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__107)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 1676, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238264,7 +252423,8 @@ if (!__Pyx_RefNanny) {
  *         u"keys(self)"
  *         return []
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_15keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1680, __pyx_L1_error)
+  __Pyx_TraceLine(1680,0,__PYX_ERR(0, 1680, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_15keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1680, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_keys, __pyx_t_7) < 0) __PYX_ERR(0, 1680, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238277,7 +252437,8 @@ if (!__Pyx_RefNanny) {
  *         u"items(self)"
  *         return []
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_17items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1684, __pyx_L1_error)
+  __Pyx_TraceLine(1684,0,__PYX_ERR(0, 1684, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_17items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1684, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_items, __pyx_t_7) < 0) __PYX_ERR(0, 1684, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238290,7 +252451,8 @@ if (!__Pyx_RefNanny) {
  *         u"values(self)"
  *         return []
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_19values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __Pyx_TraceLine(1688,0,__PYX_ERR(0, 1688, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20__ContentOnlyElement_19values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ContentOnlyElement_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1688, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_values, __pyx_t_7) < 0) __PYX_ERR(0, 1688, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238303,7 +252465,8 @@ if (!__Pyx_RefNanny) {
  *         u"""get(self, key, default=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_ProcessingInstruction_3get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProcessingInstruction_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__301)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1725, __pyx_L1_error)
+  __Pyx_TraceLine(1725,0,__PYX_ERR(0, 1725, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_ProcessingInstruction_3get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProcessingInstruction_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1725, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ProcessingInstruction->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 1725, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -238316,6 +252479,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef class _Entity(__ContentOnlyElement):
  */
+  __Pyx_TraceLine(1749,0,__PYX_ERR(0, 1749, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1749, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_U); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1749, __pyx_L1_error)
@@ -238347,7 +252511,8 @@ if (!__Pyx_RefNanny) {
  *         u"""parse(self, source, parser=None, base_url=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_1parse, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
+  __Pyx_TraceLine(1869,0,__PYX_ERR(0, 1869, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_1parse, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_parse, __pyx_t_1) < 0) __PYX_ERR(0, 1869, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238360,7 +252525,8 @@ if (!__Pyx_RefNanny) {
  *         u"""_setroot(self, root)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_3_setroot, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree__setroot, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__305)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1885, __pyx_L1_error)
+  __Pyx_TraceLine(1885,0,__PYX_ERR(0, 1885, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_3_setroot, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree__setroot, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1885, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_setroot, __pyx_t_1) < 0) __PYX_ERR(0, 1885, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238373,7 +252539,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getroot(self)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_5getroot, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getroot, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1896, __pyx_L1_error)
+  __Pyx_TraceLine(1896,0,__PYX_ERR(0, 1896, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_5getroot, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getroot, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__118)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1896, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getroot, __pyx_t_1) < 0) __PYX_ERR(0, 1896, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238386,7 +252553,8 @@ if (!__Pyx_RefNanny) {
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_7__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1903, __pyx_L1_error)
+  __Pyx_TraceLine(1903,0,__PYX_ERR(0, 1903, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_7__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1903, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_copy_2, __pyx_t_1) < 0) __PYX_ERR(0, 1903, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238399,7 +252567,8 @@ if (!__Pyx_RefNanny) {
  *         cdef _Element root
  *         cdef _Document doc
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_9__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1906, __pyx_L1_error)
+  __Pyx_TraceLine(1906,0,__PYX_ERR(0, 1906, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_9__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1906, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(0, 1906, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238412,7 +252581,8 @@ if (!__Pyx_RefNanny) {
  *               pretty_print=False, xml_declaration=None, with_tail=True,
  *               standalone=None, doctype=None, compression=0,
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_11write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1946, __pyx_L1_error)
+  __Pyx_TraceLine(1946,0,__PYX_ERR(0, 1946, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_11write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__121)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1946, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(0, 1946, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238425,7 +252595,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getpath(self, element)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_13getpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2043, __pyx_L1_error)
+  __Pyx_TraceLine(2043,0,__PYX_ERR(0, 2043, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_13getpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2043, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getpath, __pyx_t_1) < 0) __PYX_ERR(0, 2043, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238438,7 +252609,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getelementpath(self, element)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_15getelementpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getelementpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2081, __pyx_L1_error)
+  __Pyx_TraceLine(2081,0,__PYX_ERR(0, 2081, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_15getelementpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getelementpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2081, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getelementpath, __pyx_t_1) < 0) __PYX_ERR(0, 2081, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238451,7 +252623,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getiterator(self, *tags, tag=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_17getiterator, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getiterator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2145, __pyx_L1_error)
+  __Pyx_TraceLine(2145,0,__PYX_ERR(0, 2145, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_17getiterator, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_getiterator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2145, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getiterator, __pyx_t_1) < 0) __PYX_ERR(0, 2145, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238464,7 +252637,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_19iter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error)
+  __Pyx_TraceLine(2169,0,__PYX_ERR(0, 2169, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_19iter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_iter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_iter, __pyx_t_1) < 0) __PYX_ERR(0, 2169, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238477,7 +252651,8 @@ if (!__Pyx_RefNanny) {
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_21find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_find, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2187, __pyx_L1_error)
+  __Pyx_TraceLine(2187,0,__PYX_ERR(0, 2187, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_21find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_find, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_find, __pyx_t_1) < 0) __PYX_ERR(0, 2187, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238490,7 +252665,8 @@ if (!__Pyx_RefNanny) {
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_23findtext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_findtext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error)
+  __Pyx_TraceLine(2204,0,__PYX_ERR(0, 2204, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_23findtext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_findtext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_findtext, __pyx_t_1) < 0) __PYX_ERR(0, 2204, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238503,7 +252679,8 @@ if (!__Pyx_RefNanny) {
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_25findall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_findall, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2221, __pyx_L1_error)
+  __Pyx_TraceLine(2221,0,__PYX_ERR(0, 2221, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_25findall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_findall, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_findall, __pyx_t_1) < 0) __PYX_ERR(0, 2221, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238516,7 +252693,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_27iterfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_iterfind, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2238, __pyx_L1_error)
+  __Pyx_TraceLine(2238,0,__PYX_ERR(0, 2238, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_27iterfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_iterfind, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__139)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2238, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_iterfind, __pyx_t_1) < 0) __PYX_ERR(0, 2238, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238529,7 +252707,8 @@ if (!__Pyx_RefNanny) {
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_29xpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2255, __pyx_L1_error)
+  __Pyx_TraceLine(2255,0,__PYX_ERR(0, 2255, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_29xpath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xpath, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xpath, __pyx_t_1) < 0) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238542,7 +252721,8 @@ if (!__Pyx_RefNanny) {
  *         u"""xslt(self, _xslt, extensions=None, access_control=None, **_kw)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_31xslt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xslt, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__333)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error)
+  __Pyx_TraceLine(2280,0,__PYX_ERR(0, 2280, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_31xslt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xslt, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xslt_3, __pyx_t_1) < 0) __PYX_ERR(0, 2280, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238555,7 +252735,8 @@ if (!__Pyx_RefNanny) {
  *         u"""relaxng(self, relaxng)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_33relaxng, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_relaxng, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__335)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2299, __pyx_L1_error)
+  __Pyx_TraceLine(2299,0,__PYX_ERR(0, 2299, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_33relaxng, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_relaxng, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_relaxng, __pyx_t_1) < 0) __PYX_ERR(0, 2299, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238568,7 +252749,8 @@ if (!__Pyx_RefNanny) {
  *         u"""xmlschema(self, xmlschema)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_35xmlschema, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xmlschema, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2317, __pyx_L1_error)
+  __Pyx_TraceLine(2317,0,__PYX_ERR(0, 2317, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_35xmlschema, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xmlschema, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xmlschema, __pyx_t_1) < 0) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238581,7 +252763,8 @@ if (!__Pyx_RefNanny) {
  *         u"""xinclude(self)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_37xinclude, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xinclude, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2335, __pyx_L1_error)
+  __Pyx_TraceLine(2335,0,__PYX_ERR(0, 2335, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_37xinclude, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_xinclude, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__145)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2335, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xinclude, __pyx_t_1) < 0) __PYX_ERR(0, 2335, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238594,7 +252777,8 @@ if (!__Pyx_RefNanny) {
  *                    compression=0, inclusive_ns_prefixes=None):
  *         u"""write_c14n(self, file, exclusive=False, with_comments=True,
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_39write_c14n, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_write_c14n, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2350, __pyx_L1_error)
+  __Pyx_TraceLine(2350,0,__PYX_ERR(0, 2350, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ElementTree_39write_c14n, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementTree_write_c14n, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2350, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_write_c14n, __pyx_t_1) < 0) __PYX_ERR(0, 2350, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238607,7 +252791,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_7update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_update, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error)
+  __Pyx_TraceLine(2414,0,__PYX_ERR(0, 2414, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_7update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_update, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_update, __pyx_t_1) < 0) __PYX_ERR(0, 2414, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238620,7 +252805,8 @@ if (!__Pyx_RefNanny) {
  *         if len(default) > 1:
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_9pop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_pop, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2421, __pyx_L1_error)
+  __Pyx_TraceLine(2421,0,__PYX_ERR(0, 2421, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_9pop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_pop, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2421, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_pop, __pyx_t_1) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238633,7 +252819,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node = self._element._c_node
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_11clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__347)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2434, __pyx_L1_error)
+  __Pyx_TraceLine(2434,0,__PYX_ERR(0, 2434, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_11clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2434, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_clear, __pyx_t_1) < 0) __PYX_ERR(0, 2434, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238646,7 +252833,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_15__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__349)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2445, __pyx_L1_error)
+  __Pyx_TraceLine(2445,0,__PYX_ERR(0, 2445, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_15__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2445, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_copy_2, __pyx_t_1) < 0) __PYX_ERR(0, 2445, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238659,7 +252847,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_17__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__351)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2449, __pyx_L1_error)
+  __Pyx_TraceLine(2449,0,__PYX_ERR(0, 2449, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_17__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2449, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(0, 2449, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238672,7 +252861,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return _getAttributeValue(self._element, key, default)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_25get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__353)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2479, __pyx_L1_error)
+  __Pyx_TraceLine(2479,0,__PYX_ERR(0, 2479, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_25get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2479, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_get, __pyx_t_1) < 0) __PYX_ERR(0, 2479, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238685,7 +252875,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 1)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_27keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2483, __pyx_L1_error)
+  __Pyx_TraceLine(2483,0,__PYX_ERR(0, 2483, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_27keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2483, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_keys, __pyx_t_1) < 0) __PYX_ERR(0, 2483, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238698,7 +252889,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 1))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_31iterkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_iterkeys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__357)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2491, __pyx_L1_error)
+  __Pyx_TraceLine(2491,0,__PYX_ERR(0, 2491, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_31iterkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_iterkeys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2491, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_iterkeys, __pyx_t_1) < 0) __PYX_ERR(0, 2491, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238711,7 +252903,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 2)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_33values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2495, __pyx_L1_error)
+  __Pyx_TraceLine(2495,0,__PYX_ERR(0, 2495, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_33values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_values, __pyx_t_1) < 0) __PYX_ERR(0, 2495, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238724,7 +252917,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 2))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_35itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2499, __pyx_L1_error)
+  __Pyx_TraceLine(2499,0,__PYX_ERR(0, 2499, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_35itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_itervalues, __pyx_t_1) < 0) __PYX_ERR(0, 2499, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238737,7 +252931,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 3)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_37items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2503, __pyx_L1_error)
+  __Pyx_TraceLine(2503,0,__PYX_ERR(0, 2503, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_37items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2503, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_items, __pyx_t_1) < 0) __PYX_ERR(0, 2503, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238750,7 +252945,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_39iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2507, __pyx_L1_error)
+  __Pyx_TraceLine(2507,0,__PYX_ERR(0, 2507, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_39iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_iteritems, __pyx_t_1) < 0) __PYX_ERR(0, 2507, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238763,7 +252959,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidNode(self._element)
  *         return key in self
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_41has_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_has_key, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__367)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
+  __Pyx_TraceLine(2511,0,__PYX_ERR(0, 2511, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_Attrib_41has_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Attrib_has_key, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_has_key, __pyx_t_1) < 0) __PYX_ERR(0, 2511, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238776,9 +252973,10 @@ if (!__Pyx_RefNanny) {
  *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__369)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2988, __pyx_L1_error)
+  __Pyx_TraceLine(2988,0,__PYX_ERR(0, 2988, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2988, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__370);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__515);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 2988, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -238789,9 +252987,10 @@ if (!__Pyx_RefNanny) {
  *     u"""Comment(text=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, 0, __pyx_n_s_Comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3002, __pyx_L1_error)
+  __Pyx_TraceLine(3002,0,__PYX_ERR(0, 3002, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, 0, __pyx_n_s_Comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3002, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__373);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__517);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Comment, __pyx_t_1) < 0) __PYX_ERR(0, 3002, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -238802,9 +253001,10 @@ if (!__Pyx_RefNanny) {
  *     u"""ProcessingInstruction(target, text=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, 0, __pyx_n_s_ProcessingInstruction, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3026, __pyx_L1_error)
+  __Pyx_TraceLine(3026,0,__PYX_ERR(0, 3026, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, 0, __pyx_n_s_ProcessingInstruction, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3026, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__376);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__519);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ProcessingInstruction, __pyx_t_1) < 0) __PYX_ERR(0, 3026, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -238815,6 +253015,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(3054,0,__PYX_ERR(0, 3054, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_PI, __pyx_t_1) < 0) __PYX_ERR(0, 3054, __pyx_L1_error)
@@ -238827,7 +253028,8 @@ if (!__Pyx_RefNanny) {
  *     u"""Entity(name)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, 0, __pyx_n_s_Entity, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__378)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3079, __pyx_L1_error)
+  __Pyx_TraceLine(3079,0,__PYX_ERR(0, 3079, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, 0, __pyx_n_s_Entity, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__172)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3079, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Entity, __pyx_t_1) < 0) __PYX_ERR(0, 3079, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238839,9 +253041,10 @@ if (!__Pyx_RefNanny) {
  *                attrib=None, nsmap=None, **_extra):
  *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, 0, __pyx_n_s_SubElement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3105, __pyx_L1_error)
+  __Pyx_TraceLine(3105,0,__PYX_ERR(0, 3105, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, 0, __pyx_n_s_SubElement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__381);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__522);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 3105, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -238852,13 +253055,14 @@ if (!__Pyx_RefNanny) {
  *     u"""ElementTree(element=None, file=None, parser=None)
  * 
  */
+  __Pyx_TraceLine(3115,0,__PYX_ERR(0, 3115, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3115, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_file, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3115, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_parser, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3115, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, 0, __pyx_n_s_ElementTree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__383)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3115, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, 0, __pyx_n_s_ElementTree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3115, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__384);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__524);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 3115, __pyx_L1_error)
@@ -238871,12 +253075,13 @@ if (!__Pyx_RefNanny) {
  *     u"""HTML(text, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(3141,0,__PYX_ERR(0, 3141, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3141, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, 0, __pyx_n_s_HTML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__386)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3141, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, 0, __pyx_n_s_HTML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__387);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__526);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_HTML, __pyx_t_1) < 0) __PYX_ERR(0, 3141, __pyx_L1_error)
@@ -238889,12 +253094,13 @@ if (!__Pyx_RefNanny) {
  *     u"""XML(text, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(3167,0,__PYX_ERR(0, 3167, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3167, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__389)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3167, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__390);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__528);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_2) < 0) __PYX_ERR(0, 3167, __pyx_L1_error)
@@ -238907,12 +253113,13 @@ if (!__Pyx_RefNanny) {
  *     u"""fromstring(text, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(3198,0,__PYX_ERR(0, 3198, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3198, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3198, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__393);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__530);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_1) < 0) __PYX_ERR(0, 3198, __pyx_L1_error)
@@ -238925,9 +253132,10 @@ if (!__Pyx_RefNanny) {
  *     u"""fromstringlist(strings, parser=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, 0, __pyx_n_s_fromstringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __pyx_L1_error)
+  __Pyx_TraceLine(3219,0,__PYX_ERR(0, 3219, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, 0, __pyx_n_s_fromstringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__396);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__532);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3219, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -238938,7 +253146,8 @@ if (!__Pyx_RefNanny) {
  *     u"""iselement(element)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, 0, __pyx_n_s_iselement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3240, __pyx_L1_error)
+  __Pyx_TraceLine(3240,0,__PYX_ERR(0, 3240, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, 0, __pyx_n_s_iselement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3240, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_iselement, __pyx_t_1) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238950,6 +253159,7 @@ if (!__Pyx_RefNanny) {
  *     u"""dump(elem, pretty_print=True, with_tail=True)
  * 
  */
+  __Pyx_TraceLine(3248,0,__PYX_ERR(0, 3248, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3248, __pyx_L1_error)
@@ -238957,7 +253167,7 @@ if (!__Pyx_RefNanny) {
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pretty_print, __pyx_t_2) < 0) __PYX_ERR(0, 3248, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_with_tail, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 3248, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3248, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -238971,6 +253181,7 @@ if (!__Pyx_RefNanny) {
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
+  __Pyx_TraceLine(3261,0,__PYX_ERR(0, 3261, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_encoding, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3261, __pyx_L1_error)
@@ -238984,6 +253195,7 @@ if (!__Pyx_RefNanny) {
  *              standalone=None, doctype=None,
  *              bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None):
  */
+  __Pyx_TraceLine(3262,0,__PYX_ERR(0, 3262, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pretty_print, __pyx_t_1) < 0) __PYX_ERR(0, 3261, __pyx_L1_error)
@@ -239002,6 +253214,7 @@ if (!__Pyx_RefNanny) {
  *     u"""tostring(element_or_tree, encoding=None, method="xml",
  *                  xml_declaration=None, pretty_print=False, with_tail=True,
  */
+  __Pyx_TraceLine(3264,0,__PYX_ERR(0, 3264, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_exclusive, __pyx_t_1) < 0) __PYX_ERR(0, 3261, __pyx_L1_error)
@@ -239019,7 +253232,8 @@ if (!__Pyx_RefNanny) {
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, 0, __pyx_n_s_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__402)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3261, __pyx_L1_error)
+  __Pyx_TraceLine(3261,0,__PYX_ERR(0, 3261, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, 0, __pyx_n_s_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239033,7 +253247,8 @@ if (!__Pyx_RefNanny) {
  *     u"""tostringlist(element_or_tree, *args, **kwargs)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, 0, __pyx_n_s_tostringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__404)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3354, __pyx_L1_error)
+  __Pyx_TraceLine(3354,0,__PYX_ERR(0, 3354, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, 0, __pyx_n_s_tostringlist, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3354, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3354, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239045,6 +253260,7 @@ if (!__Pyx_RefNanny) {
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
+  __Pyx_TraceLine(3366,0,__PYX_ERR(0, 3366, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, ((PyObject*)__pyx_n_u_xml)) < 0) __PYX_ERR(0, 3366, __pyx_L1_error)
@@ -239060,6 +253276,7 @@ if (!__Pyx_RefNanny) {
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  *                   with_tail=True, doctype=None)
  */
+  __Pyx_TraceLine(3367,0,__PYX_ERR(0, 3367, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3367, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_with_tail, __pyx_t_2) < 0) __PYX_ERR(0, 3366, __pyx_L1_error)
@@ -239073,7 +253290,8 @@ if (!__Pyx_RefNanny) {
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, 0, __pyx_n_s_tounicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__406)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3366, __pyx_L1_error)
+  __Pyx_TraceLine(3366,0,__PYX_ERR(0, 3366, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, 0, __pyx_n_s_tounicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239087,12 +253305,13 @@ if (!__Pyx_RefNanny) {
  *     u"""parse(source, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(3400,0,__PYX_ERR(0, 3400, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3400, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3400, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3400, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3400, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__409);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__539);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_1) < 0) __PYX_ERR(0, 3400, __pyx_L1_error)
@@ -239105,9 +253324,10 @@ if (!__Pyx_RefNanny) {
  *     """adopt_external_document(capsule, parser=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_39adopt_external_document, 0, __pyx_n_s_adopt_external_document, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__411)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3432, __pyx_L1_error)
+  __Pyx_TraceLine(3432,0,__PYX_ERR(0, 3432, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_39adopt_external_document, 0, __pyx_n_s_adopt_external_document, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__412);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__541);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_adopt_external_document, __pyx_t_1) < 0) __PYX_ERR(0, 3432, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -239118,7 +253338,8 @@ if (!__Pyx_RefNanny) {
  *         u"__deepcopy__(self, memo)"
  *         return self.__copy__()
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_11__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__414)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 160, __pyx_L1_error)
+  __Pyx_TraceLine(160,0,__PYX_ERR(6, 160, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_11__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(6, 160, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239131,7 +253352,8 @@ if (!__Pyx_RefNanny) {
  *         u"__copy__(self)"
  *         cdef xmlDoc* c_doc
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_13__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__416)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 164, __pyx_L1_error)
+  __Pyx_TraceLine(164,0,__PYX_ERR(6, 164, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_13__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 164, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_copy_2, __pyx_t_1) < 0) __PYX_ERR(6, 164, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239144,7 +253366,8 @@ if (!__Pyx_RefNanny) {
  *         u"""iterchildren(self, tag=None, reversed=False)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_17iterchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_iterchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__418)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 187, __pyx_L1_error)
+  __Pyx_TraceLine(187,0,__PYX_ERR(6, 187, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_17iterchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_iterchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__194)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_iterchildren, __pyx_t_1) < 0) __PYX_ERR(6, 187, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239157,7 +253380,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Returns all subelements. The elements are returned in document
  *         order.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_19getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__420)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 199, __pyx_L1_error)
+  __Pyx_TraceLine(199,0,__PYX_ERR(6, 199, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_19getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getchildren, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 199, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_getchildren, __pyx_t_1) < 0) __PYX_ERR(6, 199, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239170,7 +253394,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Returns the parent of this element or None for the root element.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_21getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 214, __pyx_L1_error)
+  __Pyx_TraceLine(214,0,__PYX_ERR(6, 214, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_21getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 214, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_getparent, __pyx_t_1) < 0) __PYX_ERR(6, 214, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239183,7 +253408,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Returns the following sibling of this element or None.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_23getnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__424)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 225, __pyx_L1_error)
+  __Pyx_TraceLine(225,0,__PYX_ERR(6, 225, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_23getnext, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getnext, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 225, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_getnext, __pyx_t_1) < 0) __PYX_ERR(6, 225, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239196,7 +253422,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Returns the preceding sibling of this element or None.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_25getprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__426)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 235, __pyx_L1_error)
+  __Pyx_TraceLine(235,0,__PYX_ERR(6, 235, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_ReadOnlyProxy_25getprevious, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyProxy_getprevious, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 235, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyProxy->tp_dict, __pyx_n_s_getprevious, __pyx_t_1) < 0) __PYX_ERR(6, 235, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239209,7 +253436,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Gets an element attribute.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_1get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__428)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 293, __pyx_L1_error)
+  __Pyx_TraceLine(293,0,__PYX_ERR(6, 293, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_1get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__200)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 293, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy->tp_dict, __pyx_n_s_get, __pyx_t_1) < 0) __PYX_ERR(6, 293, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239222,7 +253450,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Gets a list of attribute names. The names are returned in an
  *         arbitrary order (just like for an ordinary Python dictionary).
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_3keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__430)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 299, __pyx_L1_error)
+  __Pyx_TraceLine(299,0,__PYX_ERR(6, 299, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_3keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 299, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy->tp_dict, __pyx_n_s_keys, __pyx_t_1) < 0) __PYX_ERR(6, 299, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239235,7 +253464,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Gets element attributes, as a sequence. The attributes are returned
  *         in an arbitrary order.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_5values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__432)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 306, __pyx_L1_error)
+  __Pyx_TraceLine(306,0,__PYX_ERR(6, 306, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_5values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy->tp_dict, __pyx_n_s_values, __pyx_t_1) < 0) __PYX_ERR(6, 306, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239248,7 +253478,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Gets element attributes, as a sequence. The attributes are returned
  *         in an arbitrary order.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_7items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__434)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 313, __pyx_L1_error)
+  __Pyx_TraceLine(313,0,__PYX_ERR(6, 313, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ReadOnlyElementProxy_7items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReadOnlyElementProxy_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__203)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 313, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy->tp_dict, __pyx_n_s_items, __pyx_t_1) < 0) __PYX_ERR(6, 313, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239261,7 +253492,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Append a copy of an Element to the list of children.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_OpaqueDocumentWrapper_1append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_OpaqueDocumentWrapper_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__436)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 379, __pyx_L1_error)
+  __Pyx_TraceLine(379,0,__PYX_ERR(6, 379, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_OpaqueDocumentWrapper_1append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_OpaqueDocumentWrapper_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 379, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__OpaqueDocumentWrapper->tp_dict, __pyx_n_s_append, __pyx_t_1) < 0) __PYX_ERR(6, 379, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239274,7 +253506,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Append a copy of all Elements from a sequence to the list of
  *         children.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_OpaqueDocumentWrapper_3extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_OpaqueDocumentWrapper_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__438)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 396, __pyx_L1_error)
+  __Pyx_TraceLine(396,0,__PYX_ERR(6, 396, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_OpaqueDocumentWrapper_3extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_OpaqueDocumentWrapper_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 396, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__OpaqueDocumentWrapper->tp_dict, __pyx_n_s_extend, __pyx_t_1) < 0) __PYX_ERR(6, 396, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239287,7 +253520,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Append a copy of an Element to the list of children.
  *         """
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AppendOnlyElementProxy_1append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AppendOnlyElementProxy_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__440)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 476, __pyx_L1_error)
+  __Pyx_TraceLine(476,0,__PYX_ERR(6, 476, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AppendOnlyElementProxy_1append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AppendOnlyElementProxy_append, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AppendOnlyElementProxy->tp_dict, __pyx_n_s_append, __pyx_t_1) < 0) __PYX_ERR(6, 476, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239300,7 +253534,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Append a copy of all Elements from a sequence to the list of
  *         children.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AppendOnlyElementProxy_3extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AppendOnlyElementProxy_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 488, __pyx_L1_error)
+  __Pyx_TraceLine(488,0,__PYX_ERR(6, 488, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AppendOnlyElementProxy_3extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AppendOnlyElementProxy_extend, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AppendOnlyElementProxy->tp_dict, __pyx_n_s_extend, __pyx_t_1) < 0) __PYX_ERR(6, 488, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239313,7 +253548,8 @@ if (!__Pyx_RefNanny) {
  *         u"""set_fallback(self, lookup)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26FallbackElementClassLookup_5set_fallback, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FallbackElementClassLookup_set_f, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__444)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 248, __pyx_L1_error)
+  __Pyx_TraceLine(248,0,__PYX_ERR(7, 248, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26FallbackElementClassLookup_5set_fallback, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FallbackElementClassLookup_set_f, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_FallbackElementClassLookup->tp_dict, __pyx_n_s_set_fallback, __pyx_t_1) < 0) __PYX_ERR(7, 248, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239326,7 +253562,8 @@ if (!__Pyx_RefNanny) {
  *         u"lookup(self, type, doc, namespace, name)"
  *         return None
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_24CustomElementClassLookup_3lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CustomElementClassLookup_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 430, __pyx_L1_error)
+  __Pyx_TraceLine(430,0,__PYX_ERR(7, 430, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_24CustomElementClassLookup_3lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CustomElementClassLookup_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 430, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_CustomElementClassLookup->tp_dict, __pyx_n_s_lookup, __pyx_t_1) < 0) __PYX_ERR(7, 430, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239339,7 +253576,8 @@ if (!__Pyx_RefNanny) {
  *         u"""lookup(self, doc, element)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_24PythonElementClassLookup_3lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PythonElementClassLookup_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 512, __pyx_L1_error)
+  __Pyx_TraceLine(512,0,__PYX_ERR(7, 512, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_24PythonElementClassLookup_3lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PythonElementClassLookup_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 512, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PythonElementClassLookup->tp_dict, __pyx_n_s_lookup, __pyx_t_1) < 0) __PYX_ERR(7, 512, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -239352,9 +253590,10 @@ if (!__Pyx_RefNanny) {
  *     u"""set_element_class_lookup(lookup = None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_41set_element_class_lookup, 0, __pyx_n_s_set_element_class_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__450)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 549, __pyx_L1_error)
+  __Pyx_TraceLine(549,0,__PYX_ERR(7, 549, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_41set_element_class_lookup, 0, __pyx_n_s_set_element_class_lookup, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__211)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__451);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__561);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_element_class_lookup, __pyx_t_1) < 0) __PYX_ERR(7, 549, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -239365,6 +253604,7 @@ if (!__Pyx_RefNanny) {
  * 
  * set_element_class_lookup(DEFAULT_ELEMENT_CLASS_LOOKUP)
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(7, 561, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_ParserBasedElementClassLookup)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
@@ -239377,6 +253617,7 @@ if (!__Pyx_RefNanny) {
  * 
  * set_element_class_lookup(DEFAULT_ELEMENT_CLASS_LOOKUP)             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(563,0,__PYX_ERR(7, 563, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 563, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 563, __pyx_L1_error)
@@ -239391,7 +253632,8 @@ if (!__Pyx_RefNanny) {
  *         u"""update(self, class_dict_iterable)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_3update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_update, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__453)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
+  __Pyx_TraceLine(29,0,__PYX_ERR(9, 29, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_3update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_update, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_dict, __pyx_n_s_update, __pyx_t_2) < 0) __PYX_ERR(9, 29, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239404,7 +253646,8 @@ if (!__Pyx_RefNanny) {
  *         return list(self._entries.items())
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_11items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__455)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 74, __pyx_L1_error)
+  __Pyx_TraceLine(74,0,__PYX_ERR(9, 74, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_11items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_dict, __pyx_n_s_items, __pyx_t_2) < 0) __PYX_ERR(9, 74, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239417,7 +253660,8 @@ if (!__Pyx_RefNanny) {
  *         return iter(self._entries.items())
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_13iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__457)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 77, __pyx_L1_error)
+  __Pyx_TraceLine(77,0,__PYX_ERR(9, 77, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_13iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_dict, __pyx_n_s_iteritems, __pyx_t_2) < 0) __PYX_ERR(9, 77, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239430,7 +253674,8 @@ if (!__Pyx_RefNanny) {
  *         self._entries.clear()
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_15clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 80, __pyx_L1_error)
+  __Pyx_TraceLine(80,0,__PYX_ERR(9, 80, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_15clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry_clear, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 80, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_dict, __pyx_n_s_clear, __pyx_t_2) < 0) __PYX_ERR(9, 80, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239443,7 +253688,8 @@ if (!__Pyx_RefNanny) {
  *         self[name] = obj
  *         return obj
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_19__deco, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry___deco, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 99, __pyx_L1_error)
+  __Pyx_TraceLine(99,0,__PYX_ERR(9, 99, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_NamespaceRegistry_19__deco, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NamespaceRegistry___deco, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__218)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_dict, __pyx_n_s_deco, __pyx_t_2) < 0) __PYX_ERR(9, 99, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239456,7 +253702,8 @@ if (!__Pyx_RefNanny) {
  *         u"""get_namespace(self, ns_uri)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27ElementNamespaceClassLookup_5get_namespace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementNamespaceClassLookup_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__463)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 147, __pyx_L1_error)
+  __Pyx_TraceLine(147,0,__PYX_ERR(9, 147, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27ElementNamespaceClassLookup_5get_namespace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementNamespaceClassLookup_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 147, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_ElementNamespaceClassLookup->tp_dict, __pyx_n_s_get_namespace, __pyx_t_2) < 0) __PYX_ERR(9, 147, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239469,6 +253716,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def FunctionNamespace(ns_uri):
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(9, 205, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES);
@@ -239483,7 +253731,8 @@ if (!__Pyx_RefNanny) {
  *     u"""FunctionNamespace(ns_uri)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_43FunctionNamespace, 0, __pyx_n_s_FunctionNamespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__465)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 207, __pyx_L1_error)
+  __Pyx_TraceLine(207,0,__PYX_ERR(9, 207, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_43FunctionNamespace, 0, __pyx_n_s_FunctionNamespace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__220)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_FunctionNamespace, __pyx_t_2) < 0) __PYX_ERR(9, 207, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239495,7 +253744,8 @@ if (!__Pyx_RefNanny) {
  *         u"""resolve(self, system_url, public_id, context)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_1resolve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__467)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 25, __pyx_L1_error)
+  __Pyx_TraceLine(25,0,__PYX_ERR(10, 25, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_1resolve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 25, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_Resolver->tp_dict, __pyx_n_s_resolve, __pyx_t_2) < 0) __PYX_ERR(10, 25, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239508,7 +253758,8 @@ if (!__Pyx_RefNanny) {
  *         u"""resolve_empty(self, context)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_3resolve_empty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_empty, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 36, __pyx_L1_error)
+  __Pyx_TraceLine(36,0,__PYX_ERR(10, 36, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_3resolve_empty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_empty, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 36, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_Resolver->tp_dict, __pyx_n_s_resolve_empty, __pyx_t_2) < 0) __PYX_ERR(10, 36, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239521,7 +253772,8 @@ if (!__Pyx_RefNanny) {
  *         u"""resolve_string(self, string, context, base_url=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_5resolve_string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_string, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 48, __pyx_L1_error)
+  __Pyx_TraceLine(48,0,__PYX_ERR(10, 48, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_5resolve_string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_string, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 48, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_Resolver->tp_dict, __pyx_n_s_resolve_string, __pyx_t_2) < 0) __PYX_ERR(10, 48, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239534,7 +253786,8 @@ if (!__Pyx_RefNanny) {
  *         u"""resolve_filename(self, filename, context)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_7resolve_filename, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_filename, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __Pyx_TraceLine(69,0,__PYX_ERR(10, 69, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_7resolve_filename, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_filename, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__224)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_Resolver->tp_dict, __pyx_n_s_resolve_filename, __pyx_t_2) < 0) __PYX_ERR(10, 69, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239547,7 +253800,8 @@ if (!__Pyx_RefNanny) {
  *         u"""resolve_file(self, f, context, base_url=None, close=True)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_9resolve_file, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_file, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 83, __pyx_L1_error)
+  __Pyx_TraceLine(83,0,__PYX_ERR(10, 83, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_8Resolver_9resolve_file, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Resolver_resolve_file, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 83, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_Resolver->tp_dict, __pyx_n_s_resolve_file, __pyx_t_2) < 0) __PYX_ERR(10, 83, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239560,7 +253814,8 @@ if (!__Pyx_RefNanny) {
  *         u"""add(self, resolver)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_3add, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_add, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__477)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 120, __pyx_L1_error)
+  __Pyx_TraceLine(120,0,__PYX_ERR(10, 120, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_3add, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_add, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 120, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry->tp_dict, __pyx_n_s_add, __pyx_t_2) < 0) __PYX_ERR(10, 120, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239573,7 +253828,8 @@ if (!__Pyx_RefNanny) {
  *         u"remove(self, resolver)"
  *         self._resolvers.discard(resolver)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_5remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_remove, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 133, __pyx_L1_error)
+  __Pyx_TraceLine(133,0,__PYX_ERR(10, 133, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_5remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_remove, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry->tp_dict, __pyx_n_s_remove, __pyx_t_2) < 0) __PYX_ERR(10, 133, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239586,7 +253842,8 @@ if (!__Pyx_RefNanny) {
  *         u"copy(self)"
  *         return self._copy()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__481)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 143, __pyx_L1_error)
+  __Pyx_TraceLine(143,0,__PYX_ERR(10, 143, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(10, 143, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239599,7 +253856,8 @@ if (!__Pyx_RefNanny) {
  *         u"resolve(self, system_url, public_id, context)"
  *         for resolver in self._resolvers:
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_9resolve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_resolve, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__483)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 147, __pyx_L1_error)
+  __Pyx_TraceLine(147,0,__PYX_ERR(10, 147, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_ResolverRegistry_9resolve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ResolverRegistry_resolve, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 147, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ResolverRegistry->tp_dict, __pyx_n_s_resolve, __pyx_t_2) < 0) __PYX_ERR(10, 147, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -239612,6 +253870,7 @@ if (!__Pyx_RefNanny) {
  *     """Syntax error while parsing an XML document.
  * 
  */
+  __Pyx_TraceLine(7,0,__PYX_ERR(2, 7, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error)
@@ -239631,9 +253890,10 @@ if (!__Pyx_RefNanny) {
  *         super(_ParseError, self).__init__(message)
  *         self.lineno, self.offset = (line, column - 1)
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_1__init__, 0, __pyx_n_s_ParseError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__485)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 12, __pyx_L1_error)
+  __Pyx_TraceLine(12,0,__PYX_ERR(2, 12, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_1__init__, 0, __pyx_n_s_ParseError___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 12, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__486);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__579);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_8) < 0) __PYX_ERR(2, 12, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -239644,7 +253904,8 @@ if (!__Pyx_RefNanny) {
  *         return self.lineno, self.offset + 1
  * 
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_3position, 0, __pyx_n_s_ParseError_position, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__488)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 19, __pyx_L1_error)
+  __Pyx_TraceLine(19,0,__PYX_ERR(2, 19, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_3position, 0, __pyx_n_s_ParseError_position, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 19, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
 
   /* "src/lxml/parser.pxi":18
@@ -239654,6 +253915,7 @@ if (!__Pyx_RefNanny) {
  *     def position(self):
  *         return self.lineno, self.offset + 1
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(2, 18, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_property, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 18, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -239667,6 +253929,7 @@ if (!__Pyx_RefNanny) {
  *     def position(self, new_pos):
  *         self.lineno, column = new_pos
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(2, 22, __pyx_L1_error))
   __pyx_t_8 = PyObject_GetItem(__pyx_t_7, __pyx_n_s_position);
   if (unlikely(!__pyx_t_8)) {
     PyErr_Clear();
@@ -239685,7 +253948,8 @@ if (!__Pyx_RefNanny) {
  *         self.lineno, column = new_pos
  *         self.offset = column - 1
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_5position, 0, __pyx_n_s_ParseError_position, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 23, __pyx_L1_error)
+  __Pyx_TraceLine(23,0,__PYX_ERR(2, 23, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10ParseError_5position, 0, __pyx_n_s_ParseError_position, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__232)); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_13 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
@@ -239743,6 +254007,7 @@ if (!__Pyx_RefNanny) {
  *     """Syntax error while parsing an XML document.
  * 
  */
+  __Pyx_TraceLine(7,0,__PYX_ERR(2, 7, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ParseError, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 7, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ParseError, __pyx_t_9) < 0) __PYX_ERR(2, 7, __pyx_L1_error)
@@ -239758,6 +254023,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(27,0,__PYX_ERR(2, 27, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParseError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 27, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__ParseError);
@@ -239772,6 +254038,7 @@ if (!__Pyx_RefNanny) {
  *     """Syntax error while parsing an XML document.
  *     """
  */
+  __Pyx_TraceLine(30,0,__PYX_ERR(2, 30, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ParseError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 30, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 30, __pyx_L1_error)
@@ -239798,6 +254065,7 @@ if (!__Pyx_RefNanny) {
  * __GLOBAL_PARSER_CONTEXT.initMainParserContext()
  * 
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(2, 178, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ParserDictionaryContext)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT));
@@ -239812,6 +254080,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(2, 179, __pyx_L1_error))
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);
 
   /* "src/lxml/parser.pxi":186
@@ -239821,6 +254090,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef int _setupPythonUnicode() except -1:
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(2, 186, __pyx_L1_error))
   __pyx_v_4lxml_5etree__UNICODE_ENCODING = NULL;
 
   /* "src/lxml/parser.pxi":242
@@ -239830,6 +254100,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(2, 242, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_5etree__setupPythonUnicode(); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 242, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":503
@@ -239839,6 +254110,7 @@ if (!__Pyx_RefNanny) {
  * 
  * xmlparser.xmlSetExternalEntityLoader(<xmlparser.xmlExternalEntityLoader>_local_resolver)
  */
+  __Pyx_TraceLine(503,0,__PYX_ERR(2, 503, __pyx_L1_error))
   __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER = xmlGetExternalEntityLoader();
 
   /* "src/lxml/parser.pxi":505
@@ -239848,291 +254120,315 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(2, 505, __pyx_L1_error))
   xmlSetExternalEntityLoader(((xmlExternalEntityLoader)__pyx_f_4lxml_5etree__local_resolver));
 
-  /* "src/lxml/parser.pxi":960
+  /* "src/lxml/parser.pxi":961
  *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
  *         self.set_element_class_lookup(lookup)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_3setElementClassLookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_setElementClassLooku, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__492)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 960, __pyx_L1_error)
+  __Pyx_TraceLine(961,0,__PYX_ERR(2, 961, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_3setElementClassLookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_setElementClassLooku, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 961, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_setElementClassLookup, __pyx_t_2) < 0) __PYX_ERR(2, 960, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_setElementClassLookup, __pyx_t_2) < 0) __PYX_ERR(2, 961, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseParser);
 
-  /* "src/lxml/parser.pxi":964
+  /* "src/lxml/parser.pxi":965
  *         self.set_element_class_lookup(lookup)
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_5set_element_class_lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_set_element_class_lo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__494)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 964, __pyx_L1_error)
+  __Pyx_TraceLine(965,0,__PYX_ERR(2, 965, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_5set_element_class_lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_set_element_class_lo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__236)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 965, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_set_element_class_lookup, __pyx_t_2) < 0) __PYX_ERR(2, 964, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_set_element_class_lookup, __pyx_t_2) < 0) __PYX_ERR(2, 965, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseParser);
 
-  /* "src/lxml/parser.pxi":991
+  /* "src/lxml/parser.pxi":992
  *         return parser
  * 
  *     def copy(self):             # <<<<<<<<<<<<<<
  *         u"""copy(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 991, __pyx_L1_error)
+  __Pyx_TraceLine(992,0,__PYX_ERR(2, 992, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 992, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(2, 991, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(2, 992, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseParser);
 
-  /* "src/lxml/parser.pxi":998
+  /* "src/lxml/parser.pxi":999
  *         return self._copy()
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_9makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 998, __pyx_L1_error)
+  __Pyx_TraceLine(999,0,__PYX_ERR(2, 999, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_BaseParser_9makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseParser_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__238)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 999, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_makeelement, __pyx_t_2) < 0) __PYX_ERR(2, 998, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseParser->tp_dict, __pyx_n_s_makeelement, __pyx_t_2) < 0) __PYX_ERR(2, 999, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseParser);
 
-  /* "src/lxml/parser.pxi":1241
+  /* "src/lxml/parser.pxi":1242
  *             return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_FeedParser_1feed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FeedParser_feed, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__500)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1241, __pyx_L1_error)
+  __Pyx_TraceLine(1242,0,__PYX_ERR(2, 1242, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_FeedParser_1feed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FeedParser_feed, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FeedParser->tp_dict, __pyx_n_s_feed, __pyx_t_2) < 0) __PYX_ERR(2, 1241, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FeedParser->tp_dict, __pyx_n_s_feed, __pyx_t_2) < 0) __PYX_ERR(2, 1242, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__FeedParser);
 
-  /* "src/lxml/parser.pxi":1367
+  /* "src/lxml/parser.pxi":1368
  *                 context.cleanup()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
  *         u"""close(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_FeedParser_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FeedParser_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__502)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1367, __pyx_L1_error)
+  __Pyx_TraceLine(1368,0,__PYX_ERR(2, 1368, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11_FeedParser_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FeedParser_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1368, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FeedParser->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(2, 1367, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FeedParser->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(2, 1368, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__FeedParser);
 
-  /* "src/lxml/parser.pxi":1436
+  /* "src/lxml/parser.pxi":1437
  *     xmlparser.XML_PARSE_NOCDATA |
  *     xmlparser.XML_PARSE_NONET   |
  *     xmlparser.XML_PARSE_COMPACT |             # <<<<<<<<<<<<<<
  *     xmlparser.XML_PARSE_BIG_LINES
  *     )
  */
+  __Pyx_TraceLine(1437,0,__PYX_ERR(2, 1437, __pyx_L1_error))
   __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS = ((((XML_PARSE_NOENT | XML_PARSE_NOCDATA) | XML_PARSE_NONET) | XML_PARSE_COMPACT) | XML_PARSE_BIG_LINES);
 
-  /* "src/lxml/parser.pxi":1549
+  /* "src/lxml/parser.pxi":1550
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XMLPullParser_3read_events, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XMLPullParser_read_events, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__504)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1549, __pyx_L1_error)
+  __Pyx_TraceLine(1550,0,__PYX_ERR(2, 1550, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XMLPullParser_3read_events, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XMLPullParser_read_events, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__242)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1550, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XMLPullParser->tp_dict, __pyx_n_s_read_events, __pyx_t_2) < 0) __PYX_ERR(2, 1549, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XMLPullParser->tp_dict, __pyx_n_s_read_events, __pyx_t_2) < 0) __PYX_ERR(2, 1550, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_XMLPullParser);
 
-  /* "src/lxml/parser.pxi":1593
+  /* "src/lxml/parser.pxi":1594
  * 
  * # ET 1.2 compatible name
  * XMLTreeBuilder = ETCompatXMLParser             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLTreeBuilder, ((PyObject *)__pyx_ptype_4lxml_5etree_ETCompatXMLParser)) < 0) __PYX_ERR(2, 1593, __pyx_L1_error)
+  __Pyx_TraceLine(1594,0,__PYX_ERR(2, 1594, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLTreeBuilder, ((PyObject *)__pyx_ptype_4lxml_5etree_ETCompatXMLParser)) < 0) __PYX_ERR(2, 1594, __pyx_L1_error)
 
-  /* "src/lxml/parser.pxi":1597
+  /* "src/lxml/parser.pxi":1598
  * 
  * cdef XMLParser __DEFAULT_XML_PARSER
  * __DEFAULT_XML_PARSER = XMLParser()             # <<<<<<<<<<<<<<
  * 
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  */
-  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1597, __pyx_L1_error)
+  __Pyx_TraceLine(1598,0,__PYX_ERR(2, 1598, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_XMLParser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1598, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER, ((struct __pyx_obj_4lxml_5etree_XMLParser *)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":1599
+  /* "src/lxml/parser.pxi":1600
  * __DEFAULT_XML_PARSER = XMLParser()
  * 
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)             # <<<<<<<<<<<<<<
  * 
  * def set_default_parser(_BaseParser parser=None):
  */
+  __Pyx_TraceLine(1600,0,__PYX_ERR(2, 1600, __pyx_L1_error))
   __pyx_t_2 = ((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2));
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":1601
+  /* "src/lxml/parser.pxi":1602
  * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
  * 
  * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(parser=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_45set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__506)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1601, __pyx_L1_error)
+  __Pyx_TraceLine(1602,0,__PYX_ERR(2, 1602, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_45set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1602, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__507);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_2) < 0) __PYX_ERR(2, 1601, __pyx_L1_error)
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__590);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_2) < 0) __PYX_ERR(2, 1602, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":1617
+  /* "src/lxml/parser.pxi":1618
  *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
  * 
  * def get_default_parser():             # <<<<<<<<<<<<<<
  *     u"get_default_parser()"
  *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_47get_default_parser, 0, __pyx_n_s_get_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__508)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1617, __pyx_L1_error)
+  __Pyx_TraceLine(1618,0,__PYX_ERR(2, 1618, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_47get_default_parser, 0, __pyx_n_s_get_default_parser, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_default_parser, __pyx_t_2) < 0) __PYX_ERR(2, 1617, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_default_parser, __pyx_t_2) < 0) __PYX_ERR(2, 1618, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":1628
+  /* "src/lxml/parser.pxi":1629
  * _HTML_DEFAULT_PARSE_OPTIONS = (
  *     htmlparser.HTML_PARSE_RECOVER |
  *     htmlparser.HTML_PARSE_NONET   |             # <<<<<<<<<<<<<<
  *     htmlparser.HTML_PARSE_COMPACT
  *     )
  */
+  __Pyx_TraceLine(1629,0,__PYX_ERR(2, 1629, __pyx_L1_error))
   __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS = ((HTML_PARSE_RECOVER | HTML_PARSE_NONET) | HTML_PARSE_COMPACT);
 
-  /* "src/lxml/parser.pxi":1694
+  /* "src/lxml/parser.pxi":1695
  * 
  * cdef HTMLParser __DEFAULT_HTML_PARSER
  * __DEFAULT_HTML_PARSER = HTMLParser()             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1694, __pyx_L1_error)
+  __Pyx_TraceLine(1695,0,__PYX_ERR(2, 1695, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLParser)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1695, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER, ((struct __pyx_obj_4lxml_5etree_HTMLParser *)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/parser.pxi":1722
+  /* "src/lxml/parser.pxi":1723
  *         self._collectEvents(events, tag)
  * 
  *     def read_events(self):             # <<<<<<<<<<<<<<
  *         return (<_SaxParserContext?>self._getPushParserContext()).events_iterator
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14HTMLPullParser_3read_events, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HTMLPullParser_read_events, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__510)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1722, __pyx_L1_error)
+  __Pyx_TraceLine(1723,0,__PYX_ERR(2, 1723, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14HTMLPullParser_3read_events, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HTMLPullParser_read_events, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1723, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_HTMLPullParser->tp_dict, __pyx_n_s_read_events, __pyx_t_2) < 0) __PYX_ERR(2, 1722, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_HTMLPullParser->tp_dict, __pyx_n_s_read_events, __pyx_t_2) < 0) __PYX_ERR(2, 1723, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_HTMLPullParser);
 
-  /* "src/lxml/saxparser.pxi":469
+  /* "src/lxml/saxparser.pxi":470
  * 
  * 
  * cdef tuple NS_END_EVENT = ('end-ns', None)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __Pyx_INCREF(__pyx_tuple__511);
+  __Pyx_TraceLine(470,0,__PYX_ERR(11, 470, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_tuple__592);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_NS_END_EVENT);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_NS_END_EVENT, __pyx_tuple__511);
-  __Pyx_GIVEREF(__pyx_tuple__511);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_NS_END_EVENT, __pyx_tuple__592);
+  __Pyx_GIVEREF(__pyx_tuple__592);
 
-  /* "src/lxml/saxparser.pxi":721
+  /* "src/lxml/saxparser.pxi":722
  *     # Python level event handlers
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         u"""close(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 721, __pyx_L1_error)
+  __Pyx_TraceLine(722,0,__PYX_ERR(11, 722, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 722, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(11, 721, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(11, 722, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
-  /* "src/lxml/saxparser.pxi":731
+  /* "src/lxml/saxparser.pxi":732
  *         return self._last
  * 
  *     def data(self, data):             # <<<<<<<<<<<<<<
  *         u"""data(self, data)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_5data, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_data, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 731, __pyx_L1_error)
+  __Pyx_TraceLine(732,0,__PYX_ERR(11, 732, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_5data, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_data, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 732, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_data, __pyx_t_2) < 0) __PYX_ERR(11, 731, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_data, __pyx_t_2) < 0) __PYX_ERR(11, 732, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
-  /* "src/lxml/saxparser.pxi":739
+  /* "src/lxml/saxparser.pxi":740
  *         self._handleSaxData(data)
  * 
  *     def start(self, tag, attrs, nsmap=None):             # <<<<<<<<<<<<<<
  *         u"""start(self, tag, attrs, nsmap=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_7start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_start, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__517)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 739, __pyx_L1_error)
+  __Pyx_TraceLine(740,0,__PYX_ERR(11, 740, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_7start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_start, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__250)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 740, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(11, 739, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(11, 740, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
-  /* "src/lxml/saxparser.pxi":748
+  /* "src/lxml/saxparser.pxi":749
  *         return self._handleSaxStart(tag, attrs, nsmap)
  * 
  *     def end(self, tag):             # <<<<<<<<<<<<<<
  *         u"""end(self, tag)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_9end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_end, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 748, __pyx_L1_error)
+  __Pyx_TraceLine(749,0,__PYX_ERR(11, 749, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_9end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_end, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 749, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_end, __pyx_t_2) < 0) __PYX_ERR(11, 748, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_end, __pyx_t_2) < 0) __PYX_ERR(11, 749, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
-  /* "src/lxml/saxparser.pxi":758
+  /* "src/lxml/saxparser.pxi":759
  *         return element
  * 
  *     def pi(self, target, data):             # <<<<<<<<<<<<<<
  *         u"""pi(self, target, data)
  *         """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_11pi, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_pi, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 758, __pyx_L1_error)
+  __Pyx_TraceLine(759,0,__PYX_ERR(11, 759, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_11pi, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_pi, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 759, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_pi, __pyx_t_2) < 0) __PYX_ERR(11, 758, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_pi, __pyx_t_2) < 0) __PYX_ERR(11, 759, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
-  /* "src/lxml/saxparser.pxi":763
+  /* "src/lxml/saxparser.pxi":764
  *         return self._handleSaxPi(target, data)
  * 
  *     def comment(self, comment):             # <<<<<<<<<<<<<<
  *         u"""comment(self, comment)
  *         """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_13comment, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 763, __pyx_L1_error)
+  __Pyx_TraceLine(764,0,__PYX_ERR(11, 764, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_11TreeBuilder_13comment, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TreeBuilder_comment, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__254)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 764, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_comment, __pyx_t_2) < 0) __PYX_ERR(11, 763, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_TreeBuilder->tp_dict, __pyx_n_s_comment, __pyx_t_2) < 0) __PYX_ERR(11, 764, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_TreeBuilder);
 
@@ -240143,6 +254439,7 @@ if (!__Pyx_RefNanny) {
  *     from inspect import getfullargspec as inspect_getargspec
  * except ImportError:
  */
+  __Pyx_TraceLine(4,0,__PYX_ERR(12, 4, __pyx_L27_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -240159,6 +254456,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     from inspect import getargspec as inspect_getargspec
  */
+      __Pyx_TraceLine(5,0,__PYX_ERR(12, 5, __pyx_L27_error))
       __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 5, __pyx_L27_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_n_s_getfullargspec);
@@ -240205,6 +254503,7 @@ if (!__Pyx_RefNanny) {
  *     from inspect import getargspec as inspect_getargspec
  * 
  */
+    __Pyx_TraceLine(6,0,__PYX_ERR(12, 6, __pyx_L29_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -240220,6 +254519,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+      __Pyx_TraceLine(7,0,__PYX_ERR(12, 7, __pyx_L29_except_error))
       __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 7, __pyx_L29_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_n_s_getargspec);
@@ -240271,6 +254571,7 @@ if (!__Pyx_RefNanny) {
  *     # Admittedly, this is somewhat ugly, but it's the easiest way
  *     # to push the Python level parser result through the parser
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(12, 10, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
@@ -240288,7 +254589,8 @@ if (!__Pyx_RefNanny) {
  *         self.result = result
  * 
  */
-  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_TargetParserResult_1__init__, 0, __pyx_n_s_TargetParserResult___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 14, __pyx_L1_error)
+  __Pyx_TraceLine(14,0,__PYX_ERR(12, 14, __pyx_L1_error))
+  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_TargetParserResult_1__init__, 0, __pyx_n_s_TargetParserResult___init, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__255)); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 14, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
   if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init, __pyx_t_12) < 0) __PYX_ERR(12, 14, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
@@ -240300,6 +254602,7 @@ if (!__Pyx_RefNanny) {
  *     # Admittedly, this is somewhat ugly, but it's the easiest way
  *     # to push the Python level parser result through the parser
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(12, 10, __pyx_L1_error))
   __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_TargetParserResult, __pyx_t_7, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_TargetParserResult, __pyx_t_12) < 0) __PYX_ERR(12, 10, __pyx_L1_error)
@@ -240315,6 +254618,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(4,0,__PYX_ERR(8, 4, __pyx_L1_error))
   __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 4, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_n_s_GzipFile);
@@ -240339,7 +254643,8 @@ if (!__Pyx_RefNanny) {
  *         assert self.output_file is not None
  *         self.writer = _IncrementalFileWriter(
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 914, __pyx_L1_error)
+  __Pyx_TraceLine(914,0,__PYX_ERR(8, 914, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 914, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_enter, __pyx_t_2) < 0) __PYX_ERR(8, 914, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240352,7 +254657,8 @@ if (!__Pyx_RefNanny) {
  *         if self.writer is not None:
  *             old_writer, self.writer = self.writer, None
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 921, __pyx_L1_error)
+  __Pyx_TraceLine(921,0,__PYX_ERR(8, 921, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 921, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_exit, __pyx_t_2) < 0) __PYX_ERR(8, 921, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240365,7 +254671,8 @@ if (!__Pyx_RefNanny) {
  *         assert self.output_file is not None
  *         if isinstance(self.output_file, basestring):
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 929, __pyx_L1_error)
+  __Pyx_TraceLine(929,0,__PYX_ERR(8, 929, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 929, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aenter, __pyx_t_2) < 0) __PYX_ERR(8, 929, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240378,7 +254685,8 @@ if (!__Pyx_RefNanny) {
  *         if self.async_writer is not None:
  *             old_writer, self.async_writer = self.async_writer, None
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 940, __pyx_L1_error)
+  __Pyx_TraceLine(940,0,__PYX_ERR(8, 940, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7xmlfile_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_xmlfile___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 940, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_xmlfile->tp_dict, __pyx_n_s_aexit, __pyx_t_2) < 0) __PYX_ERR(8, 940, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240391,7 +254699,8 @@ if (!__Pyx_RefNanny) {
  *         """write_declaration(self, version=None, standalone=None, doctype=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_5write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_dec, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 997, __pyx_L1_error)
+  __Pyx_TraceLine(997,0,__PYX_ERR(8, 997, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_5write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_dec, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__264)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 997, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_2) < 0) __PYX_ERR(8, 997, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240404,7 +254713,8 @@ if (!__Pyx_RefNanny) {
  *         """write_doctype(self, doctype)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_7write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_doc, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__535)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1026, __pyx_L1_error)
+  __Pyx_TraceLine(1026,0,__PYX_ERR(8, 1026, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_7write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write_doc, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1026, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_2) < 0) __PYX_ERR(8, 1026, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240417,7 +254727,8 @@ if (!__Pyx_RefNanny) {
  *         """method(self, method)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_9method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_method, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__537)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1043, __pyx_L1_error)
+  __Pyx_TraceLine(1043,0,__PYX_ERR(8, 1043, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_9method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_method, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1043, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_2) < 0) __PYX_ERR(8, 1043, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240430,7 +254741,8 @@ if (!__Pyx_RefNanny) {
  *         """element(self, tag, attrib=None, nsmap=None, method, **_extra)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_11element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1053, __pyx_L1_error)
+  __Pyx_TraceLine(1053,0,__PYX_ERR(8, 1053, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_11element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_element, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__270)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1053, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_2) < 0) __PYX_ERR(8, 1053, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240443,7 +254755,8 @@ if (!__Pyx_RefNanny) {
  *         """write(self, *args, with_tail=True, pretty_print=False, method=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_13write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1190, __pyx_L1_error)
+  __Pyx_TraceLine(1190,0,__PYX_ERR(8, 1190, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_13write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__277)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1190, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_2) < 0) __PYX_ERR(8, 1190, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240456,7 +254769,8 @@ if (!__Pyx_RefNanny) {
  *         """flush(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_15flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_flush, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__543)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1237, __pyx_L1_error)
+  __Pyx_TraceLine(1237,0,__PYX_ERR(8, 1237, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_22_IncrementalFileWriter_15flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IncrementalFileWriter_flush, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__280)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1237, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_2) < 0) __PYX_ERR(8, 1237, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240469,7 +254783,8 @@ if (!__Pyx_RefNanny) {
  *         self._data.append(data)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_3write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__545)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1284, __pyx_L1_error)
+  __Pyx_TraceLine(1284,0,__PYX_ERR(8, 1284, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_3write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_write, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1284, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_write, __pyx_t_2) < 0) __PYX_ERR(8, 1284, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240482,7 +254797,8 @@ if (!__Pyx_RefNanny) {
  *         pass
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__547)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1287, __pyx_L1_error)
+  __Pyx_TraceLine(1287,0,__PYX_ERR(8, 1287, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_16_AsyncDataWriter_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncDataWriter_close, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__284)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncDataWriter->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(8, 1287, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240495,7 +254811,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer.flush()
  *         data = self._buffer.collect()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_3flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_flus, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1316, __pyx_L1_error)
+  __Pyx_TraceLine(1316,0,__PYX_ERR(8, 1316, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_3flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_flus, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1316, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_flush, __pyx_t_2) < 0) __PYX_ERR(8, 1316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240508,7 +254825,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer.write_declaration(version, standalone, doctype)
  *         data = self._flush()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_6write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1322, __pyx_L1_error)
+  __Pyx_TraceLine(1322,0,__PYX_ERR(8, 1322, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_6write_declaration, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__286)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1322, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_declaration, __pyx_t_2) < 0) __PYX_ERR(8, 1322, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240521,7 +254839,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer.write_doctype(doctype)
  *         data = self._flush()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_9write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1328, __pyx_L1_error)
+  __Pyx_TraceLine(1328,0,__PYX_ERR(8, 1328, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_9write_doctype, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write_doctype, __pyx_t_2) < 0) __PYX_ERR(8, 1328, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240534,7 +254853,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer.write(*args, with_tail=with_tail, pretty_print=pretty_print, method=method)
  *         data = self._flush()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_12write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1334, __pyx_L1_error)
+  __Pyx_TraceLine(1334,0,__PYX_ERR(8, 1334, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_12write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_writ_3, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__288)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1334, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_write, __pyx_t_2) < 0) __PYX_ERR(8, 1334, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240547,7 +254867,8 @@ if (!__Pyx_RefNanny) {
  *         return self._writer.method(method)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_15method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_meth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__553)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1340, __pyx_L1_error)
+  __Pyx_TraceLine(1340,0,__PYX_ERR(8, 1340, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_15method, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_meth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1340, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_method, __pyx_t_2) < 0) __PYX_ERR(8, 1340, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240560,7 +254881,8 @@ if (!__Pyx_RefNanny) {
  *         element_writer = self._writer.element(tag, attrib, nsmap, method, **_extra)
  *         return _AsyncFileWriterElement(element_writer, self)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_17element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_elem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__555)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1343, __pyx_L1_error)
+  __Pyx_TraceLine(1343,0,__PYX_ERR(8, 1343, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_17element, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter_elem, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__290)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1343, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_element, __pyx_t_2) < 0) __PYX_ERR(8, 1343, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240573,7 +254895,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer._close(raise_on_error)
  *         data = self._buffer.collect()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_19_close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter__clo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1347, __pyx_L1_error)
+  __Pyx_TraceLine(1347,0,__PYX_ERR(8, 1347, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_27_AsyncIncrementalFileWriter_19_close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncIncrementalFileWriter__clo, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1347, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncIncrementalFileWriter->tp_dict, __pyx_n_s_close_2, __pyx_t_2) < 0) __PYX_ERR(8, 1347, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240586,7 +254909,8 @@ if (!__Pyx_RefNanny) {
  *         self._element_writer.__enter__()
  *         data = self._writer._flush()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_3__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1367, __pyx_L1_error)
+  __Pyx_TraceLine(1367,0,__PYX_ERR(8, 1367, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_3__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1367, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aenter, __pyx_t_2) < 0) __PYX_ERR(8, 1367, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240599,7 +254923,8 @@ if (!__Pyx_RefNanny) {
  *         self._element_writer.__exit__(*args)
  *         data = self._writer._flush()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_6__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1373, __pyx_L1_error)
+  __Pyx_TraceLine(1373,0,__PYX_ERR(8, 1373, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_AsyncFileWriterElement_6__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncFileWriterElement___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__AsyncFileWriterElement->tp_dict, __pyx_n_s_aexit, __pyx_t_2) < 0) __PYX_ERR(8, 1373, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240612,7 +254937,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer._method = self._new_method
  *         self._writer._write_start_element(self._element)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__560)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1395, __pyx_L1_error)
+  __Pyx_TraceLine(1395,0,__PYX_ERR(8, 1395, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__294)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1395, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_enter, __pyx_t_2) < 0) __PYX_ERR(8, 1395, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240625,7 +254951,8 @@ if (!__Pyx_RefNanny) {
  *         self._writer._write_end_element(self._element)
  *         self._writer._method = self._old_method
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__562)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1399, __pyx_L1_error)
+  __Pyx_TraceLine(1399,0,__PYX_ERR(8, 1399, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_18_FileWriterElement_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FileWriterElement___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__FileWriterElement->tp_dict, __pyx_n_s_exit, __pyx_t_2) < 0) __PYX_ERR(8, 1399, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240638,7 +254965,8 @@ if (!__Pyx_RefNanny) {
  *         if self._entered:
  *             raise LxmlSyntaxError("Inconsistent enter action in context manager")
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__564)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1421, __pyx_L1_error)
+  __Pyx_TraceLine(1421,0,__PYX_ERR(8, 1421, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___enter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__296)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1421, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_enter, __pyx_t_2) < 0) __PYX_ERR(8, 1421, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240651,7 +254979,8 @@ if (!__Pyx_RefNanny) {
  *         if self._exited:
  *             raise LxmlSyntaxError("Inconsistent exit action in context manager")
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__566)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1427, __pyx_L1_error)
+  __Pyx_TraceLine(1427,0,__PYX_ERR(8, 1427, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___exit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__298)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1427, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_exit, __pyx_t_2) < 0) __PYX_ERR(8, 1427, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240664,7 +254993,8 @@ if (!__Pyx_RefNanny) {
  *         # for your async convenience
  *         return self.__enter__()
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1435, __pyx_L1_error)
+  __Pyx_TraceLine(1435,0,__PYX_ERR(8, 1435, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_7__aenter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aenter, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__301)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aenter, __pyx_t_2) < 0) __PYX_ERR(8, 1435, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240677,7 +255007,8 @@ if (!__Pyx_RefNanny) {
  *         # for your async convenience
  *         return self.__exit__(*args)
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__107)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1439, __pyx_L1_error)
+  __Pyx_TraceLine(1439,0,__PYX_ERR(8, 1439, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_14_MethodChanger_10__aexit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MethodChanger___aexit, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__302)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 1439, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MethodChanger->tp_dict, __pyx_n_s_aexit, __pyx_t_2) < 0) __PYX_ERR(8, 1439, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240690,7 +255021,8 @@ if (!__Pyx_RefNanny) {
  *         u"""set_element_class_lookup(self, lookup = None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__570)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 148, __pyx_L1_error)
+  __Pyx_TraceLine(148,0,__PYX_ERR(13, 148, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__304)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 148, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_iterparse->tp_dict, __pyx_n_s_set_element_class_lookup, __pyx_t_2) < 0) __PYX_ERR(13, 148, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240703,7 +255035,8 @@ if (!__Pyx_RefNanny) {
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__572)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 157, __pyx_L1_error)
+  __Pyx_TraceLine(157,0,__PYX_ERR(13, 157, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__305)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 157, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_iterparse->tp_dict, __pyx_n_s_makeelement, __pyx_t_2) < 0) __PYX_ERR(13, 157, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240716,7 +255049,8 @@ if (!__Pyx_RefNanny) {
  *         """Prevent descending into the current subtree.
  *         Instead, the next returned event will be the 'end' event of the current element
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__574)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 340, __pyx_L1_error)
+  __Pyx_TraceLine(340,0,__PYX_ERR(13, 340, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__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__310)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 340, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk->tp_dict, __pyx_n_s_skip_subtree, __pyx_t_2) < 0) __PYX_ERR(13, 340, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240729,12 +255063,13 @@ if (!__Pyx_RefNanny) {
  *     u"""XMLID(text, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(3,0,__PYX_ERR(14, 3, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(14, 3, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_49XMLID, 0, __pyx_n_s_XMLID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__576)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 3, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_49XMLID, 0, __pyx_n_s_XMLID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__312)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__577);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__631);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_7, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLID, __pyx_t_7) < 0) __PYX_ERR(14, 3, __pyx_L1_error)
@@ -240747,12 +255082,13 @@ if (!__Pyx_RefNanny) {
  *     u"""XMLDTDID(text, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(14, 24, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 24, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(14, 24, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_51XMLDTDID, 0, __pyx_n_s_XMLDTDID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__579)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 24, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_51XMLDTDID, 0, __pyx_n_s_XMLDTDID, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 24, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__580);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__633);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_7);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XMLDTDID, __pyx_t_2) < 0) __PYX_ERR(14, 24, __pyx_L1_error)
@@ -240765,12 +255101,13 @@ if (!__Pyx_RefNanny) {
  *     u"""parseid(source, parser=None)
  * 
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(14, 44, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 44, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(14, 44, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_53parseid, 0, __pyx_n_s_parseid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__582)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 44, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_53parseid, 0, __pyx_n_s_parseid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__316)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 44, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__583);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__635);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_7, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseid, __pyx_t_7) < 0) __PYX_ERR(14, 44, __pyx_L1_error)
@@ -240783,7 +255120,8 @@ if (!__Pyx_RefNanny) {
  *         return _IDDict(self._doc)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__585)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 78, __pyx_L1_error)
+  __Pyx_TraceLine(78,0,__PYX_ERR(14, 78, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 78, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(14, 78, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240796,7 +255134,8 @@ if (!__Pyx_RefNanny) {
  *         return self[id_name]
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_7get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__587)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 95, __pyx_L1_error)
+  __Pyx_TraceLine(95,0,__PYX_ERR(14, 95, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_7get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_get, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__318)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 95, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(14, 95, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240809,7 +255148,8 @@ if (!__Pyx_RefNanny) {
  *         return id_name in self
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_11has_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_has_key, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__589)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 105, __pyx_L1_error)
+  __Pyx_TraceLine(105,0,__PYX_ERR(14, 105, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_11has_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_has_key, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_has_key, __pyx_t_7) < 0) __PYX_ERR(14, 105, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240822,7 +255162,8 @@ if (!__Pyx_RefNanny) {
  *         if self._keys is None:
  *             self._keys = self._build_keys()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_15keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__591)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 111, __pyx_L1_error)
+  __Pyx_TraceLine(111,0,__PYX_ERR(14, 111, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_15keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_keys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__320)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_keys, __pyx_t_7) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240835,7 +255176,8 @@ if (!__Pyx_RefNanny) {
  *         return self
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_19iterkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_iterkeys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__593)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 121, __pyx_L1_error)
+  __Pyx_TraceLine(121,0,__PYX_ERR(14, 121, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_19iterkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_iterkeys, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__322)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 121, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_iterkeys, __pyx_t_7) < 0) __PYX_ERR(14, 121, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240848,7 +255190,8 @@ if (!__Pyx_RefNanny) {
  *         if self._items is None:
  *             self._items = self._build_items()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_23items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__595)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 129, __pyx_L1_error)
+  __Pyx_TraceLine(129,0,__PYX_ERR(14, 129, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_23items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_items, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_items, __pyx_t_7) < 0) __PYX_ERR(14, 129, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240861,7 +255204,8 @@ if (!__Pyx_RefNanny) {
  *         if self._items is None:
  *             self._items = self._build_items()
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_25iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__597)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 134, __pyx_L1_error)
+  __Pyx_TraceLine(134,0,__PYX_ERR(14, 134, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_25iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_iteritems, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 134, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_iteritems, __pyx_t_7) < 0) __PYX_ERR(14, 134, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240874,7 +255218,8 @@ if (!__Pyx_RefNanny) {
  *         cdef list values = []
  *         if self._items is None:
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_27values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__599)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 139, __pyx_L1_error)
+  __Pyx_TraceLine(139,0,__PYX_ERR(14, 139, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_27values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__326)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_values, __pyx_t_7) < 0) __PYX_ERR(14, 139, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240887,7 +255232,8 @@ if (!__Pyx_RefNanny) {
  *         return iter(self.values())
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_29itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__601)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 149, __pyx_L1_error)
+  __Pyx_TraceLine(149,0,__PYX_ERR(14, 149, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7_IDDict_29itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IDDict_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__IDDict->tp_dict, __pyx_n_s_itervalues, __pyx_t_7) < 0) __PYX_ERR(14, 149, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240900,9 +255246,10 @@ if (!__Pyx_RefNanny) {
  *     u"""cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_55cleanup_namespaces, 0, __pyx_n_s_cleanup_namespaces, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__603)); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 3, __pyx_L1_error)
+  __Pyx_TraceLine(3,0,__PYX_ERR(16, 3, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_55cleanup_namespaces, 0, __pyx_n_s_cleanup_namespaces, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__328)); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__604);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__646);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_cleanup_namespaces, __pyx_t_7) < 0) __PYX_ERR(16, 3, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -240913,7 +255260,8 @@ if (!__Pyx_RefNanny) {
  *     u"""strip_attributes(tree_or_element, *attribute_names)
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_57strip_attributes, 0, __pyx_n_s_strip_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__606)); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 33, __pyx_L1_error)
+  __Pyx_TraceLine(33,0,__PYX_ERR(16, 33, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_57strip_attributes, 0, __pyx_n_s_strip_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 33, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_strip_attributes, __pyx_t_7) < 0) __PYX_ERR(16, 33, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240925,13 +255273,14 @@ if (!__Pyx_RefNanny) {
  *     u"""strip_elements(tree_or_element, *tag_names, with_tail=True)
  * 
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(16, 74, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(16, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_with_tail, __pyx_t_2) < 0) __PYX_ERR(16, 74, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_59strip_elements, 0, __pyx_n_s_strip_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__608)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 74, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_59strip_elements, 0, __pyx_n_s_strip_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__330)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_7);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -240945,7 +255294,8 @@ if (!__Pyx_RefNanny) {
  *     u"""strip_tags(tree_or_element, *tag_names)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_61strip_tags, 0, __pyx_n_s_strip_tags, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__610)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 145, __pyx_L1_error)
+  __Pyx_TraceLine(145,0,__PYX_ERR(16, 145, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_61strip_tags, 0, __pyx_n_s_strip_tags, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 145, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_strip_tags, __pyx_t_2) < 0) __PYX_ERR(16, 145, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -240957,10 +255307,11 @@ if (!__Pyx_RefNanny) {
  *     b"Number encoding",
  *     b"Unfinished literal",
  */
-  __Pyx_INCREF(__pyx_tuple__611);
+  __Pyx_TraceLine(368,0,__PYX_ERR(17, 368, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_tuple__650);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES, __pyx_tuple__611);
-  __Pyx_GIVEREF(__pyx_tuple__611);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_5etree_LIBXML2_XPATH_ERROR_MESSAGES, __pyx_tuple__650);
+  __Pyx_GIVEREF(__pyx_tuple__650);
 
   /* "src/lxml/extensions.pxi":426
  * 
@@ -240969,12 +255320,13 @@ if (!__Pyx_RefNanny) {
  *     u"""Extension(module, function_mapping=None, ns=None)
  * 
  */
+  __Pyx_TraceLine(426,0,__PYX_ERR(17, 426, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 426, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ns, ((PyObject *)Py_None)) < 0) __PYX_ERR(17, 426, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_63Extension, 0, __pyx_n_s_Extension, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__613)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 426, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_63Extension, 0, __pyx_n_s_Extension, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 426, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__614);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__652);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_7, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Extension, __pyx_t_7) < 0) __PYX_ERR(17, 426, __pyx_L1_error)
@@ -240987,7 +255339,8 @@ if (!__Pyx_RefNanny) {
  *         flags = self._make_string(flags)
  *         s = self._make_string(s)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_3test, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_test, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__616)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 498, __pyx_L1_error)
+  __Pyx_TraceLine(498,0,__PYX_ERR(17, 498, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_3test, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_test, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__334)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 498, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ExsltRegExp->tp_dict, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(17, 498, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -241000,7 +255353,8 @@ if (!__Pyx_RefNanny) {
  *         cdef list result_list
  *         flags = self._make_string(flags)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_5match, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_match, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__618)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 507, __pyx_L1_error)
+  __Pyx_TraceLine(507,0,__PYX_ERR(17, 507, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_5match, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_match, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__335)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ExsltRegExp->tp_dict, __pyx_n_s_match, __pyx_t_7) < 0) __PYX_ERR(17, 507, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -241013,7 +255367,8 @@ if (!__Pyx_RefNanny) {
  *         replacement = self._make_string(replacement)
  *         flags = self._make_string(flags)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_7replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_replace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__620)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 533, __pyx_L1_error)
+  __Pyx_TraceLine(533,0,__PYX_ERR(17, 533, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_12_ExsltRegExp_7replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ExsltRegExp_replace, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__338)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ExsltRegExp->tp_dict, __pyx_n_s_replace, __pyx_t_7) < 0) __PYX_ERR(17, 533, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -241026,7 +255381,8 @@ if (!__Pyx_RefNanny) {
  *         return self._parent
  * 
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ElementUnicodeResult_1getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementUnicodeResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__622)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 730, __pyx_L1_error)
+  __Pyx_TraceLine(730,0,__PYX_ERR(17, 730, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21_ElementUnicodeResult_1getparent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ElementUnicodeResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementUnicodeResult->tp_dict, __pyx_n_s_getparent, __pyx_t_7) < 0) __PYX_ERR(17, 730, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -241039,6 +255395,7 @@ if (!__Pyx_RefNanny) {
  *     class _PyElementUnicodeResult(unicode):
  *         # we need to use a Python class here, or PyPy will crash on creation
  */
+  __Pyx_TraceLine(734,0,__PYX_ERR(17, 734, __pyx_L1_error))
   __pyx_t_10 = (IS_PYPY != 0);
   if (__pyx_t_10) {
 
@@ -241049,6 +255406,7 @@ if (!__Pyx_RefNanny) {
  *         # we need to use a Python class here, or PyPy will crash on creation
  *         # https://bitbucket.org/pypy/pypy/issues/2021/pypy3-pytype_ready-crashes-for-extension
  */
+    __Pyx_TraceLine(735,0,__PYX_ERR(17, 735, __pyx_L1_error))
     __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 735, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
@@ -241066,7 +255424,8 @@ if (!__Pyx_RefNanny) {
  *             return self._parent
  * 
  */
-    __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_PyElementUnicodeResult_1getparent, 0, __pyx_n_s_PyElementUnicodeResult_getparen, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__624)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 738, __pyx_L1_error)
+    __Pyx_TraceLine(738,0,__PYX_ERR(17, 738, __pyx_L1_error))
+    __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_23_PyElementUnicodeResult_1getparent, 0, __pyx_n_s_PyElementUnicodeResult_getparen, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__340)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 738, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_12);
     if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_getparent, __pyx_t_12) < 0) __PYX_ERR(17, 738, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
@@ -241078,6 +255437,7 @@ if (!__Pyx_RefNanny) {
  *         # we need to use a Python class here, or PyPy will crash on creation
  *         # https://bitbucket.org/pypy/pypy/issues/2021/pypy3-pytype_ready-crashes-for-extension
  */
+    __Pyx_TraceLine(735,0,__PYX_ERR(17, 735, __pyx_L1_error))
     __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_PyElementUnicodeResult, __pyx_t_7, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 735, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_12);
     __Pyx_XGOTREF(__pyx_v_4lxml_5etree__PyElementUnicodeResult);
@@ -241104,6 +255464,7 @@ if (!__Pyx_RefNanny) {
  *     # we need to use a Python class here, bytes cannot be C-subclassed
  *     # in Pyrex/Cython
  */
+  __Pyx_TraceLine(741,0,__PYX_ERR(17, 741, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(17, 741, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(((PyObject *)(&PyBytes_Type)));
@@ -241121,7 +255482,8 @@ if (!__Pyx_RefNanny) {
  *         return self._parent
  * 
  */
-  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20_ElementStringResult_1getparent, 0, __pyx_n_s_ElementStringResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__626)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 744, __pyx_L1_error)
+  __Pyx_TraceLine(744,0,__PYX_ERR(17, 744, __pyx_L1_error))
+  __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_20_ElementStringResult_1getparent, 0, __pyx_n_s_ElementStringResult_getparent, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
   if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_getparent, __pyx_t_12) < 0) __PYX_ERR(17, 744, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
@@ -241133,6 +255495,7 @@ if (!__Pyx_RefNanny) {
  *     # we need to use a Python class here, bytes cannot be C-subclassed
  *     # in Pyrex/Cython
  */
+  __Pyx_TraceLine(741,0,__PYX_ERR(17, 741, __pyx_L1_error))
   __pyx_t_12 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ElementStringResult, __pyx_t_7, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(17, 741, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ElementStringResult, __pyx_t_12) < 0) __PYX_ERR(17, 741, __pyx_L1_error)
@@ -241148,6 +255511,7 @@ if (!__Pyx_RefNanny) {
  *     pass
  * 
  */
+  __Pyx_TraceLine(3,0,__PYX_ERR(18, 3, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_LxmlSyntaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 3, __pyx_L1_error)
@@ -241177,6 +255541,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,
  *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
  */
+  __Pyx_TraceLine(11,0,__PYX_ERR(18, 11, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_NUMBER_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -241187,6 +255552,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
  *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
  */
+  __Pyx_TraceLine(12,0,__PYX_ERR(18, 12, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_UNFINISHED_LITERAL_ERROR); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 12, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
@@ -241197,6 +255563,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
  *     xmlerror.XML_XPATH_UNCLOSED_ERROR,
  */
+  __Pyx_TraceLine(13,0,__PYX_ERR(18, 13, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_VARIABLE_REF_ERROR); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 13, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -241207,6 +255574,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNCLOSED_ERROR,
  *     xmlerror.XML_XPATH_INVALID_CHAR_ERROR
  */
+  __Pyx_TraceLine(14,0,__PYX_ERR(18, 14, __pyx_L1_error))
   __pyx_t_12 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_PREDICATE_ERROR); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 14, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
 
@@ -241217,6 +255585,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_CHAR_ERROR
  * )
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(18, 15, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_UNCLOSED_ERROR); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
 
@@ -241227,6 +255596,7 @@ if (!__Pyx_RefNanny) {
  * )
  * 
  */
+  __Pyx_TraceLine(16,0,__PYX_ERR(18, 16, __pyx_L1_error))
   __pyx_t_14 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_CHAR_ERROR); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_14);
 
@@ -241237,6 +255607,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,
  *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
  */
+  __Pyx_TraceLine(11,0,__PYX_ERR(18, 11, __pyx_L1_error))
   __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 11, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -241269,6 +255640,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,
  *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(18, 21, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_UNDEF_VARIABLE_ERROR); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
 
@@ -241279,6 +255651,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
  *     xmlerror.XML_XPATH_INVALID_OPERAND,
  */
+  __Pyx_TraceLine(22,0,__PYX_ERR(18, 22, __pyx_L1_error))
   __pyx_t_14 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_UNDEF_PREFIX_ERROR); if (unlikely(!__pyx_t_14)) __PYX_ERR(18, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_14);
 
@@ -241289,6 +255662,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_OPERAND,
  *     xmlerror.XML_XPATH_INVALID_TYPE,
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(18, 23, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_UNKNOWN_FUNC_ERROR); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
 
@@ -241299,6 +255673,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_TYPE,
  *     xmlerror.XML_XPATH_INVALID_ARITY,
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(18, 24, __pyx_L1_error))
   __pyx_t_12 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_OPERAND); if (unlikely(!__pyx_t_12)) __PYX_ERR(18, 24, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_12);
 
@@ -241309,6 +255684,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_ARITY,
  *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,
  */
+  __Pyx_TraceLine(25,0,__PYX_ERR(18, 25, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_TYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 25, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -241319,6 +255695,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,
  *     xmlerror.XML_XPATH_INVALID_CTXT_POSITION
  */
+  __Pyx_TraceLine(26,0,__PYX_ERR(18, 26, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_ARITY); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 26, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
@@ -241329,6 +255706,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_INVALID_CTXT_POSITION
  * )
  */
+  __Pyx_TraceLine(27,0,__PYX_ERR(18, 27, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_CTXT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 27, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -241339,6 +255717,7 @@ if (!__Pyx_RefNanny) {
  * )
  * 
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(18, 28, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyInt_From_xmlParserErrors(XML_XPATH_INVALID_CTXT_POSITION); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 28, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
 
@@ -241349,6 +255728,7 @@ if (!__Pyx_RefNanny) {
  *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,
  *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
  */
+  __Pyx_TraceLine(21,0,__PYX_ERR(18, 21, __pyx_L1_error))
   __pyx_t_15 = PyTuple_New(8); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_GIVEREF(__pyx_t_8);
@@ -241387,7 +255767,8 @@ if (!__Pyx_RefNanny) {
  *         u"""evaluate(self, _eval_arg, **_variables)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_XPathEvaluatorBase_7evaluate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathEvaluatorBase_evaluate, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__628)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 152, __pyx_L1_error)
+  __Pyx_TraceLine(152,0,__PYX_ERR(18, 152, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_19_XPathEvaluatorBase_7evaluate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathEvaluatorBase_evaluate, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__342)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 152, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__XPathEvaluatorBase->tp_dict, __pyx_n_s_evaluate, __pyx_t_15) < 0) __PYX_ERR(18, 152, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241400,7 +255781,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Register a namespace with the XPath context.
  *         """
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XPathElementEvaluator_3register_namespace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathElementEvaluator_register_n, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__630)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 268, __pyx_L1_error)
+  __Pyx_TraceLine(268,0,__PYX_ERR(18, 268, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XPathElementEvaluator_3register_namespace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathElementEvaluator_register_n, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XPathElementEvaluator->tp_dict, __pyx_n_s_register_namespace, __pyx_t_15) < 0) __PYX_ERR(18, 268, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241413,7 +255795,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Register a prefix -> uri dict.
  *         """
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XPathElementEvaluator_5register_namespaces, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathElementEvaluator_register_n_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__632)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 274, __pyx_L1_error)
+  __Pyx_TraceLine(274,0,__PYX_ERR(18, 274, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XPathElementEvaluator_5register_namespaces, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XPathElementEvaluator_register_n_2, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__344)); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 274, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XPathElementEvaluator->tp_dict, __pyx_n_s_register_namespaces, __pyx_t_15) < 0) __PYX_ERR(18, 274, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241426,13 +255809,14 @@ if (!__Pyx_RefNanny) {
  *                    regexp=True, smart_strings=True):
  *     u"""XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
  */
+  __Pyx_TraceLine(369,0,__PYX_ERR(18, 369, __pyx_L1_error))
   __pyx_t_15 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 369, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_namespaces, ((PyObject *)Py_None)) < 0) __PYX_ERR(18, 369, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_extensions, ((PyObject *)Py_None)) < 0) __PYX_ERR(18, 369, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_regexp, ((PyObject *)Py_True)) < 0) __PYX_ERR(18, 369, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_smart_strings, ((PyObject *)Py_True)) < 0) __PYX_ERR(18, 369, __pyx_L1_error)
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_65XPathEvaluator, 0, __pyx_n_s_XPathEvaluator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__634)); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 369, __pyx_L1_error)
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_65XPathEvaluator, 0, __pyx_n_s_XPathEvaluator, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 369, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_15);
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241446,9 +255830,10 @@ if (!__Pyx_RefNanny) {
  * _find_namespaces = re.compile(b'({[^}]+})').findall
  * 
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(18, 467, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__636, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 467, __pyx_L1_error)
+  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__664, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_sub); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 467, __pyx_L1_error)
@@ -241466,9 +255851,10 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef class ETXPath(XPath):
  */
+  __Pyx_TraceLine(468,0,__PYX_ERR(18, 468, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__638, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 468, __pyx_L1_error)
+  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__666, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(18, 468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_findall); if (unlikely(!__pyx_t_13)) __PYX_ERR(18, 468, __pyx_L1_error)
@@ -241486,6 +255872,7 @@ if (!__Pyx_RefNanny) {
  *     """Error serialising an XSLT result.
  *     """
  */
+  __Pyx_TraceLine(18,0,__PYX_ERR(3, 18, __pyx_L1_error))
   __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 18, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTError));
@@ -241513,6 +255900,7 @@ if (!__Pyx_RefNanny) {
  * LIBXSLT_VERSION = __unpackIntVersion(xslt.xsltLibxsltVersion)
  * 
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(3, 28, __pyx_L1_error))
   __pyx_t_13 = __pyx_f_4lxml_5etree___unpackIntVersion(LIBXSLT_VERSION); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 28, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_LIBXSLT_COMPILED_VERSION, __pyx_t_13) < 0) __PYX_ERR(3, 28, __pyx_L1_error)
@@ -241525,6 +255913,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(3, 29, __pyx_L1_error))
   __pyx_t_13 = __pyx_f_4lxml_5etree___unpackIntVersion(xsltLibxsltVersion); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_LIBXSLT_VERSION, __pyx_t_13) < 0) __PYX_ERR(3, 29, __pyx_L1_error)
@@ -241537,6 +255926,7 @@ if (!__Pyx_RefNanny) {
  * xslt.xsltSetLoaderFunc(<xslt.xsltDocLoaderFunc>_xslt_doc_loader)
  * 
  */
+  __Pyx_TraceLine(163,0,__PYX_ERR(3, 163, __pyx_L1_error))
   __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER = xsltDocDefaultLoader;
 
   /* "src/lxml/xslt.pxi":164
@@ -241546,6 +255936,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(164,0,__PYX_ERR(3, 164, __pyx_L1_error))
   xsltSetLoaderFunc(((xsltDocLoaderFunc)__pyx_f_4lxml_5etree__xslt_doc_loader));
 
   /* "src/lxml/xslt.pxi":205
@@ -241555,6 +255946,7 @@ if (!__Pyx_RefNanny) {
  *         read_network=False, write_network=False)
  * 
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(3, 205, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_read_file, Py_False) < 0) __PYX_ERR(3, 205, __pyx_L1_error)
@@ -241568,6 +255960,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     DENY_WRITE = XSLTAccessControl(
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(3, 206, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_read_network, Py_False) < 0) __PYX_ERR(3, 205, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_write_network, Py_False) < 0) __PYX_ERR(3, 205, __pyx_L1_error)
 
@@ -241578,6 +255971,7 @@ if (!__Pyx_RefNanny) {
  *         read_file=False, write_file=False, create_dir=False,
  *         read_network=False, write_network=False)
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(3, 204, __pyx_L1_error))
   __pyx_t_15 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTAccessControl), __pyx_empty_tuple, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 204, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241592,6 +255986,7 @@ if (!__Pyx_RefNanny) {
  *         read_network=True, write_network=False)
  * 
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(3, 209, __pyx_L1_error))
   __pyx_t_15 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 209, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_read_file, Py_True) < 0) __PYX_ERR(3, 209, __pyx_L1_error)
@@ -241605,6 +256000,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(3, 210, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_read_network, Py_True) < 0) __PYX_ERR(3, 209, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_write_network, Py_False) < 0) __PYX_ERR(3, 209, __pyx_L1_error)
 
@@ -241615,6 +256011,7 @@ if (!__Pyx_RefNanny) {
  *         read_file=True, write_file=False, create_dir=False,
  *         read_network=True, write_network=False)
  */
+  __Pyx_TraceLine(208,0,__PYX_ERR(3, 208, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XSLTAccessControl), __pyx_empty_tuple, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 208, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241629,6 +256026,7 @@ if (!__Pyx_RefNanny) {
  * 
  * @cython.final
  */
+  __Pyx_TraceLine(268,0,__PYX_ERR(3, 268, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree_EMPTY_DICT);
@@ -241643,7 +256041,8 @@ if (!__Pyx_RefNanny) {
  *         u"""strparam(strval)
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_7strparam, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_strparam, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__640)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 436, __pyx_L1_error)
+  __Pyx_TraceLine(436,0,__PYX_ERR(3, 436, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_7strparam, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_strparam, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__351)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 436, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_strparam, __pyx_t_13) < 0) __PYX_ERR(3, 436, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241656,6 +256055,7 @@ if (!__Pyx_RefNanny) {
  *     def strparam(strval):
  *         u"""strparam(strval)
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(3, 435, __pyx_L1_error))
   __pyx_t_13 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_4lxml_5etree_XSLT, __pyx_n_s_strparam); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 436, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_builtin_staticmethod, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 435, __pyx_L1_error)
@@ -241672,7 +256072,8 @@ if (!__Pyx_RefNanny) {
  *         u"""set_global_max_depth(max_depth)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_9set_global_max_depth, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_set_global_max_depth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__642)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 450, __pyx_L1_error)
+  __Pyx_TraceLine(450,0,__PYX_ERR(3, 450, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_9set_global_max_depth, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_set_global_max_depth, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 450, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_set_global_max_depth, __pyx_t_15) < 0) __PYX_ERR(3, 450, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241685,6 +256086,7 @@ if (!__Pyx_RefNanny) {
  *     def set_global_max_depth(int max_depth):
  *         u"""set_global_max_depth(max_depth)
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(3, 449, __pyx_L1_error))
   __pyx_t_15 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_4lxml_5etree_XSLT, __pyx_n_s_set_global_max_depth); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 450, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_builtin_staticmethod, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 449, __pyx_L1_error)
@@ -241701,7 +256103,8 @@ if (!__Pyx_RefNanny) {
  *         u"""apply(self, _input,  profile_run=False, **kw)
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_11apply, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_apply, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__644)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 469, __pyx_L1_error)
+  __Pyx_TraceLine(469,0,__PYX_ERR(3, 469, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_11apply, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_apply, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__354)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 469, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_apply, __pyx_t_13) < 0) __PYX_ERR(3, 469, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241714,7 +256117,8 @@ if (!__Pyx_RefNanny) {
  *         u"""tostring(self, result_tree)
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_13tostring, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__646)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 475, __pyx_L1_error)
+  __Pyx_TraceLine(475,0,__PYX_ERR(3, 475, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_13tostring, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT_tostring, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_tostring, __pyx_t_13) < 0) __PYX_ERR(3, 475, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241727,7 +256131,8 @@ if (!__Pyx_RefNanny) {
  *         return self.__copy__()
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_15__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__648)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 484, __pyx_L1_error)
+  __Pyx_TraceLine(484,0,__PYX_ERR(3, 484, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_15__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT___deepcopy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__356)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_deepcopy, __pyx_t_13) < 0) __PYX_ERR(3, 484, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241740,7 +256145,8 @@ if (!__Pyx_RefNanny) {
  *         return _copyXSLT(self)
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_17__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__650)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 487, __pyx_L1_error)
+  __Pyx_TraceLine(487,0,__PYX_ERR(3, 487, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_4XSLT_17__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLT___copy, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__357)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s_copy_2, __pyx_t_13) < 0) __PYX_ERR(3, 487, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241753,7 +256159,8 @@ if (!__Pyx_RefNanny) {
  *         """write_output(self, file, *, compression=0)
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_XSLTResultTree_1write_output, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTResultTree_write_output, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__652)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 713, __pyx_L1_error)
+  __Pyx_TraceLine(713,0,__PYX_ERR(3, 713, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_XSLTResultTree_1write_output, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTResultTree_write_output, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 713, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__XSLTResultTree->tp_dict, __pyx_n_s_write_output, __pyx_t_13) < 0) __PYX_ERR(3, 713, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241766,7 +256173,8 @@ if (!__Pyx_RefNanny) {
  *         cdef xmlChar* encoding
  *         cdef xmlChar* s = NULL
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_XSLTResultTree_5__unicode__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTResultTree___unicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__654)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 788, __pyx_L1_error)
+  __Pyx_TraceLine(788,0,__PYX_ERR(3, 788, __pyx_L1_error))
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_XSLTResultTree_5__unicode__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTResultTree___unicode, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__XSLTResultTree->tp_dict, __pyx_n_s_unicode_2, __pyx_t_13) < 0) __PYX_ERR(3, 788, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -241779,6 +256187,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # enable EXSLT support for XSLT
  */
+  __Pyx_TraceLine(873,0,__PYX_ERR(3, 873, __pyx_L1_error))
   xsltRegisterAllExtras();
 
   /* "src/lxml/xslt.pxi":876
@@ -241788,6 +256197,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(876,0,__PYX_ERR(3, 876, __pyx_L1_error))
   exsltRegisterAll();
 
   /* "src/lxml/xslt.pxi":882
@@ -241797,9 +256207,10 @@ if (!__Pyx_RefNanny) {
  * cdef object _FIND_PI_HREF = _RE_PI_HREF.findall
  * cdef object _REPLACE_PI_HREF = _RE_PI_HREF.sub
  */
+  __Pyx_TraceLine(882,0,__PYX_ERR(3, 882, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_13)) __PYX_ERR(3, 882, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__655, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 882, __pyx_L1_error)
+  __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__675, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 882, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__RE_PI_HREF);
@@ -241814,6 +256225,7 @@ if (!__Pyx_RefNanny) {
  * cdef object _REPLACE_PI_HREF = _RE_PI_HREF.sub
  * cdef XPath __findStylesheetByID = None
  */
+  __Pyx_TraceLine(883,0,__PYX_ERR(3, 883, __pyx_L1_error))
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__RE_PI_HREF, __pyx_n_s_findall); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 883, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__FIND_PI_HREF);
@@ -241828,6 +256240,7 @@ if (!__Pyx_RefNanny) {
  * cdef XPath __findStylesheetByID = None
  * 
  */
+  __Pyx_TraceLine(884,0,__PYX_ERR(3, 884, __pyx_L1_error))
   __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__RE_PI_HREF, __pyx_n_s_sub); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 884, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__REPLACE_PI_HREF);
@@ -241842,6 +256255,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef _findStylesheetByID(_Document doc, id):
  */
+  __Pyx_TraceLine(885,0,__PYX_ERR(3, 885, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___findStylesheetByID, ((struct __pyx_obj_4lxml_5etree_XPath *)Py_None));
@@ -241854,7 +256268,8 @@ if (!__Pyx_RefNanny) {
  *         u"""parseXSL(self, parser=None)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26_XSLTProcessingInstruction_1parseXSL, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTProcessingInstruction_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__657)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 896, __pyx_L1_error)
+  __Pyx_TraceLine(896,0,__PYX_ERR(3, 896, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26_XSLTProcessingInstruction_1parseXSL, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTProcessingInstruction_parse, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 896, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction->tp_dict, __pyx_n_s_parseXSL, __pyx_t_15) < 0) __PYX_ERR(3, 896, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241867,7 +256282,8 @@ if (!__Pyx_RefNanny) {
  *         u"""set(self, key, value)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26_XSLTProcessingInstruction_3set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTProcessingInstruction_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__659)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 953, __pyx_L1_error)
+  __Pyx_TraceLine(953,0,__PYX_ERR(3, 953, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_26_XSLTProcessingInstruction_3set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTProcessingInstruction_set, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__364)); if (unlikely(!__pyx_t_15)) __PYX_ERR(3, 953, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction->tp_dict, __pyx_n_s_set, __pyx_t_15) < 0) __PYX_ERR(3, 953, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241880,7 +256296,8 @@ if (!__Pyx_RefNanny) {
  *         u"""execute(self, context, self_node, input_node, output_parent)
  *         Execute this extension element.
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_1execute, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_execute, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__661)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 6, __pyx_L1_error)
+  __Pyx_TraceLine(6,0,__PYX_ERR(19, 6, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_1execute, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_execute, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 6, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLTExtension->tp_dict, __pyx_n_s_execute, __pyx_t_15) < 0) __PYX_ERR(19, 6, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241893,7 +256310,8 @@ if (!__Pyx_RefNanny) {
  *                         *, elements_only=False, remove_blank_text=False):
  *         u"""apply_templates(self, context, node, output_parent=None, elements_only=False, remove_blank_text=False)
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_3apply_templates, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_apply_templates, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__663)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 22, __pyx_L1_error)
+  __Pyx_TraceLine(22,0,__PYX_ERR(19, 22, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_3apply_templates, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_apply_templates, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__366)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 22, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLTExtension->tp_dict, __pyx_n_s_apply_templates, __pyx_t_15) < 0) __PYX_ERR(19, 22, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241906,7 +256324,8 @@ if (!__Pyx_RefNanny) {
  *                          *, elements_only=False, remove_blank_text=False):
  *         u"""process_children(self, context, output_parent=None, elements_only=False, remove_blank_text=False)
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_5process_children, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_process_children, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__665)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 74, __pyx_L1_error)
+  __Pyx_TraceLine(74,0,__PYX_ERR(19, 74, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_13XSLTExtension_5process_children, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XSLTExtension_process_children, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__367)); if (unlikely(!__pyx_t_15)) __PYX_ERR(19, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLTExtension->tp_dict, __pyx_n_s_process_children, __pyx_t_15) < 0) __PYX_ERR(19, 74, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241919,7 +256338,8 @@ if (!__Pyx_RefNanny) {
  *         u"""validate(self, etree)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_3validate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_validate, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__667)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3517, __pyx_L1_error)
+  __Pyx_TraceLine(3517,0,__PYX_ERR(0, 3517, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_3validate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_validate, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__369)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3517, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_validate, __pyx_t_15) < 0) __PYX_ERR(0, 3517, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241932,7 +256352,8 @@ if (!__Pyx_RefNanny) {
  *         u"""assertValid(self, etree)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_5assertValid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_assertValid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__669)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3526, __pyx_L1_error)
+  __Pyx_TraceLine(3526,0,__PYX_ERR(0, 3526, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_5assertValid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_assertValid, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3526, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_assertValid, __pyx_t_15) < 0) __PYX_ERR(0, 3526, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241945,7 +256366,8 @@ if (!__Pyx_RefNanny) {
  *         u"""assert_(self, etree)
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_7assert_, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_assert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__671)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3536, __pyx_L1_error)
+  __Pyx_TraceLine(3536,0,__PYX_ERR(0, 3536, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_7assert_, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator_assert, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__371)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_assert, __pyx_t_15) < 0) __PYX_ERR(0, 3536, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241958,7 +256380,8 @@ if (!__Pyx_RefNanny) {
  *                               message, filename):
  *         self._error_log._receiveGeneric(domain, type, level, line, message,
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_9_append_log_message, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator__append_log_message, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__673)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3545, __pyx_L1_error)
+  __Pyx_TraceLine(3545,0,__PYX_ERR(0, 3545, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_9_append_log_message, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator__append_log_message, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3545, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_append_log_message, __pyx_t_15) < 0) __PYX_ERR(0, 3545, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241971,7 +256394,8 @@ if (!__Pyx_RefNanny) {
  *         self._error_log.clear()
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_11_clear_error_log, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator__clear_error_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__675)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3550, __pyx_L1_error)
+  __Pyx_TraceLine(3550,0,__PYX_ERR(0, 3550, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_10_Validator_11_clear_error_log, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Validator__clear_error_log, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3550, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_clear_error_log, __pyx_t_15) < 0) __PYX_ERR(0, 3550, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241984,7 +256408,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidDTDNode(self, self._c_node)
  *         cdef tree.xmlEnumeration *c_node = self._c_node.tree
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_DTDAttributeDecl_3itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDAttributeDecl_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 163, __pyx_L1_error)
+  __Pyx_TraceLine(163,0,__PYX_ERR(20, 163, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_DTDAttributeDecl_3itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDAttributeDecl_itervalues, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__374)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 163, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DTDAttributeDecl->tp_dict, __pyx_n_s_itervalues, __pyx_t_15) < 0) __PYX_ERR(20, 163, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -241997,7 +256422,8 @@ if (!__Pyx_RefNanny) {
  *         return list(self.itervalues())
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_DTDAttributeDecl_6values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDAttributeDecl_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__678)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 170, __pyx_L1_error)
+  __Pyx_TraceLine(170,0,__PYX_ERR(20, 170, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_17_DTDAttributeDecl_6values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDAttributeDecl_values, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 170, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DTDAttributeDecl->tp_dict, __pyx_n_s_values, __pyx_t_15) < 0) __PYX_ERR(20, 170, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242010,7 +256436,8 @@ if (!__Pyx_RefNanny) {
  *         _assertValidDTDNode(self, self._c_node)
  *         cdef tree.xmlAttribute *c_node = self._c_node.attributes
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DTDElementDecl_3iterattributes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDElementDecl_iterattributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 223, __pyx_L1_error)
+  __Pyx_TraceLine(223,0,__PYX_ERR(20, 223, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DTDElementDecl_3iterattributes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDElementDecl_iterattributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__376)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 223, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DTDElementDecl->tp_dict, __pyx_n_s_iterattributes, __pyx_t_15) < 0) __PYX_ERR(20, 223, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242023,7 +256450,8 @@ if (!__Pyx_RefNanny) {
  *         return list(self.iterattributes())
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DTDElementDecl_6attributes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDElementDecl_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__681)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 233, __pyx_L1_error)
+  __Pyx_TraceLine(233,0,__PYX_ERR(20, 233, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_15_DTDElementDecl_6attributes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTDElementDecl_attributes, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DTDElementDecl->tp_dict, __pyx_n_s_attributes, __pyx_t_15) < 0) __PYX_ERR(20, 233, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242036,7 +256464,8 @@ if (!__Pyx_RefNanny) {
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
  *         while c_node is not NULL:
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_3iterelements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterelements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 314, __pyx_L1_error)
+  __Pyx_TraceLine(314,0,__PYX_ERR(20, 314, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_3iterelements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterelements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterelements, __pyx_t_15) < 0) __PYX_ERR(20, 314, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242049,7 +256478,8 @@ if (!__Pyx_RefNanny) {
  *         return list(self.iterelements())
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_6elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__684)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 324, __pyx_L1_error)
+  __Pyx_TraceLine(324,0,__PYX_ERR(20, 324, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_6elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_elements, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__381)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 324, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_elements, __pyx_t_15) < 0) __PYX_ERR(20, 324, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242062,7 +256492,8 @@ if (!__Pyx_RefNanny) {
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
  *         while c_node is not NULL:
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_8iterentities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterentities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 327, __pyx_L1_error)
+  __Pyx_TraceLine(327,0,__PYX_ERR(20, 327, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_8iterentities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_iterentities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__382)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_iterentities, __pyx_t_15) < 0) __PYX_ERR(20, 327, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242075,7 +256506,8 @@ if (!__Pyx_RefNanny) {
  *         return list(self.iterentities())
  * 
  */
-  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_11entities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_entities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__687)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 337, __pyx_L1_error)
+  __Pyx_TraceLine(337,0,__PYX_ERR(20, 337, __pyx_L1_error))
+  __pyx_t_15 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_3DTD_11entities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DTD_entities, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__383)); if (unlikely(!__pyx_t_15)) __PYX_ERR(20, 337, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_15);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_DTD->tp_dict, __pyx_n_s_entities, __pyx_t_15) < 0) __PYX_ERR(20, 337, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
@@ -242088,6 +256520,7 @@ if (!__Pyx_RefNanny) {
  *     import rnc2rng as _rnc2rng
  * except ImportError:
  */
+  __Pyx_TraceLine(5,0,__PYX_ERR(21, 5, __pyx_L36_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -242104,6 +256537,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     _rnc2rng = None
  */
+      __Pyx_TraceLine(6,0,__PYX_ERR(21, 6, __pyx_L36_error))
       __pyx_t_15 = __Pyx_Import(__pyx_n_s_rnc2rng, 0, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(21, 6, __pyx_L36_error)
       __Pyx_GOTREF(__pyx_t_15);
       __Pyx_XGOTREF(__pyx_v_4lxml_5etree__rnc2rng);
@@ -242141,6 +256575,7 @@ if (!__Pyx_RefNanny) {
  *     _rnc2rng = None
  * 
  */
+    __Pyx_TraceLine(7,0,__PYX_ERR(21, 7, __pyx_L38_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -242156,6 +256591,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+      __Pyx_TraceLine(8,0,__PYX_ERR(21, 8, __pyx_L38_except_error))
       __Pyx_INCREF(Py_None);
       __Pyx_XGOTREF(__pyx_v_4lxml_5etree__rnc2rng);
       __Pyx_DECREF_SET(__pyx_v_4lxml_5etree__rnc2rng, Py_None);
@@ -242195,7 +256631,8 @@ if (!__Pyx_RefNanny) {
  *         """Parse a RelaxNG schema in compact syntax from a text string
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7RelaxNG_9from_rnc_string, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RelaxNG_from_rnc_string, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__689)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 154, __pyx_L1_error)
+  __Pyx_TraceLine(154,0,__PYX_ERR(21, 154, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_7RelaxNG_9from_rnc_string, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RelaxNG_from_rnc_string, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__391)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNG->tp_dict, __pyx_n_s_from_rnc_string, __pyx_t_2) < 0) __PYX_ERR(21, 154, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242208,6 +256645,7 @@ if (!__Pyx_RefNanny) {
  *     def from_rnc_string(cls, src, base_url=None):
  *         """Parse a RelaxNG schema in compact syntax from a text string
  */
+  __Pyx_TraceLine(153,0,__PYX_ERR(21, 153, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNG, __pyx_n_s_from_rnc_string); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(21, 153, __pyx_L1_error)
@@ -242224,6 +256662,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(22, 23, __pyx_L1_error))
   __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(22, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_13);
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 23, __pyx_L1_error)
@@ -242239,7 +256678,8 @@ if (!__Pyx_RefNanny) {
  *     u"boolean(//xs:attribute[@default or @fixed][1])",
  *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__690, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 21, __pyx_L1_error)
+  __Pyx_TraceLine(21,0,__PYX_ERR(22, 21, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XPath), __pyx_tuple__695, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 21, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes));
@@ -242254,7 +256694,8 @@ if (!__Pyx_RefNanny) {
  *         """bytes_used(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_1bytes_used, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_bytes_used, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__692)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 7, __pyx_L1_error)
+  __Pyx_TraceLine(7,0,__PYX_ERR(25, 7, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_1bytes_used, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_bytes_used, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__394)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 7, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug->tp_dict, __pyx_n_s_bytes_used, __pyx_t_2) < 0) __PYX_ERR(25, 7, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242267,7 +256708,8 @@ if (!__Pyx_RefNanny) {
  *         """blocks_used(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_3blocks_used, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_blocks_used, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__694)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 16, __pyx_L1_error)
+  __Pyx_TraceLine(16,0,__PYX_ERR(25, 16, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_3blocks_used, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_blocks_used, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug->tp_dict, __pyx_n_s_blocks_used, __pyx_t_2) < 0) __PYX_ERR(25, 16, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242280,7 +256722,8 @@ if (!__Pyx_RefNanny) {
  *         """dict_size(self)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_5dict_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_dict_size, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__696)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
+  __Pyx_TraceLine(25,0,__PYX_ERR(25, 25, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_5dict_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_dict_size, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__396)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug->tp_dict, __pyx_n_s_dict_size, __pyx_t_2) < 0) __PYX_ERR(25, 25, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242293,7 +256736,8 @@ if (!__Pyx_RefNanny) {
  *         """dump(self, output_file=None, byte_count=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_7dump, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__698)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 36, __pyx_L1_error)
+  __Pyx_TraceLine(36,0,__PYX_ERR(25, 36, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_7dump, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_dump, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 36, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug->tp_dict, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(25, 36, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242306,7 +256750,8 @@ if (!__Pyx_RefNanny) {
  *         """show(self, output_file=None, block_count=None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_9show, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_show, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__700)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 66, __pyx_L1_error)
+  __Pyx_TraceLine(66,0,__PYX_ERR(25, 66, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_5etree_9_MemDebug_9show, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MemDebug_show, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 66, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug->tp_dict, __pyx_n_s_show, __pyx_t_2) < 0) __PYX_ERR(25, 66, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -242317,6 +256762,7 @@ if (!__Pyx_RefNanny) {
  * 
  * memory_debugger = _MemDebug()             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(91,0,__PYX_ERR(25, 91, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__MemDebug)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 91, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_memory_debugger, __pyx_t_2) < 0) __PYX_ERR(25, 91, __pyx_L1_error)
@@ -242327,12 +256773,14 @@ if (!__Pyx_RefNanny) {
  * # cython: auto_pickle=False
  * 
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_XML_line_3167, __pyx_kp_u_XML_text_parser_None_base_url_No) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_FunctionNamespace_line_207, __pyx_kp_u_FunctionNamespace_ns_uri_Retriev) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_2, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -242368,73 +256816,88 @@ if (!__Pyx_RefNanny) {
 }
 
 static void __Pyx_CleanupGlobals(void) {
-  Py_CLEAR(__pyx_tuple_);
-  Py_CLEAR(__pyx_tuple__2);
-  Py_CLEAR(__pyx_tuple__5);
-  Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_slice__7);
+  Py_CLEAR(__pyx_codeobj_);
+  Py_CLEAR(__pyx_codeobj__2);
+  Py_CLEAR(__pyx_codeobj__3);
+  Py_CLEAR(__pyx_codeobj__4);
+  Py_CLEAR(__pyx_codeobj__5);
+  Py_CLEAR(__pyx_codeobj__6);
+  Py_CLEAR(__pyx_codeobj__7);
   Py_CLEAR(__pyx_tuple__8);
-  Py_CLEAR(__pyx_slice__9);
-  Py_CLEAR(__pyx_tuple__10);
-  Py_CLEAR(__pyx_slice__11);
+  Py_CLEAR(__pyx_tuple__9);
   Py_CLEAR(__pyx_tuple__12);
-  Py_CLEAR(__pyx_slice__13);
-  Py_CLEAR(__pyx_tuple__14);
+  Py_CLEAR(__pyx_tuple__13);
+  Py_CLEAR(__pyx_slice__14);
+  Py_CLEAR(__pyx_tuple__15);
+  Py_CLEAR(__pyx_slice__16);
   Py_CLEAR(__pyx_tuple__17);
-  Py_CLEAR(__pyx_tuple__18);
+  Py_CLEAR(__pyx_slice__18);
   Py_CLEAR(__pyx_tuple__19);
-  Py_CLEAR(__pyx_tuple__20);
+  Py_CLEAR(__pyx_slice__20);
   Py_CLEAR(__pyx_tuple__21);
-  Py_CLEAR(__pyx_tuple__22);
-  Py_CLEAR(__pyx_tuple__23);
+  Py_CLEAR(__pyx_tuple__24);
+  Py_CLEAR(__pyx_tuple__25);
+  Py_CLEAR(__pyx_tuple__26);
   Py_CLEAR(__pyx_tuple__27);
+  Py_CLEAR(__pyx_tuple__28);
   Py_CLEAR(__pyx_tuple__29);
   Py_CLEAR(__pyx_tuple__30);
-  Py_CLEAR(__pyx_tuple__33);
-  Py_CLEAR(__pyx_tuple__37);
-  Py_CLEAR(__pyx_tuple__42);
-  Py_CLEAR(__pyx_tuple__43);
-  Py_CLEAR(__pyx_tuple__44);
-  Py_CLEAR(__pyx_tuple__45);
-  Py_CLEAR(__pyx_slice__49);
-  Py_CLEAR(__pyx_slice__50);
-  Py_CLEAR(__pyx_slice__51);
-  Py_CLEAR(__pyx_slice__52);
-  Py_CLEAR(__pyx_tuple__55);
-  Py_CLEAR(__pyx_tuple__56);
-  Py_CLEAR(__pyx_tuple__58);
+  Py_CLEAR(__pyx_codeobj__32);
+  Py_CLEAR(__pyx_codeobj__34);
+  Py_CLEAR(__pyx_codeobj__35);
+  Py_CLEAR(__pyx_codeobj__36);
+  Py_CLEAR(__pyx_codeobj__38);
+  Py_CLEAR(__pyx_codeobj__39);
+  Py_CLEAR(__pyx_codeobj__40);
+  Py_CLEAR(__pyx_codeobj__41);
+  Py_CLEAR(__pyx_codeobj__42);
+  Py_CLEAR(__pyx_codeobj__43);
+  Py_CLEAR(__pyx_codeobj__44);
+  Py_CLEAR(__pyx_codeobj__45);
+  Py_CLEAR(__pyx_codeobj__46);
+  Py_CLEAR(__pyx_codeobj__47);
+  Py_CLEAR(__pyx_codeobj__48);
+  Py_CLEAR(__pyx_codeobj__49);
+  Py_CLEAR(__pyx_codeobj__50);
+  Py_CLEAR(__pyx_codeobj__51);
+  Py_CLEAR(__pyx_codeobj__52);
+  Py_CLEAR(__pyx_codeobj__53);
+  Py_CLEAR(__pyx_tuple__54);
+  Py_CLEAR(__pyx_codeobj__55);
+  Py_CLEAR(__pyx_tuple__57);
+  Py_CLEAR(__pyx_codeobj__58);
   Py_CLEAR(__pyx_tuple__59);
   Py_CLEAR(__pyx_tuple__62);
-  Py_CLEAR(__pyx_tuple__63);
-  Py_CLEAR(__pyx_tuple__64);
-  Py_CLEAR(__pyx_tuple__65);
-  Py_CLEAR(__pyx_tuple__66);
-  Py_CLEAR(__pyx_tuple__67);
-  Py_CLEAR(__pyx_slice__68);
-  Py_CLEAR(__pyx_slice__69);
-  Py_CLEAR(__pyx_tuple__71);
-  Py_CLEAR(__pyx_tuple__73);
-  Py_CLEAR(__pyx_tuple__74);
-  Py_CLEAR(__pyx_tuple__75);
-  Py_CLEAR(__pyx_tuple__77);
+  Py_CLEAR(__pyx_codeobj__66);
+  Py_CLEAR(__pyx_codeobj__67);
+  Py_CLEAR(__pyx_codeobj__68);
+  Py_CLEAR(__pyx_codeobj__69);
+  Py_CLEAR(__pyx_codeobj__70);
+  Py_CLEAR(__pyx_codeobj__71);
+  Py_CLEAR(__pyx_codeobj__72);
+  Py_CLEAR(__pyx_codeobj__73);
+  Py_CLEAR(__pyx_codeobj__74);
+  Py_CLEAR(__pyx_codeobj__75);
+  Py_CLEAR(__pyx_codeobj__76);
+  Py_CLEAR(__pyx_codeobj__77);
   Py_CLEAR(__pyx_tuple__78);
   Py_CLEAR(__pyx_codeobj__79);
-  Py_CLEAR(__pyx_tuple__80);
-  Py_CLEAR(__pyx_tuple__81);
+  Py_CLEAR(__pyx_codeobj__80);
+  Py_CLEAR(__pyx_codeobj__81);
   Py_CLEAR(__pyx_codeobj__82);
-  Py_CLEAR(__pyx_tuple__83);
-  Py_CLEAR(__pyx_tuple__84);
-  Py_CLEAR(__pyx_tuple__85);
-  Py_CLEAR(__pyx_tuple__86);
-  Py_CLEAR(__pyx_tuple__87);
-  Py_CLEAR(__pyx_slice__88);
-  Py_CLEAR(__pyx_slice__89);
-  Py_CLEAR(__pyx_tuple__90);
-  Py_CLEAR(__pyx_slice__91);
-  Py_CLEAR(__pyx_tuple__92);
-  Py_CLEAR(__pyx_tuple__93);
-  Py_CLEAR(__pyx_tuple__94);
-  Py_CLEAR(__pyx_tuple__95);
+  Py_CLEAR(__pyx_codeobj__83);
+  Py_CLEAR(__pyx_codeobj__84);
+  Py_CLEAR(__pyx_codeobj__85);
+  Py_CLEAR(__pyx_codeobj__86);
+  Py_CLEAR(__pyx_codeobj__87);
+  Py_CLEAR(__pyx_codeobj__88);
+  Py_CLEAR(__pyx_codeobj__89);
+  Py_CLEAR(__pyx_codeobj__90);
+  Py_CLEAR(__pyx_codeobj__91);
+  Py_CLEAR(__pyx_codeobj__92);
+  Py_CLEAR(__pyx_codeobj__93);
+  Py_CLEAR(__pyx_codeobj__94);
+  Py_CLEAR(__pyx_codeobj__95);
   Py_CLEAR(__pyx_codeobj__96);
   Py_CLEAR(__pyx_codeobj__97);
   Py_CLEAR(__pyx_codeobj__98);
@@ -242442,258 +256905,243 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_codeobj__100);
   Py_CLEAR(__pyx_codeobj__101);
   Py_CLEAR(__pyx_codeobj__102);
-  Py_CLEAR(__pyx_tuple__103);
-  Py_CLEAR(__pyx_tuple__104);
-  Py_CLEAR(__pyx_tuple__105);
+  Py_CLEAR(__pyx_codeobj__103);
+  Py_CLEAR(__pyx_codeobj__104);
+  Py_CLEAR(__pyx_codeobj__105);
   Py_CLEAR(__pyx_codeobj__106);
   Py_CLEAR(__pyx_codeobj__107);
-  Py_CLEAR(__pyx_tuple__108);
-  Py_CLEAR(__pyx_tuple__109);
-  Py_CLEAR(__pyx_tuple__110);
-  Py_CLEAR(__pyx_tuple__111);
-  Py_CLEAR(__pyx_tuple__112);
-  Py_CLEAR(__pyx_tuple__113);
-  Py_CLEAR(__pyx_tuple__114);
-  Py_CLEAR(__pyx_tuple__115);
-  Py_CLEAR(__pyx_slice__116);
-  Py_CLEAR(__pyx_slice__117);
-  Py_CLEAR(__pyx_tuple__118);
-  Py_CLEAR(__pyx_tuple__119);
-  Py_CLEAR(__pyx_tuple__120);
-  Py_CLEAR(__pyx_slice__121);
+  Py_CLEAR(__pyx_codeobj__108);
+  Py_CLEAR(__pyx_codeobj__109);
+  Py_CLEAR(__pyx_codeobj__110);
+  Py_CLEAR(__pyx_codeobj__111);
+  Py_CLEAR(__pyx_codeobj__116);
+  Py_CLEAR(__pyx_codeobj__117);
+  Py_CLEAR(__pyx_codeobj__118);
+  Py_CLEAR(__pyx_codeobj__119);
+  Py_CLEAR(__pyx_codeobj__120);
+  Py_CLEAR(__pyx_codeobj__121);
   Py_CLEAR(__pyx_tuple__122);
+  Py_CLEAR(__pyx_tuple__123);
+  Py_CLEAR(__pyx_tuple__124);
   Py_CLEAR(__pyx_tuple__125);
-  Py_CLEAR(__pyx_tuple__126);
-  Py_CLEAR(__pyx_tuple__127);
-  Py_CLEAR(__pyx_tuple__128);
-  Py_CLEAR(__pyx_tuple__129);
-  Py_CLEAR(__pyx_tuple__130);
+  Py_CLEAR(__pyx_codeobj__126);
+  Py_CLEAR(__pyx_codeobj__127);
   Py_CLEAR(__pyx_codeobj__131);
   Py_CLEAR(__pyx_codeobj__132);
-  Py_CLEAR(__pyx_tuple__133);
-  Py_CLEAR(__pyx_tuple__134);
+  Py_CLEAR(__pyx_codeobj__133);
+  Py_CLEAR(__pyx_slice__134);
   Py_CLEAR(__pyx_codeobj__135);
-  Py_CLEAR(__pyx_codeobj__136);
-  Py_CLEAR(__pyx_tuple__137);
-  Py_CLEAR(__pyx_tuple__138);
-  Py_CLEAR(__pyx_tuple__139);
-  Py_CLEAR(__pyx_tuple__140);
-  Py_CLEAR(__pyx_slice__141);
-  Py_CLEAR(__pyx_tuple__142);
-  Py_CLEAR(__pyx_slice__143);
-  Py_CLEAR(__pyx_tuple__144);
-  Py_CLEAR(__pyx_tuple__145);
-  Py_CLEAR(__pyx_tuple__146);
+  Py_CLEAR(__pyx_slice__136);
+  Py_CLEAR(__pyx_codeobj__137);
+  Py_CLEAR(__pyx_slice__138);
+  Py_CLEAR(__pyx_codeobj__139);
+  Py_CLEAR(__pyx_slice__140);
+  Py_CLEAR(__pyx_codeobj__141);
+  Py_CLEAR(__pyx_codeobj__142);
+  Py_CLEAR(__pyx_codeobj__143);
+  Py_CLEAR(__pyx_codeobj__144);
+  Py_CLEAR(__pyx_codeobj__145);
+  Py_CLEAR(__pyx_codeobj__146);
   Py_CLEAR(__pyx_codeobj__147);
-  Py_CLEAR(__pyx_tuple__148);
+  Py_CLEAR(__pyx_codeobj__148);
   Py_CLEAR(__pyx_codeobj__149);
-  Py_CLEAR(__pyx_tuple__150);
+  Py_CLEAR(__pyx_codeobj__150);
   Py_CLEAR(__pyx_codeobj__151);
-  Py_CLEAR(__pyx_tuple__152);
+  Py_CLEAR(__pyx_codeobj__152);
   Py_CLEAR(__pyx_codeobj__153);
-  Py_CLEAR(__pyx_tuple__154);
+  Py_CLEAR(__pyx_codeobj__154);
   Py_CLEAR(__pyx_codeobj__155);
-  Py_CLEAR(__pyx_tuple__156);
+  Py_CLEAR(__pyx_codeobj__156);
   Py_CLEAR(__pyx_codeobj__157);
-  Py_CLEAR(__pyx_tuple__158);
-  Py_CLEAR(__pyx_tuple__159);
-  Py_CLEAR(__pyx_tuple__160);
-  Py_CLEAR(__pyx_codeobj__161);
+  Py_CLEAR(__pyx_codeobj__158);
+  Py_CLEAR(__pyx_codeobj__159);
   Py_CLEAR(__pyx_tuple__162);
-  Py_CLEAR(__pyx_codeobj__163);
-  Py_CLEAR(__pyx_tuple__164);
+  Py_CLEAR(__pyx_tuple__163);
+  Py_CLEAR(__pyx_codeobj__164);
   Py_CLEAR(__pyx_codeobj__165);
-  Py_CLEAR(__pyx_tuple__166);
-  Py_CLEAR(__pyx_codeobj__167);
+  Py_CLEAR(__pyx_tuple__167);
   Py_CLEAR(__pyx_tuple__168);
   Py_CLEAR(__pyx_codeobj__169);
-  Py_CLEAR(__pyx_tuple__170);
-  Py_CLEAR(__pyx_codeobj__171);
-  Py_CLEAR(__pyx_tuple__172);
+  Py_CLEAR(__pyx_codeobj__172);
   Py_CLEAR(__pyx_codeobj__173);
-  Py_CLEAR(__pyx_tuple__174);
+  Py_CLEAR(__pyx_codeobj__174);
   Py_CLEAR(__pyx_codeobj__175);
-  Py_CLEAR(__pyx_tuple__176);
+  Py_CLEAR(__pyx_codeobj__176);
   Py_CLEAR(__pyx_codeobj__177);
-  Py_CLEAR(__pyx_tuple__178);
-  Py_CLEAR(__pyx_codeobj__179);
-  Py_CLEAR(__pyx_tuple__180);
+  Py_CLEAR(__pyx_codeobj__178);
+  Py_CLEAR(__pyx_tuple__179);
+  Py_CLEAR(__pyx_codeobj__180);
   Py_CLEAR(__pyx_codeobj__181);
-  Py_CLEAR(__pyx_tuple__182);
-  Py_CLEAR(__pyx_codeobj__183);
+  Py_CLEAR(__pyx_codeobj__182);
+  Py_CLEAR(__pyx_tuple__183);
   Py_CLEAR(__pyx_tuple__184);
-  Py_CLEAR(__pyx_codeobj__185);
-  Py_CLEAR(__pyx_tuple__186);
+  Py_CLEAR(__pyx_tuple__185);
+  Py_CLEAR(__pyx_codeobj__186);
   Py_CLEAR(__pyx_codeobj__187);
-  Py_CLEAR(__pyx_tuple__188);
+  Py_CLEAR(__pyx_codeobj__188);
   Py_CLEAR(__pyx_codeobj__189);
   Py_CLEAR(__pyx_tuple__190);
-  Py_CLEAR(__pyx_codeobj__191);
-  Py_CLEAR(__pyx_tuple__192);
+  Py_CLEAR(__pyx_tuple__191);
+  Py_CLEAR(__pyx_codeobj__192);
   Py_CLEAR(__pyx_codeobj__193);
-  Py_CLEAR(__pyx_tuple__194);
-  Py_CLEAR(__pyx_codeobj__195);
-  Py_CLEAR(__pyx_tuple__196);
+  Py_CLEAR(__pyx_codeobj__194);
+  Py_CLEAR(__pyx_slice__195);
+  Py_CLEAR(__pyx_codeobj__196);
   Py_CLEAR(__pyx_codeobj__197);
-  Py_CLEAR(__pyx_tuple__198);
+  Py_CLEAR(__pyx_codeobj__198);
   Py_CLEAR(__pyx_codeobj__199);
-  Py_CLEAR(__pyx_tuple__200);
+  Py_CLEAR(__pyx_codeobj__200);
   Py_CLEAR(__pyx_codeobj__201);
-  Py_CLEAR(__pyx_tuple__202);
-  Py_CLEAR(__pyx_tuple__203);
+  Py_CLEAR(__pyx_codeobj__202);
+  Py_CLEAR(__pyx_codeobj__203);
   Py_CLEAR(__pyx_codeobj__204);
-  Py_CLEAR(__pyx_tuple__205);
-  Py_CLEAR(__pyx_tuple__206);
-  Py_CLEAR(__pyx_tuple__207);
-  Py_CLEAR(__pyx_tuple__208);
-  Py_CLEAR(__pyx_tuple__209);
-  Py_CLEAR(__pyx_tuple__210);
+  Py_CLEAR(__pyx_codeobj__205);
+  Py_CLEAR(__pyx_codeobj__206);
+  Py_CLEAR(__pyx_codeobj__207);
+  Py_CLEAR(__pyx_codeobj__208);
+  Py_CLEAR(__pyx_codeobj__209);
+  Py_CLEAR(__pyx_codeobj__210);
   Py_CLEAR(__pyx_codeobj__211);
-  Py_CLEAR(__pyx_tuple__212);
-  Py_CLEAR(__pyx_codeobj__213);
-  Py_CLEAR(__pyx_tuple__214);
+  Py_CLEAR(__pyx_codeobj__212);
+  Py_CLEAR(__pyx_slice__213);
   Py_CLEAR(__pyx_codeobj__215);
-  Py_CLEAR(__pyx_tuple__216);
+  Py_CLEAR(__pyx_codeobj__216);
   Py_CLEAR(__pyx_codeobj__217);
-  Py_CLEAR(__pyx_tuple__218);
+  Py_CLEAR(__pyx_codeobj__218);
   Py_CLEAR(__pyx_codeobj__219);
-  Py_CLEAR(__pyx_tuple__220);
+  Py_CLEAR(__pyx_codeobj__220);
   Py_CLEAR(__pyx_codeobj__221);
-  Py_CLEAR(__pyx_tuple__222);
+  Py_CLEAR(__pyx_codeobj__222);
   Py_CLEAR(__pyx_codeobj__223);
-  Py_CLEAR(__pyx_tuple__224);
+  Py_CLEAR(__pyx_codeobj__224);
   Py_CLEAR(__pyx_codeobj__225);
-  Py_CLEAR(__pyx_tuple__226);
+  Py_CLEAR(__pyx_codeobj__226);
   Py_CLEAR(__pyx_codeobj__227);
-  Py_CLEAR(__pyx_tuple__228);
+  Py_CLEAR(__pyx_codeobj__228);
   Py_CLEAR(__pyx_codeobj__229);
-  Py_CLEAR(__pyx_tuple__230);
+  Py_CLEAR(__pyx_codeobj__230);
   Py_CLEAR(__pyx_codeobj__231);
-  Py_CLEAR(__pyx_tuple__232);
-  Py_CLEAR(__pyx_codeobj__233);
-  Py_CLEAR(__pyx_tuple__234);
+  Py_CLEAR(__pyx_codeobj__232);
+  Py_CLEAR(__pyx_tuple__233);
   Py_CLEAR(__pyx_codeobj__235);
-  Py_CLEAR(__pyx_tuple__236);
+  Py_CLEAR(__pyx_codeobj__236);
   Py_CLEAR(__pyx_codeobj__237);
-  Py_CLEAR(__pyx_tuple__238);
+  Py_CLEAR(__pyx_codeobj__238);
   Py_CLEAR(__pyx_codeobj__239);
-  Py_CLEAR(__pyx_tuple__240);
-  Py_CLEAR(__pyx_codeobj__241);
-  Py_CLEAR(__pyx_tuple__242);
+  Py_CLEAR(__pyx_codeobj__240);
+  Py_CLEAR(__pyx_tuple__241);
+  Py_CLEAR(__pyx_codeobj__242);
   Py_CLEAR(__pyx_codeobj__243);
-  Py_CLEAR(__pyx_tuple__244);
-  Py_CLEAR(__pyx_codeobj__245);
-  Py_CLEAR(__pyx_tuple__246);
-  Py_CLEAR(__pyx_codeobj__247);
-  Py_CLEAR(__pyx_tuple__248);
+  Py_CLEAR(__pyx_codeobj__244);
+  Py_CLEAR(__pyx_tuple__245);
+  Py_CLEAR(__pyx_codeobj__246);
+  Py_CLEAR(__pyx_tuple__247);
+  Py_CLEAR(__pyx_codeobj__248);
   Py_CLEAR(__pyx_codeobj__249);
-  Py_CLEAR(__pyx_tuple__250);
+  Py_CLEAR(__pyx_codeobj__250);
   Py_CLEAR(__pyx_codeobj__251);
-  Py_CLEAR(__pyx_tuple__252);
   Py_CLEAR(__pyx_codeobj__253);
-  Py_CLEAR(__pyx_tuple__254);
+  Py_CLEAR(__pyx_codeobj__254);
   Py_CLEAR(__pyx_codeobj__255);
   Py_CLEAR(__pyx_tuple__256);
-  Py_CLEAR(__pyx_codeobj__257);
-  Py_CLEAR(__pyx_tuple__258);
+  Py_CLEAR(__pyx_tuple__257);
+  Py_CLEAR(__pyx_codeobj__258);
   Py_CLEAR(__pyx_codeobj__259);
-  Py_CLEAR(__pyx_tuple__260);
-  Py_CLEAR(__pyx_codeobj__261);
+  Py_CLEAR(__pyx_codeobj__260);
+  Py_CLEAR(__pyx_tuple__261);
   Py_CLEAR(__pyx_tuple__262);
   Py_CLEAR(__pyx_codeobj__263);
-  Py_CLEAR(__pyx_tuple__264);
-  Py_CLEAR(__pyx_codeobj__265);
+  Py_CLEAR(__pyx_codeobj__264);
+  Py_CLEAR(__pyx_tuple__265);
   Py_CLEAR(__pyx_tuple__266);
   Py_CLEAR(__pyx_codeobj__267);
   Py_CLEAR(__pyx_tuple__268);
   Py_CLEAR(__pyx_codeobj__269);
-  Py_CLEAR(__pyx_tuple__270);
-  Py_CLEAR(__pyx_codeobj__271);
+  Py_CLEAR(__pyx_codeobj__270);
+  Py_CLEAR(__pyx_tuple__271);
   Py_CLEAR(__pyx_tuple__272);
-  Py_CLEAR(__pyx_codeobj__273);
-  Py_CLEAR(__pyx_tuple__274);
-  Py_CLEAR(__pyx_codeobj__275);
-  Py_CLEAR(__pyx_tuple__276);
+  Py_CLEAR(__pyx_slice__273);
+  Py_CLEAR(__pyx_slice__274);
+  Py_CLEAR(__pyx_tuple__275);
+  Py_CLEAR(__pyx_slice__276);
   Py_CLEAR(__pyx_codeobj__277);
   Py_CLEAR(__pyx_tuple__278);
-  Py_CLEAR(__pyx_codeobj__279);
-  Py_CLEAR(__pyx_tuple__280);
-  Py_CLEAR(__pyx_codeobj__281);
+  Py_CLEAR(__pyx_tuple__279);
+  Py_CLEAR(__pyx_codeobj__280);
+  Py_CLEAR(__pyx_tuple__281);
   Py_CLEAR(__pyx_tuple__282);
   Py_CLEAR(__pyx_codeobj__283);
-  Py_CLEAR(__pyx_tuple__284);
+  Py_CLEAR(__pyx_codeobj__284);
   Py_CLEAR(__pyx_codeobj__285);
-  Py_CLEAR(__pyx_tuple__286);
+  Py_CLEAR(__pyx_codeobj__286);
   Py_CLEAR(__pyx_codeobj__287);
-  Py_CLEAR(__pyx_tuple__288);
+  Py_CLEAR(__pyx_codeobj__288);
   Py_CLEAR(__pyx_codeobj__289);
-  Py_CLEAR(__pyx_tuple__290);
+  Py_CLEAR(__pyx_codeobj__290);
   Py_CLEAR(__pyx_codeobj__291);
-  Py_CLEAR(__pyx_tuple__292);
+  Py_CLEAR(__pyx_codeobj__292);
   Py_CLEAR(__pyx_codeobj__293);
-  Py_CLEAR(__pyx_tuple__294);
+  Py_CLEAR(__pyx_codeobj__294);
   Py_CLEAR(__pyx_codeobj__295);
-  Py_CLEAR(__pyx_tuple__296);
-  Py_CLEAR(__pyx_codeobj__297);
-  Py_CLEAR(__pyx_tuple__298);
-  Py_CLEAR(__pyx_codeobj__299);
+  Py_CLEAR(__pyx_codeobj__296);
+  Py_CLEAR(__pyx_tuple__297);
+  Py_CLEAR(__pyx_codeobj__298);
+  Py_CLEAR(__pyx_tuple__299);
   Py_CLEAR(__pyx_tuple__300);
   Py_CLEAR(__pyx_codeobj__301);
-  Py_CLEAR(__pyx_tuple__302);
-  Py_CLEAR(__pyx_codeobj__303);
-  Py_CLEAR(__pyx_tuple__304);
+  Py_CLEAR(__pyx_codeobj__302);
+  Py_CLEAR(__pyx_tuple__303);
+  Py_CLEAR(__pyx_codeobj__304);
   Py_CLEAR(__pyx_codeobj__305);
   Py_CLEAR(__pyx_tuple__306);
-  Py_CLEAR(__pyx_codeobj__307);
+  Py_CLEAR(__pyx_tuple__307);
   Py_CLEAR(__pyx_tuple__308);
-  Py_CLEAR(__pyx_codeobj__309);
-  Py_CLEAR(__pyx_tuple__310);
-  Py_CLEAR(__pyx_codeobj__311);
-  Py_CLEAR(__pyx_tuple__312);
-  Py_CLEAR(__pyx_codeobj__313);
+  Py_CLEAR(__pyx_tuple__309);
+  Py_CLEAR(__pyx_codeobj__310);
+  Py_CLEAR(__pyx_tuple__311);
+  Py_CLEAR(__pyx_codeobj__312);
+  Py_CLEAR(__pyx_tuple__313);
   Py_CLEAR(__pyx_tuple__314);
   Py_CLEAR(__pyx_codeobj__315);
-  Py_CLEAR(__pyx_tuple__316);
+  Py_CLEAR(__pyx_codeobj__316);
   Py_CLEAR(__pyx_codeobj__317);
-  Py_CLEAR(__pyx_tuple__318);
+  Py_CLEAR(__pyx_codeobj__318);
   Py_CLEAR(__pyx_codeobj__319);
-  Py_CLEAR(__pyx_tuple__320);
-  Py_CLEAR(__pyx_codeobj__321);
-  Py_CLEAR(__pyx_tuple__322);
+  Py_CLEAR(__pyx_codeobj__320);
+  Py_CLEAR(__pyx_slice__321);
+  Py_CLEAR(__pyx_codeobj__322);
   Py_CLEAR(__pyx_codeobj__323);
-  Py_CLEAR(__pyx_tuple__324);
+  Py_CLEAR(__pyx_slice__324);
   Py_CLEAR(__pyx_codeobj__325);
-  Py_CLEAR(__pyx_tuple__326);
+  Py_CLEAR(__pyx_codeobj__326);
   Py_CLEAR(__pyx_codeobj__327);
-  Py_CLEAR(__pyx_tuple__328);
+  Py_CLEAR(__pyx_codeobj__328);
   Py_CLEAR(__pyx_codeobj__329);
-  Py_CLEAR(__pyx_tuple__330);
+  Py_CLEAR(__pyx_codeobj__330);
   Py_CLEAR(__pyx_codeobj__331);
-  Py_CLEAR(__pyx_tuple__332);
-  Py_CLEAR(__pyx_codeobj__333);
-  Py_CLEAR(__pyx_tuple__334);
+  Py_CLEAR(__pyx_codeobj__332);
+  Py_CLEAR(__pyx_tuple__333);
+  Py_CLEAR(__pyx_codeobj__334);
   Py_CLEAR(__pyx_codeobj__335);
   Py_CLEAR(__pyx_tuple__336);
-  Py_CLEAR(__pyx_codeobj__337);
-  Py_CLEAR(__pyx_tuple__338);
+  Py_CLEAR(__pyx_tuple__337);
+  Py_CLEAR(__pyx_codeobj__338);
   Py_CLEAR(__pyx_codeobj__339);
-  Py_CLEAR(__pyx_tuple__340);
+  Py_CLEAR(__pyx_codeobj__340);
   Py_CLEAR(__pyx_codeobj__341);
-  Py_CLEAR(__pyx_tuple__342);
+  Py_CLEAR(__pyx_codeobj__342);
   Py_CLEAR(__pyx_codeobj__343);
-  Py_CLEAR(__pyx_tuple__344);
+  Py_CLEAR(__pyx_codeobj__344);
   Py_CLEAR(__pyx_codeobj__345);
-  Py_CLEAR(__pyx_tuple__346);
-  Py_CLEAR(__pyx_codeobj__347);
-  Py_CLEAR(__pyx_tuple__348);
-  Py_CLEAR(__pyx_codeobj__349);
+  Py_CLEAR(__pyx_slice__346);
+  Py_CLEAR(__pyx_tuple__347);
   Py_CLEAR(__pyx_tuple__350);
   Py_CLEAR(__pyx_codeobj__351);
-  Py_CLEAR(__pyx_tuple__352);
-  Py_CLEAR(__pyx_codeobj__353);
-  Py_CLEAR(__pyx_tuple__354);
+  Py_CLEAR(__pyx_codeobj__352);
+  Py_CLEAR(__pyx_tuple__353);
+  Py_CLEAR(__pyx_codeobj__354);
   Py_CLEAR(__pyx_codeobj__355);
-  Py_CLEAR(__pyx_tuple__356);
+  Py_CLEAR(__pyx_codeobj__356);
   Py_CLEAR(__pyx_codeobj__357);
   Py_CLEAR(__pyx_tuple__358);
   Py_CLEAR(__pyx_codeobj__359);
@@ -242701,341 +257149,341 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_codeobj__361);
   Py_CLEAR(__pyx_tuple__362);
   Py_CLEAR(__pyx_codeobj__363);
-  Py_CLEAR(__pyx_tuple__364);
+  Py_CLEAR(__pyx_codeobj__364);
   Py_CLEAR(__pyx_codeobj__365);
-  Py_CLEAR(__pyx_tuple__366);
+  Py_CLEAR(__pyx_codeobj__366);
   Py_CLEAR(__pyx_codeobj__367);
   Py_CLEAR(__pyx_tuple__368);
   Py_CLEAR(__pyx_codeobj__369);
-  Py_CLEAR(__pyx_tuple__370);
-  Py_CLEAR(__pyx_tuple__371);
+  Py_CLEAR(__pyx_codeobj__370);
+  Py_CLEAR(__pyx_codeobj__371);
   Py_CLEAR(__pyx_codeobj__372);
-  Py_CLEAR(__pyx_tuple__373);
-  Py_CLEAR(__pyx_tuple__374);
+  Py_CLEAR(__pyx_codeobj__373);
+  Py_CLEAR(__pyx_codeobj__374);
   Py_CLEAR(__pyx_codeobj__375);
-  Py_CLEAR(__pyx_tuple__376);
-  Py_CLEAR(__pyx_tuple__377);
-  Py_CLEAR(__pyx_codeobj__378);
+  Py_CLEAR(__pyx_codeobj__376);
+  Py_CLEAR(__pyx_codeobj__377);
+  Py_CLEAR(__pyx_tuple__378);
   Py_CLEAR(__pyx_tuple__379);
   Py_CLEAR(__pyx_codeobj__380);
-  Py_CLEAR(__pyx_tuple__381);
-  Py_CLEAR(__pyx_tuple__382);
+  Py_CLEAR(__pyx_codeobj__381);
+  Py_CLEAR(__pyx_codeobj__382);
   Py_CLEAR(__pyx_codeobj__383);
   Py_CLEAR(__pyx_tuple__384);
   Py_CLEAR(__pyx_tuple__385);
-  Py_CLEAR(__pyx_codeobj__386);
+  Py_CLEAR(__pyx_tuple__386);
   Py_CLEAR(__pyx_tuple__387);
-  Py_CLEAR(__pyx_tuple__388);
-  Py_CLEAR(__pyx_codeobj__389);
-  Py_CLEAR(__pyx_tuple__390);
-  Py_CLEAR(__pyx_tuple__391);
-  Py_CLEAR(__pyx_codeobj__392);
+  Py_CLEAR(__pyx_slice__388);
+  Py_CLEAR(__pyx_tuple__389);
+  Py_CLEAR(__pyx_slice__390);
+  Py_CLEAR(__pyx_codeobj__391);
+  Py_CLEAR(__pyx_tuple__392);
   Py_CLEAR(__pyx_tuple__393);
-  Py_CLEAR(__pyx_tuple__394);
+  Py_CLEAR(__pyx_codeobj__394);
   Py_CLEAR(__pyx_codeobj__395);
-  Py_CLEAR(__pyx_tuple__396);
-  Py_CLEAR(__pyx_tuple__397);
+  Py_CLEAR(__pyx_codeobj__396);
+  Py_CLEAR(__pyx_codeobj__397);
   Py_CLEAR(__pyx_codeobj__398);
   Py_CLEAR(__pyx_tuple__399);
-  Py_CLEAR(__pyx_codeobj__400);
+  Py_CLEAR(__pyx_tuple__400);
   Py_CLEAR(__pyx_tuple__401);
-  Py_CLEAR(__pyx_codeobj__402);
+  Py_CLEAR(__pyx_tuple__402);
   Py_CLEAR(__pyx_tuple__403);
-  Py_CLEAR(__pyx_codeobj__404);
+  Py_CLEAR(__pyx_tuple__404);
   Py_CLEAR(__pyx_tuple__405);
-  Py_CLEAR(__pyx_codeobj__406);
+  Py_CLEAR(__pyx_tuple__406);
   Py_CLEAR(__pyx_tuple__407);
-  Py_CLEAR(__pyx_codeobj__408);
+  Py_CLEAR(__pyx_tuple__408);
   Py_CLEAR(__pyx_tuple__409);
   Py_CLEAR(__pyx_tuple__410);
-  Py_CLEAR(__pyx_codeobj__411);
+  Py_CLEAR(__pyx_tuple__411);
   Py_CLEAR(__pyx_tuple__412);
   Py_CLEAR(__pyx_tuple__413);
-  Py_CLEAR(__pyx_codeobj__414);
+  Py_CLEAR(__pyx_tuple__414);
   Py_CLEAR(__pyx_tuple__415);
-  Py_CLEAR(__pyx_codeobj__416);
+  Py_CLEAR(__pyx_tuple__416);
   Py_CLEAR(__pyx_tuple__417);
-  Py_CLEAR(__pyx_codeobj__418);
+  Py_CLEAR(__pyx_tuple__418);
   Py_CLEAR(__pyx_tuple__419);
-  Py_CLEAR(__pyx_codeobj__420);
+  Py_CLEAR(__pyx_tuple__420);
   Py_CLEAR(__pyx_tuple__421);
-  Py_CLEAR(__pyx_codeobj__422);
+  Py_CLEAR(__pyx_tuple__422);
   Py_CLEAR(__pyx_tuple__423);
-  Py_CLEAR(__pyx_codeobj__424);
+  Py_CLEAR(__pyx_tuple__424);
   Py_CLEAR(__pyx_tuple__425);
-  Py_CLEAR(__pyx_codeobj__426);
+  Py_CLEAR(__pyx_tuple__426);
   Py_CLEAR(__pyx_tuple__427);
-  Py_CLEAR(__pyx_codeobj__428);
+  Py_CLEAR(__pyx_tuple__428);
   Py_CLEAR(__pyx_tuple__429);
-  Py_CLEAR(__pyx_codeobj__430);
+  Py_CLEAR(__pyx_tuple__430);
   Py_CLEAR(__pyx_tuple__431);
-  Py_CLEAR(__pyx_codeobj__432);
+  Py_CLEAR(__pyx_tuple__432);
   Py_CLEAR(__pyx_tuple__433);
-  Py_CLEAR(__pyx_codeobj__434);
+  Py_CLEAR(__pyx_tuple__434);
   Py_CLEAR(__pyx_tuple__435);
-  Py_CLEAR(__pyx_codeobj__436);
+  Py_CLEAR(__pyx_tuple__436);
   Py_CLEAR(__pyx_tuple__437);
-  Py_CLEAR(__pyx_codeobj__438);
+  Py_CLEAR(__pyx_tuple__438);
   Py_CLEAR(__pyx_tuple__439);
-  Py_CLEAR(__pyx_codeobj__440);
+  Py_CLEAR(__pyx_tuple__440);
   Py_CLEAR(__pyx_tuple__441);
-  Py_CLEAR(__pyx_codeobj__442);
+  Py_CLEAR(__pyx_tuple__442);
   Py_CLEAR(__pyx_tuple__443);
-  Py_CLEAR(__pyx_codeobj__444);
+  Py_CLEAR(__pyx_tuple__444);
   Py_CLEAR(__pyx_tuple__445);
-  Py_CLEAR(__pyx_codeobj__446);
+  Py_CLEAR(__pyx_tuple__446);
   Py_CLEAR(__pyx_tuple__447);
-  Py_CLEAR(__pyx_codeobj__448);
+  Py_CLEAR(__pyx_tuple__448);
   Py_CLEAR(__pyx_tuple__449);
-  Py_CLEAR(__pyx_codeobj__450);
+  Py_CLEAR(__pyx_tuple__450);
   Py_CLEAR(__pyx_tuple__451);
   Py_CLEAR(__pyx_tuple__452);
-  Py_CLEAR(__pyx_codeobj__453);
+  Py_CLEAR(__pyx_tuple__453);
   Py_CLEAR(__pyx_tuple__454);
-  Py_CLEAR(__pyx_codeobj__455);
+  Py_CLEAR(__pyx_tuple__455);
   Py_CLEAR(__pyx_tuple__456);
-  Py_CLEAR(__pyx_codeobj__457);
+  Py_CLEAR(__pyx_tuple__457);
   Py_CLEAR(__pyx_tuple__458);
-  Py_CLEAR(__pyx_codeobj__459);
+  Py_CLEAR(__pyx_tuple__459);
   Py_CLEAR(__pyx_tuple__460);
-  Py_CLEAR(__pyx_codeobj__461);
+  Py_CLEAR(__pyx_tuple__461);
   Py_CLEAR(__pyx_tuple__462);
-  Py_CLEAR(__pyx_codeobj__463);
+  Py_CLEAR(__pyx_tuple__463);
   Py_CLEAR(__pyx_tuple__464);
-  Py_CLEAR(__pyx_codeobj__465);
+  Py_CLEAR(__pyx_tuple__465);
   Py_CLEAR(__pyx_tuple__466);
-  Py_CLEAR(__pyx_codeobj__467);
+  Py_CLEAR(__pyx_tuple__467);
   Py_CLEAR(__pyx_tuple__468);
-  Py_CLEAR(__pyx_codeobj__469);
+  Py_CLEAR(__pyx_tuple__469);
   Py_CLEAR(__pyx_tuple__470);
-  Py_CLEAR(__pyx_codeobj__471);
+  Py_CLEAR(__pyx_tuple__471);
   Py_CLEAR(__pyx_tuple__472);
-  Py_CLEAR(__pyx_codeobj__473);
+  Py_CLEAR(__pyx_tuple__473);
   Py_CLEAR(__pyx_tuple__474);
-  Py_CLEAR(__pyx_codeobj__475);
+  Py_CLEAR(__pyx_tuple__475);
   Py_CLEAR(__pyx_tuple__476);
-  Py_CLEAR(__pyx_codeobj__477);
+  Py_CLEAR(__pyx_tuple__477);
   Py_CLEAR(__pyx_tuple__478);
-  Py_CLEAR(__pyx_codeobj__479);
+  Py_CLEAR(__pyx_tuple__479);
   Py_CLEAR(__pyx_tuple__480);
-  Py_CLEAR(__pyx_codeobj__481);
+  Py_CLEAR(__pyx_tuple__481);
   Py_CLEAR(__pyx_tuple__482);
-  Py_CLEAR(__pyx_codeobj__483);
+  Py_CLEAR(__pyx_tuple__483);
   Py_CLEAR(__pyx_tuple__484);
-  Py_CLEAR(__pyx_codeobj__485);
+  Py_CLEAR(__pyx_tuple__485);
   Py_CLEAR(__pyx_tuple__486);
   Py_CLEAR(__pyx_tuple__487);
-  Py_CLEAR(__pyx_codeobj__488);
+  Py_CLEAR(__pyx_tuple__488);
   Py_CLEAR(__pyx_tuple__489);
-  Py_CLEAR(__pyx_codeobj__490);
+  Py_CLEAR(__pyx_tuple__490);
   Py_CLEAR(__pyx_tuple__491);
-  Py_CLEAR(__pyx_codeobj__492);
+  Py_CLEAR(__pyx_tuple__492);
   Py_CLEAR(__pyx_tuple__493);
-  Py_CLEAR(__pyx_codeobj__494);
+  Py_CLEAR(__pyx_tuple__494);
   Py_CLEAR(__pyx_tuple__495);
-  Py_CLEAR(__pyx_codeobj__496);
+  Py_CLEAR(__pyx_tuple__496);
   Py_CLEAR(__pyx_tuple__497);
-  Py_CLEAR(__pyx_codeobj__498);
+  Py_CLEAR(__pyx_tuple__498);
   Py_CLEAR(__pyx_tuple__499);
-  Py_CLEAR(__pyx_codeobj__500);
+  Py_CLEAR(__pyx_tuple__500);
   Py_CLEAR(__pyx_tuple__501);
-  Py_CLEAR(__pyx_codeobj__502);
+  Py_CLEAR(__pyx_tuple__502);
   Py_CLEAR(__pyx_tuple__503);
-  Py_CLEAR(__pyx_codeobj__504);
+  Py_CLEAR(__pyx_tuple__504);
   Py_CLEAR(__pyx_tuple__505);
-  Py_CLEAR(__pyx_codeobj__506);
+  Py_CLEAR(__pyx_tuple__506);
   Py_CLEAR(__pyx_tuple__507);
-  Py_CLEAR(__pyx_codeobj__508);
+  Py_CLEAR(__pyx_tuple__508);
   Py_CLEAR(__pyx_tuple__509);
-  Py_CLEAR(__pyx_codeobj__510);
+  Py_CLEAR(__pyx_tuple__510);
   Py_CLEAR(__pyx_tuple__511);
   Py_CLEAR(__pyx_tuple__512);
-  Py_CLEAR(__pyx_codeobj__513);
+  Py_CLEAR(__pyx_tuple__513);
   Py_CLEAR(__pyx_tuple__514);
-  Py_CLEAR(__pyx_codeobj__515);
+  Py_CLEAR(__pyx_tuple__515);
   Py_CLEAR(__pyx_tuple__516);
-  Py_CLEAR(__pyx_codeobj__517);
+  Py_CLEAR(__pyx_tuple__517);
   Py_CLEAR(__pyx_tuple__518);
-  Py_CLEAR(__pyx_codeobj__519);
+  Py_CLEAR(__pyx_tuple__519);
   Py_CLEAR(__pyx_tuple__520);
-  Py_CLEAR(__pyx_codeobj__521);
+  Py_CLEAR(__pyx_tuple__521);
   Py_CLEAR(__pyx_tuple__522);
-  Py_CLEAR(__pyx_codeobj__523);
+  Py_CLEAR(__pyx_tuple__523);
   Py_CLEAR(__pyx_tuple__524);
-  Py_CLEAR(__pyx_codeobj__525);
+  Py_CLEAR(__pyx_tuple__525);
   Py_CLEAR(__pyx_tuple__526);
-  Py_CLEAR(__pyx_codeobj__527);
+  Py_CLEAR(__pyx_tuple__527);
   Py_CLEAR(__pyx_tuple__528);
-  Py_CLEAR(__pyx_codeobj__529);
+  Py_CLEAR(__pyx_tuple__529);
   Py_CLEAR(__pyx_tuple__530);
   Py_CLEAR(__pyx_tuple__531);
   Py_CLEAR(__pyx_tuple__532);
-  Py_CLEAR(__pyx_codeobj__533);
+  Py_CLEAR(__pyx_tuple__533);
   Py_CLEAR(__pyx_tuple__534);
-  Py_CLEAR(__pyx_codeobj__535);
+  Py_CLEAR(__pyx_tuple__535);
   Py_CLEAR(__pyx_tuple__536);
-  Py_CLEAR(__pyx_codeobj__537);
+  Py_CLEAR(__pyx_tuple__537);
   Py_CLEAR(__pyx_tuple__538);
-  Py_CLEAR(__pyx_codeobj__539);
+  Py_CLEAR(__pyx_tuple__539);
   Py_CLEAR(__pyx_tuple__540);
-  Py_CLEAR(__pyx_codeobj__541);
+  Py_CLEAR(__pyx_tuple__541);
   Py_CLEAR(__pyx_tuple__542);
-  Py_CLEAR(__pyx_codeobj__543);
+  Py_CLEAR(__pyx_tuple__543);
   Py_CLEAR(__pyx_tuple__544);
-  Py_CLEAR(__pyx_codeobj__545);
+  Py_CLEAR(__pyx_tuple__545);
   Py_CLEAR(__pyx_tuple__546);
-  Py_CLEAR(__pyx_codeobj__547);
+  Py_CLEAR(__pyx_tuple__547);
   Py_CLEAR(__pyx_tuple__548);
   Py_CLEAR(__pyx_tuple__549);
   Py_CLEAR(__pyx_tuple__550);
   Py_CLEAR(__pyx_tuple__551);
   Py_CLEAR(__pyx_tuple__552);
-  Py_CLEAR(__pyx_codeobj__553);
+  Py_CLEAR(__pyx_tuple__553);
   Py_CLEAR(__pyx_tuple__554);
-  Py_CLEAR(__pyx_codeobj__555);
+  Py_CLEAR(__pyx_tuple__555);
   Py_CLEAR(__pyx_tuple__556);
   Py_CLEAR(__pyx_tuple__557);
   Py_CLEAR(__pyx_tuple__558);
   Py_CLEAR(__pyx_tuple__559);
-  Py_CLEAR(__pyx_codeobj__560);
+  Py_CLEAR(__pyx_tuple__560);
   Py_CLEAR(__pyx_tuple__561);
-  Py_CLEAR(__pyx_codeobj__562);
+  Py_CLEAR(__pyx_tuple__562);
   Py_CLEAR(__pyx_tuple__563);
-  Py_CLEAR(__pyx_codeobj__564);
+  Py_CLEAR(__pyx_tuple__564);
   Py_CLEAR(__pyx_tuple__565);
-  Py_CLEAR(__pyx_codeobj__566);
+  Py_CLEAR(__pyx_tuple__566);
   Py_CLEAR(__pyx_tuple__567);
   Py_CLEAR(__pyx_tuple__568);
   Py_CLEAR(__pyx_tuple__569);
-  Py_CLEAR(__pyx_codeobj__570);
+  Py_CLEAR(__pyx_tuple__570);
   Py_CLEAR(__pyx_tuple__571);
-  Py_CLEAR(__pyx_codeobj__572);
+  Py_CLEAR(__pyx_tuple__572);
   Py_CLEAR(__pyx_tuple__573);
-  Py_CLEAR(__pyx_codeobj__574);
+  Py_CLEAR(__pyx_tuple__574);
   Py_CLEAR(__pyx_tuple__575);
-  Py_CLEAR(__pyx_codeobj__576);
+  Py_CLEAR(__pyx_tuple__576);
   Py_CLEAR(__pyx_tuple__577);
   Py_CLEAR(__pyx_tuple__578);
-  Py_CLEAR(__pyx_codeobj__579);
+  Py_CLEAR(__pyx_tuple__579);
   Py_CLEAR(__pyx_tuple__580);
   Py_CLEAR(__pyx_tuple__581);
-  Py_CLEAR(__pyx_codeobj__582);
+  Py_CLEAR(__pyx_tuple__582);
   Py_CLEAR(__pyx_tuple__583);
   Py_CLEAR(__pyx_tuple__584);
-  Py_CLEAR(__pyx_codeobj__585);
+  Py_CLEAR(__pyx_tuple__585);
   Py_CLEAR(__pyx_tuple__586);
-  Py_CLEAR(__pyx_codeobj__587);
+  Py_CLEAR(__pyx_tuple__587);
   Py_CLEAR(__pyx_tuple__588);
-  Py_CLEAR(__pyx_codeobj__589);
+  Py_CLEAR(__pyx_tuple__589);
   Py_CLEAR(__pyx_tuple__590);
-  Py_CLEAR(__pyx_codeobj__591);
+  Py_CLEAR(__pyx_tuple__591);
   Py_CLEAR(__pyx_tuple__592);
-  Py_CLEAR(__pyx_codeobj__593);
+  Py_CLEAR(__pyx_tuple__593);
   Py_CLEAR(__pyx_tuple__594);
-  Py_CLEAR(__pyx_codeobj__595);
+  Py_CLEAR(__pyx_tuple__595);
   Py_CLEAR(__pyx_tuple__596);
-  Py_CLEAR(__pyx_codeobj__597);
+  Py_CLEAR(__pyx_tuple__597);
   Py_CLEAR(__pyx_tuple__598);
-  Py_CLEAR(__pyx_codeobj__599);
+  Py_CLEAR(__pyx_tuple__599);
   Py_CLEAR(__pyx_tuple__600);
-  Py_CLEAR(__pyx_codeobj__601);
+  Py_CLEAR(__pyx_tuple__601);
   Py_CLEAR(__pyx_tuple__602);
-  Py_CLEAR(__pyx_codeobj__603);
+  Py_CLEAR(__pyx_tuple__603);
   Py_CLEAR(__pyx_tuple__604);
   Py_CLEAR(__pyx_tuple__605);
-  Py_CLEAR(__pyx_codeobj__606);
+  Py_CLEAR(__pyx_tuple__606);
   Py_CLEAR(__pyx_tuple__607);
-  Py_CLEAR(__pyx_codeobj__608);
+  Py_CLEAR(__pyx_tuple__608);
   Py_CLEAR(__pyx_tuple__609);
-  Py_CLEAR(__pyx_codeobj__610);
+  Py_CLEAR(__pyx_tuple__610);
   Py_CLEAR(__pyx_tuple__611);
   Py_CLEAR(__pyx_tuple__612);
-  Py_CLEAR(__pyx_codeobj__613);
+  Py_CLEAR(__pyx_tuple__613);
   Py_CLEAR(__pyx_tuple__614);
   Py_CLEAR(__pyx_tuple__615);
-  Py_CLEAR(__pyx_codeobj__616);
+  Py_CLEAR(__pyx_tuple__616);
   Py_CLEAR(__pyx_tuple__617);
-  Py_CLEAR(__pyx_codeobj__618);
+  Py_CLEAR(__pyx_tuple__618);
   Py_CLEAR(__pyx_tuple__619);
-  Py_CLEAR(__pyx_codeobj__620);
+  Py_CLEAR(__pyx_tuple__620);
   Py_CLEAR(__pyx_tuple__621);
-  Py_CLEAR(__pyx_codeobj__622);
+  Py_CLEAR(__pyx_tuple__622);
   Py_CLEAR(__pyx_tuple__623);
-  Py_CLEAR(__pyx_codeobj__624);
+  Py_CLEAR(__pyx_tuple__624);
   Py_CLEAR(__pyx_tuple__625);
-  Py_CLEAR(__pyx_codeobj__626);
+  Py_CLEAR(__pyx_tuple__626);
   Py_CLEAR(__pyx_tuple__627);
-  Py_CLEAR(__pyx_codeobj__628);
+  Py_CLEAR(__pyx_tuple__628);
   Py_CLEAR(__pyx_tuple__629);
-  Py_CLEAR(__pyx_codeobj__630);
+  Py_CLEAR(__pyx_tuple__630);
   Py_CLEAR(__pyx_tuple__631);
-  Py_CLEAR(__pyx_codeobj__632);
+  Py_CLEAR(__pyx_tuple__632);
   Py_CLEAR(__pyx_tuple__633);
-  Py_CLEAR(__pyx_codeobj__634);
+  Py_CLEAR(__pyx_tuple__634);
+  Py_CLEAR(__pyx_tuple__635);
   Py_CLEAR(__pyx_tuple__636);
+  Py_CLEAR(__pyx_tuple__637);
   Py_CLEAR(__pyx_tuple__638);
   Py_CLEAR(__pyx_tuple__639);
-  Py_CLEAR(__pyx_codeobj__640);
+  Py_CLEAR(__pyx_tuple__640);
   Py_CLEAR(__pyx_tuple__641);
-  Py_CLEAR(__pyx_codeobj__642);
+  Py_CLEAR(__pyx_tuple__642);
   Py_CLEAR(__pyx_tuple__643);
-  Py_CLEAR(__pyx_codeobj__644);
+  Py_CLEAR(__pyx_tuple__644);
   Py_CLEAR(__pyx_tuple__645);
-  Py_CLEAR(__pyx_codeobj__646);
+  Py_CLEAR(__pyx_tuple__646);
   Py_CLEAR(__pyx_tuple__647);
-  Py_CLEAR(__pyx_codeobj__648);
+  Py_CLEAR(__pyx_tuple__648);
   Py_CLEAR(__pyx_tuple__649);
-  Py_CLEAR(__pyx_codeobj__650);
+  Py_CLEAR(__pyx_tuple__650);
   Py_CLEAR(__pyx_tuple__651);
-  Py_CLEAR(__pyx_codeobj__652);
+  Py_CLEAR(__pyx_tuple__652);
   Py_CLEAR(__pyx_tuple__653);
-  Py_CLEAR(__pyx_codeobj__654);
+  Py_CLEAR(__pyx_tuple__654);
   Py_CLEAR(__pyx_tuple__655);
   Py_CLEAR(__pyx_tuple__656);
-  Py_CLEAR(__pyx_codeobj__657);
+  Py_CLEAR(__pyx_tuple__657);
   Py_CLEAR(__pyx_tuple__658);
-  Py_CLEAR(__pyx_codeobj__659);
+  Py_CLEAR(__pyx_tuple__659);
   Py_CLEAR(__pyx_tuple__660);
-  Py_CLEAR(__pyx_codeobj__661);
+  Py_CLEAR(__pyx_tuple__661);
   Py_CLEAR(__pyx_tuple__662);
-  Py_CLEAR(__pyx_codeobj__663);
   Py_CLEAR(__pyx_tuple__664);
-  Py_CLEAR(__pyx_codeobj__665);
   Py_CLEAR(__pyx_tuple__666);
-  Py_CLEAR(__pyx_codeobj__667);
+  Py_CLEAR(__pyx_tuple__667);
   Py_CLEAR(__pyx_tuple__668);
-  Py_CLEAR(__pyx_codeobj__669);
+  Py_CLEAR(__pyx_tuple__669);
   Py_CLEAR(__pyx_tuple__670);
-  Py_CLEAR(__pyx_codeobj__671);
+  Py_CLEAR(__pyx_tuple__671);
   Py_CLEAR(__pyx_tuple__672);
-  Py_CLEAR(__pyx_codeobj__673);
+  Py_CLEAR(__pyx_tuple__673);
   Py_CLEAR(__pyx_tuple__674);
-  Py_CLEAR(__pyx_codeobj__675);
+  Py_CLEAR(__pyx_tuple__675);
   Py_CLEAR(__pyx_tuple__676);
   Py_CLEAR(__pyx_tuple__677);
-  Py_CLEAR(__pyx_codeobj__678);
+  Py_CLEAR(__pyx_tuple__678);
   Py_CLEAR(__pyx_tuple__679);
   Py_CLEAR(__pyx_tuple__680);
-  Py_CLEAR(__pyx_codeobj__681);
+  Py_CLEAR(__pyx_tuple__681);
   Py_CLEAR(__pyx_tuple__682);
   Py_CLEAR(__pyx_tuple__683);
-  Py_CLEAR(__pyx_codeobj__684);
+  Py_CLEAR(__pyx_tuple__684);
   Py_CLEAR(__pyx_tuple__685);
   Py_CLEAR(__pyx_tuple__686);
-  Py_CLEAR(__pyx_codeobj__687);
+  Py_CLEAR(__pyx_tuple__687);
   Py_CLEAR(__pyx_tuple__688);
-  Py_CLEAR(__pyx_codeobj__689);
+  Py_CLEAR(__pyx_tuple__689);
   Py_CLEAR(__pyx_tuple__690);
   Py_CLEAR(__pyx_tuple__691);
-  Py_CLEAR(__pyx_codeobj__692);
+  Py_CLEAR(__pyx_tuple__692);
   Py_CLEAR(__pyx_tuple__693);
-  Py_CLEAR(__pyx_codeobj__694);
+  Py_CLEAR(__pyx_tuple__694);
   Py_CLEAR(__pyx_tuple__695);
-  Py_CLEAR(__pyx_codeobj__696);
+  Py_CLEAR(__pyx_tuple__696);
   Py_CLEAR(__pyx_tuple__697);
-  Py_CLEAR(__pyx_codeobj__698);
+  Py_CLEAR(__pyx_tuple__698);
   Py_CLEAR(__pyx_tuple__699);
-  Py_CLEAR(__pyx_codeobj__700);
+  Py_CLEAR(__pyx_tuple__700);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
@@ -243466,6 +257914,99 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
 }
 #endif
 
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* RaiseException */
 #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
@@ -244615,8 +259156,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlElementType(xmlElementTyp
     char digits[sizeof(xmlElementType)*3+2];
     char *dpos, *end = digits + sizeof(xmlElementType)*3+2;
     const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t ulength;
-    int length, prepend_sign, last_one_off;
+    Py_ssize_t length, ulength;
+    int prepend_sign, last_one_off;
     xmlElementType remaining;
     const xmlElementType neg_one = (xmlElementType) -1, const_zero = (xmlElementType) 0;
     const int is_unsigned = neg_one > const_zero;
@@ -244675,7 +259216,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlElementType(xmlElementTyp
     if (ulength == 1) {
         return PyUnicode_FromOrdinal(*dpos);
     }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, length, prepend_sign, padding_char);
+    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
 }
 
 /* PyIntBinop */
@@ -245124,8 +259665,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     char digits[sizeof(Py_ssize_t)*3+2];
     char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
     const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t ulength;
-    int length, prepend_sign, last_one_off;
+    Py_ssize_t length, ulength;
+    int prepend_sign, last_one_off;
     Py_ssize_t remaining;
     const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
     const int is_unsigned = neg_one > const_zero;
@@ -245184,7 +259725,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     if (ulength == 1) {
         return PyUnicode_FromOrdinal(*dpos);
     }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, length, prepend_sign, padding_char);
+    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
 }
 
 /* JoinPyUnicode */
@@ -245222,7 +259763,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
         ukind = __Pyx_PyUnicode_KIND(uval);
         udata = __Pyx_PyUnicode_DATA(uval);
         if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
-            memcpy((char *)result_udata + char_pos * result_ukind, udata, ulength * result_ukind);
+            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
         } else {
             #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
             _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
@@ -245311,8 +259852,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
     char digits[sizeof(int)*3+2];
     char *dpos, *end = digits + sizeof(int)*3+2;
     const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t ulength;
-    int length, prepend_sign, last_one_off;
+    Py_ssize_t length, ulength;
+    int prepend_sign, last_one_off;
     int remaining;
     const int neg_one = (int) -1, const_zero = (int) 0;
     const int is_unsigned = neg_one > const_zero;
@@ -245371,7 +259912,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
     if (ulength == 1) {
         return PyUnicode_FromOrdinal(*dpos);
     }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, length, prepend_sign, padding_char);
+    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
 }
 
 /* GetModuleGlobalName */
 #if CYTHON_COMPILING_IN_CPYTHON
     is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable));
     *p_source_is_set = is_set;
-    if (unlikely(!is_set))
-        return PyObject_GetIter(iterable);
-    *p_orig_length = PySet_Size(iterable);
-    Py_INCREF(iterable);
-    return iterable;
+    if (likely(is_set)) {
+        *p_orig_length = PySet_Size(iterable);
+        Py_INCREF(iterable);
+        return iterable;
+    }
 #else
     (void)is_set;
     *p_source_is_set = 0;
+#endif
     *p_orig_length = 0;
     return PyObject_GetIter(iterable);
-#endif
 }
 static CYTHON_INLINE int __Pyx_set_iter_next(
         PyObject* iter_obj, Py_ssize_t orig_length,
@@ -247859,7 +262400,7 @@ static CYTHON_INLINE int __Pyx_set_iter_next(
         }
         (void)orig_length;
         (void)ppos;
-        return 0;
+        return 1;
     }
 #if CYTHON_COMPILING_IN_CPYTHON
     if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) {
@@ -247876,9 +262417,9 @@ static CYTHON_INLINE int __Pyx_set_iter_next(
             Py_INCREF(*value);
             return 1;
         }
-        return 0;
     }
 #endif
+    return 0;
 }
 
 /* CIntToPyUnicode */
@@ -247897,8 +262438,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlXPathObjectType(xmlXPathO
     char digits[sizeof(xmlXPathObjectType)*3+2];
     char *dpos, *end = digits + sizeof(xmlXPathObjectType)*3+2;
     const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t ulength;
-    int length, prepend_sign, last_one_off;
+    Py_ssize_t length, ulength;
+    int prepend_sign, last_one_off;
     xmlXPathObjectType remaining;
     const xmlXPathObjectType neg_one = (xmlXPathObjectType) -1, const_zero = (xmlXPathObjectType) 0;
     const int is_unsigned = neg_one > const_zero;
@@ -247957,7 +262498,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlXPathObjectType(xmlXPathO
     if (ulength == 1) {
         return PyUnicode_FromOrdinal(*dpos);
     }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, length, prepend_sign, padding_char);
+    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
 }
 
 /* CallNextTpTraverse */
@@ -248892,6 +263433,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -250967,6 +265511,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index b669be3..9b45ba1 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 #ifndef __PYX_HAVE__lxml__etree
 #define __PYX_HAVE__lxml__etree
index f677560..2ebd54b 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 #ifndef __PYX_HAVE_API__lxml__etree
 #define __PYX_HAVE_API__lxml__etree
index 94506a6..68d0616 100644 (file)
@@ -1,17 +1,18 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "/usr/include/libxml2", 
             "src", 
@@ -22,7 +23,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml.html.clean", 
@@ -41,7 +41,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -487,6 +487,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -679,7 +680,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -787,7 +788,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -892,6 +893,244 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 /* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* GetModuleGlobalName.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
 
@@ -990,42 +1229,6 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
 /* HasAttr.proto */
 static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
 
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
-#endif
-
 /* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
@@ -1390,16 +1593,16 @@ static const char __pyx_k_S[] = "S";
 static const char __pyx_k_a[] = "a";
 static const char __pyx_k_s[] = " %s ";
 static const char __pyx_k_x[] = "x";
-static const char __pyx_k__4[] = "";
+static const char __pyx_k__7[] = "";
 static const char __pyx_k_el[] = "el";
 static const char __pyx_k_kw[] = "kw";
 static const char __pyx_k_on[] = "on";
 static const char __pyx_k_re[] = "re";
-static const char __pyx_k__17[] = ":";
-static const char __pyx_k__19[] = "\\";
-static const char __pyx_k__25[] = ".";
-static const char __pyx_k__27[] = ",";
-static const char __pyx_k__59[] = "/\\*.*?\\*/";
+static const char __pyx_k__23[] = ":";
+static const char __pyx_k__29[] = "\\";
+static const char __pyx_k__38[] = ".";
+static const char __pyx_k__40[] = ",";
+static const char __pyx_k__68[] = "/\\*.*?\\*/";
 static const char __pyx_k_a_z[] = "[^a-z]";
 static const char __pyx_k_all[] = "__all__";
 static const char __pyx_k_bad[] = "bad";
@@ -1691,12 +1894,12 @@ static PyObject *__pyx_kp_s_Unknown_parameter_s_r;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_n_s_XHTML_NAMESPACE;
 static PyObject *__pyx_n_s_XPath;
-static PyObject *__pyx_kp_s__17;
-static PyObject *__pyx_kp_s__19;
-static PyObject *__pyx_kp_s__25;
-static PyObject *__pyx_kp_s__27;
-static PyObject *__pyx_kp_s__4;
-static PyObject *__pyx_kp_s__59;
+static PyObject *__pyx_kp_s__23;
+static PyObject *__pyx_kp_s__29;
+static PyObject *__pyx_kp_s__38;
+static PyObject *__pyx_kp_s__40;
+static PyObject *__pyx_kp_s__68;
+static PyObject *__pyx_kp_s__7;
 static PyObject *__pyx_n_s_a;
 static PyObject *__pyx_kp_s_a_z;
 static PyObject *__pyx_n_s_add_nofollow;
@@ -1969,17 +2172,15 @@ static PyObject *__pyx_int_10;
 static PyObject *__pyx_int_40;
 static PyObject *__pyx_int_8203;
 static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_tuple_;
-static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__3;
+static PyObject *__pyx_codeobj_;
+static PyObject *__pyx_tuple__4;
 static PyObject *__pyx_tuple__5;
 static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
 static PyObject *__pyx_tuple__8;
 static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__22;
-static PyObject *__pyx_slice__29;
 static PyObject *__pyx_slice__34;
+static PyObject *__pyx_slice__42;
+static PyObject *__pyx_slice__47;
 static PyObject *__pyx_tuple__10;
 static PyObject *__pyx_tuple__11;
 static PyObject *__pyx_tuple__12;
@@ -1987,61 +2188,63 @@ static PyObject *__pyx_tuple__13;
 static PyObject *__pyx_tuple__14;
 static PyObject *__pyx_tuple__15;
 static PyObject *__pyx_tuple__16;
+static PyObject *__pyx_tuple__17;
 static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__23;
+static PyObject *__pyx_tuple__19;
 static PyObject *__pyx_tuple__24;
-static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__28;
 static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
 static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__35;
 static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__38;
+static PyObject *__pyx_tuple__37;
 static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__40;
 static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
+static PyObject *__pyx_tuple__43;
 static PyObject *__pyx_tuple__44;
+static PyObject *__pyx_tuple__45;
 static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__48;
 static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__52;
 static PyObject *__pyx_tuple__54;
+static PyObject *__pyx_tuple__55;
 static PyObject *__pyx_tuple__56;
 static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__58;
+static PyObject *__pyx_tuple__59;
 static PyObject *__pyx_tuple__60;
+static PyObject *__pyx_tuple__61;
 static PyObject *__pyx_tuple__62;
+static PyObject *__pyx_tuple__63;
 static PyObject *__pyx_tuple__64;
 static PyObject *__pyx_tuple__65;
+static PyObject *__pyx_tuple__66;
 static PyObject *__pyx_tuple__67;
 static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__70;
 static PyObject *__pyx_tuple__71;
+static PyObject *__pyx_tuple__72;
 static PyObject *__pyx_tuple__73;
 static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__75;
 static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__77;
 static PyObject *__pyx_tuple__78;
-static PyObject *__pyx_codeobj__37;
-static PyObject *__pyx_codeobj__43;
-static PyObject *__pyx_codeobj__45;
-static PyObject *__pyx_codeobj__47;
+static PyObject *__pyx_tuple__79;
+static PyObject *__pyx_codeobj__2;
+static PyObject *__pyx_codeobj__3;
+static PyObject *__pyx_codeobj__20;
+static PyObject *__pyx_codeobj__21;
+static PyObject *__pyx_codeobj__22;
+static PyObject *__pyx_codeobj__25;
+static PyObject *__pyx_codeobj__26;
+static PyObject *__pyx_codeobj__27;
+static PyObject *__pyx_codeobj__28;
+static PyObject *__pyx_codeobj__31;
+static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__48;
 static PyObject *__pyx_codeobj__49;
 static PyObject *__pyx_codeobj__51;
+static PyObject *__pyx_codeobj__52;
 static PyObject *__pyx_codeobj__53;
-static PyObject *__pyx_codeobj__55;
-static PyObject *__pyx_codeobj__58;
-static PyObject *__pyx_codeobj__61;
-static PyObject *__pyx_codeobj__63;
-static PyObject *__pyx_codeobj__66;
-static PyObject *__pyx_codeobj__68;
-static PyObject *__pyx_codeobj__70;
-static PyObject *__pyx_codeobj__72;
-static PyObject *__pyx_codeobj__75;
-static PyObject *__pyx_codeobj__77;
-static PyObject *__pyx_codeobj__79;
 /* Late includes */
 
 /* "lxml/html/clean.py":78
@@ -2068,13 +2271,16 @@ static PyObject *__pyx_pw_4lxml_4html_5clean_1_is_javascript_scheme(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_4html_5clean__is_javascript_scheme(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj_)
   __Pyx_RefNannySetupContext("_is_javascript_scheme", 0);
+  __Pyx_TraceCall("_is_javascript_scheme", __pyx_f[0], 78, 0, __PYX_ERR(0, 78, __pyx_L1_error));
 
   /* "lxml/html/clean.py":79
  *     re.I).search
@@ -2083,6 +2289,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean__is_javascript_scheme(CYTHON_UNUSED
  *         return None
  *     return _is_possibly_malicious_scheme(s)
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(0, 79, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_image_dataurl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -2139,6 +2346,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean__is_javascript_scheme(CYTHON_UNUSED
  *     return _is_possibly_malicious_scheme(s)
  * 
  */
+    __Pyx_TraceLine(80,0,__PYX_ERR(0, 80, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -2159,6 +2367,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean__is_javascript_scheme(CYTHON_UNUSED
  * 
  * _substitute_whitespace = re.compile(r'[\s\x00-\x08\x0B\x0C\x0E-\x19]+').sub
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(0, 81, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_possibly_malicious_scheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -2227,6 +2436,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean__is_javascript_scheme(CYTHON_UNUSED
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2299,6 +2509,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -2312,7 +2523,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
   int __pyx_t_10;
   int __pyx_t_11;
   int __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__2)
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 217, 0, __PYX_ERR(0, 217, __pyx_L1_error));
 
   /* "lxml/html/clean.py":218
  * 
@@ -2321,6 +2534,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *             if not hasattr(self, name):
  *                 raise TypeError(
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(0, 218, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
@@ -2421,6 +2635,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *                 raise TypeError(
  *                     "Unknown parameter: %s=%r" % (name, value))
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
     __pyx_t_9 = __Pyx_HasAttr(__pyx_v_self, __pyx_v_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 219, __pyx_L1_error)
     __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
     if (unlikely(__pyx_t_10)) {
@@ -2432,6 +2647,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *             setattr(self, name, value)
  *         if self.inline_style is None and 'inline_style' not in kw:
  */
+      __Pyx_TraceLine(221,0,__PYX_ERR(0, 221, __pyx_L1_error))
       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_name);
@@ -2451,6 +2667,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *                     "Unknown parameter: %s=%r" % (name, value))
  *             setattr(self, name, value)
  */
+      __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -2474,6 +2691,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *         if self.inline_style is None and 'inline_style' not in kw:
  *             self.inline_style = self.style
  */
+    __Pyx_TraceLine(222,0,__PYX_ERR(0, 222, __pyx_L1_error))
     __pyx_t_11 = PyObject_SetAttr(__pyx_v_self, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 222, __pyx_L1_error)
 
     /* "lxml/html/clean.py":218
@@ -2483,6 +2701,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *             if not hasattr(self, name):
  *                 raise TypeError(
  */
+    __Pyx_TraceLine(218,0,__PYX_ERR(0, 218, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -2493,6 +2712,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  *             self.inline_style = self.style
  * 
  */
+  __Pyx_TraceLine(223,0,__PYX_ERR(0, 223, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_inline_style); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_9 = (__pyx_t_2 == Py_None);
@@ -2516,6 +2736,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
  * 
  *     # Used to lookup the primary URL for a given tag that is up for
  */
+    __Pyx_TraceLine(224,0,__PYX_ERR(0, 224, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_style); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_inline_style, __pyx_t_2) < 0) __PYX_ERR(0, 224, __pyx_L1_error)
@@ -2553,6 +2774,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner___init__(CYTHON_UNUSED PyO
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2645,6 +2867,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
   PyObject *__pyx_v_bad = NULL;
   PyObject *__pyx_v_rel = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -2660,7 +2883,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
   PyObject *(*__pyx_t_12)(PyObject *);
   int __pyx_t_13;
   int __pyx_t_14;
+  __Pyx_TraceFrameInit(__pyx_codeobj__3)
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[0], 248, 0, __PYX_ERR(0, 248, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_doc);
 
   /* "lxml/html/clean.py":252
@@ -2670,6 +2895,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # ElementTree instance, instead of an element
  *             doc = doc.getroot()
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(0, 252, __pyx_L1_error))
   __pyx_t_1 = __Pyx_HasAttr(__pyx_v_doc, __pyx_n_s_getroot); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 252, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -2681,6 +2907,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         # convert XHTML to HTML
  *         xhtml_to_html(doc)
  */
+    __Pyx_TraceLine(254,0,__PYX_ERR(0, 254, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_getroot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -2720,6 +2947,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         # Normalize a case that IE treats <image> like <img>, and that
  *         # can confuse either this step or later steps.
  */
+  __Pyx_TraceLine(256,0,__PYX_ERR(0, 256, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_xhtml_to_html); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
@@ -2774,9 +3002,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.tag = 'img'
  *         if not self.comments:
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(0, 259, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
@@ -2829,6 +3058,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if not self.comments:
  *             # Of course, if we were going to kill comments anyway, we don't
  */
+    __Pyx_TraceLine(260,0,__PYX_ERR(0, 260, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_tag, __pyx_n_s_img) < 0) __PYX_ERR(0, 260, __pyx_L1_error)
 
     /* "lxml/html/clean.py":259
@@ -2838,6 +3068,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.tag = 'img'
  *         if not self.comments:
  */
+    __Pyx_TraceLine(259,0,__PYX_ERR(0, 259, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -2848,6 +3079,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # Of course, if we were going to kill comments anyway, we don't
  *             # need to worry about this
  */
+  __Pyx_TraceLine(261,0,__PYX_ERR(0, 261, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_comments); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 261, __pyx_L1_error)
@@ -2862,6 +3094,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         kill_tags = set(self.kill_tags or ())
  */
+    __Pyx_TraceLine(264,0,__PYX_ERR(0, 264, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kill_conditional_comments); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = NULL;
@@ -2925,6 +3158,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         remove_tags = set(self.remove_tags or ())
  *         allow_tags = set(self.allow_tags or ())
  */
+  __Pyx_TraceLine(266,0,__PYX_ERR(0, 266, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kill_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 266, __pyx_L1_error)
@@ -2952,6 +3186,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         allow_tags = set(self.allow_tags or ())
  * 
  */
+  __Pyx_TraceLine(267,0,__PYX_ERR(0, 267, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_remove_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 267, __pyx_L1_error)
@@ -2979,6 +3214,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         if self.scripts:
  */
+  __Pyx_TraceLine(268,0,__PYX_ERR(0, 268, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 268, __pyx_L1_error)
@@ -3006,6 +3242,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.add('script')
  *         if self.safe_attrs_only:
  */
+  __Pyx_TraceLine(270,0,__PYX_ERR(0, 270, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scripts); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 270, __pyx_L1_error)
@@ -3019,6 +3256,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.safe_attrs_only:
  *             safe_attrs = set(self.safe_attrs)
  */
+    __Pyx_TraceLine(271,0,__PYX_ERR(0, 271, __pyx_L1_error))
     __pyx_t_9 = PySet_Add(__pyx_v_kill_tags, __pyx_n_s_script); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 271, __pyx_L1_error)
 
     /* "lxml/html/clean.py":270
@@ -3037,6 +3275,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             safe_attrs = set(self.safe_attrs)
  *             for el in doc.iter(etree.Element):
  */
+  __Pyx_TraceLine(272,0,__PYX_ERR(0, 272, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_safe_attrs_only); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 272, __pyx_L1_error)
@@ -3050,6 +3289,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             for el in doc.iter(etree.Element):
  *                 attrib = el.attrib
  */
+    __Pyx_TraceLine(273,0,__PYX_ERR(0, 273, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_safe_attrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 273, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = PySet_New(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error)
@@ -3065,6 +3305,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 attrib = el.attrib
  *                 for aname in attrib.keys():
  */
+    __Pyx_TraceLine(274,0,__PYX_ERR(0, 274, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 274, __pyx_L1_error)
@@ -3168,6 +3409,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 for aname in attrib.keys():
  *                     if aname not in safe_attrs:
  */
+      __Pyx_TraceLine(275,0,__PYX_ERR(0, 275, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 275, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_XDECREF_SET(__pyx_v_attrib, __pyx_t_3);
@@ -3180,6 +3422,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if aname not in safe_attrs:
  *                         del attrib[aname]
  */
+      __Pyx_TraceLine(276,0,__PYX_ERR(0, 276, __pyx_L1_error))
       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 276, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_6 = NULL;
@@ -3250,6 +3493,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         del attrib[aname]
  *         if self.javascript:
  */
+        __Pyx_TraceLine(277,0,__PYX_ERR(0, 277, __pyx_L1_error))
         __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_aname, __pyx_v_safe_attrs, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 277, __pyx_L1_error)
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
@@ -3261,6 +3505,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.javascript:
  *             if not (self.safe_attrs_only and
  */
+          __Pyx_TraceLine(278,0,__PYX_ERR(0, 278, __pyx_L1_error))
           if (unlikely(PyObject_DelItem(__pyx_v_attrib, __pyx_v_aname) < 0)) __PYX_ERR(0, 278, __pyx_L1_error)
 
           /* "lxml/html/clean.py":277
@@ -3279,6 +3524,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if aname not in safe_attrs:
  *                         del attrib[aname]
  */
+        __Pyx_TraceLine(276,0,__PYX_ERR(0, 276, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
@@ -3289,6 +3535,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 attrib = el.attrib
  *                 for aname in attrib.keys():
  */
+      __Pyx_TraceLine(274,0,__PYX_ERR(0, 274, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -3308,6 +3555,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if not (self.safe_attrs_only and
  *                     self.safe_attrs == defs.safe_attrs):
  */
+  __Pyx_TraceLine(279,0,__PYX_ERR(0, 279, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_javascript); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 279, __pyx_L1_error)
@@ -3321,6 +3569,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     self.safe_attrs == defs.safe_attrs):
  *                 # safe_attrs handles events attributes itself
  */
+    __Pyx_TraceLine(280,0,__PYX_ERR(0, 280, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_safe_attrs_only); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 280, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 280, __pyx_L1_error)
@@ -3338,6 +3587,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 # safe_attrs handles events attributes itself
  *                 for el in doc.iter(etree.Element):
  */
+    __Pyx_TraceLine(281,0,__PYX_ERR(0, 281, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_safe_attrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_defs); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 281, __pyx_L1_error)
@@ -3360,6 +3610,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     self.safe_attrs == defs.safe_attrs):
  *                 # safe_attrs handles events attributes itself
  */
+    __Pyx_TraceLine(280,0,__PYX_ERR(0, 280, __pyx_L1_error))
     __pyx_t_1 = ((!__pyx_t_2) != 0);
     if (__pyx_t_1) {
 
@@ -3370,6 +3621,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     attrib = el.attrib
  *                     for aname in attrib.keys():
  */
+      __Pyx_TraceLine(283,0,__PYX_ERR(0, 283, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 283, __pyx_L1_error)
@@ -3473,6 +3725,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     for aname in attrib.keys():
  *                         if aname.startswith('on'):
  */
+        __Pyx_TraceLine(284,0,__PYX_ERR(0, 284, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 284, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_XDECREF_SET(__pyx_v_attrib, __pyx_t_10);
@@ -3485,6 +3738,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         if aname.startswith('on'):
  *                             del attrib[aname]
  */
+        __Pyx_TraceLine(285,0,__PYX_ERR(0, 285, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_6 = NULL;
@@ -3555,9 +3809,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                             del attrib[aname]
  *             doc.rewrite_links(self._remove_javascript_link,
  */
+          __Pyx_TraceLine(286,0,__PYX_ERR(0, 286, __pyx_L1_error))
           __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_aname, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 286, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 286, __pyx_L1_error)
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 286, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 286, __pyx_L1_error)
@@ -3571,6 +3826,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             doc.rewrite_links(self._remove_javascript_link,
  *                               resolve_base_href=False)
  */
+            __Pyx_TraceLine(287,0,__PYX_ERR(0, 287, __pyx_L1_error))
             if (unlikely(PyObject_DelItem(__pyx_v_attrib, __pyx_v_aname) < 0)) __PYX_ERR(0, 287, __pyx_L1_error)
 
             /* "lxml/html/clean.py":286
@@ -3589,6 +3845,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         if aname.startswith('on'):
  *                             del attrib[aname]
  */
+          __Pyx_TraceLine(285,0,__PYX_ERR(0, 285, __pyx_L1_error))
         }
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -3599,6 +3856,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     attrib = el.attrib
  *                     for aname in attrib.keys():
  */
+        __Pyx_TraceLine(283,0,__PYX_ERR(0, 283, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -3618,6 +3876,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                               resolve_base_href=False)
  *             # If we're deleting style then we don't have to remove JS links
  */
+    __Pyx_TraceLine(288,0,__PYX_ERR(0, 288, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_rewrite_links); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_remove_javascript_link); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 288, __pyx_L1_error)
@@ -3635,6 +3894,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # If we're deleting style then we don't have to remove JS links
  *             # from styles, otherwise...
  */
+    __Pyx_TraceLine(289,0,__PYX_ERR(0, 289, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_resolve_base_href, Py_False) < 0) __PYX_ERR(0, 289, __pyx_L1_error)
@@ -3646,6 +3906,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                               resolve_base_href=False)
  *             # If we're deleting style then we don't have to remove JS links
  */
+    __Pyx_TraceLine(288,0,__PYX_ERR(0, 288, __pyx_L1_error))
     __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 288, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3660,6 +3921,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 for el in _find_styled_elements(doc):
  *                     old = el.get('style')
  */
+    __Pyx_TraceLine(292,0,__PYX_ERR(0, 292, __pyx_L1_error))
     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_inline_style); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 292, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 292, __pyx_L1_error)
@@ -3674,6 +3936,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     old = el.get('style')
  *                     new = _css_javascript_re.sub('', old)
  */
+      __Pyx_TraceLine(293,0,__PYX_ERR(0, 293, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_styled_elements); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
@@ -3769,9 +4032,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     new = _css_javascript_re.sub('', old)
  *                     new = _css_import_re.sub('', new)
  */
+        __Pyx_TraceLine(294,0,__PYX_ERR(0, 294, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 294, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_XDECREF_SET(__pyx_v_old, __pyx_t_3);
@@ -3784,6 +4048,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     new = _css_import_re.sub('', new)
  *                     if self._has_sneaky_javascript(new):
  */
+        __Pyx_TraceLine(295,0,__PYX_ERR(0, 295, __pyx_L1_error))
         __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_css_javascript_re); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 295, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_sub); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 295, __pyx_L1_error)
@@ -3803,7 +4068,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         }
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_GOTREF(__pyx_t_3);
@@ -3811,7 +4076,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_GOTREF(__pyx_t_3);
@@ -3823,9 +4088,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
           if (__pyx_t_10) {
             __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
           }
-          __Pyx_INCREF(__pyx_kp_s__4);
-          __Pyx_GIVEREF(__pyx_kp_s__4);
-          PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_13, __pyx_kp_s__4);
+          __Pyx_INCREF(__pyx_kp_s__7);
+          __Pyx_GIVEREF(__pyx_kp_s__7);
+          PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_13, __pyx_kp_s__7);
           __Pyx_INCREF(__pyx_v_old);
           __Pyx_GIVEREF(__pyx_v_old);
           PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_13, __pyx_v_old);
@@ -3844,6 +4109,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if self._has_sneaky_javascript(new):
  *                         # Something tricky is going on...
  */
+        __Pyx_TraceLine(296,0,__PYX_ERR(0, 296, __pyx_L1_error))
         __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_css_import_re); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 296, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sub); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error)
@@ -3863,7 +4129,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         }
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_kp_s__4, __pyx_v_new};
+          PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_kp_s__7, __pyx_v_new};
           __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_GOTREF(__pyx_t_3);
@@ -3871,7 +4137,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_kp_s__4, __pyx_v_new};
+          PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_kp_s__7, __pyx_v_new};
           __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_GOTREF(__pyx_t_3);
@@ -3883,9 +4149,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
           if (__pyx_t_6) {
             __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL;
           }
-          __Pyx_INCREF(__pyx_kp_s__4);
-          __Pyx_GIVEREF(__pyx_kp_s__4);
-          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_kp_s__4);
+          __Pyx_INCREF(__pyx_kp_s__7);
+          __Pyx_GIVEREF(__pyx_kp_s__7);
+          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_kp_s__7);
           __Pyx_INCREF(__pyx_v_new);
           __Pyx_GIVEREF(__pyx_v_new);
           PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_13, __pyx_v_new);
@@ -3904,6 +4170,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         # Something tricky is going on...
  *                         del el.attrib['style']
  */
+        __Pyx_TraceLine(297,0,__PYX_ERR(0, 297, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_has_sneaky_javascript); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 297, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_10 = NULL;
@@ -3960,6 +4227,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     elif new != old:
  *                         el.set('style', new)
  */
+          __Pyx_TraceLine(299,0,__PYX_ERR(0, 299, __pyx_L1_error))
           __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           if (unlikely(PyObject_DelItem(__pyx_t_3, __pyx_n_s_style) < 0)) __PYX_ERR(0, 299, __pyx_L1_error)
@@ -3982,6 +4250,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         el.set('style', new)
  *             if not self.style:
  */
+        __Pyx_TraceLine(300,0,__PYX_ERR(0, 300, __pyx_L1_error))
         __pyx_t_3 = PyObject_RichCompare(__pyx_v_new, __pyx_v_old, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error)
         __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 300, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3994,6 +4263,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if not self.style:
  *                 for el in list(doc.iter('style')):
  */
+          __Pyx_TraceLine(301,0,__PYX_ERR(0, 301, __pyx_L1_error))
           __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_t_6 = NULL;
@@ -4060,6 +4330,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     old = el.get('style')
  *                     new = _css_javascript_re.sub('', old)
  */
+        __Pyx_TraceLine(293,0,__PYX_ERR(0, 293, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -4079,6 +4350,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 for el in list(doc.iter('style')):
  *                     if el.get('type', '').lower().strip() == 'text/javascript':
  */
+    __Pyx_TraceLine(302,0,__PYX_ERR(0, 302, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_style); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 302, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 302, __pyx_L1_error)
@@ -4093,9 +4365,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if el.get('type', '').lower().strip() == 'text/javascript':
  *                         el.drop_tree()
  */
+      __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 303, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_5 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 303, __pyx_L1_error)
@@ -4121,9 +4394,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         el.drop_tree()
  *                         continue
  */
+        __Pyx_TraceLine(304,0,__PYX_ERR(0, 304, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 304, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 304, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_lower); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
@@ -4179,6 +4453,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         continue
  *                     old = el.text or ''
  */
+          __Pyx_TraceLine(305,0,__PYX_ERR(0, 305, __pyx_L1_error))
           __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tree); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_10);
           __pyx_t_4 = NULL;
@@ -4208,6 +4483,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     old = el.text or ''
  *                     new = _css_javascript_re.sub('', old)
  */
+          __Pyx_TraceLine(306,0,__PYX_ERR(0, 306, __pyx_L1_error))
           goto __pyx_L34_continue;
 
           /* "lxml/html/clean.py":304
@@ -4226,6 +4502,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     new = _css_javascript_re.sub('', old)
  *                     # The imported CSS can do anything; we just can't allow:
  */
+        __Pyx_TraceLine(307,0,__PYX_ERR(0, 307, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 307, __pyx_L1_error)
@@ -4237,8 +4514,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           goto __pyx_L37_bool_binop_done;
         }
-        __Pyx_INCREF(__pyx_kp_s__4);
-        __pyx_t_5 = __pyx_kp_s__4;
+        __Pyx_INCREF(__pyx_kp_s__7);
+        __pyx_t_5 = __pyx_kp_s__7;
         __pyx_L37_bool_binop_done:;
         __Pyx_XDECREF_SET(__pyx_v_old, __pyx_t_5);
         __pyx_t_5 = 0;
@@ -4250,6 +4527,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     # The imported CSS can do anything; we just can't allow:
  *                     new = _css_import_re.sub('', old)
  */
+        __Pyx_TraceLine(308,0,__PYX_ERR(0, 308, __pyx_L1_error))
         __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_css_javascript_re); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 308, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_sub); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
@@ -4269,7 +4547,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         }
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_GOTREF(__pyx_t_5);
@@ -4277,7 +4555,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_GOTREF(__pyx_t_5);
@@ -4289,9 +4567,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
           if (__pyx_t_10) {
             __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL;
           }
-          __Pyx_INCREF(__pyx_kp_s__4);
-          __Pyx_GIVEREF(__pyx_kp_s__4);
-          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_13, __pyx_kp_s__4);
+          __Pyx_INCREF(__pyx_kp_s__7);
+          __Pyx_GIVEREF(__pyx_kp_s__7);
+          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_13, __pyx_kp_s__7);
           __Pyx_INCREF(__pyx_v_old);
           __Pyx_GIVEREF(__pyx_v_old);
           PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_13, __pyx_v_old);
@@ -4310,6 +4588,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if self._has_sneaky_javascript(new):
  *                         # Something tricky is going on...
  */
+        __Pyx_TraceLine(310,0,__PYX_ERR(0, 310, __pyx_L1_error))
         __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_css_import_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 310, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sub); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 310, __pyx_L1_error)
@@ -4329,7 +4608,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         }
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_5);
@@ -4337,7 +4616,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
         #endif
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s__4, __pyx_v_old};
+          PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s__7, __pyx_v_old};
           __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_5);
@@ -4349,9 +4628,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
           if (__pyx_t_4) {
             __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
           }
-          __Pyx_INCREF(__pyx_kp_s__4);
-          __Pyx_GIVEREF(__pyx_kp_s__4);
-          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_kp_s__4);
+          __Pyx_INCREF(__pyx_kp_s__7);
+          __Pyx_GIVEREF(__pyx_kp_s__7);
+          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_kp_s__7);
           __Pyx_INCREF(__pyx_v_old);
           __Pyx_GIVEREF(__pyx_v_old);
           PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_13, __pyx_v_old);
@@ -4370,6 +4649,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         # Something tricky is going on...
  *                         el.text = '/[inserted by cython to avoid comment start]* deleted *[inserted by cython to avoid comment closer]/'
  */
+        __Pyx_TraceLine(311,0,__PYX_ERR(0, 311, __pyx_L1_error))
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_has_sneaky_javascript); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 311, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_10 = NULL;
@@ -4426,6 +4706,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     elif new != old:
  *                         el.text = new
  */
+          __Pyx_TraceLine(313,0,__PYX_ERR(0, 313, __pyx_L1_error))
           if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_text, __pyx_kp_s_deleted) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
 
           /* "lxml/html/clean.py":311
@@ -4445,6 +4726,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         el.text = new
  *         if self.comments or self.processing_instructions:
  */
+        __Pyx_TraceLine(314,0,__PYX_ERR(0, 314, __pyx_L1_error))
         __pyx_t_5 = PyObject_RichCompare(__pyx_v_new, __pyx_v_old, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 314, __pyx_L1_error)
         __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 314, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -4457,6 +4739,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.comments or self.processing_instructions:
  *             # FIXME: why either?  I feel like there's some obscure reason
  */
+          __Pyx_TraceLine(315,0,__PYX_ERR(0, 315, __pyx_L1_error))
           if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_text, __pyx_v_new) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
 
           /* "lxml/html/clean.py":314
@@ -4476,6 +4759,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if el.get('type', '').lower().strip() == 'text/javascript':
  *                         el.drop_tree()
  */
+        __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
         __pyx_L34_continue:;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4505,6 +4789,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # FIXME: why either?  I feel like there's some obscure reason
  *             # because you can put PIs in comments...?  But I've already
  */
+  __Pyx_TraceLine(316,0,__PYX_ERR(0, 316, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_comments); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 316, __pyx_L1_error)
@@ -4529,6 +4814,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.processing_instructions:
  *             kill_tags.add(etree.ProcessingInstruction)
  */
+    __Pyx_TraceLine(320,0,__PYX_ERR(0, 320, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Comment); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L1_error)
@@ -4553,6 +4839,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.add(etree.ProcessingInstruction)
  *         if self.style:
  */
+  __Pyx_TraceLine(321,0,__PYX_ERR(0, 321, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_processing_instructions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 321, __pyx_L1_error)
@@ -4566,6 +4853,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.style:
  *             kill_tags.add('style')
  */
+    __Pyx_TraceLine(322,0,__PYX_ERR(0, 322, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error)
@@ -4590,6 +4878,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.add('style')
  *         if self.inline_style:
  */
+  __Pyx_TraceLine(323,0,__PYX_ERR(0, 323, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_style); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 323, __pyx_L1_error)
@@ -4603,6 +4892,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.inline_style:
  *             etree.strip_attributes(doc, 'style')
  */
+    __Pyx_TraceLine(324,0,__PYX_ERR(0, 324, __pyx_L1_error))
     __pyx_t_9 = PySet_Add(__pyx_v_kill_tags, __pyx_n_s_style); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 324, __pyx_L1_error)
 
     /* "lxml/html/clean.py":323
@@ -4621,6 +4911,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             etree.strip_attributes(doc, 'style')
  *         if self.links:
  */
+  __Pyx_TraceLine(325,0,__PYX_ERR(0, 325, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_inline_style); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 325, __pyx_L1_error)
@@ -4634,6 +4925,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.links:
  *             kill_tags.add('link')
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(0, 326, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error)
@@ -4702,6 +4994,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.add('link')
  *         elif self.style or self.javascript:
  */
+  __Pyx_TraceLine(327,0,__PYX_ERR(0, 327, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_links); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 327, __pyx_L1_error)
@@ -4715,6 +5008,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         elif self.style or self.javascript:
  *             # We must get rid of included stylesheets if Javascript is not
  */
+    __Pyx_TraceLine(328,0,__PYX_ERR(0, 328, __pyx_L1_error))
     __pyx_t_9 = PySet_Add(__pyx_v_kill_tags, __pyx_n_s_link); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 328, __pyx_L1_error)
 
     /* "lxml/html/clean.py":327
@@ -4734,6 +5028,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # We must get rid of included stylesheets if Javascript is not
  *             # allowed, as you can put Javascript in them
  */
+  __Pyx_TraceLine(329,0,__PYX_ERR(0, 329, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_style); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 329, __pyx_L1_error)
@@ -4758,9 +5053,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if 'stylesheet' in el.get('rel', '').lower():
  *                     # Note this kills alternate stylesheets as well
  */
+    __Pyx_TraceLine(332,0,__PYX_ERR(0, 332, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_3 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L1_error)
@@ -4786,9 +5082,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     # Note this kills alternate stylesheets as well
  *                     if not self.allow_element(el):
  */
+      __Pyx_TraceLine(333,0,__PYX_ERR(0, 333, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_lower); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L1_error)
@@ -4824,6 +5121,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         el.drop_tree()
  *         if self.meta:
  */
+        __Pyx_TraceLine(335,0,__PYX_ERR(0, 335, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = NULL;
@@ -4881,6 +5179,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.meta:
  *             kill_tags.add('meta')
  */
+          __Pyx_TraceLine(336,0,__PYX_ERR(0, 336, __pyx_L1_error))
           __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tree); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
           __pyx_t_10 = NULL;
@@ -4928,6 +5227,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if 'stylesheet' in el.get('rel', '').lower():
  *                     # Note this kills alternate stylesheets as well
  */
+      __Pyx_TraceLine(332,0,__PYX_ERR(0, 332, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -4948,6 +5248,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.add('meta')
  *         if self.page_structure:
  */
+  __Pyx_TraceLine(337,0,__PYX_ERR(0, 337, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_meta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 337, __pyx_L1_error)
@@ -4961,6 +5262,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.page_structure:
  *             remove_tags.update(('head', 'html', 'title'))
  */
+    __Pyx_TraceLine(338,0,__PYX_ERR(0, 338, __pyx_L1_error))
     __pyx_t_9 = PySet_Add(__pyx_v_kill_tags, __pyx_n_s_meta); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error)
 
     /* "lxml/html/clean.py":337
@@ -4979,6 +5281,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             remove_tags.update(('head', 'html', 'title'))
  *         if self.embedded:
  */
+  __Pyx_TraceLine(339,0,__PYX_ERR(0, 339, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_page_structure); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 339, __pyx_L1_error)
@@ -4992,7 +5295,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.embedded:
  *             # FIXME: is <layer> really embedded?
  */
-    __pyx_t_6 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error)
+    __Pyx_TraceLine(340,0,__PYX_ERR(0, 340, __pyx_L1_error))
+    __pyx_t_6 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
@@ -5012,6 +5316,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # FIXME: is <layer> really embedded?
  *             # We should get rid of any <param> tags not inside <applet>;
  */
+  __Pyx_TraceLine(341,0,__PYX_ERR(0, 341, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_embedded); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 341, __pyx_L1_error)
@@ -5025,9 +5330,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 found_parent = False
  *                 parent = el.getparent()
  */
+    __Pyx_TraceLine(345,0,__PYX_ERR(0, 345, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error)
@@ -5053,6 +5359,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 parent = el.getparent()
  *                 while parent is not None and parent.tag not in ('applet', 'object'):
  */
+      __Pyx_TraceLine(346,0,__PYX_ERR(0, 346, __pyx_L1_error))
       __pyx_v_found_parent = 0;
 
       /* "lxml/html/clean.py":347
@@ -5062,6 +5369,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 while parent is not None and parent.tag not in ('applet', 'object'):
  *                     parent = parent.getparent()
  */
+      __Pyx_TraceLine(347,0,__PYX_ERR(0, 347, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_getparent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_10 = NULL;
@@ -5092,6 +5400,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     parent = parent.getparent()
  *                 if parent is None:
  */
+      __Pyx_TraceLine(348,0,__PYX_ERR(0, 348, __pyx_L1_error))
       while (1) {
         __pyx_t_2 = (__pyx_v_parent != Py_None);
         __pyx_t_14 = (__pyx_t_2 != 0);
@@ -5124,6 +5433,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if parent is None:
  *                     el.drop_tree()
  */
+        __Pyx_TraceLine(349,0,__PYX_ERR(0, 349, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_getparent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_10 = NULL;
@@ -5155,6 +5465,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.drop_tree()
  *             kill_tags.update(('applet',))
  */
+      __Pyx_TraceLine(350,0,__PYX_ERR(0, 350, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_parent == Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
@@ -5166,6 +5477,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.update(('applet',))
  *             # The alternate contents that are in an iframe are a good fallback:
  */
+        __Pyx_TraceLine(351,0,__PYX_ERR(0, 351, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tree); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_10 = NULL;
@@ -5204,6 +5516,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 found_parent = False
  *                 parent = el.getparent()
  */
+      __Pyx_TraceLine(345,0,__PYX_ERR(0, 345, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -5214,7 +5527,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # The alternate contents that are in an iframe are a good fallback:
  *             remove_tags.update(('iframe', 'embed', 'layer', 'object', 'param'))
  */
-    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_kill_tags, __pyx_tuple__11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error)
+    __Pyx_TraceLine(352,0,__PYX_ERR(0, 352, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_kill_tags, __pyx_tuple__14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -5225,7 +5539,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.frames:
  *             # FIXME: ideally we should look at the frame links, but
  */
-    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
+    __Pyx_TraceLine(354,0,__PYX_ERR(0, 354, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -5245,6 +5560,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # FIXME: ideally we should look at the frame links, but
  *             # generally frames don't mix properly with an HTML
  */
+  __Pyx_TraceLine(355,0,__PYX_ERR(0, 355, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_frames); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 355, __pyx_L1_error)
@@ -5258,6 +5574,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.forms:
  *             remove_tags.add('form')
  */
+    __Pyx_TraceLine(359,0,__PYX_ERR(0, 359, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_defs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_frame_tags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 359, __pyx_L1_error)
@@ -5284,6 +5601,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             remove_tags.add('form')
  *             kill_tags.update(('button', 'input', 'select', 'textarea'))
  */
+  __Pyx_TraceLine(360,0,__PYX_ERR(0, 360, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_forms); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 360, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 360, __pyx_L1_error)
@@ -5297,6 +5615,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             kill_tags.update(('button', 'input', 'select', 'textarea'))
  *         if self.annoying_tags:
  */
+    __Pyx_TraceLine(361,0,__PYX_ERR(0, 361, __pyx_L1_error))
     __pyx_t_9 = PySet_Add(__pyx_v_remove_tags, __pyx_n_s_form); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
 
     /* "lxml/html/clean.py":362
@@ -5306,7 +5625,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.annoying_tags:
  *             remove_tags.update(('blink', 'marquee'))
  */
-    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_kill_tags, __pyx_tuple__13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 362, __pyx_L1_error)
+    __Pyx_TraceLine(362,0,__PYX_ERR(0, 362, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_kill_tags, __pyx_tuple__16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 362, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -5326,6 +5646,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             remove_tags.update(('blink', 'marquee'))
  * 
  */
+  __Pyx_TraceLine(363,0,__PYX_ERR(0, 363, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_annoying_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 363, __pyx_L1_error)
@@ -5339,7 +5660,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         _remove = []
  */
-    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 364, __pyx_L1_error)
+    __Pyx_TraceLine(364,0,__PYX_ERR(0, 364, __pyx_L1_error))
+    __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PySet_Type_update, __pyx_v_remove_tags, __pyx_tuple__17); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 364, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -5359,6 +5681,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         _kill = []
  *         for el in doc.iter():
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(0, 366, __pyx_L1_error))
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v__remove = ((PyObject*)__pyx_t_3);
@@ -5371,6 +5694,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         for el in doc.iter():
  *             if el.tag in kill_tags:
  */
+  __Pyx_TraceLine(367,0,__PYX_ERR(0, 367, __pyx_L1_error))
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v__kill = ((PyObject*)__pyx_t_3);
@@ -5383,6 +5707,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if el.tag in kill_tags:
  *                 if self.allow_element(el):
  */
+  __Pyx_TraceLine(368,0,__PYX_ERR(0, 368, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 368, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_4 = NULL;
@@ -5453,6 +5778,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if self.allow_element(el):
  *                     continue
  */
+    __Pyx_TraceLine(369,0,__PYX_ERR(0, 369, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_t_3, __pyx_v_kill_tags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 369, __pyx_L1_error)
@@ -5467,6 +5793,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     continue
  *                 _kill.append(el)
  */
+      __Pyx_TraceLine(370,0,__PYX_ERR(0, 370, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_10 = NULL;
@@ -5523,6 +5850,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 _kill.append(el)
  *             elif el.tag in remove_tags:
  */
+        __Pyx_TraceLine(371,0,__PYX_ERR(0, 371, __pyx_L1_error))
         goto __pyx_L68_continue;
 
         /* "lxml/html/clean.py":370
@@ -5541,6 +5869,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             elif el.tag in remove_tags:
  *                 if self.allow_element(el):
  */
+      __Pyx_TraceLine(372,0,__PYX_ERR(0, 372, __pyx_L1_error))
       __pyx_t_9 = __Pyx_PyList_Append(__pyx_v__kill, __pyx_v_el); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 372, __pyx_L1_error)
 
       /* "lxml/html/clean.py":369
@@ -5560,6 +5889,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if self.allow_element(el):
  *                     continue
  */
+    __Pyx_TraceLine(373,0,__PYX_ERR(0, 373, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_t_3, __pyx_v_remove_tags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 373, __pyx_L1_error)
@@ -5574,6 +5904,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     continue
  *                 _remove.append(el)
  */
+      __Pyx_TraceLine(374,0,__PYX_ERR(0, 374, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = NULL;
@@ -5630,6 +5961,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 _remove.append(el)
  * 
  */
+        __Pyx_TraceLine(375,0,__PYX_ERR(0, 375, __pyx_L1_error))
         goto __pyx_L68_continue;
 
         /* "lxml/html/clean.py":374
@@ -5648,6 +5980,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         if _remove and _remove[0] == doc:
  */
+      __Pyx_TraceLine(376,0,__PYX_ERR(0, 376, __pyx_L1_error))
       __pyx_t_9 = __Pyx_PyList_Append(__pyx_v__remove, __pyx_v_el); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error)
 
       /* "lxml/html/clean.py":373
@@ -5667,6 +6000,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if el.tag in kill_tags:
  *                 if self.allow_element(el):
  */
+    __Pyx_TraceLine(368,0,__PYX_ERR(0, 368, __pyx_L1_error))
     __pyx_L68_continue:;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -5678,6 +6012,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # We have to drop the parent-most tag, which we can't
  *             # do.  Instead we'll rewrite it:
  */
+  __Pyx_TraceLine(378,0,__PYX_ERR(0, 378, __pyx_L1_error))
   __pyx_t_1 = (PyList_GET_SIZE(__pyx_v__remove) != 0);
   if (__pyx_t_1) {
   } else {
@@ -5701,6 +6036,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.tag = 'div'
  *             el.attrib.clear()
  */
+    __Pyx_TraceLine(381,0,__PYX_ERR(0, 381, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyList_PopIndex(__pyx_v__remove, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_el, __pyx_t_3);
@@ -5713,6 +6049,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.attrib.clear()
  *         elif _kill and _kill[0] == doc:
  */
+    __Pyx_TraceLine(382,0,__PYX_ERR(0, 382, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_tag, __pyx_n_s_div) < 0) __PYX_ERR(0, 382, __pyx_L1_error)
 
     /* "lxml/html/clean.py":383
@@ -5722,6 +6059,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         elif _kill and _kill[0] == doc:
  *             # We have to drop the parent-most element, which we can't
  */
+    __Pyx_TraceLine(383,0,__PYX_ERR(0, 383, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 383, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_clear); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 383, __pyx_L1_error)
@@ -5764,6 +6102,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             # We have to drop the parent-most element, which we can't
  *             # do.  Instead we'll clear it:
  */
+  __Pyx_TraceLine(384,0,__PYX_ERR(0, 384, __pyx_L1_error))
   __pyx_t_1 = (PyList_GET_SIZE(__pyx_v__kill) != 0);
   if (__pyx_t_1) {
   } else {
@@ -5787,6 +6126,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if el.tag != 'html':
  *                 el.tag = 'div'
  */
+    __Pyx_TraceLine(387,0,__PYX_ERR(0, 387, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyList_PopIndex(__pyx_v__kill, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_el, __pyx_t_4);
@@ -5799,6 +6139,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 el.tag = 'div'
  *             el.clear()
  */
+    __Pyx_TraceLine(388,0,__PYX_ERR(0, 388, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_html, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 388, __pyx_L1_error)
@@ -5812,6 +6153,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.clear()
  * 
  */
+      __Pyx_TraceLine(389,0,__PYX_ERR(0, 389, __pyx_L1_error))
       if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_tag, __pyx_n_s_div) < 0) __PYX_ERR(0, 389, __pyx_L1_error)
 
       /* "lxml/html/clean.py":388
@@ -5830,6 +6172,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         _kill.reverse() # start with innermost tags
  */
+    __Pyx_TraceLine(390,0,__PYX_ERR(0, 390, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_clear); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 390, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
@@ -5869,6 +6212,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         for el in _kill:
  *             el.drop_tree()
  */
+  __Pyx_TraceLine(392,0,__PYX_ERR(0, 392, __pyx_L1_error))
   __pyx_t_9 = PyList_Reverse(__pyx_v__kill); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 392, __pyx_L1_error)
 
   /* "lxml/html/clean.py":393
@@ -5878,6 +6222,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.drop_tree()
  *         for el in _remove:
  */
+  __Pyx_TraceLine(393,0,__PYX_ERR(0, 393, __pyx_L1_error))
   __pyx_t_4 = __pyx_v__kill; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
   for (;;) {
     if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
@@ -5897,6 +6242,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         for el in _remove:
  *             el.drop_tag()
  */
+    __Pyx_TraceLine(394,0,__PYX_ERR(0, 394, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tree); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_10 = NULL;
@@ -5926,6 +6272,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.drop_tree()
  *         for el in _remove:
  */
+    __Pyx_TraceLine(393,0,__PYX_ERR(0, 393, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -5936,6 +6283,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.drop_tag()
  * 
  */
+  __Pyx_TraceLine(395,0,__PYX_ERR(0, 395, __pyx_L1_error))
   __pyx_t_4 = __pyx_v__remove; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
   for (;;) {
     if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
@@ -5955,6 +6303,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *         if self.remove_unknown_tags:
  */
+    __Pyx_TraceLine(396,0,__PYX_ERR(0, 396, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 396, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_10 = NULL;
@@ -5984,6 +6333,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             el.drop_tag()
  * 
  */
+    __Pyx_TraceLine(395,0,__PYX_ERR(0, 395, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -5994,6 +6344,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if allow_tags:
  *                 raise ValueError(
  */
+  __Pyx_TraceLine(398,0,__PYX_ERR(0, 398, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_remove_unknown_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 398, __pyx_L1_error)
@@ -6007,6 +6358,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 raise ValueError(
  *                     "It does not make sense to pass in both allow_tags and remove_unknown_tags")
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(0, 399, __pyx_L1_error))
     __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_allow_tags) != 0);
     if (unlikely(__pyx_t_2)) {
 
@@ -6017,7 +6369,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     "It does not make sense to pass in both allow_tags and remove_unknown_tags")
  *             allow_tags = set(defs.tags)
  */
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 400, __pyx_L1_error)
+      __Pyx_TraceLine(400,0,__PYX_ERR(0, 400, __pyx_L1_error))
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 400, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6039,6 +6392,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if allow_tags:
  *             bad = []
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(0, 402, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_defs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 402, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
@@ -6066,6 +6420,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             bad = []
  *             for el in doc.iter():
  */
+  __Pyx_TraceLine(403,0,__PYX_ERR(0, 403, __pyx_L1_error))
   __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_allow_tags) != 0);
   if (__pyx_t_2) {
 
@@ -6076,6 +6431,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             for el in doc.iter():
  *                 if el.tag not in allow_tags:
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(0, 404, __pyx_L1_error))
     __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_bad = ((PyObject*)__pyx_t_4);
@@ -6088,6 +6444,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if el.tag not in allow_tags:
  *                     bad.append(el)
  */
+    __Pyx_TraceLine(405,0,__PYX_ERR(0, 405, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
@@ -6158,6 +6515,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     bad.append(el)
  *             if bad:
  */
+      __Pyx_TraceLine(406,0,__PYX_ERR(0, 406, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_t_4, __pyx_v_allow_tags, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 406, __pyx_L1_error)
@@ -6172,6 +6530,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             if bad:
  *                 if bad[0] is doc:
  */
+        __Pyx_TraceLine(407,0,__PYX_ERR(0, 407, __pyx_L1_error))
         __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_bad, __pyx_v_el); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 407, __pyx_L1_error)
 
         /* "lxml/html/clean.py":406
@@ -6190,6 +6549,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if el.tag not in allow_tags:
  *                     bad.append(el)
  */
+      __Pyx_TraceLine(405,0,__PYX_ERR(0, 405, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -6200,6 +6560,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if bad[0] is doc:
  *                     el = bad.pop(0)
  */
+    __Pyx_TraceLine(408,0,__PYX_ERR(0, 408, __pyx_L1_error))
     __pyx_t_1 = (PyList_GET_SIZE(__pyx_v_bad) != 0);
     if (__pyx_t_1) {
 
@@ -6210,6 +6571,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el = bad.pop(0)
  *                     el.tag = 'div'
  */
+      __Pyx_TraceLine(409,0,__PYX_ERR(0, 409, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_bad, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_1 = (__pyx_t_3 == __pyx_v_doc);
@@ -6224,6 +6586,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.tag = 'div'
  *                     el.attrib.clear()
  */
+        __Pyx_TraceLine(410,0,__PYX_ERR(0, 410, __pyx_L1_error))
         __pyx_t_3 = __Pyx_PyList_PopIndex(__pyx_v_bad, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_el, __pyx_t_3);
@@ -6236,6 +6599,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.attrib.clear()
  *                 for el in bad:
  */
+        __Pyx_TraceLine(411,0,__PYX_ERR(0, 411, __pyx_L1_error))
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_tag, __pyx_n_s_div) < 0) __PYX_ERR(0, 411, __pyx_L1_error)
 
         /* "lxml/html/clean.py":412
@@ -6245,6 +6609,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 for el in bad:
  *                     el.drop_tag()
  */
+        __Pyx_TraceLine(412,0,__PYX_ERR(0, 412, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_clear); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 412, __pyx_L1_error)
@@ -6286,6 +6651,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.drop_tag()
  *         if self.add_nofollow:
  */
+      __Pyx_TraceLine(413,0,__PYX_ERR(0, 413, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_bad; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
       for (;;) {
         if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
@@ -6305,6 +6671,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *         if self.add_nofollow:
  *             for el in _find_external_links(doc):
  */
+        __Pyx_TraceLine(414,0,__PYX_ERR(0, 414, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_10 = NULL;
@@ -6334,6 +6701,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.drop_tag()
  *         if self.add_nofollow:
  */
+        __Pyx_TraceLine(413,0,__PYX_ERR(0, 413, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -6362,6 +6730,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *             for el in _find_external_links(doc):
  *                 if not self.allow_follow(el):
  */
+  __Pyx_TraceLine(415,0,__PYX_ERR(0, 415, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_add_nofollow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 415, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 415, __pyx_L1_error)
@@ -6375,6 +6744,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if not self.allow_follow(el):
  *                     rel = el.get('rel')
  */
+    __Pyx_TraceLine(416,0,__PYX_ERR(0, 416, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_external_links); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 416, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_4 = NULL;
@@ -6470,6 +6840,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     rel = el.get('rel')
  *                     if rel:
  */
+      __Pyx_TraceLine(417,0,__PYX_ERR(0, 417, __pyx_L1_error))
       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_follow); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 417, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_4 = NULL;
@@ -6527,9 +6898,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     if rel:
  *                         if ('nofollow' in rel
  */
+        __Pyx_TraceLine(418,0,__PYX_ERR(0, 418, __pyx_L1_error))
         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 418, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 418, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 418, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_XDECREF_SET(__pyx_v_rel, __pyx_t_10);
@@ -6542,6 +6914,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         if ('nofollow' in rel
  *                                 and ' nofollow ' in (' %s ' % rel)):
  */
+        __Pyx_TraceLine(419,0,__PYX_ERR(0, 419, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_rel); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 419, __pyx_L1_error)
         if (__pyx_t_1) {
 
@@ -6552,6 +6925,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                                 and ' nofollow ' in (' %s ' % rel)):
  *                             continue
  */
+          __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
           __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_nofollow, __pyx_v_rel, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 420, __pyx_L1_error)
           __pyx_t_14 = (__pyx_t_2 != 0);
           if (__pyx_t_14) {
@@ -6567,6 +6941,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                             continue
  *                         rel = '%s nofollow' % rel
  */
+          __Pyx_TraceLine(421,0,__PYX_ERR(0, 421, __pyx_L1_error))
           __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_s, __pyx_v_rel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 421, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_10);
           __pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_nofollow_2, __pyx_t_10, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 421, __pyx_L1_error)
@@ -6582,6 +6957,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                                 and ' nofollow ' in (' %s ' % rel)):
  *                             continue
  */
+          __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
           if (__pyx_t_1) {
 
             /* "lxml/html/clean.py":422
@@ -6591,6 +6967,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                         rel = '%s nofollow' % rel
  *                     else:
  */
+            __Pyx_TraceLine(422,0,__PYX_ERR(0, 422, __pyx_L1_error))
             goto __pyx_L94_continue;
 
             /* "lxml/html/clean.py":420
@@ -6609,6 +6986,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     else:
  *                         rel = 'nofollow'
  */
+          __Pyx_TraceLine(423,0,__PYX_ERR(0, 423, __pyx_L1_error))
           __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_s_nofollow, __pyx_v_rel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 423, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF_SET(__pyx_v_rel, __pyx_t_10);
@@ -6631,6 +7009,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                     el.set('rel', rel)
  * 
  */
+        __Pyx_TraceLine(425,0,__PYX_ERR(0, 425, __pyx_L1_error))
         /*else*/ {
           __Pyx_INCREF(__pyx_n_s_nofollow);
           __Pyx_DECREF_SET(__pyx_v_rel, __pyx_n_s_nofollow);
@@ -6644,6 +7023,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  * 
  *     def allow_follow(self, anchor):
  */
+        __Pyx_TraceLine(426,0,__PYX_ERR(0, 426, __pyx_L1_error))
         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_5 = NULL;
@@ -6709,6 +7089,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
  *                 if not self.allow_follow(el):
  *                     rel = el.get('rel')
  */
+      __Pyx_TraceLine(416,0,__PYX_ERR(0, 416, __pyx_L1_error))
       __pyx_L94_continue:;
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -6758,6 +7139,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_2__call__(CYTHON_UNUSED Py
   __Pyx_XDECREF(__pyx_v_rel);
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6835,8 +7217,11 @@ static PyObject *__pyx_pw_4lxml_4html_5clean_7Cleaner_5allow_follow(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_4allow_follow(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_anchor) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__20)
   __Pyx_RefNannySetupContext("allow_follow", 0);
+  __Pyx_TraceCall("allow_follow", __pyx_f[0], 428, 0, __PYX_ERR(0, 428, __pyx_L1_error));
 
   /* "lxml/html/clean.py":432
  *         Override to suppress rel="nofollow" on some anchors.
@@ -6845,6 +7230,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_4allow_follow(CYTHON_UNUSE
  * 
  *     def allow_element(self, el):
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(0, 432, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_False);
   __pyx_r = Py_False;
@@ -6859,8 +7245,12 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_4allow_follow(CYTHON_UNUSE
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.html.clean.Cleaner.allow_follow", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6940,6 +7330,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
   PyObject *__pyx_v_one_attr = NULL;
   PyObject *__pyx_v_url = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -6952,7 +7343,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__21)
   __Pyx_RefNannySetupContext("allow_element", 0);
+  __Pyx_TraceCall("allow_element", __pyx_f[0], 434, 0, __PYX_ERR(0, 434, __pyx_L1_error));
 
   /* "lxml/html/clean.py":435
  * 
@@ -6961,6 +7354,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *             return False
  *         attr = self._tag_link_attrs[el.tag]
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(0, 435, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tag_link_attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
@@ -6978,6 +7372,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *         attr = self._tag_link_attrs[el.tag]
  *         if isinstance(attr, (list, tuple)):
  */
+    __Pyx_TraceLine(436,0,__PYX_ERR(0, 436, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
     __pyx_r = Py_False;
@@ -6999,6 +7394,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *         if isinstance(attr, (list, tuple)):
  *             for one_attr in attr:
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(0, 437, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tag_link_attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error)
@@ -7017,6 +7413,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *             for one_attr in attr:
  *                 url = el.get(one_attr)
  */
+  __Pyx_TraceLine(438,0,__PYX_ERR(0, 438, __pyx_L1_error))
   __pyx_t_3 = PyList_Check(__pyx_v_attr); 
   __pyx_t_6 = (__pyx_t_3 != 0);
   if (!__pyx_t_6) {
@@ -7038,6 +7435,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                 url = el.get(one_attr)
  *                 if not url:
  */
+    __Pyx_TraceLine(439,0,__PYX_ERR(0, 439, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_attr)) || PyTuple_CheckExact(__pyx_v_attr)) {
       __pyx_t_5 = __pyx_v_attr; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
@@ -7087,6 +7485,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                 if not url:
  *                     return False
  */
+      __Pyx_TraceLine(440,0,__PYX_ERR(0, 440, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_9 = NULL;
@@ -7142,6 +7541,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                     return False
  *                 if not self.allow_embedded_url(el, url):
  */
+      __Pyx_TraceLine(441,0,__PYX_ERR(0, 441, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_url); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 441, __pyx_L1_error)
       __pyx_t_4 = ((!__pyx_t_3) != 0);
       if (__pyx_t_4) {
@@ -7153,6 +7553,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                 if not self.allow_embedded_url(el, url):
  *                     return False
  */
+        __Pyx_TraceLine(442,0,__PYX_ERR(0, 442, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __Pyx_INCREF(Py_False);
         __pyx_r = Py_False;
@@ -7175,6 +7576,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                     return False
  *             return True
  */
+      __Pyx_TraceLine(443,0,__PYX_ERR(0, 443, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_embedded_url); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_10 = NULL;
@@ -7234,6 +7636,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *             return True
  *         else:
  */
+        __Pyx_TraceLine(444,0,__PYX_ERR(0, 444, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __Pyx_INCREF(Py_False);
         __pyx_r = Py_False;
@@ -7256,6 +7659,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                 url = el.get(one_attr)
  *                 if not url:
  */
+      __Pyx_TraceLine(439,0,__PYX_ERR(0, 439, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -7266,6 +7670,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *         else:
  *             url = el.get(attr)
  */
+    __Pyx_TraceLine(445,0,__PYX_ERR(0, 445, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -7287,6 +7692,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *             if not url:
  *                 return False
  */
+  __Pyx_TraceLine(447,0,__PYX_ERR(0, 447, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -7343,6 +7749,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *                 return False
  *             return self.allow_embedded_url(el, url)
  */
+    __Pyx_TraceLine(448,0,__PYX_ERR(0, 448, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_url); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 448, __pyx_L1_error)
     __pyx_t_4 = ((!__pyx_t_3) != 0);
     if (__pyx_t_4) {
@@ -7354,6 +7761,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  *             return self.allow_embedded_url(el, url)
  * 
  */
+      __Pyx_TraceLine(449,0,__PYX_ERR(0, 449, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(Py_False);
       __pyx_r = Py_False;
@@ -7375,6 +7783,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
  * 
  *     def allow_embedded_url(self, el, url):
  */
+    __Pyx_TraceLine(450,0,__PYX_ERR(0, 450, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_allow_embedded_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -7450,6 +7859,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_6allow_element(CYTHON_UNUS
   __Pyx_XDECREF(__pyx_v_one_attr);
   __Pyx_XDECREF(__pyx_v_url);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7542,6 +7952,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
   CYTHON_UNUSED PyObject *__pyx_v_query = NULL;
   CYTHON_UNUSED PyObject *__pyx_v_fragment = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -7554,7 +7965,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
   PyObject *(*__pyx_t_11)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__22)
   __Pyx_RefNannySetupContext("allow_embedded_url", 0);
+  __Pyx_TraceCall("allow_embedded_url", __pyx_f[0], 452, 0, __PYX_ERR(0, 452, __pyx_L1_error));
 
   /* "lxml/html/clean.py":453
  * 
@@ -7563,6 +7976,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *             and el.tag not in self.whitelist_tags):
  *             return False
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(0, 453, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_whitelist_tags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = (__pyx_t_2 != Py_None);
@@ -7581,6 +7995,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *             return False
  *         scheme, netloc, path, query, fragment = urlsplit(url)
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(0, 454, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_whitelist_tags); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 454, __pyx_L1_error)
@@ -7599,6 +8014,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *             and el.tag not in self.whitelist_tags):
  *             return False
  */
+  __Pyx_TraceLine(453,0,__PYX_ERR(0, 453, __pyx_L1_error))
   if (__pyx_t_1) {
 
     /* "lxml/html/clean.py":455
@@ -7608,6 +8024,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *         scheme, netloc, path, query, fragment = urlsplit(url)
  *         netloc = netloc.lower().split(':', 1)[0]
  */
+    __Pyx_TraceLine(455,0,__PYX_ERR(0, 455, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
     __pyx_r = Py_False;
@@ -7629,6 +8046,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *         netloc = netloc.lower().split(':', 1)[0]
  *         if scheme not in ('http', 'https'):
  */
+  __Pyx_TraceLine(456,0,__PYX_ERR(0, 456, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_urlsplit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_6 = NULL;
@@ -7754,6 +8172,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *         if scheme not in ('http', 'https'):
  *             return False
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(0, 457, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_netloc, __pyx_n_s_lower); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_8 = NULL;
@@ -7777,7 +8196,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error)
@@ -7793,6 +8212,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *             return False
  *         if netloc in self.host_whitelist:
  */
+  __Pyx_TraceLine(458,0,__PYX_ERR(0, 458, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_scheme);
   __pyx_t_9 = __pyx_v_scheme;
   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_9, __pyx_n_s_http, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 458, __pyx_L1_error)
@@ -7815,6 +8235,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *         if netloc in self.host_whitelist:
  *             return True
  */
+    __Pyx_TraceLine(459,0,__PYX_ERR(0, 459, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_False);
     __pyx_r = Py_False;
@@ -7836,6 +8257,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *             return True
  *         return False
  */
+  __Pyx_TraceLine(460,0,__PYX_ERR(0, 460, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_host_whitelist); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 460, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_netloc, __pyx_t_9, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 460, __pyx_L1_error)
@@ -7850,6 +8272,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  *         return False
  * 
  */
+    __Pyx_TraceLine(461,0,__PYX_ERR(0, 461, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -7871,6 +8294,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
  * 
  *     def kill_conditional_comments(self, doc):
  */
+  __Pyx_TraceLine(462,0,__PYX_ERR(0, 462, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_False);
   __pyx_r = Py_False;
@@ -7902,6 +8326,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_8allow_embedded_url(CYTHON
   __Pyx_XDECREF(__pyx_v_query);
   __Pyx_XDECREF(__pyx_v_fragment);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8001,6 +8426,7 @@ static PyObject *__pyx_pw_4lxml_4html_5clean_7Cleaner_25kill_conditional_comment
 
 static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_el) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -8008,6 +8434,7 @@ static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self,
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("lambda", 0);
+  __Pyx_TraceCall("lambda", __pyx_f[0], 472, 0, __PYX_ERR(0, 472, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_conditional_comment_re); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -8077,6 +8504,7 @@ static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8092,6 +8520,7 @@ static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self,
 static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comments(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_doc) {
   CYTHON_UNUSED PyObject *__pyx_v_bad = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -8100,7 +8529,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__25)
   __Pyx_RefNannySetupContext("kill_conditional_comments", 0);
+  __Pyx_TraceCall("kill_conditional_comments", __pyx_f[0], 464, 0, __PYX_ERR(0, 464, __pyx_L1_error));
 
   /* "lxml/html/clean.py":470
  *         we'll kill any comments that could be conditional.
@@ -8109,6 +8540,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
  *         self._kill_elements(
  *             doc, lambda el: _conditional_comment_re.search(el.text),
  */
+  __Pyx_TraceLine(470,0,__PYX_ERR(0, 470, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 470, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bad = ((PyObject*)__pyx_t_1);
@@ -8121,6 +8553,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
  *             doc, lambda el: _conditional_comment_re.search(el.text),
  *             etree.Comment)
  */
+  __Pyx_TraceLine(471,0,__PYX_ERR(0, 471, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kill_elements); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -8131,6 +8564,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
  *             etree.Comment)
  * 
  */
+  __Pyx_TraceLine(472,0,__PYX_ERR(0, 472, __pyx_L1_error))
   __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_25kill_conditional_comments_lambda, 0, __pyx_n_s_Cleaner_kill_conditional_comment, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
@@ -8141,6 +8575,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
  * 
  *     def _kill_elements(self, doc, condition, iterate=None):
  */
+  __Pyx_TraceLine(473,0,__PYX_ERR(0, 473, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Comment); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error)
@@ -8223,6 +8658,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_10kill_conditional_comment
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_bad);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8327,6 +8763,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
   PyObject *__pyx_v_bad = NULL;
   PyObject *__pyx_v_el = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -8337,7 +8774,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   int __pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__26)
   __Pyx_RefNannySetupContext("_kill_elements", 0);
+  __Pyx_TraceCall("_kill_elements", __pyx_f[0], 475, 0, __PYX_ERR(0, 475, __pyx_L1_error));
 
   /* "lxml/html/clean.py":476
  * 
@@ -8346,6 +8785,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *         for el in doc.iter(iterate):
  *             if condition(el):
  */
+  __Pyx_TraceLine(476,0,__PYX_ERR(0, 476, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bad = ((PyObject*)__pyx_t_1);
@@ -8358,6 +8798,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *             if condition(el):
  *                 bad.append(el)
  */
+  __Pyx_TraceLine(477,0,__PYX_ERR(0, 477, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_iter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -8453,6 +8894,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *                 bad.append(el)
  *         for el in bad:
  */
+    __Pyx_TraceLine(478,0,__PYX_ERR(0, 478, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_condition);
     __pyx_t_4 = __pyx_v_condition; __pyx_t_3 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -8508,6 +8950,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *         for el in bad:
  *             el.drop_tree()
  */
+      __Pyx_TraceLine(479,0,__PYX_ERR(0, 479, __pyx_L1_error))
       __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_bad, __pyx_v_el); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 479, __pyx_L1_error)
 
       /* "lxml/html/clean.py":478
@@ -8526,6 +8969,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *             if condition(el):
  *                 bad.append(el)
  */
+    __Pyx_TraceLine(477,0,__PYX_ERR(0, 477, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -8536,6 +8980,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *             el.drop_tree()
  * 
  */
+  __Pyx_TraceLine(480,0,__PYX_ERR(0, 480, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_bad; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
   for (;;) {
     if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
@@ -8555,6 +9000,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  * 
  *     def _remove_javascript_link(self, link):
  */
+    __Pyx_TraceLine(481,0,__PYX_ERR(0, 481, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tree); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_7 = NULL;
@@ -8584,6 +9030,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
  *             el.drop_tree()
  * 
  */
+    __Pyx_TraceLine(480,0,__PYX_ERR(0, 480, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -8610,6 +9057,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_12_kill_elements(CYTHON_UN
   __Pyx_XDECREF(__pyx_v_bad);
   __Pyx_XDECREF(__pyx_v_el);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8687,6 +9135,7 @@ static PyObject *__pyx_pw_4lxml_4html_5clean_7Cleaner_15_remove_javascript_link(
 static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_link) {
   PyObject *__pyx_v_new = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -8694,7 +9143,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__27)
   __Pyx_RefNannySetupContext("_remove_javascript_link", 0);
+  __Pyx_TraceCall("_remove_javascript_link", __pyx_f[0], 483, 0, __PYX_ERR(0, 483, __pyx_L1_error));
 
   /* "lxml/html/clean.py":485
  *     def _remove_javascript_link(self, link):
@@ -8703,6 +9154,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
  *         if _is_javascript_scheme(new):
  *             # FIXME: should this be None to delete?
  */
+  __Pyx_TraceLine(485,0,__PYX_ERR(0, 485, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_substitute_whitespace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -8719,7 +9171,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__4, __pyx_v_link};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__7, __pyx_v_link};
     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -8727,7 +9179,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__4, __pyx_v_link};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__7, __pyx_v_link};
     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -8739,9 +9191,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_s__4);
-    __Pyx_GIVEREF(__pyx_kp_s__4);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_s__4);
+    __Pyx_INCREF(__pyx_kp_s__7);
+    __Pyx_GIVEREF(__pyx_kp_s__7);
+    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_s__7);
     __Pyx_INCREF(__pyx_v_link);
     __Pyx_GIVEREF(__pyx_v_link);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_link);
@@ -8760,6 +9212,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
  *             # FIXME: should this be None to delete?
  *             return ''
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(0, 486, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_javascript_scheme); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 486, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = NULL;
@@ -8816,9 +9269,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
  *         return link
  * 
  */
+    __Pyx_TraceLine(488,0,__PYX_ERR(0, 488, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_s__4);
-    __pyx_r = __pyx_kp_s__4;
+    __Pyx_INCREF(__pyx_kp_s__7);
+    __pyx_r = __pyx_kp_s__7;
     goto __pyx_L0;
 
     /* "lxml/html/clean.py":486
@@ -8837,6 +9291,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
  * 
  *     _substitute_comments = re.compile(r'/\*.*?\*[inserted by cython to avoid comment closer]/', re.S).sub
  */
+  __Pyx_TraceLine(489,0,__PYX_ERR(0, 489, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_link);
   __pyx_r = __pyx_v_link;
@@ -8861,6 +9316,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_14_remove_javascript_link(
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_new);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8938,6 +9394,7 @@ static PyObject *__pyx_pw_4lxml_4html_5clean_7Cleaner_17_has_sneaky_javascript(P
 
 static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_style) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -8946,7 +9403,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__28)
   __Pyx_RefNannySetupContext("_has_sneaky_javascript", 0);
+  __Pyx_TraceCall("_has_sneaky_javascript", __pyx_f[0], 493, 0, __PYX_ERR(0, 493, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_style);
 
   /* "lxml/html/clean.py":504
@@ -8956,6 +9415,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         style = style.replace('\\', '')
  *         style = _substitute_whitespace('', style)
  */
+  __Pyx_TraceLine(504,0,__PYX_ERR(0, 504, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_substitute_comments); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -8972,7 +9432,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__4, __pyx_v_style};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__7, __pyx_v_style};
     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -8980,7 +9440,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__4, __pyx_v_style};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__7, __pyx_v_style};
     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
@@ -8992,9 +9452,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_s__4);
-    __Pyx_GIVEREF(__pyx_kp_s__4);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_s__4);
+    __Pyx_INCREF(__pyx_kp_s__7);
+    __Pyx_GIVEREF(__pyx_kp_s__7);
+    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_s__7);
     __Pyx_INCREF(__pyx_v_style);
     __Pyx_GIVEREF(__pyx_v_style);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_style);
@@ -9013,9 +9473,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         style = _substitute_whitespace('', style)
  *         style = style.lower()
  */
+  __Pyx_TraceLine(505,0,__PYX_ERR(0, 505, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_style, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF_SET(__pyx_v_style, __pyx_t_2);
@@ -9028,6 +9489,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         style = style.lower()
  *         if 'javascript:' in style:
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(0, 506, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_substitute_whitespace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = NULL;
@@ -9044,7 +9506,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_1)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__4, __pyx_v_style};
+    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__7, __pyx_v_style};
     __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_2);
@@ -9052,7 +9514,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__4, __pyx_v_style};
+    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__7, __pyx_v_style};
     __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_2);
@@ -9064,9 +9526,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_s__4);
-    __Pyx_GIVEREF(__pyx_kp_s__4);
-    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_kp_s__4);
+    __Pyx_INCREF(__pyx_kp_s__7);
+    __Pyx_GIVEREF(__pyx_kp_s__7);
+    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_kp_s__7);
     __Pyx_INCREF(__pyx_v_style);
     __Pyx_GIVEREF(__pyx_v_style);
     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_style);
@@ -9085,6 +9547,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         if 'javascript:' in style:
  *             return True
  */
+  __Pyx_TraceLine(507,0,__PYX_ERR(0, 507, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_style, __pyx_n_s_lower); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
@@ -9115,6 +9578,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *             return True
  *         if 'expression(' in style:
  */
+  __Pyx_TraceLine(508,0,__PYX_ERR(0, 508, __pyx_L1_error))
   __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_javascript_2, __pyx_v_style, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 508, __pyx_L1_error)
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -9126,6 +9590,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         if 'expression(' in style:
  *             return True
  */
+    __Pyx_TraceLine(509,0,__PYX_ERR(0, 509, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -9147,6 +9612,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *             return True
  *         return False
  */
+  __Pyx_TraceLine(510,0,__PYX_ERR(0, 510, __pyx_L1_error))
   __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_expression, __pyx_v_style, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 510, __pyx_L1_error)
   __pyx_t_6 = (__pyx_t_7 != 0);
   if (__pyx_t_6) {
@@ -9158,6 +9624,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  *         return False
  * 
  */
+    __Pyx_TraceLine(511,0,__PYX_ERR(0, 511, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -9179,6 +9646,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
  * 
  *     def clean_html(self, html):
  */
+  __Pyx_TraceLine(512,0,__PYX_ERR(0, 512, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_False);
   __pyx_r = Py_False;
@@ -9203,6 +9671,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_16_has_sneaky_javascript(C
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_style);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9281,6 +9750,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
   PyTypeObject *__pyx_v_result_type = NULL;
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -9289,7 +9759,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__31)
   __Pyx_RefNannySetupContext("clean_html", 0);
+  __Pyx_TraceCall("clean_html", __pyx_f[0], 514, 0, __PYX_ERR(0, 514, __pyx_L1_error));
 
   /* "lxml/html/clean.py":515
  * 
@@ -9298,6 +9770,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  *         if isinstance(html, basestring):
  *             doc = fromstring(html)
  */
+  __Pyx_TraceLine(515,0,__PYX_ERR(0, 515, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_html)));
   __pyx_v_result_type = ((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_html)));
 
@@ -9308,6 +9781,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  *             doc = fromstring(html)
  *         else:
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(0, 516, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyObject_IsInstance(__pyx_v_html, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 516, __pyx_L1_error)
@@ -9322,6 +9796,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  *         else:
  *             doc = copy.deepcopy(html)
  */
+    __Pyx_TraceLine(517,0,__PYX_ERR(0, 517, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 517, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -9387,6 +9862,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  *         self(doc)
  *         return _transform_result(result_type, doc)
  */
+  __Pyx_TraceLine(519,0,__PYX_ERR(0, 519, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 519, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -9448,6 +9924,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  *         return _transform_result(result_type, doc)
  * 
  */
+  __Pyx_TraceLine(520,0,__PYX_ERR(0, 520, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_self);
   __pyx_t_6 = __pyx_v_self; __pyx_t_5 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -9501,6 +9978,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
  * 
  * clean = Cleaner()
  */
+  __Pyx_TraceLine(521,0,__PYX_ERR(0, 521, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_transform_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 521, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
@@ -9573,6 +10051,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
   __Pyx_XDECREF(__pyx_v_result_type);
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9587,10 +10066,12 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_7Cleaner_18clean_html(CYTHON_UNUSED
 
 static PyObject *__pyx_pf_4lxml_4html_5clean_16__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__defaults__", 0);
+  __Pyx_TraceCall("__defaults__", __pyx_f[0], 546, 0, __PYX_ERR(0, 546, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -9626,6 +10107,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_16__defaults__(CYTHON_UNUSED PyObje
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9746,6 +10228,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_v_index = NULL;
   PyObject *__pyx_v_pre_children = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -9757,7 +10240,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   PyObject *(*__pyx_t_10)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__32)
   __Pyx_RefNannySetupContext("autolink", 0);
+  __Pyx_TraceCall("autolink", __pyx_f[0], 546, 0, __PYX_ERR(0, 546, __pyx_L1_error));
 
   /* "lxml/html/clean.py":564
  *     substituted, only the contents of the element.
@@ -9766,6 +10251,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         return
  *     class_name = el.get('class')
  */
+  __Pyx_TraceLine(564,0,__PYX_ERR(0, 564, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_avoid_elements, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 564, __pyx_L1_error)
@@ -9780,6 +10266,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *     class_name = el.get('class')
  *     if class_name:
  */
+    __Pyx_TraceLine(565,0,__PYX_ERR(0, 565, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -9800,9 +10287,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *     if class_name:
  *         class_name = class_name.split()
  */
+  __Pyx_TraceLine(566,0,__PYX_ERR(0, 566, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 566, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_class_name = __pyx_t_4;
@@ -9815,6 +10303,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         class_name = class_name.split()
  *         for match_class in avoid_classes:
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(0, 567, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_class_name); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 567, __pyx_L1_error)
   if (__pyx_t_3) {
 
@@ -9825,6 +10314,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         for match_class in avoid_classes:
  *             if match_class in class_name:
  */
+    __Pyx_TraceLine(568,0,__PYX_ERR(0, 568, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_class_name, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = NULL;
@@ -9855,6 +10345,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             if match_class in class_name:
  *                 return
  */
+    __Pyx_TraceLine(569,0,__PYX_ERR(0, 569, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_avoid_classes)) || PyTuple_CheckExact(__pyx_v_avoid_classes)) {
       __pyx_t_4 = __pyx_v_avoid_classes; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
@@ -9904,6 +10395,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 return
  *     for child in list(el):
  */
+      __Pyx_TraceLine(570,0,__PYX_ERR(0, 570, __pyx_L1_error))
       __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_match_class, __pyx_v_class_name, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 570, __pyx_L1_error)
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
@@ -9915,6 +10407,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *     for child in list(el):
  *         autolink(child, link_regexes=link_regexes,
  */
+        __Pyx_TraceLine(571,0,__PYX_ERR(0, 571, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_r = Py_None; __Pyx_INCREF(Py_None);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -9936,6 +10429,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             if match_class in class_name:
  *                 return
  */
+      __Pyx_TraceLine(569,0,__PYX_ERR(0, 569, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -9955,6 +10449,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         autolink(child, link_regexes=link_regexes,
  *                  avoid_elements=avoid_elements,
  */
+  __Pyx_TraceLine(572,0,__PYX_ERR(0, 572, __pyx_L1_error))
   __pyx_t_4 = PySequence_List(__pyx_v_el); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
@@ -9977,6 +10472,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                  avoid_elements=avoid_elements,
  *                  avoid_hosts=avoid_hosts,
  */
+    __Pyx_TraceLine(573,0,__PYX_ERR(0, 573, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_autolink); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error)
@@ -9995,6 +10491,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                  avoid_hosts=avoid_hosts,
  *                  avoid_classes=avoid_classes)
  */
+    __Pyx_TraceLine(574,0,__PYX_ERR(0, 574, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_avoid_elements, __pyx_v_avoid_elements) < 0) __PYX_ERR(0, 573, __pyx_L1_error)
 
     /* "lxml/html/clean.py":575
@@ -10004,6 +10501,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                  avoid_classes=avoid_classes)
  *         if child.tail:
  */
+    __Pyx_TraceLine(575,0,__PYX_ERR(0, 575, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_avoid_hosts, __pyx_v_avoid_hosts) < 0) __PYX_ERR(0, 573, __pyx_L1_error)
 
     /* "lxml/html/clean.py":576
@@ -10013,6 +10511,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         if child.tail:
  *             text, tail_children = _link_text(
  */
+    __Pyx_TraceLine(576,0,__PYX_ERR(0, 576, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_avoid_classes, __pyx_v_avoid_classes) < 0) __PYX_ERR(0, 573, __pyx_L1_error)
 
     /* "lxml/html/clean.py":573
@@ -10022,6 +10521,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                  avoid_elements=avoid_elements,
  *                  avoid_hosts=avoid_hosts,
  */
+    __Pyx_TraceLine(573,0,__PYX_ERR(0, 573, __pyx_L1_error))
     __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 573, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10036,6 +10536,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             text, tail_children = _link_text(
  *                 child.tail, link_regexes, avoid_hosts, factory=el.makeelement)
  */
+    __Pyx_TraceLine(577,0,__PYX_ERR(0, 577, __pyx_L1_error))
     __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 577, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 577, __pyx_L1_error)
@@ -10049,6 +10550,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 child.tail, link_regexes, avoid_hosts, factory=el.makeelement)
  *             if tail_children:
  */
+      __Pyx_TraceLine(578,0,__PYX_ERR(0, 578, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_link_text); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 578, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
 
@@ -10059,6 +10561,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             if tail_children:
  *                 child.tail = text
  */
+      __Pyx_TraceLine(579,0,__PYX_ERR(0, 579, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 579, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
 
@@ -10069,6 +10572,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 child.tail, link_regexes, avoid_hosts, factory=el.makeelement)
  *             if tail_children:
  */
+      __Pyx_TraceLine(578,0,__PYX_ERR(0, 578, __pyx_L1_error))
       __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 578, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_8);
@@ -10088,6 +10592,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             if tail_children:
  *                 child.tail = text
  */
+      __Pyx_TraceLine(579,0,__PYX_ERR(0, 579, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 579, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_makeelement); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error)
@@ -10102,6 +10607,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 child.tail, link_regexes, avoid_hosts, factory=el.makeelement)
  *             if tail_children:
  */
+      __Pyx_TraceLine(578,0,__PYX_ERR(0, 578, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 578, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -10165,6 +10671,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 child.tail = text
  *                 index = el.index(child)
  */
+      __Pyx_TraceLine(580,0,__PYX_ERR(0, 580, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_tail_children); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 580, __pyx_L1_error)
       if (__pyx_t_2) {
 
@@ -10175,6 +10682,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 index = el.index(child)
  *                 el[index+1:index+1] = tail_children
  */
+        __Pyx_TraceLine(581,0,__PYX_ERR(0, 581, __pyx_L1_error))
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_child, __pyx_n_s_tail, __pyx_v_text) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
 
         /* "lxml/html/clean.py":582
@@ -10184,6 +10692,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *                 el[index+1:index+1] = tail_children
  *     if el.text:
  */
+        __Pyx_TraceLine(582,0,__PYX_ERR(0, 582, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 582, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_8 = NULL;
@@ -10239,6 +10748,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *     if el.text:
  *         text, pre_children = _link_text(
  */
+        __Pyx_TraceLine(583,0,__PYX_ERR(0, 583, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_v_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 583, __pyx_L1_error)
@@ -10272,6 +10782,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         autolink(child, link_regexes=link_regexes,
  *                  avoid_elements=avoid_elements,
  */
+    __Pyx_TraceLine(572,0,__PYX_ERR(0, 572, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -10282,6 +10793,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         text, pre_children = _link_text(
  *             el.text, link_regexes, avoid_hosts, factory=el.makeelement)
  */
+  __Pyx_TraceLine(584,0,__PYX_ERR(0, 584, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 584, __pyx_L1_error)
@@ -10295,6 +10807,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             el.text, link_regexes, avoid_hosts, factory=el.makeelement)
  *         if pre_children:
  */
+    __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_link_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
 
@@ -10305,6 +10818,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         if pre_children:
  *             el.text = text
  */
+    __Pyx_TraceLine(586,0,__PYX_ERR(0, 586, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 586, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
 
@@ -10315,6 +10829,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             el.text, link_regexes, avoid_hosts, factory=el.makeelement)
  *         if pre_children:
  */
+    __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -10334,6 +10849,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *         if pre_children:
  *             el.text = text
  */
+    __Pyx_TraceLine(586,0,__PYX_ERR(0, 586, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 586, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_makeelement); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 586, __pyx_L1_error)
@@ -10348,6 +10864,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             el.text, link_regexes, avoid_hosts, factory=el.makeelement)
  *         if pre_children:
  */
+    __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
     __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 585, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -10411,6 +10928,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             el.text = text
  *             el[:0] = pre_children
  */
+    __Pyx_TraceLine(587,0,__PYX_ERR(0, 587, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_pre_children); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 587, __pyx_L1_error)
     if (__pyx_t_2) {
 
@@ -10421,6 +10939,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  *             el[:0] = pre_children
  * 
  */
+      __Pyx_TraceLine(588,0,__PYX_ERR(0, 588, __pyx_L1_error))
       if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_text, __pyx_v_text) < 0) __PYX_ERR(0, 588, __pyx_L1_error)
 
       /* "lxml/html/clean.py":589
@@ -10430,7 +10949,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
  * 
  * def _link_text(text, link_regexes, avoid_hosts, factory):
  */
-      if (__Pyx_PyObject_SetSlice(__pyx_v_el, __pyx_v_pre_children, 0, 0, NULL, NULL, &__pyx_slice__22, 0, 1, 1) < 0) __PYX_ERR(0, 589, __pyx_L1_error)
+      __Pyx_TraceLine(589,0,__PYX_ERR(0, 589, __pyx_L1_error))
+      if (__Pyx_PyObject_SetSlice(__pyx_v_el, __pyx_v_pre_children, 0, 0, NULL, NULL, &__pyx_slice__34, 0, 1, 1) < 0) __PYX_ERR(0, 589, __pyx_L1_error)
 
       /* "lxml/html/clean.py":587
  *         text, pre_children = _link_text(
@@ -10478,6 +10998,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_2autolink(CYTHON_UNUSED PyObject *_
   __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XDECREF(__pyx_v_pre_children);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10591,6 +11112,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
   PyObject *__pyx_v_anchor = NULL;
   PyObject *__pyx_v_body = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -10607,7 +11129,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
   int __pyx_t_13;
   int __pyx_t_14;
   int __pyx_t_15;
+  __Pyx_TraceFrameInit(__pyx_codeobj__35)
   __Pyx_RefNannySetupContext("_link_text", 0);
+  __Pyx_TraceCall("_link_text", __pyx_f[0], 591, 0, __PYX_ERR(0, 591, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
 
   /* "lxml/html/clean.py":592
@@ -10617,8 +11141,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *     links = []
  *     last_pos = 0
  */
-  __Pyx_INCREF(__pyx_kp_s__4);
-  __pyx_v_leading_text = __pyx_kp_s__4;
+  __Pyx_TraceLine(592,0,__PYX_ERR(0, 592, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_kp_s__7);
+  __pyx_v_leading_text = __pyx_kp_s__7;
 
   /* "lxml/html/clean.py":593
  * def _link_text(text, link_regexes, avoid_hosts, factory):
@@ -10627,6 +11152,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *     last_pos = 0
  *     while 1:
  */
+  __Pyx_TraceLine(593,0,__PYX_ERR(0, 593, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_links = ((PyObject*)__pyx_t_1);
@@ -10639,6 +11165,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *     while 1:
  *         best_match, best_pos = None, None
  */
+  __Pyx_TraceLine(594,0,__PYX_ERR(0, 594, __pyx_L1_error))
   __pyx_v_last_pos = 0;
 
   /* "lxml/html/clean.py":595
@@ -10648,6 +11175,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         best_match, best_pos = None, None
  *         for regex in link_regexes:
  */
+  __Pyx_TraceLine(595,0,__PYX_ERR(0, 595, __pyx_L1_error))
   while (1) {
 
     /* "lxml/html/clean.py":596
@@ -10657,6 +11185,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         for regex in link_regexes:
  *             regex_pos = last_pos
  */
+    __Pyx_TraceLine(596,0,__PYX_ERR(0, 596, __pyx_L1_error))
     __pyx_t_1 = Py_None;
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_2 = Py_None;
@@ -10673,6 +11202,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             regex_pos = last_pos
  *             while 1:
  */
+    __Pyx_TraceLine(597,0,__PYX_ERR(0, 597, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_link_regexes)) || PyTuple_CheckExact(__pyx_v_link_regexes)) {
       __pyx_t_2 = __pyx_v_link_regexes; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
       __pyx_t_4 = NULL;
@@ -10722,6 +11252,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             while 1:
  *                 match = regex.search(text, pos=regex_pos)
  */
+      __Pyx_TraceLine(598,0,__PYX_ERR(0, 598, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_last_pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_regex_pos, __pyx_t_1);
@@ -10734,6 +11265,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 match = regex.search(text, pos=regex_pos)
  *                 if match is None:
  */
+      __Pyx_TraceLine(599,0,__PYX_ERR(0, 599, __pyx_L1_error))
       while (1) {
 
         /* "lxml/html/clean.py":600
@@ -10743,6 +11275,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 if match is None:
  *                     break
  */
+        __Pyx_TraceLine(600,0,__PYX_ERR(0, 600, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_regex, __pyx_n_s_search); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 600, __pyx_L1_error)
@@ -10768,6 +11301,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                     break
  *                 host = match.group('host')
  */
+        __Pyx_TraceLine(601,0,__PYX_ERR(0, 601, __pyx_L1_error))
         __pyx_t_8 = (__pyx_v_match == Py_None);
         __pyx_t_9 = (__pyx_t_8 != 0);
         if (__pyx_t_9) {
@@ -10779,6 +11313,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 host = match.group('host')
  *                 for host_regex in avoid_hosts:
  */
+          __Pyx_TraceLine(602,0,__PYX_ERR(0, 602, __pyx_L1_error))
           goto __pyx_L8_break;
 
           /* "lxml/html/clean.py":601
@@ -10797,9 +11332,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 for host_regex in avoid_hosts:
  *                     if host_regex.search(host):
  */
+        __Pyx_TraceLine(603,0,__PYX_ERR(0, 603, __pyx_L1_error))
         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 603, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_host, __pyx_t_6);
@@ -10812,6 +11348,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                     if host_regex.search(host):
  *                         regex_pos = match.end()
  */
+        __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
         if (likely(PyList_CheckExact(__pyx_v_avoid_hosts)) || PyTuple_CheckExact(__pyx_v_avoid_hosts)) {
           __pyx_t_6 = __pyx_v_avoid_hosts; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
           __pyx_t_11 = NULL;
@@ -10861,6 +11398,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                         regex_pos = match.end()
  *                         break
  */
+          __Pyx_TraceLine(605,0,__PYX_ERR(0, 605, __pyx_L1_error))
           __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_host_regex, __pyx_n_s_search); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 605, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           __pyx_t_1 = NULL;
@@ -10917,6 +11455,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                         break
  *                 else:
  */
+            __Pyx_TraceLine(606,0,__PYX_ERR(0, 606, __pyx_L1_error))
             __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_end); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 606, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             __pyx_t_12 = NULL;
@@ -10947,6 +11486,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 else:
  *                     break
  */
+            __Pyx_TraceLine(607,0,__PYX_ERR(0, 607, __pyx_L1_error))
             goto __pyx_L11_break;
 
             /* "lxml/html/clean.py":605
@@ -10965,6 +11505,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                     if host_regex.search(host):
  *                         regex_pos = match.end()
  */
+          __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
         }
         /*else*/ {
 
@@ -10975,6 +11516,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             if match is None:
  *                 continue
  */
+          __Pyx_TraceLine(609,0,__PYX_ERR(0, 609, __pyx_L1_error))
           goto __pyx_L8_break;
         }
 
@@ -10985,6 +11527,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                     if host_regex.search(host):
  *                         regex_pos = match.end()
  */
+        __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
         __pyx_L11_break:;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -10997,6 +11540,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 continue
  *             if best_pos is None or match.start() < best_pos:
  */
+      __Pyx_TraceLine(610,0,__PYX_ERR(0, 610, __pyx_L1_error))
       if (unlikely(!__pyx_v_match)) { __Pyx_RaiseUnboundLocalError("match"); __PYX_ERR(0, 610, __pyx_L1_error) }
       __pyx_t_9 = (__pyx_v_match == Py_None);
       __pyx_t_8 = (__pyx_t_9 != 0);
@@ -11009,6 +11553,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             if best_pos is None or match.start() < best_pos:
  *                 best_match = match
  */
+        __Pyx_TraceLine(611,0,__PYX_ERR(0, 611, __pyx_L1_error))
         goto __pyx_L5_continue;
 
         /* "lxml/html/clean.py":610
@@ -11027,6 +11572,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 best_match = match
  *                 best_pos = match.start()
  */
+      __Pyx_TraceLine(612,0,__PYX_ERR(0, 612, __pyx_L1_error))
       __pyx_t_9 = (__pyx_v_best_pos == Py_None);
       __pyx_t_13 = (__pyx_t_9 != 0);
       if (!__pyx_t_13) {
@@ -11070,6 +11616,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 best_pos = match.start()
  *         if best_match is None:
  */
+        __Pyx_TraceLine(613,0,__PYX_ERR(0, 613, __pyx_L1_error))
         if (unlikely(!__pyx_v_match)) { __Pyx_RaiseUnboundLocalError("match"); __PYX_ERR(0, 613, __pyx_L1_error) }
         __Pyx_INCREF(__pyx_v_match);
         __Pyx_DECREF_SET(__pyx_v_best_match, __pyx_v_match);
@@ -11081,6 +11628,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         if best_match is None:
  *             # No more matches
  */
+        __Pyx_TraceLine(614,0,__PYX_ERR(0, 614, __pyx_L1_error))
         if (unlikely(!__pyx_v_match)) { __Pyx_RaiseUnboundLocalError("match"); __PYX_ERR(0, 614, __pyx_L1_error) }
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
@@ -11121,6 +11669,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             regex_pos = last_pos
  *             while 1:
  */
+      __Pyx_TraceLine(597,0,__PYX_ERR(0, 597, __pyx_L1_error))
       __pyx_L5_continue:;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11132,6 +11681,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             # No more matches
  *             if links:
  */
+    __Pyx_TraceLine(615,0,__PYX_ERR(0, 615, __pyx_L1_error))
     __pyx_t_8 = (__pyx_v_best_match == Py_None);
     __pyx_t_13 = (__pyx_t_8 != 0);
     if (__pyx_t_13) {
@@ -11143,6 +11693,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 assert not links[-1].tail
  *                 links[-1].tail = text
  */
+      __Pyx_TraceLine(617,0,__PYX_ERR(0, 617, __pyx_L1_error))
       __pyx_t_13 = (PyList_GET_SIZE(__pyx_v_links) != 0);
       if (__pyx_t_13) {
 
@@ -11153,6 +11704,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 links[-1].tail = text
  *             else:
  */
+        __Pyx_TraceLine(618,0,__PYX_ERR(0, 618, __pyx_L1_error))
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
           __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_links, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error)
@@ -11176,6 +11728,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             else:
  *                 assert not leading_text
  */
+        __Pyx_TraceLine(619,0,__PYX_ERR(0, 619, __pyx_L1_error))
         __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_links, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 619, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_tail, __pyx_v_text) < 0) __PYX_ERR(0, 619, __pyx_L1_error)
@@ -11198,6 +11751,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *                 leading_text = text
  *             break
  */
+      __Pyx_TraceLine(621,0,__PYX_ERR(0, 621, __pyx_L1_error))
       /*else*/ {
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
@@ -11216,6 +11770,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             break
  *         link = best_match.group(0)
  */
+        __Pyx_TraceLine(622,0,__PYX_ERR(0, 622, __pyx_L1_error))
         __Pyx_INCREF(__pyx_v_text);
         __Pyx_DECREF_SET(__pyx_v_leading_text, __pyx_v_text);
       }
@@ -11228,6 +11783,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         link = best_match.group(0)
  *         end = best_match.end()
  */
+      __Pyx_TraceLine(623,0,__PYX_ERR(0, 623, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/clean.py":615
@@ -11246,9 +11802,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         end = best_match.end()
  *         if link.endswith('.') or link.endswith(','):
  */
+    __Pyx_TraceLine(624,0,__PYX_ERR(0, 624, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_best_match, __pyx_n_s_group); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 624, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF_SET(__pyx_v_link, __pyx_t_2);
@@ -11261,6 +11818,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         if link.endswith('.') or link.endswith(','):
  *             # These punctuation marks shouldn't end a link
  */
+    __Pyx_TraceLine(625,0,__PYX_ERR(0, 625, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_best_match, __pyx_n_s_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 625, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -11291,9 +11849,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             # These punctuation marks shouldn't end a link
  *             end -= 1
  */
+    __Pyx_TraceLine(626,0,__PYX_ERR(0, 626, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_link, __pyx_n_s_endswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 626, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 626, __pyx_L1_error)
@@ -11305,7 +11864,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
     }
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_link, __pyx_n_s_endswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 626, __pyx_L1_error)
@@ -11321,6 +11880,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             link = link[:-1]
  *         prev_text = text[:best_match.start()]
  */
+      __Pyx_TraceLine(628,0,__PYX_ERR(0, 628, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_end, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_end, __pyx_t_2);
@@ -11333,7 +11893,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         prev_text = text[:best_match.start()]
  *         if links:
  */
-      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_link, 0, -1L, NULL, NULL, &__pyx_slice__29, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
+      __Pyx_TraceLine(629,0,__PYX_ERR(0, 629, __pyx_L1_error))
+      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_link, 0, -1L, NULL, NULL, &__pyx_slice__42, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_link, __pyx_t_2);
       __pyx_t_2 = 0;
@@ -11354,6 +11915,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         if links:
  *             assert not links[-1].tail
  */
+    __Pyx_TraceLine(630,0,__PYX_ERR(0, 630, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_best_match, __pyx_n_s_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 630, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -11387,6 +11949,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             assert not links[-1].tail
  *             links[-1].tail = prev_text
  */
+    __Pyx_TraceLine(631,0,__PYX_ERR(0, 631, __pyx_L1_error))
     __pyx_t_13 = (PyList_GET_SIZE(__pyx_v_links) != 0);
     if (__pyx_t_13) {
 
@@ -11397,6 +11960,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             links[-1].tail = prev_text
  *         else:
  */
+      __Pyx_TraceLine(632,0,__PYX_ERR(0, 632, __pyx_L1_error))
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
         __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_links, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 632, __pyx_L1_error)
@@ -11420,6 +11984,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         else:
  *             assert not leading_text
  */
+      __Pyx_TraceLine(633,0,__PYX_ERR(0, 633, __pyx_L1_error))
       __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_links, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_tail, __pyx_v_prev_text) < 0) __PYX_ERR(0, 633, __pyx_L1_error)
@@ -11442,6 +12007,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             leading_text = prev_text
  *         anchor = factory('a')
  */
+    __Pyx_TraceLine(635,0,__PYX_ERR(0, 635, __pyx_L1_error))
     /*else*/ {
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
@@ -11460,6 +12026,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         anchor = factory('a')
  *         anchor.set('href', link)
  */
+      __Pyx_TraceLine(636,0,__PYX_ERR(0, 636, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_prev_text);
       __Pyx_DECREF_SET(__pyx_v_leading_text, __pyx_v_prev_text);
     }
@@ -11472,7 +12039,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         anchor.set('href', link)
  *         body = best_match.group('body')
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_factory, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
+    __Pyx_TraceLine(637,0,__PYX_ERR(0, 637, __pyx_L1_error))
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_factory, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_anchor, __pyx_t_2);
     __pyx_t_2 = 0;
@@ -11484,6 +12052,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         body = best_match.group('body')
  *         if not body:
  */
+    __Pyx_TraceLine(638,0,__PYX_ERR(0, 638, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_anchor, __pyx_n_s_set); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -11540,9 +12109,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         if not body:
  *             body = link
  */
+    __Pyx_TraceLine(639,0,__PYX_ERR(0, 639, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_best_match, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 639, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_body, __pyx_t_7);
@@ -11555,6 +12125,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             body = link
  *         if body.endswith('.') or body.endswith(','):
  */
+    __Pyx_TraceLine(640,0,__PYX_ERR(0, 640, __pyx_L1_error))
     __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_body); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 640, __pyx_L1_error)
     __pyx_t_8 = ((!__pyx_t_13) != 0);
     if (__pyx_t_8) {
@@ -11566,6 +12137,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         if body.endswith('.') or body.endswith(','):
  *             body = body[:-1]
  */
+      __Pyx_TraceLine(641,0,__PYX_ERR(0, 641, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_link);
       __Pyx_DECREF_SET(__pyx_v_body, __pyx_v_link);
 
@@ -11585,9 +12157,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *             body = body[:-1]
  *         anchor.text = body
  */
+    __Pyx_TraceLine(642,0,__PYX_ERR(0, 642, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_body, __pyx_n_s_endswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 642, __pyx_L1_error)
@@ -11599,7 +12172,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
     }
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_body, __pyx_n_s_endswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 642, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 642, __pyx_L1_error)
@@ -11615,7 +12188,8 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         anchor.text = body
  *         links.append(anchor)
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_body, 0, -1L, NULL, NULL, &__pyx_slice__34, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 643, __pyx_L1_error)
+      __Pyx_TraceLine(643,0,__PYX_ERR(0, 643, __pyx_L1_error))
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_body, 0, -1L, NULL, NULL, &__pyx_slice__47, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 643, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_body, __pyx_t_7);
       __pyx_t_7 = 0;
@@ -11636,6 +12210,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         links.append(anchor)
  *         text = text[end:]
  */
+    __Pyx_TraceLine(644,0,__PYX_ERR(0, 644, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_anchor, __pyx_n_s_text, __pyx_v_body) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
 
     /* "lxml/html/clean.py":645
@@ -11645,6 +12220,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *         text = text[end:]
  *     return leading_text, links
  */
+    __Pyx_TraceLine(645,0,__PYX_ERR(0, 645, __pyx_L1_error))
     __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_links, __pyx_v_anchor); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 645, __pyx_L1_error)
 
     /* "lxml/html/clean.py":646
@@ -11654,6 +12230,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  *     return leading_text, links
  * 
  */
+    __Pyx_TraceLine(646,0,__PYX_ERR(0, 646, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_text, 0, 0, &__pyx_v_end, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 646, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_7);
@@ -11668,6 +12245,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
  * 
  * def autolink_html(html, *args, **kw):
  */
+  __Pyx_TraceLine(647,0,__PYX_ERR(0, 647, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 647, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
@@ -11716,6 +12294,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_4_link_text(CYTHON_UNUSED PyObject
   __Pyx_XDECREF(__pyx_v_body);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11803,6 +12382,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
   PyTypeObject *__pyx_v_result_type = NULL;
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -11811,7 +12391,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__48)
   __Pyx_RefNannySetupContext("autolink_html", 0);
+  __Pyx_TraceCall("autolink_html", __pyx_f[0], 649, 0, __PYX_ERR(0, 649, __pyx_L1_error));
 
   /* "lxml/html/clean.py":650
  * 
@@ -11820,6 +12402,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  *     if isinstance(html, basestring):
  *         doc = fromstring(html)
  */
+  __Pyx_TraceLine(650,0,__PYX_ERR(0, 650, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_html)));
   __pyx_v_result_type = ((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_html)));
 
@@ -11830,6 +12413,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  *         doc = fromstring(html)
  *     else:
  */
+  __Pyx_TraceLine(651,0,__PYX_ERR(0, 651, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyObject_IsInstance(__pyx_v_html, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 651, __pyx_L1_error)
@@ -11844,6 +12428,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  *     else:
  *         doc = copy.deepcopy(html)
  */
+    __Pyx_TraceLine(652,0,__PYX_ERR(0, 652, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -11909,6 +12494,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  *     autolink(doc, *args, **kw)
  *     return _transform_result(result_type, doc)
  */
+  __Pyx_TraceLine(654,0,__PYX_ERR(0, 654, __pyx_L1_error))
   /*else*/ {
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -11970,6 +12556,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  *     return _transform_result(result_type, doc)
  * 
  */
+  __Pyx_TraceLine(655,0,__PYX_ERR(0, 655, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_autolink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 655, __pyx_L1_error)
@@ -11993,6 +12580,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
  * 
  * autolink_html.__doc__ = autolink.__doc__
  */
+  __Pyx_TraceLine(656,0,__PYX_ERR(0, 656, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_transform_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 656, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -12065,6 +12653,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
   __Pyx_XDECREF(__pyx_v_result_type);
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12079,10 +12668,12 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_6autolink_html(CYTHON_UNUSED PyObje
 
 static PyObject *__pyx_pf_4lxml_4html_5clean_18__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__defaults__", 0);
+  __Pyx_TraceCall("__defaults__", __pyx_f[0], 667, 0, __PYX_ERR(0, 667, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12118,6 +12709,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_18__defaults__(CYTHON_UNUSED PyObje
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12235,6 +12827,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
   PyObject *__pyx_v_avoid = NULL;
   PyObject *__pyx_v_child = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -12247,7 +12840,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
   int __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
   PyObject *__pyx_t_11 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__49)
   __Pyx_RefNannySetupContext("word_break", 0);
+  __Pyx_TraceCall("word_break", __pyx_f[0], 667, 0, __PYX_ERR(0, 667, __pyx_L1_error));
 
   /* "lxml/html/clean.py":686
  *     # Character suggestion of &#8203 comes from:
@@ -12256,6 +12851,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         return
  *     class_name = el.get('class')
  */
+  __Pyx_TraceLine(686,0,__PYX_ERR(0, 686, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_word_break_elements); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
@@ -12273,6 +12869,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *     class_name = el.get('class')
  *     if class_name:
  */
+    __Pyx_TraceLine(687,0,__PYX_ERR(0, 687, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -12293,9 +12890,10 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *     if class_name:
  *         dont_break = False
  */
+  __Pyx_TraceLine(688,0,__PYX_ERR(0, 688, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_class_name = __pyx_t_1;
@@ -12308,6 +12906,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         dont_break = False
  *         class_name = class_name.split()
  */
+  __Pyx_TraceLine(689,0,__PYX_ERR(0, 689, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_class_name); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 689, __pyx_L1_error)
   if (__pyx_t_4) {
 
@@ -12318,6 +12917,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         class_name = class_name.split()
  *         for avoid in avoid_classes:
  */
+    __Pyx_TraceLine(690,0,__PYX_ERR(0, 690, __pyx_L1_error))
     __pyx_v_dont_break = 0;
 
     /* "lxml/html/clean.py":691
@@ -12327,6 +12927,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         for avoid in avoid_classes:
  *             if avoid in class_name:
  */
+    __Pyx_TraceLine(691,0,__PYX_ERR(0, 691, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_class_name, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 691, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = NULL;
@@ -12357,6 +12958,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *             if avoid in class_name:
  *                 dont_break = True
  */
+    __Pyx_TraceLine(692,0,__PYX_ERR(0, 692, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_avoid_classes)) || PyTuple_CheckExact(__pyx_v_avoid_classes)) {
       __pyx_t_1 = __pyx_v_avoid_classes; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
@@ -12406,6 +13008,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                 dont_break = True
  *                 break
  */
+      __Pyx_TraceLine(693,0,__PYX_ERR(0, 693, __pyx_L1_error))
       __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_avoid, __pyx_v_class_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 693, __pyx_L1_error)
       __pyx_t_3 = (__pyx_t_4 != 0);
       if (__pyx_t_3) {
@@ -12417,6 +13020,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                 break
  *         if dont_break:
  */
+        __Pyx_TraceLine(694,0,__PYX_ERR(0, 694, __pyx_L1_error))
         __pyx_v_dont_break = 1;
 
         /* "lxml/html/clean.py":695
@@ -12426,6 +13030,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         if dont_break:
  *             return
  */
+        __Pyx_TraceLine(695,0,__PYX_ERR(0, 695, __pyx_L1_error))
         goto __pyx_L6_break;
 
         /* "lxml/html/clean.py":693
@@ -12444,6 +13049,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *             if avoid in class_name:
  *                 dont_break = True
  */
+      __Pyx_TraceLine(692,0,__PYX_ERR(0, 692, __pyx_L1_error))
     }
     __pyx_L6_break:;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12455,6 +13061,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *             return
  *     if el.text:
  */
+    __Pyx_TraceLine(696,0,__PYX_ERR(0, 696, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_dont_break != 0);
     if (__pyx_t_3) {
 
@@ -12465,6 +13072,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *     if el.text:
  *         el.text = _break_text(el.text, max_width, break_character)
  */
+      __Pyx_TraceLine(697,0,__PYX_ERR(0, 697, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
@@ -12494,6 +13102,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         el.text = _break_text(el.text, max_width, break_character)
  *     for child in el:
  */
+  __Pyx_TraceLine(698,0,__PYX_ERR(0, 698, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 698, __pyx_L1_error)
@@ -12507,6 +13116,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *     for child in el:
  *         word_break(child, max_width=max_width,
  */
+    __Pyx_TraceLine(699,0,__PYX_ERR(0, 699, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_break_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 699, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 699, __pyx_L1_error)
@@ -12580,6 +13190,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         word_break(child, max_width=max_width,
  *                    avoid_elements=avoid_elements,
  */
+  __Pyx_TraceLine(700,0,__PYX_ERR(0, 700, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_el)) || PyTuple_CheckExact(__pyx_v_el)) {
     __pyx_t_1 = __pyx_v_el; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
@@ -12629,6 +13240,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                    avoid_elements=avoid_elements,
  *                    avoid_classes=avoid_classes,
  */
+    __Pyx_TraceLine(701,0,__PYX_ERR(0, 701, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_word_break); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 701, __pyx_L1_error)
@@ -12647,6 +13259,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                    avoid_classes=avoid_classes,
  *                    break_character=break_character)
  */
+    __Pyx_TraceLine(702,0,__PYX_ERR(0, 702, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_avoid_elements, __pyx_v_avoid_elements) < 0) __PYX_ERR(0, 701, __pyx_L1_error)
 
     /* "lxml/html/clean.py":703
@@ -12656,6 +13269,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                    break_character=break_character)
  *         if child.tail:
  */
+    __Pyx_TraceLine(703,0,__PYX_ERR(0, 703, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_avoid_classes, __pyx_v_avoid_classes) < 0) __PYX_ERR(0, 701, __pyx_L1_error)
 
     /* "lxml/html/clean.py":704
@@ -12665,6 +13279,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         if child.tail:
  *             child.tail = _break_text(child.tail, max_width, break_character)
  */
+    __Pyx_TraceLine(704,0,__PYX_ERR(0, 704, __pyx_L1_error))
     if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_break_character, __pyx_v_break_character) < 0) __PYX_ERR(0, 701, __pyx_L1_error)
 
     /* "lxml/html/clean.py":701
@@ -12674,6 +13289,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *                    avoid_elements=avoid_elements,
  *                    avoid_classes=avoid_classes,
  */
+    __Pyx_TraceLine(701,0,__PYX_ERR(0, 701, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -12688,6 +13304,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *             child.tail = _break_text(child.tail, max_width, break_character)
  * 
  */
+    __Pyx_TraceLine(705,0,__PYX_ERR(0, 705, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 705, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 705, __pyx_L1_error)
@@ -12701,6 +13318,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  * 
  * def word_break_html(html, *args, **kw):
  */
+      __Pyx_TraceLine(706,0,__PYX_ERR(0, 706, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_break_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 706, __pyx_L1_error)
@@ -12774,6 +13392,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
  *         word_break(child, max_width=max_width,
  *                    avoid_elements=avoid_elements,
  */
+    __Pyx_TraceLine(700,0,__PYX_ERR(0, 700, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -12802,6 +13421,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_8word_break(CYTHON_UNUSED PyObject
   __Pyx_XDECREF(__pyx_v_avoid);
   __Pyx_XDECREF(__pyx_v_child);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12889,13 +13509,16 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
   PyTypeObject *__pyx_v_result_type = NULL;
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__51)
   __Pyx_RefNannySetupContext("word_break_html", 0);
+  __Pyx_TraceCall("word_break_html", __pyx_f[0], 708, 0, __PYX_ERR(0, 708, __pyx_L1_error));
 
   /* "lxml/html/clean.py":709
  * 
@@ -12904,6 +13527,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
  *     doc = fromstring(html)
  *     word_break(doc, *args, **kw)
  */
+  __Pyx_TraceLine(709,0,__PYX_ERR(0, 709, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_html)));
   __pyx_v_result_type = ((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_html)));
 
@@ -12914,6 +13538,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
  *     word_break(doc, *args, **kw)
  *     return _transform_result(result_type, doc)
  */
+  __Pyx_TraceLine(710,0,__PYX_ERR(0, 710, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 710, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -12969,6 +13594,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
  *     return _transform_result(result_type, doc)
  * 
  */
+  __Pyx_TraceLine(711,0,__PYX_ERR(0, 711, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_word_break); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 711, __pyx_L1_error)
@@ -12992,6 +13618,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
  * 
  * def _break_text(text, max_width, break_character):
  */
+  __Pyx_TraceLine(712,0,__PYX_ERR(0, 712, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_transform_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -13064,6 +13691,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_10word_break_html(CYTHON_UNUSED PyO
   __Pyx_XDECREF(__pyx_v_result_type);
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13154,6 +13782,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_word = NULL;
   PyObject *__pyx_v_replacement = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -13165,7 +13794,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_8 = NULL;
   int __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__52)
   __Pyx_RefNannySetupContext("_break_text", 0);
+  __Pyx_TraceCall("_break_text", __pyx_f[0], 714, 0, __PYX_ERR(0, 714, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
 
   /* "lxml/html/clean.py":715
@@ -13175,6 +13806,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *     for word in words:
  *         if len(word) > max_width:
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(0, 715, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 715, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -13205,6 +13837,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *         if len(word) > max_width:
  *             replacement = _insert_break(word, max_width, break_character)
  */
+  __Pyx_TraceLine(716,0,__PYX_ERR(0, 716, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_words)) || PyTuple_CheckExact(__pyx_v_words)) {
     __pyx_t_1 = __pyx_v_words; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
@@ -13254,6 +13887,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *             replacement = _insert_break(word, max_width, break_character)
  *             text = text.replace(word, replacement)
  */
+    __Pyx_TraceLine(717,0,__PYX_ERR(0, 717, __pyx_L1_error))
     __pyx_t_6 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 717, __pyx_L1_error)
     __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 717, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -13270,6 +13904,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *             text = text.replace(word, replacement)
  *     return text
  */
+      __Pyx_TraceLine(718,0,__PYX_ERR(0, 718, __pyx_L1_error))
       __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_insert_break); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 718, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_8 = NULL;
@@ -13330,6 +13965,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *     return text
  * 
  */
+      __Pyx_TraceLine(719,0,__PYX_ERR(0, 719, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_replace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_10 = NULL;
@@ -13396,6 +14032,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  *         if len(word) > max_width:
  *             replacement = _insert_break(word, max_width, break_character)
  */
+    __Pyx_TraceLine(716,0,__PYX_ERR(0, 716, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -13406,6 +14043,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
  * 
  * _break_prefer_re = re.compile(r'[^a-z]', re.I)
  */
+  __Pyx_TraceLine(720,0,__PYX_ERR(0, 720, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_text);
   __pyx_r = __pyx_v_text;
@@ -13434,6 +14072,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_12_break_text(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_replacement);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13526,6 +14165,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
   PyObject *__pyx_v_breaks = NULL;
   PyObject *__pyx_v_last_break = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -13533,7 +14173,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
   int __pyx_t_4;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__53)
   __Pyx_RefNannySetupContext("_insert_break", 0);
+  __Pyx_TraceCall("_insert_break", __pyx_f[0], 724, 0, __PYX_ERR(0, 724, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_word);
 
   /* "lxml/html/clean.py":725
@@ -13543,6 +14185,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *     result = ''
  *     while len(word) > width:
  */
+  __Pyx_TraceLine(725,0,__PYX_ERR(0, 725, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_word);
   __pyx_v_orig_word = __pyx_v_word;
 
@@ -13553,8 +14196,9 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *     while len(word) > width:
  *         start = word[:width]
  */
-  __Pyx_INCREF(__pyx_kp_s__4);
-  __pyx_v_result = __pyx_kp_s__4;
+  __Pyx_TraceLine(726,0,__PYX_ERR(0, 726, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_kp_s__7);
+  __pyx_v_result = __pyx_kp_s__7;
 
   /* "lxml/html/clean.py":727
  *     orig_word = word
@@ -13563,6 +14207,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *         start = word[:width]
  *         breaks = list(_break_prefer_re.finditer(start))
  */
+  __Pyx_TraceLine(727,0,__PYX_ERR(0, 727, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 727, __pyx_L1_error)
     __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 727, __pyx_L1_error)
@@ -13580,6 +14225,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *         breaks = list(_break_prefer_re.finditer(start))
  *         if breaks:
  */
+    __Pyx_TraceLine(728,0,__PYX_ERR(0, 728, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_word, 0, 0, NULL, &__pyx_v_width, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 728, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_start, __pyx_t_3);
@@ -13592,6 +14238,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *         if breaks:
  *             last_break = breaks[-1]
  */
+    __Pyx_TraceLine(729,0,__PYX_ERR(0, 729, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_break_prefer_re); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_finditer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 729, __pyx_L1_error)
@@ -13653,6 +14300,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *             last_break = breaks[-1]
  *             # Only walk back up to 10 characters to find a nice break:
  */
+    __Pyx_TraceLine(730,0,__PYX_ERR(0, 730, __pyx_L1_error))
     __pyx_t_4 = (PyList_GET_SIZE(__pyx_v_breaks) != 0);
     if (__pyx_t_4) {
 
@@ -13663,6 +14311,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *             # Only walk back up to 10 characters to find a nice break:
  *             if last_break.end() > width-10:
  */
+      __Pyx_TraceLine(731,0,__PYX_ERR(0, 731, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_breaks, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 731, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_XDECREF_SET(__pyx_v_last_break, __pyx_t_5);
@@ -13675,6 +14324,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *                 # FIXME: should the break character be at the end of the
  *                 # chunk, or the beginning of the next chunk?
  */
+      __Pyx_TraceLine(733,0,__PYX_ERR(0, 733, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_last_break, __pyx_n_s_end); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_6 = NULL;
@@ -13711,6 +14361,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *         result += start + break_character
  *         word = word[len(start):]
  */
+        __Pyx_TraceLine(736,0,__PYX_ERR(0, 736, __pyx_L1_error))
         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_last_break, __pyx_n_s_end); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 736, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_5 = NULL;
@@ -13762,6 +14413,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *         word = word[len(start):]
  *     result += word
  */
+    __Pyx_TraceLine(737,0,__PYX_ERR(0, 737, __pyx_L1_error))
     __pyx_t_3 = PyNumber_Add(__pyx_v_start, __pyx_v_break_character); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error)
@@ -13777,6 +14429,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *     result += word
  *     return result
  */
+    __Pyx_TraceLine(738,0,__PYX_ERR(0, 738, __pyx_L1_error))
     __pyx_t_1 = PyObject_Length(__pyx_v_start); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 738, __pyx_L1_error)
     __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_word, __pyx_t_1, 0, NULL, NULL, NULL, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 738, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
@@ -13791,6 +14444,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *     return result
  * 
  */
+  __Pyx_TraceLine(739,0,__PYX_ERR(0, 739, __pyx_L1_error))
   __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_v_word); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6);
@@ -13802,6 +14456,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
  *     return result             # <<<<<<<<<<<<<<
  * 
  */
+  __Pyx_TraceLine(740,0,__PYX_ERR(0, 740, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -13831,6 +14486,7 @@ static PyObject *__pyx_pf_4lxml_4html_5clean_14_insert_break(CYTHON_UNUSED PyObj
   __Pyx_XDECREF(__pyx_v_last_break);
   __Pyx_XDECREF(__pyx_v_word);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13900,12 +14556,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_n_s_XHTML_NAMESPACE, __pyx_k_XHTML_NAMESPACE, sizeof(__pyx_k_XHTML_NAMESPACE), 0, 0, 1, 1},
   {&__pyx_n_s_XPath, __pyx_k_XPath, sizeof(__pyx_k_XPath), 0, 0, 1, 1},
-  {&__pyx_kp_s__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 0, 1, 0},
-  {&__pyx_kp_s__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 0, 1, 0},
-  {&__pyx_kp_s__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 0, 1, 0},
-  {&__pyx_kp_s__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 0, 1, 0},
-  {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
-  {&__pyx_kp_s__59, __pyx_k__59, sizeof(__pyx_k__59), 0, 0, 1, 0},
+  {&__pyx_kp_s__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 1, 0},
+  {&__pyx_kp_s__29, __pyx_k__29, sizeof(__pyx_k__29), 0, 0, 1, 0},
+  {&__pyx_kp_s__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 0, 1, 0},
+  {&__pyx_kp_s__40, __pyx_k__40, sizeof(__pyx_k__40), 0, 0, 1, 0},
+  {&__pyx_kp_s__68, __pyx_k__68, sizeof(__pyx_k__68), 0, 0, 1, 0},
+  {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
   {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
   {&__pyx_kp_s_a_z, __pyx_k_a_z, sizeof(__pyx_k_a_z), 0, 0, 1, 0},
   {&__pyx_n_s_add_nofollow, __pyx_k_add_nofollow, sizeof(__pyx_k_add_nofollow), 0, 0, 1, 1},
@@ -14174,9 +14830,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             el.tag = 'img'
  *         if not self.comments:
  */
-  __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_image); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 259, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple_);
-  __Pyx_GIVEREF(__pyx_tuple_);
+  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_image); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 259, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__4);
+  __Pyx_GIVEREF(__pyx_tuple__4);
 
   /* "lxml/html/clean.py":286
  *                     attrib = el.attrib
@@ -14185,9 +14841,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                             del attrib[aname]
  *             doc.rewrite_links(self._remove_javascript_link,
  */
-  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__2);
-  __Pyx_GIVEREF(__pyx_tuple__2);
+  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__5);
+  __Pyx_GIVEREF(__pyx_tuple__5);
 
   /* "lxml/html/clean.py":294
  *             if not self.inline_style:
@@ -14196,9 +14852,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     new = _css_javascript_re.sub('', old)
  *                     new = _css_import_re.sub('', new)
  */
-  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_style); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 294, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_GIVEREF(__pyx_tuple__3);
+  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_style); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 294, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__6);
+  __Pyx_GIVEREF(__pyx_tuple__6);
 
   /* "lxml/html/clean.py":303
  *                         el.set('style', new)
@@ -14207,9 +14863,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     if el.get('type', '').lower().strip() == 'text/javascript':
  *                         el.drop_tree()
  */
-  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_style); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 303, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__5);
-  __Pyx_GIVEREF(__pyx_tuple__5);
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_style); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 303, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__8);
+  __Pyx_GIVEREF(__pyx_tuple__8);
 
   /* "lxml/html/clean.py":304
  *             if not self.style:
@@ -14218,9 +14874,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                         el.drop_tree()
  *                         continue
  */
-  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_s_type, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
+  __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_type, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__9);
+  __Pyx_GIVEREF(__pyx_tuple__9);
 
   /* "lxml/html/clean.py":332
  *             # We must get rid of included stylesheets if Javascript is not
@@ -14229,9 +14885,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 if 'stylesheet' in el.get('rel', '').lower():
  *                     # Note this kills alternate stylesheets as well
  */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_link); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 332, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_link); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 332, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
 
   /* "lxml/html/clean.py":333
  *             # allowed, as you can put Javascript in them
@@ -14240,9 +14896,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     # Note this kills alternate stylesheets as well
  *                     if not self.allow_element(el):
  */
-  __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_rel, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 333, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__8);
-  __Pyx_GIVEREF(__pyx_tuple__8);
+  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_rel, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 333, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__11);
+  __Pyx_GIVEREF(__pyx_tuple__11);
 
   /* "lxml/html/clean.py":340
  *             kill_tags.add('meta')
@@ -14251,9 +14907,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self.embedded:
  *             # FIXME: is <layer> really embedded?
  */
-  __pyx_tuple__9 = PyTuple_Pack(3, __pyx_n_s_head, __pyx_n_s_html, __pyx_n_s_title); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 340, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
+  __pyx_tuple__12 = PyTuple_Pack(3, __pyx_n_s_head, __pyx_n_s_html, __pyx_n_s_title); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 340, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
 
   /* "lxml/html/clean.py":345
  *             # We should get rid of any <param> tags not inside <applet>;
@@ -14262,9 +14918,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 found_parent = False
  *                 parent = el.getparent()
  */
-  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_param); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 345, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_param); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 345, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
 
   /* "lxml/html/clean.py":352
  *                 if parent is None:
@@ -14273,9 +14929,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # The alternate contents that are in an iframe are a good fallback:
  *             remove_tags.update(('iframe', 'embed', 'layer', 'object', 'param'))
  */
-  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_applet); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 352, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__11);
-  __Pyx_GIVEREF(__pyx_tuple__11);
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_applet); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 352, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
 
   /* "lxml/html/clean.py":354
  *             kill_tags.update(('applet',))
@@ -14284,9 +14940,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self.frames:
  *             # FIXME: ideally we should look at the frame links, but
  */
-  __pyx_tuple__12 = PyTuple_Pack(5, __pyx_n_s_iframe, __pyx_n_s_embed, __pyx_n_s_layer, __pyx_n_s_object, __pyx_n_s_param); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 354, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_tuple__15 = PyTuple_Pack(5, __pyx_n_s_iframe, __pyx_n_s_embed, __pyx_n_s_layer, __pyx_n_s_object, __pyx_n_s_param); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
 
   /* "lxml/html/clean.py":362
  *         if self.forms:
@@ -14295,9 +14951,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if self.annoying_tags:
  *             remove_tags.update(('blink', 'marquee'))
  */
-  __pyx_tuple__13 = PyTuple_Pack(4, __pyx_n_s_button, __pyx_n_s_input, __pyx_n_s_select, __pyx_n_s_textarea); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 362, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __pyx_tuple__16 = PyTuple_Pack(4, __pyx_n_s_button, __pyx_n_s_input, __pyx_n_s_select, __pyx_n_s_textarea); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 362, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__16);
+  __Pyx_GIVEREF(__pyx_tuple__16);
 
   /* "lxml/html/clean.py":364
  *             kill_tags.update(('button', 'input', 'select', 'textarea'))
@@ -14306,9 +14962,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  *         _remove = []
  */
-  __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_s_blink, __pyx_n_s_marquee); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__14);
-  __Pyx_GIVEREF(__pyx_tuple__14);
+  __pyx_tuple__17 = PyTuple_Pack(2, __pyx_n_s_blink, __pyx_n_s_marquee); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
 
   /* "lxml/html/clean.py":400
  *         if self.remove_unknown_tags:
@@ -14317,9 +14973,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     "It does not make sense to pass in both allow_tags and remove_unknown_tags")
  *             allow_tags = set(defs.tags)
  */
-  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_It_does_not_make_sense_to_pass_i); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 400, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__15);
-  __Pyx_GIVEREF(__pyx_tuple__15);
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_It_does_not_make_sense_to_pass_i); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
 
   /* "lxml/html/clean.py":418
  *             for el in _find_external_links(doc):
@@ -14328,9 +14984,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                     if rel:
  *                         if ('nofollow' in rel
  */
-  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_rel); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 418, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__16);
-  __Pyx_GIVEREF(__pyx_tuple__16);
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_rel); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 418, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
 
   /* "lxml/html/clean.py":457
  *             return False
@@ -14339,9 +14995,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if scheme not in ('http', 'https'):
  *             return False
  */
-  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_s__17, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 457, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __pyx_tuple__24 = PyTuple_Pack(2, __pyx_kp_s__23, __pyx_int_1); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 457, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__24);
+  __Pyx_GIVEREF(__pyx_tuple__24);
 
   /* "lxml/html/clean.py":505
  *         """
@@ -14350,9 +15006,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         style = _substitute_whitespace('', style)
  *         style = style.lower()
  */
-  __pyx_tuple__20 = PyTuple_Pack(2, __pyx_kp_s__19, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 505, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__30 = PyTuple_Pack(2, __pyx_kp_s__29, __pyx_kp_s__7); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 505, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
+  __Pyx_GIVEREF(__pyx_tuple__30);
 
   /* "lxml/html/clean.py":566
  *     if el.tag in avoid_elements:
@@ -14361,9 +15017,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     if class_name:
  *         class_name = class_name.split()
  */
-  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_class); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 566, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_class); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
 
   /* "lxml/html/clean.py":589
  *         if pre_children:
@@ -14372,9 +15028,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def _link_text(text, link_regexes, avoid_hosts, factory):
  */
-  __pyx_slice__22 = PySlice_New(Py_None, __pyx_int_0, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(0, 589, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__22);
-  __Pyx_GIVEREF(__pyx_slice__22);
+  __pyx_slice__34 = PySlice_New(Py_None, __pyx_int_0, Py_None); if (unlikely(!__pyx_slice__34)) __PYX_ERR(0, 589, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__34);
+  __Pyx_GIVEREF(__pyx_slice__34);
 
   /* "lxml/html/clean.py":603
  *                 if match is None:
@@ -14383,9 +15039,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 for host_regex in avoid_hosts:
  *                     if host_regex.search(host):
  */
-  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_host); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__23);
-  __Pyx_GIVEREF(__pyx_tuple__23);
+  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_host); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__36);
+  __Pyx_GIVEREF(__pyx_tuple__36);
 
   /* "lxml/html/clean.py":624
  *                 leading_text = text
@@ -14394,9 +15050,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         end = best_match.end()
  *         if link.endswith('.') or link.endswith(','):
  */
-  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 624, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__24);
-  __Pyx_GIVEREF(__pyx_tuple__24);
+  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 624, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__37);
+  __Pyx_GIVEREF(__pyx_tuple__37);
 
   /* "lxml/html/clean.py":626
  *         link = best_match.group(0)
@@ -14405,12 +15061,12 @@ static int __Pyx_InitCachedConstants(void) {
  *             # These punctuation marks shouldn't end a link
  *             end -= 1
  */
-  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__26);
-  __Pyx_GIVEREF(__pyx_tuple__26);
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s__27); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 626, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
+  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s__38); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 626, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__39);
+  __Pyx_GIVEREF(__pyx_tuple__39);
+  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s__40); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 626, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__41);
+  __Pyx_GIVEREF(__pyx_tuple__41);
 
   /* "lxml/html/clean.py":629
  *             # These punctuation marks shouldn't end a link
@@ -14419,9 +15075,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         prev_text = text[:best_match.start()]
  *         if links:
  */
-  __pyx_slice__29 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(0, 629, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__29);
-  __Pyx_GIVEREF(__pyx_slice__29);
+  __pyx_slice__42 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__42)) __PYX_ERR(0, 629, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__42);
+  __Pyx_GIVEREF(__pyx_slice__42);
 
   /* "lxml/html/clean.py":637
  *             assert not leading_text
@@ -14430,9 +15086,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         anchor.set('href', link)
  *         body = best_match.group('body')
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_a); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 637, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_n_s_a); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__43);
+  __Pyx_GIVEREF(__pyx_tuple__43);
 
   /* "lxml/html/clean.py":639
  *         anchor = factory('a')
@@ -14441,9 +15097,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not body:
  *             body = link
  */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_body); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 639, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
+  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_n_s_body); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__44);
+  __Pyx_GIVEREF(__pyx_tuple__44);
 
   /* "lxml/html/clean.py":642
  *         if not body:
@@ -14452,12 +15108,12 @@ static int __Pyx_InitCachedConstants(void) {
  *             body = body[:-1]
  *         anchor.text = body
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s__27); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s__38); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s__40); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
 
   /* "lxml/html/clean.py":643
  *             body = link
@@ -14466,9 +15122,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         anchor.text = body
  *         links.append(anchor)
  */
-  __pyx_slice__34 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__34)) __PYX_ERR(0, 643, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__34);
-  __Pyx_GIVEREF(__pyx_slice__34);
+  __pyx_slice__47 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__47)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__47);
+  __Pyx_GIVEREF(__pyx_slice__47);
 
   /* "lxml/html/clean.py":688
  *     if el.tag in _avoid_word_break_elements:
@@ -14477,9 +15133,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     if class_name:
  *         dont_break = False
  */
-  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_class); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 688, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__35);
-  __Pyx_GIVEREF(__pyx_tuple__35);
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_n_s_class); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
 
   /* "lxml/html/clean.py":78
  *     r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
@@ -14488,10 +15144,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     if _is_image_dataurl(s):
  *         return None
  */
-  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_s_2); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 78, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__36);
-  __Pyx_GIVEREF(__pyx_tuple__36);
-  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_is_javascript_scheme, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 78, __pyx_L1_error)
+  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_s_2); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__54);
+  __Pyx_GIVEREF(__pyx_tuple__54);
+  __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_is_javascript_scheme, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 78, __pyx_L1_error)
 
   /* "lxml/html/clean.py":83
  *     return _is_possibly_malicious_scheme(s)
@@ -14500,9 +15156,9 @@ static int __Pyx_InitCachedConstants(void) {
  * # FIXME: should data: be blocked?
  * 
  */
-  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_s_x00_x08_x0B_x0C_x0E_x19); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 83, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__38);
-  __Pyx_GIVEREF(__pyx_tuple__38);
+  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_s_x00_x08_x0B_x0C_x0E_x19); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__55);
+  __Pyx_GIVEREF(__pyx_tuple__55);
 
   /* "lxml/html/clean.py":90
  *     r'\[if[\s\n\r]+.*?][\s\n\r]*>', re.I|re.S)
@@ -14511,9 +15167,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     "descendant-or-self::*[@style]")
  * 
  */
-  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_descendant_or_self_style); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 90, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__39);
-  __Pyx_GIVEREF(__pyx_tuple__39);
+  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_descendant_or_self_style); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__56);
+  __Pyx_GIVEREF(__pyx_tuple__56);
 
   /* "lxml/html/clean.py":93
  *     "descendant-or-self::*[@style]")
@@ -14522,9 +15178,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     ("descendant-or-self::a  [normalize-space(@href) and substring(normalize-space(@href),1,1) != '#'] |"
  *      "descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']"),
  */
-  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_descendant_or_self_a_normalize_s); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 93, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__40);
-  __Pyx_GIVEREF(__pyx_tuple__40);
+  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_descendant_or_self_a_normalize_s); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__57);
+  __Pyx_GIVEREF(__pyx_tuple__57);
 
   /* "lxml/html/clean.py":99
  * 
@@ -14533,9 +15189,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Instances cleans the document of each of the possible offending
  */
-  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__41);
-  __Pyx_GIVEREF(__pyx_tuple__41);
+  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__58);
+  __Pyx_GIVEREF(__pyx_tuple__58);
 
   /* "lxml/html/clean.py":217
  *     whitelist_tags = set(['iframe', 'embed'])
@@ -14544,10 +15200,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         for name, value in kw.items():
  *             if not hasattr(self, name):
  */
-  __pyx_tuple__42 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_kw, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
-  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_init, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __pyx_tuple__59 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_kw, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__59);
+  __Pyx_GIVEREF(__pyx_tuple__59);
+  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_init, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 217, __pyx_L1_error)
 
   /* "lxml/html/clean.py":248
  *         )
@@ -14556,10 +15212,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """
  *         Cleans the document.
  */
-  __pyx_tuple__44 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_el, __pyx_n_s_kill_tags, __pyx_n_s_remove_tags, __pyx_n_s_allow_tags, __pyx_n_s_safe_attrs, __pyx_n_s_attrib, __pyx_n_s_aname, __pyx_n_s_old, __pyx_n_s_new, __pyx_n_s_found_parent, __pyx_n_s_parent, __pyx_n_s_remove, __pyx_n_s_kill, __pyx_n_s_bad, __pyx_n_s_rel); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
-  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_call, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __pyx_tuple__60 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_el, __pyx_n_s_kill_tags, __pyx_n_s_remove_tags, __pyx_n_s_allow_tags, __pyx_n_s_safe_attrs, __pyx_n_s_attrib, __pyx_n_s_aname, __pyx_n_s_old, __pyx_n_s_new, __pyx_n_s_found_parent, __pyx_n_s_parent, __pyx_n_s_remove, __pyx_n_s_kill, __pyx_n_s_bad, __pyx_n_s_rel); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__60);
+  __Pyx_GIVEREF(__pyx_tuple__60);
+  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_call, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 248, __pyx_L1_error)
 
   /* "lxml/html/clean.py":428
  *                     el.set('rel', rel)
@@ -14568,10 +15224,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """
  *         Override to suppress rel="nofollow" on some anchors.
  */
-  __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_anchor); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 428, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__46);
-  __Pyx_GIVEREF(__pyx_tuple__46);
-  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_follow, 428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 428, __pyx_L1_error)
+  __pyx_tuple__61 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_anchor); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 428, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__61);
+  __Pyx_GIVEREF(__pyx_tuple__61);
+  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_follow, 428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 428, __pyx_L1_error)
 
   /* "lxml/html/clean.py":434
  *         return False
@@ -14580,10 +15236,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if el.tag not in self._tag_link_attrs:
  *             return False
  */
-  __pyx_tuple__48 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_el, __pyx_n_s_attr, __pyx_n_s_one_attr, __pyx_n_s_url); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 434, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__48);
-  __Pyx_GIVEREF(__pyx_tuple__48);
-  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_element, 434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_tuple__62 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_el, __pyx_n_s_attr, __pyx_n_s_one_attr, __pyx_n_s_url); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
+  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_element, 434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 434, __pyx_L1_error)
 
   /* "lxml/html/clean.py":452
  *             return self.allow_embedded_url(el, url)
@@ -14592,10 +15248,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         if (self.whitelist_tags is not None
  *             and el.tag not in self.whitelist_tags):
  */
-  __pyx_tuple__50 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_el, __pyx_n_s_url, __pyx_n_s_scheme, __pyx_n_s_netloc, __pyx_n_s_path, __pyx_n_s_query, __pyx_n_s_fragment); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 452, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__50);
-  __Pyx_GIVEREF(__pyx_tuple__50);
-  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_embedded_url, 452, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 452, __pyx_L1_error)
+  __pyx_tuple__63 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_el, __pyx_n_s_url, __pyx_n_s_scheme, __pyx_n_s_netloc, __pyx_n_s_path, __pyx_n_s_query, __pyx_n_s_fragment); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 452, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__63);
+  __Pyx_GIVEREF(__pyx_tuple__63);
+  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_allow_embedded_url, 452, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 452, __pyx_L1_error)
 
   /* "lxml/html/clean.py":464
  *         return False
@@ -14604,10 +15260,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """
  *         IE conditional comments basically embed HTML that the parser
  */
-  __pyx_tuple__52 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_bad); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 464, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__52);
-  __Pyx_GIVEREF(__pyx_tuple__52);
-  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_kill_conditional_comments, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 464, __pyx_L1_error)
+  __pyx_tuple__64 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_bad); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 464, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__64);
+  __Pyx_GIVEREF(__pyx_tuple__64);
+  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_kill_conditional_comments, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 464, __pyx_L1_error)
 
   /* "lxml/html/clean.py":475
  *             etree.Comment)
@@ -14616,13 +15272,13 @@ static int __Pyx_InitCachedConstants(void) {
  *         bad = []
  *         for el in doc.iter(iterate):
  */
-  __pyx_tuple__54 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_condition, __pyx_n_s_iterate, __pyx_n_s_bad, __pyx_n_s_el); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 475, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__54);
-  __Pyx_GIVEREF(__pyx_tuple__54);
-  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_kill_elements, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 475, __pyx_L1_error)
-  __pyx_tuple__56 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 475, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__56);
-  __Pyx_GIVEREF(__pyx_tuple__56);
+  __pyx_tuple__65 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_doc, __pyx_n_s_condition, __pyx_n_s_iterate, __pyx_n_s_bad, __pyx_n_s_el); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
+  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_kill_elements, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_tuple__66 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__66);
+  __Pyx_GIVEREF(__pyx_tuple__66);
 
   /* "lxml/html/clean.py":483
  *             el.drop_tree()
@@ -14631,10 +15287,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         # links like "j a v a s c r i p t:" might be interpreted in IE
  *         new = _substitute_whitespace('', link)
  */
-  __pyx_tuple__57 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_link, __pyx_n_s_new); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 483, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__57);
-  __Pyx_GIVEREF(__pyx_tuple__57);
-  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_remove_javascript_link, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 483, __pyx_L1_error)
+  __pyx_tuple__67 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_link, __pyx_n_s_new); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 483, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__67);
+  __Pyx_GIVEREF(__pyx_tuple__67);
+  __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_remove_javascript_link, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 483, __pyx_L1_error)
 
   /* "lxml/html/clean.py":493
  *     _substitute_comments = re.compile(r'/\*.*?\*[inserted by cython to avoid comment closer]/', re.S).sub
@@ -14643,10 +15299,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         """
  *         Depending on the browser, stuff like ``e x p r e s s i o n(...)``
  */
-  __pyx_tuple__60 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_style); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 493, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__60);
-  __Pyx_GIVEREF(__pyx_tuple__60);
-  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_has_sneaky_javascript, 493, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 493, __pyx_L1_error)
+  __pyx_tuple__69 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_style); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 493, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__69);
+  __Pyx_GIVEREF(__pyx_tuple__69);
+  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_has_sneaky_javascript, 493, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 493, __pyx_L1_error)
 
   /* "lxml/html/clean.py":514
  *         return False
@@ -14655,10 +15311,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         result_type = type(html)
  *         if isinstance(html, basestring):
  */
-  __pyx_tuple__62 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_html, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 514, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__62);
-  __Pyx_GIVEREF(__pyx_tuple__62);
-  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_clean_html, 514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 514, __pyx_L1_error)
+  __pyx_tuple__70 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_html, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 514, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
+  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_clean_html, 514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 514, __pyx_L1_error)
 
   /* "lxml/html/clean.py":541
  *     re.compile(r'^localhost', re.I),
@@ -14667,9 +15323,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     ]
  * 
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_127_0_0_1); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 541, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__64);
-  __Pyx_GIVEREF(__pyx_tuple__64);
+  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_127_0_0_1); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 541, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
   /* "lxml/html/clean.py":546
  * _avoid_classes = ['nolink']
@@ -14678,10 +15334,10 @@ static int __Pyx_InitCachedConstants(void) {
  *              avoid_elements=_avoid_elements,
  *              avoid_hosts=_avoid_hosts,
  */
-  __pyx_tuple__65 = PyTuple_Pack(12, __pyx_n_s_el, __pyx_n_s_link_regexes, __pyx_n_s_avoid_elements, __pyx_n_s_avoid_hosts, __pyx_n_s_avoid_classes, __pyx_n_s_class_name, __pyx_n_s_match_class, __pyx_n_s_child, __pyx_n_s_text, __pyx_n_s_tail_children, __pyx_n_s_index, __pyx_n_s_pre_children); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__65);
-  __Pyx_GIVEREF(__pyx_tuple__65);
-  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(5, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_autolink, 546, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 546, __pyx_L1_error)
+  __pyx_tuple__72 = PyTuple_Pack(12, __pyx_n_s_el, __pyx_n_s_link_regexes, __pyx_n_s_avoid_elements, __pyx_n_s_avoid_hosts, __pyx_n_s_avoid_classes, __pyx_n_s_class_name, __pyx_n_s_match_class, __pyx_n_s_child, __pyx_n_s_text, __pyx_n_s_tail_children, __pyx_n_s_index, __pyx_n_s_pre_children); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
+  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(5, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_autolink, 546, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 546, __pyx_L1_error)
 
   /* "lxml/html/clean.py":591
  *             el[:0] = pre_children
@@ -14690,10 +15346,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     leading_text = ''
  *     links = []
  */
-  __pyx_tuple__67 = PyTuple_Pack(19, __pyx_n_s_text, __pyx_n_s_link_regexes, __pyx_n_s_avoid_hosts, __pyx_n_s_factory, __pyx_n_s_leading_text, __pyx_n_s_links, __pyx_n_s_last_pos, __pyx_n_s_best_match, __pyx_n_s_best_pos, __pyx_n_s_regex, __pyx_n_s_regex_pos, __pyx_n_s_match, __pyx_n_s_host, __pyx_n_s_host_regex, __pyx_n_s_link, __pyx_n_s_end, __pyx_n_s_prev_text, __pyx_n_s_anchor, __pyx_n_s_body); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 591, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__67);
-  __Pyx_GIVEREF(__pyx_tuple__67);
-  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(4, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_link_text, 591, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_tuple__73 = PyTuple_Pack(19, __pyx_n_s_text, __pyx_n_s_link_regexes, __pyx_n_s_avoid_hosts, __pyx_n_s_factory, __pyx_n_s_leading_text, __pyx_n_s_links, __pyx_n_s_last_pos, __pyx_n_s_best_match, __pyx_n_s_best_pos, __pyx_n_s_regex, __pyx_n_s_regex_pos, __pyx_n_s_match, __pyx_n_s_host, __pyx_n_s_host_regex, __pyx_n_s_link, __pyx_n_s_end, __pyx_n_s_prev_text, __pyx_n_s_anchor, __pyx_n_s_body); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(4, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_link_text, 591, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 591, __pyx_L1_error)
 
   /* "lxml/html/clean.py":649
  *     return leading_text, links
@@ -14702,10 +15358,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     result_type = type(html)
  *     if isinstance(html, basestring):
  */
-  __pyx_tuple__69 = PyTuple_Pack(5, __pyx_n_s_html, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 649, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__69);
-  __Pyx_GIVEREF(__pyx_tuple__69);
-  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_autolink_html, 649, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_tuple__74 = PyTuple_Pack(5, __pyx_n_s_html, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_autolink_html, 649, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 649, __pyx_L1_error)
 
   /* "lxml/html/clean.py":667
  * _avoid_word_break_classes = ['nobreak']
@@ -14714,10 +15370,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                avoid_elements=_avoid_word_break_elements,
  *                avoid_classes=_avoid_word_break_classes,
  */
-  __pyx_tuple__71 = PyTuple_Pack(9, __pyx_n_s_el, __pyx_n_s_max_width, __pyx_n_s_avoid_elements, __pyx_n_s_avoid_classes, __pyx_n_s_break_character, __pyx_n_s_class_name, __pyx_n_s_dont_break, __pyx_n_s_avoid, __pyx_n_s_child); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 667, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
-  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(5, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_word_break, 667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __pyx_tuple__75 = PyTuple_Pack(9, __pyx_n_s_el, __pyx_n_s_max_width, __pyx_n_s_avoid_elements, __pyx_n_s_avoid_classes, __pyx_n_s_break_character, __pyx_n_s_class_name, __pyx_n_s_dont_break, __pyx_n_s_avoid, __pyx_n_s_child); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(5, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_word_break, 667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 667, __pyx_L1_error)
 
   /* "lxml/html/clean.py":670
  *                avoid_elements=_avoid_word_break_elements,
@@ -14726,9 +15382,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Breaks any long words found in the body of the text (not attributes).
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_int_8203); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__73);
-  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_int_8203); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
 
   /* "lxml/html/clean.py":708
  *             child.tail = _break_text(child.tail, max_width, break_character)
@@ -14737,10 +15393,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     result_type = type(html)
  *     doc = fromstring(html)
  */
-  __pyx_tuple__74 = PyTuple_Pack(5, __pyx_n_s_html, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__74);
-  __Pyx_GIVEREF(__pyx_tuple__74);
-  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_word_break_html, 708, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 708, __pyx_L1_error)
+  __pyx_tuple__77 = PyTuple_Pack(5, __pyx_n_s_html, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_result_type, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 708, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __Pyx_GIVEREF(__pyx_tuple__77);
+  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_word_break_html, 708, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 708, __pyx_L1_error)
 
   /* "lxml/html/clean.py":714
  *     return _transform_result(result_type, doc)
@@ -14749,10 +15405,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     words = text.split()
  *     for word in words:
  */
-  __pyx_tuple__76 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_max_width, __pyx_n_s_break_character, __pyx_n_s_words, __pyx_n_s_word, __pyx_n_s_replacement); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 714, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__76);
-  __Pyx_GIVEREF(__pyx_tuple__76);
-  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_break_text, 714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __pyx_tuple__78 = PyTuple_Pack(6, __pyx_n_s_text, __pyx_n_s_max_width, __pyx_n_s_break_character, __pyx_n_s_words, __pyx_n_s_word, __pyx_n_s_replacement); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__78);
+  __Pyx_GIVEREF(__pyx_tuple__78);
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_break_text, 714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 714, __pyx_L1_error)
 
   /* "lxml/html/clean.py":724
  * _break_prefer_re = re.compile(r'[^a-z]', re.I)
@@ -14761,10 +15417,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     orig_word = word
  *     result = ''
  */
-  __pyx_tuple__78 = PyTuple_Pack(8, __pyx_n_s_word, __pyx_n_s_width, __pyx_n_s_break_character, __pyx_n_s_orig_word, __pyx_n_s_result, __pyx_n_s_start, __pyx_n_s_breaks, __pyx_n_s_last_break); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 724, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__78);
-  __Pyx_GIVEREF(__pyx_tuple__78);
-  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_insert_break, 724, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 724, __pyx_L1_error)
+  __pyx_tuple__79 = PyTuple_Pack(8, __pyx_n_s_word, __pyx_n_s_width, __pyx_n_s_break_character, __pyx_n_s_orig_word, __pyx_n_s_result, __pyx_n_s_start, __pyx_n_s_breaks, __pyx_n_s_last_break); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 724, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_clean_py, __pyx_n_s_insert_break, 724, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 724, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -14868,7 +15524,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -14925,6 +15581,7 @@ static int __pyx_pymod_exec_clean(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -15033,6 +15690,7 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_clean(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/html/clean.py":7
  * """
@@ -15041,6 +15699,7 @@ if (!__Pyx_RefNanny) {
  * import copy
  * try:
  */
+  __Pyx_TraceLine(7,0,__PYX_ERR(0, 7, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_re, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_re, __pyx_t_1) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
@@ -15053,6 +15712,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     from urlparse import urlsplit
  */
+  __Pyx_TraceLine(8,0,__PYX_ERR(0, 8, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_copy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_copy, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
@@ -15065,6 +15725,7 @@ if (!__Pyx_RefNanny) {
  *     from urlparse import urlsplit
  * except ImportError:
  */
+  __Pyx_TraceLine(9,0,__PYX_ERR(0, 9, __pyx_L2_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -15081,6 +15742,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     # Python 3
  */
+      __Pyx_TraceLine(10,0,__PYX_ERR(0, 10, __pyx_L2_error))
       __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L2_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_n_s_urlsplit);
@@ -15118,6 +15780,7 @@ if (!__Pyx_RefNanny) {
  *     # Python 3
  *     from urllib.parse import urlsplit
  */
+    __Pyx_TraceLine(11,0,__PYX_ERR(0, 11, __pyx_L4_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.clean", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -15133,6 +15796,7 @@ if (!__Pyx_RefNanny) {
  * from lxml import etree
  * from lxml.html import defs
  */
+      __Pyx_TraceLine(13,0,__PYX_ERR(0, 13, __pyx_L4_except_error))
       __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 13, __pyx_L4_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_n_s_urlsplit);
@@ -15181,6 +15845,7 @@ if (!__Pyx_RefNanny) {
  * from lxml.html import defs
  * from lxml.html import fromstring, XHTML_NAMESPACE
  */
+  __Pyx_TraceLine(14,0,__PYX_ERR(0, 14, __pyx_L1_error))
   __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 14, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_n_s_etree);
@@ -15202,6 +15867,7 @@ if (!__Pyx_RefNanny) {
  * from lxml.html import fromstring, XHTML_NAMESPACE
  * from lxml.html import xhtml_to_html, _transform_result
  */
+  __Pyx_TraceLine(15,0,__PYX_ERR(0, 15, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_defs);
@@ -15223,6 +15889,7 @@ if (!__Pyx_RefNanny) {
  * from lxml.html import xhtml_to_html, _transform_result
  * 
  */
+  __Pyx_TraceLine(16,0,__PYX_ERR(0, 16, __pyx_L1_error))
   __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_n_s_fromstring);
@@ -15251,6 +15918,7 @@ if (!__Pyx_RefNanny) {
  * 
  * try:
  */
+  __Pyx_TraceLine(17,0,__PYX_ERR(0, 17, __pyx_L1_error))
   __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_xhtml_to_html);
@@ -15279,6 +15947,7 @@ if (!__Pyx_RefNanny) {
  *     unichr
  * except NameError:
  */
+  __Pyx_TraceLine(19,0,__PYX_ERR(0, 19, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -15295,6 +15964,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     # Python 3
  */
+      __Pyx_TraceLine(20,0,__PYX_ERR(0, 20, __pyx_L10_error))
       __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unichr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 20, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -15325,6 +15995,7 @@ if (!__Pyx_RefNanny) {
  *     # Python 3
  *     unichr = chr
  */
+    __Pyx_TraceLine(21,0,__PYX_ERR(0, 21, __pyx_L12_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.clean", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -15340,6 +16011,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     unicode
  */
+      __Pyx_TraceLine(23,0,__PYX_ERR(0, 23, __pyx_L12_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_unichr, __pyx_builtin_chr) < 0) __PYX_ERR(0, 23, __pyx_L12_except_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15376,6 +16048,7 @@ if (!__Pyx_RefNanny) {
  *     unicode
  * except NameError:
  */
+  __Pyx_TraceLine(24,0,__PYX_ERR(0, 24, __pyx_L18_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -15392,6 +16065,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     # Python 3
  */
+      __Pyx_TraceLine(25,0,__PYX_ERR(0, 25, __pyx_L18_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 25, __pyx_L18_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -15422,6 +16096,7 @@ if (!__Pyx_RefNanny) {
  *     # Python 3
  *     unicode = str
  */
+    __Pyx_TraceLine(26,0,__PYX_ERR(0, 26, __pyx_L20_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.clean", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -15437,6 +16112,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     bytes
  */
+      __Pyx_TraceLine(28,0,__PYX_ERR(0, 28, __pyx_L20_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 28, __pyx_L20_except_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15473,6 +16149,7 @@ if (!__Pyx_RefNanny) {
  *     bytes
  * except NameError:
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(0, 29, __pyx_L26_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -15489,6 +16166,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     # Python < 2.6
  */
+      __Pyx_TraceLine(30,0,__PYX_ERR(0, 30, __pyx_L26_error))
       __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 30, __pyx_L26_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -15519,6 +16197,7 @@ if (!__Pyx_RefNanny) {
  *     # Python < 2.6
  *     bytes = str
  */
+    __Pyx_TraceLine(31,0,__PYX_ERR(0, 31, __pyx_L28_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.clean", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -15534,6 +16213,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     basestring
  */
+      __Pyx_TraceLine(33,0,__PYX_ERR(0, 33, __pyx_L28_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_bytes, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 33, __pyx_L28_except_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15570,6 +16250,7 @@ if (!__Pyx_RefNanny) {
  *     basestring
  * except NameError:
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(0, 34, __pyx_L34_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -15586,6 +16267,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     basestring = (str, bytes)
  */
+      __Pyx_TraceLine(35,0,__PYX_ERR(0, 35, __pyx_L34_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 35, __pyx_L34_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -15616,6 +16298,7 @@ if (!__Pyx_RefNanny) {
  *     basestring = (str, bytes)
  * 
  */
+    __Pyx_TraceLine(36,0,__PYX_ERR(0, 36, __pyx_L36_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.clean", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -15631,6 +16314,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+      __Pyx_TraceLine(37,0,__PYX_ERR(0, 37, __pyx_L36_except_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_bytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L36_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 37, __pyx_L36_except_error)
@@ -15678,6 +16362,7 @@ if (!__Pyx_RefNanny) {
  *            'word_break', 'word_break_html']
  * 
  */
+  __Pyx_TraceLine(40,0,__PYX_ERR(0, 40, __pyx_L1_error))
   __pyx_t_7 = PyList_New(7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 40, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_n_s_clean_html);
@@ -15711,6 +16396,7 @@ if (!__Pyx_RefNanny) {
  *     r'expression\s*\(.*?\)', re.S|re.I)
  * 
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(0, 64, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 64, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error)
@@ -15724,6 +16410,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # Do I have to worry about @\nimport?
  */
+  __Pyx_TraceLine(65,0,__PYX_ERR(0, 65, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 65, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_S); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error)
@@ -15746,6 +16433,7 @@ if (!__Pyx_RefNanny) {
  *     r'expression\s*\(.*?\)', re.S|re.I)
  * 
  */
+  __Pyx_TraceLine(64,0,__PYX_ERR(0, 64, __pyx_L1_error))
   __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 64, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_kp_s_expression_s);
@@ -15768,6 +16456,7 @@ if (!__Pyx_RefNanny) {
  *     r'@\s*import', re.I)
  * 
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_compile); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 68, __pyx_L1_error)
@@ -15781,6 +16470,7 @@ if (!__Pyx_RefNanny) {
  * 
  * # All kinds of schemes besides just javascript: that can cause
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(0, 69, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_I); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
@@ -15794,6 +16484,7 @@ if (!__Pyx_RefNanny) {
  *     r'@\s*import', re.I)
  * 
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_kp_s_s_import);
@@ -15816,6 +16507,7 @@ if (!__Pyx_RefNanny) {
  *     r'^data:image/.+;base64', re.I).search
  * _is_possibly_malicious_scheme = re.compile(
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(0, 73, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 73, __pyx_L1_error)
@@ -15829,6 +16521,7 @@ if (!__Pyx_RefNanny) {
  * _is_possibly_malicious_scheme = re.compile(
  *     r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_I); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 74, __pyx_L1_error)
@@ -15842,6 +16535,7 @@ if (!__Pyx_RefNanny) {
  *     r'^data:image/.+;base64', re.I).search
  * _is_possibly_malicious_scheme = re.compile(
  */
+  __Pyx_TraceLine(73,0,__PYX_ERR(0, 73, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_kp_s_data_image_base64);
@@ -15862,6 +16556,7 @@ if (!__Pyx_RefNanny) {
  * _is_possibly_malicious_scheme = re.compile(
  *     r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_search); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -15875,6 +16570,7 @@ if (!__Pyx_RefNanny) {
  *     r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
  *     re.I).search
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 75, __pyx_L1_error)
@@ -15888,6 +16584,7 @@ if (!__Pyx_RefNanny) {
  * def _is_javascript_scheme(s):
  *     if _is_image_dataurl(s):
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(0, 77, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_I); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 77, __pyx_L1_error)
@@ -15901,6 +16598,7 @@ if (!__Pyx_RefNanny) {
  *     r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
  *     re.I).search
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_kp_s_javascript_jscript_livescript_v);
@@ -15921,6 +16619,7 @@ if (!__Pyx_RefNanny) {
  * def _is_javascript_scheme(s):
  *     if _is_image_dataurl(s):
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(0, 77, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_search); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -15934,7 +16633,8 @@ if (!__Pyx_RefNanny) {
  *     if _is_image_dataurl(s):
  *         return None
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_1_is_javascript_scheme, 0, __pyx_n_s_is_javascript_scheme, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
+  __Pyx_TraceLine(78,0,__PYX_ERR(0, 78, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_1_is_javascript_scheme, 0, __pyx_n_s_is_javascript_scheme, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_javascript_scheme, __pyx_t_1) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15946,12 +16646,13 @@ if (!__Pyx_RefNanny) {
  * # FIXME: should data: be blocked?
  * 
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(0, 83, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sub); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
@@ -15967,6 +16668,7 @@ if (!__Pyx_RefNanny) {
  *     r'\[if[\s\n\r]+.*?][\s\n\r]*>', re.I|re.S)
  * 
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(0, 87, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
@@ -15980,6 +16682,7 @@ if (!__Pyx_RefNanny) {
  * 
  * _find_styled_elements = etree.XPath(
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(0, 88, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 88, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_I); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 88, __pyx_L1_error)
@@ -16002,6 +16705,7 @@ if (!__Pyx_RefNanny) {
  *     r'\[if[\s\n\r]+.*?][\s\n\r]*>', re.I|re.S)
  * 
  */
+  __Pyx_TraceLine(87,0,__PYX_ERR(0, 87, __pyx_L1_error))
   __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_kp_s_if_s_n_r_s_n_r);
@@ -16024,12 +16728,13 @@ if (!__Pyx_RefNanny) {
  *     "descendant-or-self::*[@style]")
  * 
  */
+  __Pyx_TraceLine(90,0,__PYX_ERR(0, 90, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_XPath); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 90, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 90, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_find_styled_elements, __pyx_t_7) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
@@ -16042,6 +16747,7 @@ if (!__Pyx_RefNanny) {
  *     ("descendant-or-self::a  [normalize-space(@href) and substring(normalize-space(@href),1,1) != '#'] |"
  *      "descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']"),
  */
+  __Pyx_TraceLine(93,0,__PYX_ERR(0, 93, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_XPath); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error)
@@ -16055,6 +16761,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
   __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error)
@@ -16073,7 +16780,8 @@ if (!__Pyx_RefNanny) {
  *     ("descendant-or-self::a  [normalize-space(@href) and substring(normalize-space(@href),1,1) != '#'] |"
  *      "descendant-or-self::x:a[normalize-space(@href) and substring(normalize-space(@href),1,1) != '#']"),
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__40, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
+  __Pyx_TraceLine(93,0,__PYX_ERR(0, 93, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__57, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -16087,9 +16795,10 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Instances cleans the document of each of the possible offending
  */
-  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__41); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_TraceLine(99,0,__PYX_ERR(0, 99, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__58); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__41, __pyx_n_s_Cleaner, __pyx_n_s_Cleaner, (PyObject *) NULL, __pyx_n_s_lxml_html_clean, __pyx_kp_s_Instances_cleans_the_document_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__58, __pyx_n_s_Cleaner, __pyx_n_s_Cleaner, (PyObject *) NULL, __pyx_n_s_lxml_html_clean, __pyx_kp_s_Instances_cleans_the_document_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
   /* "lxml/html/clean.py":194
@@ -16099,6 +16808,7 @@ if (!__Pyx_RefNanny) {
  *     javascript = True
  *     comments = True
  */
+  __Pyx_TraceLine(194,0,__PYX_ERR(0, 194, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_scripts, Py_True) < 0) __PYX_ERR(0, 194, __pyx_L1_error)
 
   /* "lxml/html/clean.py":195
@@ -16108,6 +16818,7 @@ if (!__Pyx_RefNanny) {
  *     comments = True
  *     style = False
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(0, 195, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_javascript, Py_True) < 0) __PYX_ERR(0, 195, __pyx_L1_error)
 
   /* "lxml/html/clean.py":196
@@ -16117,6 +16828,7 @@ if (!__Pyx_RefNanny) {
  *     style = False
  *     inline_style = None
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(0, 196, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_comments, Py_True) < 0) __PYX_ERR(0, 196, __pyx_L1_error)
 
   /* "lxml/html/clean.py":197
@@ -16126,6 +16838,7 @@ if (!__Pyx_RefNanny) {
  *     inline_style = None
  *     links = True
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(0, 197, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_style, Py_False) < 0) __PYX_ERR(0, 197, __pyx_L1_error)
 
   /* "lxml/html/clean.py":198
@@ -16135,6 +16848,7 @@ if (!__Pyx_RefNanny) {
  *     links = True
  *     meta = True
  */
+  __Pyx_TraceLine(198,0,__PYX_ERR(0, 198, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_inline_style, Py_None) < 0) __PYX_ERR(0, 198, __pyx_L1_error)
 
   /* "lxml/html/clean.py":199
@@ -16144,6 +16858,7 @@ if (!__Pyx_RefNanny) {
  *     meta = True
  *     page_structure = True
  */
+  __Pyx_TraceLine(199,0,__PYX_ERR(0, 199, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_links, Py_True) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
 
   /* "lxml/html/clean.py":200
@@ -16153,6 +16868,7 @@ if (!__Pyx_RefNanny) {
  *     page_structure = True
  *     processing_instructions = True
  */
+  __Pyx_TraceLine(200,0,__PYX_ERR(0, 200, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_meta, Py_True) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
 
   /* "lxml/html/clean.py":201
@@ -16162,6 +16878,7 @@ if (!__Pyx_RefNanny) {
  *     processing_instructions = True
  *     embedded = True
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(0, 201, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_page_structure, Py_True) < 0) __PYX_ERR(0, 201, __pyx_L1_error)
 
   /* "lxml/html/clean.py":202
@@ -16171,6 +16888,7 @@ if (!__Pyx_RefNanny) {
  *     embedded = True
  *     frames = True
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(0, 202, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_processing_instructions, Py_True) < 0) __PYX_ERR(0, 202, __pyx_L1_error)
 
   /* "lxml/html/clean.py":203
@@ -16180,6 +16898,7 @@ if (!__Pyx_RefNanny) {
  *     frames = True
  *     forms = True
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(0, 203, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_embedded, Py_True) < 0) __PYX_ERR(0, 203, __pyx_L1_error)
 
   /* "lxml/html/clean.py":204
@@ -16189,6 +16908,7 @@ if (!__Pyx_RefNanny) {
  *     forms = True
  *     annoying_tags = True
  */
+  __Pyx_TraceLine(204,0,__PYX_ERR(0, 204, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_frames, Py_True) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
 
   /* "lxml/html/clean.py":205
@@ -16198,6 +16918,7 @@ if (!__Pyx_RefNanny) {
  *     annoying_tags = True
  *     remove_tags = None
  */
+  __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_forms, Py_True) < 0) __PYX_ERR(0, 205, __pyx_L1_error)
 
   /* "lxml/html/clean.py":206
@@ -16207,6 +16928,7 @@ if (!__Pyx_RefNanny) {
  *     remove_tags = None
  *     allow_tags = None
  */
+  __Pyx_TraceLine(206,0,__PYX_ERR(0, 206, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_annoying_tags, Py_True) < 0) __PYX_ERR(0, 206, __pyx_L1_error)
 
   /* "lxml/html/clean.py":207
@@ -16216,6 +16938,7 @@ if (!__Pyx_RefNanny) {
  *     allow_tags = None
  *     kill_tags = None
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(0, 207, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_remove_tags, Py_None) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
 
   /* "lxml/html/clean.py":208
@@ -16225,6 +16948,7 @@ if (!__Pyx_RefNanny) {
  *     kill_tags = None
  *     remove_unknown_tags = True
  */
+  __Pyx_TraceLine(208,0,__PYX_ERR(0, 208, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_allow_tags, Py_None) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
 
   /* "lxml/html/clean.py":209
@@ -16234,6 +16958,7 @@ if (!__Pyx_RefNanny) {
  *     remove_unknown_tags = True
  *     safe_attrs_only = True
  */
+  __Pyx_TraceLine(209,0,__PYX_ERR(0, 209, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_kill_tags, Py_None) < 0) __PYX_ERR(0, 209, __pyx_L1_error)
 
   /* "lxml/html/clean.py":210
@@ -16243,6 +16968,7 @@ if (!__Pyx_RefNanny) {
  *     safe_attrs_only = True
  *     safe_attrs = defs.safe_attrs
  */
+  __Pyx_TraceLine(210,0,__PYX_ERR(0, 210, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_remove_unknown_tags, Py_True) < 0) __PYX_ERR(0, 210, __pyx_L1_error)
 
   /* "lxml/html/clean.py":211
@@ -16252,6 +16978,7 @@ if (!__Pyx_RefNanny) {
  *     safe_attrs = defs.safe_attrs
  *     add_nofollow = False
  */
+  __Pyx_TraceLine(211,0,__PYX_ERR(0, 211, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_safe_attrs_only, Py_True) < 0) __PYX_ERR(0, 211, __pyx_L1_error)
 
   /* "lxml/html/clean.py":212
@@ -16261,6 +16988,7 @@ if (!__Pyx_RefNanny) {
  *     add_nofollow = False
  *     host_whitelist = ()
  */
+  __Pyx_TraceLine(212,0,__PYX_ERR(0, 212, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_defs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_safe_attrs); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 212, __pyx_L1_error)
@@ -16276,6 +17004,7 @@ if (!__Pyx_RefNanny) {
  *     host_whitelist = ()
  *     whitelist_tags = set(['iframe', 'embed'])
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(0, 213, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_add_nofollow, Py_False) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
 
   /* "lxml/html/clean.py":214
@@ -16285,6 +17014,7 @@ if (!__Pyx_RefNanny) {
  *     whitelist_tags = set(['iframe', 'embed'])
  * 
  */
+  __Pyx_TraceLine(214,0,__PYX_ERR(0, 214, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_host_whitelist, __pyx_empty_tuple) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
 
   /* "lxml/html/clean.py":215
@@ -16294,6 +17024,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def __init__(self, **kw):
  */
+  __Pyx_TraceLine(215,0,__PYX_ERR(0, 215, __pyx_L1_error))
   __pyx_t_8 = PySet_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PySet_Add(__pyx_t_8, __pyx_n_s_iframe) < 0) __PYX_ERR(0, 215, __pyx_L1_error)
@@ -16308,7 +17039,8 @@ if (!__Pyx_RefNanny) {
  *         for name, value in kw.items():
  *             if not hasattr(self, name):
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_1__init__, 0, __pyx_n_s_Cleaner___init, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __Pyx_TraceLine(217,0,__PYX_ERR(0, 217, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_1__init__, 0, __pyx_n_s_Cleaner___init, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 217, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_8) < 0) __PYX_ERR(0, 217, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16320,6 +17052,7 @@ if (!__Pyx_RefNanny) {
  *         link='href',
  *         # From: http://java.sun.com/j2se/1.4.2/docs/guide/misc/applet.html
  */
+  __Pyx_TraceLine(229,0,__PYX_ERR(0, 229, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 229, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_script, __pyx_n_s_src) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
@@ -16332,6 +17065,7 @@ if (!__Pyx_RefNanny) {
  *         iframe='src',
  *         embed='src',
  */
+  __Pyx_TraceLine(233,0,__PYX_ERR(0, 233, __pyx_L1_error))
   __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_n_s_code);
@@ -16356,7 +17090,8 @@ if (!__Pyx_RefNanny) {
  *         """
  *         Cleans the document.
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_3__call__, 0, __pyx_n_s_Cleaner___call, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __Pyx_TraceLine(248,0,__PYX_ERR(0, 248, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_3__call__, 0, __pyx_n_s_Cleaner___call, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_call, __pyx_t_8) < 0) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16368,7 +17103,8 @@ if (!__Pyx_RefNanny) {
  *         """
  *         Override to suppress rel="nofollow" on some anchors.
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_5allow_follow, 0, __pyx_n_s_Cleaner_allow_follow, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 428, __pyx_L1_error)
+  __Pyx_TraceLine(428,0,__PYX_ERR(0, 428, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_5allow_follow, 0, __pyx_n_s_Cleaner_allow_follow, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_allow_follow, __pyx_t_8) < 0) __PYX_ERR(0, 428, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16380,7 +17116,8 @@ if (!__Pyx_RefNanny) {
  *         if el.tag not in self._tag_link_attrs:
  *             return False
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_7allow_element, 0, __pyx_n_s_Cleaner_allow_element, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __Pyx_TraceLine(434,0,__PYX_ERR(0, 434, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_7allow_element, 0, __pyx_n_s_Cleaner_allow_element, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 434, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_allow_element, __pyx_t_8) < 0) __PYX_ERR(0, 434, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16392,7 +17129,8 @@ if (!__Pyx_RefNanny) {
  *         if (self.whitelist_tags is not None
  *             and el.tag not in self.whitelist_tags):
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_9allow_embedded_url, 0, __pyx_n_s_Cleaner_allow_embedded_url, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 452, __pyx_L1_error)
+  __Pyx_TraceLine(452,0,__PYX_ERR(0, 452, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_9allow_embedded_url, 0, __pyx_n_s_Cleaner_allow_embedded_url, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_allow_embedded_url, __pyx_t_8) < 0) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16404,7 +17142,8 @@ if (!__Pyx_RefNanny) {
  *         """
  *         IE conditional comments basically embed HTML that the parser
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_11kill_conditional_comments, 0, __pyx_n_s_Cleaner_kill_conditional_comment_2, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 464, __pyx_L1_error)
+  __Pyx_TraceLine(464,0,__PYX_ERR(0, 464, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_11kill_conditional_comments, 0, __pyx_n_s_Cleaner_kill_conditional_comment_2, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_kill_conditional_comments, __pyx_t_8) < 0) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16416,9 +17155,10 @@ if (!__Pyx_RefNanny) {
  *         bad = []
  *         for el in doc.iter(iterate):
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_13_kill_elements, 0, __pyx_n_s_Cleaner__kill_elements, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __Pyx_TraceLine(475,0,__PYX_ERR(0, 475, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_13_kill_elements, 0, __pyx_n_s_Cleaner__kill_elements, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__56);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__66);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_kill_elements, __pyx_t_8) < 0) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -16429,7 +17169,8 @@ if (!__Pyx_RefNanny) {
  *         # links like "j a v a s c r i p t:" might be interpreted in IE
  *         new = _substitute_whitespace('', link)
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_15_remove_javascript_link, 0, __pyx_n_s_Cleaner__remove_javascript_link, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 483, __pyx_L1_error)
+  __Pyx_TraceLine(483,0,__PYX_ERR(0, 483, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_15_remove_javascript_link, 0, __pyx_n_s_Cleaner__remove_javascript_link, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 483, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_remove_javascript_link, __pyx_t_8) < 0) __PYX_ERR(0, 483, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16441,6 +17182,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def _has_sneaky_javascript(self, style):
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(0, 491, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 491, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_compile); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 491, __pyx_L1_error)
@@ -16465,7 +17207,7 @@ if (!__Pyx_RefNanny) {
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_9)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__59, __pyx_t_10};
+    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__68, __pyx_t_10};
     __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 491, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_8);
@@ -16474,7 +17216,7 @@ if (!__Pyx_RefNanny) {
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__59, __pyx_t_10};
+    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_kp_s__68, __pyx_t_10};
     __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 491, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_8);
@@ -16487,9 +17229,9 @@ if (!__Pyx_RefNanny) {
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_s__59);
-    __Pyx_GIVEREF(__pyx_kp_s__59);
-    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_kp_s__59);
+    __Pyx_INCREF(__pyx_kp_s__68);
+    __Pyx_GIVEREF(__pyx_kp_s__68);
+    PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_kp_s__68);
     __Pyx_GIVEREF(__pyx_t_10);
     PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_10);
     __pyx_t_10 = 0;
@@ -16511,7 +17253,8 @@ if (!__Pyx_RefNanny) {
  *         """
  *         Depending on the browser, stuff like ``e x p r e s s i o n(...)``
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_17_has_sneaky_javascript, 0, __pyx_n_s_Cleaner__has_sneaky_javascript, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 493, __pyx_L1_error)
+  __Pyx_TraceLine(493,0,__PYX_ERR(0, 493, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_17_has_sneaky_javascript, 0, __pyx_n_s_Cleaner__has_sneaky_javascript, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 493, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_has_sneaky_javascript, __pyx_t_9) < 0) __PYX_ERR(0, 493, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -16523,7 +17266,8 @@ if (!__Pyx_RefNanny) {
  *         result_type = type(html)
  *         if isinstance(html, basestring):
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_19clean_html, 0, __pyx_n_s_Cleaner_clean_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 514, __pyx_L1_error)
+  __Pyx_TraceLine(514,0,__PYX_ERR(0, 514, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7Cleaner_19clean_html, 0, __pyx_n_s_Cleaner_clean_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_clean_html, __pyx_t_9) < 0) __PYX_ERR(0, 514, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -16535,7 +17279,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Instances cleans the document of each of the possible offending
  */
-  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Cleaner, __pyx_tuple__41, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_TraceLine(99,0,__PYX_ERR(0, 99, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Cleaner, __pyx_tuple__58, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Cleaner, __pyx_t_9) < 0) __PYX_ERR(0, 99, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -16549,6 +17294,7 @@ if (!__Pyx_RefNanny) {
  * clean_html = clean.clean_html
  * 
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(0, 523, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Cleaner); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 523, __pyx_L1_error)
@@ -16564,6 +17310,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(524,0,__PYX_ERR(0, 524, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_clean); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 524, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_clean_html); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L1_error)
@@ -16579,6 +17326,7 @@ if (!__Pyx_RefNanny) {
  *     # This is conservative, but autolinking can be a bit conservative:
  *     re.compile(r'mailto:(?P<body>[a-z0-9._-]+@(?P<host>[a-z0-9_.-]+[a-z]))', re.I),
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(0, 531, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error)
@@ -16609,6 +17357,7 @@ if (!__Pyx_RefNanny) {
  *     ]
  * 
  */
+  __Pyx_TraceLine(533,0,__PYX_ERR(0, 533, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 533, __pyx_L1_error)
@@ -16639,6 +17388,7 @@ if (!__Pyx_RefNanny) {
  *     re.compile(r'(?P<body>https?://(?P<host>[a-z0-9._-]+)(?:/[/\-_.,a-z0-9%&?;=~]*)?(?:\([/\-_.,a-z0-9%&?;=~]*\))?)', re.I),
  *     # This is conservative, but autolinking can be a bit conservative:
  */
+  __Pyx_TraceLine(530,0,__PYX_ERR(0, 530, __pyx_L1_error))
   __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_9);
@@ -16657,6 +17407,7 @@ if (!__Pyx_RefNanny) {
  * 
  * _avoid_hosts = [
  */
+  __Pyx_TraceLine(536,0,__PYX_ERR(0, 536, __pyx_L1_error))
   __pyx_t_1 = PyList_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_textarea);
@@ -16687,6 +17438,7 @@ if (!__Pyx_RefNanny) {
  *     re.compile(r'\bexample\.(?:com|org|net)$', re.I),
  *     re.compile(r'^127\.0\.0\.1$'),
  */
+  __Pyx_TraceLine(539,0,__PYX_ERR(0, 539, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 539, __pyx_L1_error)
@@ -16717,6 +17469,7 @@ if (!__Pyx_RefNanny) {
  *     re.compile(r'^127\.0\.0\.1$'),
  *     ]
  */
+  __Pyx_TraceLine(540,0,__PYX_ERR(0, 540, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 540, __pyx_L1_error)
@@ -16747,12 +17500,13 @@ if (!__Pyx_RefNanny) {
  *     ]
  * 
  */
+  __Pyx_TraceLine(541,0,__PYX_ERR(0, 541, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
@@ -16763,6 +17517,7 @@ if (!__Pyx_RefNanny) {
  *     re.compile(r'^localhost', re.I),
  *     re.compile(r'\bexample\.(?:com|org|net)$', re.I),
  */
+  __Pyx_TraceLine(538,0,__PYX_ERR(0, 538, __pyx_L1_error))
   __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 538, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_GIVEREF(__pyx_t_9);
@@ -16784,6 +17539,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def autolink(el, link_regexes=_link_regexes,
  */
+  __Pyx_TraceLine(544,0,__PYX_ERR(0, 544, __pyx_L1_error))
   __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 544, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_n_s_nolink);
@@ -16799,7 +17555,8 @@ if (!__Pyx_RefNanny) {
  *              avoid_elements=_avoid_elements,
  *              avoid_hosts=_avoid_hosts,
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_3autolink, 0, __pyx_n_s_autolink, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 546, __pyx_L1_error)
+  __Pyx_TraceLine(546,0,__PYX_ERR(0, 546, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_3autolink, 0, __pyx_n_s_autolink, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (!__Pyx_CyFunction_InitDefaults(__pyx_t_8, sizeof(__pyx_defaults), 4)) __PYX_ERR(0, 546, __pyx_L1_error)
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_link_regexes_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
@@ -16815,6 +17572,7 @@ if (!__Pyx_RefNanny) {
  *              avoid_hosts=_avoid_hosts,
  *              avoid_classes=_avoid_classes):
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(0, 547, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_elements_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_8)->__pyx_arg_avoid_elements = __pyx_t_1;
@@ -16828,6 +17586,7 @@ if (!__Pyx_RefNanny) {
  *              avoid_classes=_avoid_classes):
  *     """
  */
+  __Pyx_TraceLine(548,0,__PYX_ERR(0, 548, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_hosts_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_8)->__pyx_arg_avoid_hosts = __pyx_t_1;
@@ -16841,6 +17600,7 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Turn any URLs into links.
  */
+  __Pyx_TraceLine(549,0,__PYX_ERR(0, 549, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_classes_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_8)->__pyx_arg_avoid_classes = __pyx_t_1;
@@ -16857,7 +17617,8 @@ if (!__Pyx_RefNanny) {
  *     leading_text = ''
  *     links = []
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_5_link_text, 0, __pyx_n_s_link_text, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_TraceLine(591,0,__PYX_ERR(0, 591, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_5_link_text, 0, __pyx_n_s_link_text, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_link_text, __pyx_t_8) < 0) __PYX_ERR(0, 591, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16869,7 +17630,8 @@ if (!__Pyx_RefNanny) {
  *     result_type = type(html)
  *     if isinstance(html, basestring):
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7autolink_html, 0, __pyx_n_s_autolink_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __Pyx_TraceLine(649,0,__PYX_ERR(0, 649, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_7autolink_html, 0, __pyx_n_s_autolink_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 649, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_autolink_html, __pyx_t_8) < 0) __PYX_ERR(0, 649, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -16881,6 +17643,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+  __Pyx_TraceLine(658,0,__PYX_ERR(0, 658, __pyx_L1_error))
   __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_autolink); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 658, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_doc_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
@@ -16899,6 +17662,7 @@ if (!__Pyx_RefNanny) {
  * _avoid_word_break_classes = ['nobreak']
  * 
  */
+  __Pyx_TraceLine(664,0,__PYX_ERR(0, 664, __pyx_L1_error))
   __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 664, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_n_s_pre);
@@ -16920,6 +17684,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def word_break(el, max_width=40,
  */
+  __Pyx_TraceLine(665,0,__PYX_ERR(0, 665, __pyx_L1_error))
   __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 665, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_n_s_nobreak);
@@ -16935,7 +17700,8 @@ if (!__Pyx_RefNanny) {
  *                avoid_elements=_avoid_word_break_elements,
  *                avoid_classes=_avoid_word_break_classes,
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_9word_break, 0, __pyx_n_s_word_break, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __Pyx_TraceLine(667,0,__PYX_ERR(0, 667, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_9word_break, 0, __pyx_n_s_word_break, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 667, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (!__Pyx_CyFunction_InitDefaults(__pyx_t_8, sizeof(__pyx_defaults1), 3)) __PYX_ERR(0, 667, __pyx_L1_error)
 
@@ -16946,6 +17712,7 @@ if (!__Pyx_RefNanny) {
  *                avoid_classes=_avoid_word_break_classes,
  *                break_character=unichr(0x200b)):
  */
+  __Pyx_TraceLine(668,0,__PYX_ERR(0, 668, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_word_break_elements); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_8)->__pyx_arg_avoid_elements = __pyx_t_1;
@@ -16959,6 +17726,7 @@ if (!__Pyx_RefNanny) {
  *                break_character=unichr(0x200b)):
  *     """
  */
+  __Pyx_TraceLine(669,0,__PYX_ERR(0, 669, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_avoid_word_break_classes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_8)->__pyx_arg_avoid_classes = __pyx_t_1;
@@ -16972,9 +17740,10 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Breaks any long words found in the body of the text (not attributes).
  */
+  __Pyx_TraceLine(670,0,__PYX_ERR(0, 670, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_unichr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 670, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 670, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_8)->__pyx_arg_break_character = __pyx_t_7;
@@ -16991,7 +17760,8 @@ if (!__Pyx_RefNanny) {
  *     result_type = type(html)
  *     doc = fromstring(html)
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_11word_break_html, 0, __pyx_n_s_word_break_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 708, __pyx_L1_error)
+  __Pyx_TraceLine(708,0,__PYX_ERR(0, 708, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_11word_break_html, 0, __pyx_n_s_word_break_html, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 708, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_word_break_html, __pyx_t_8) < 0) __PYX_ERR(0, 708, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -17003,7 +17773,8 @@ if (!__Pyx_RefNanny) {
  *     words = text.split()
  *     for word in words:
  */
-  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_13_break_text, 0, __pyx_n_s_break_text, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __Pyx_TraceLine(714,0,__PYX_ERR(0, 714, __pyx_L1_error))
+  __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_13_break_text, 0, __pyx_n_s_break_text, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 714, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_break_text, __pyx_t_8) < 0) __PYX_ERR(0, 714, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -17015,6 +17786,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def _insert_break(word, width, break_character):
  */
+  __Pyx_TraceLine(722,0,__PYX_ERR(0, 722, __pyx_L1_error))
   __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 722, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 722, __pyx_L1_error)
@@ -17047,7 +17819,8 @@ if (!__Pyx_RefNanny) {
  *     orig_word = word
  *     result = ''
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_15_insert_break, 0, __pyx_n_s_insert_break, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
+  __Pyx_TraceLine(724,0,__PYX_ERR(0, 724, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_5clean_15_insert_break, 0, __pyx_n_s_insert_break, NULL, __pyx_n_s_lxml_html_clean, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_insert_break, __pyx_t_1) < 0) __PYX_ERR(0, 724, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17057,10 +17830,12 @@ if (!__Pyx_RefNanny) {
  * 
  * Removes unwanted tags and content.  See the `Cleaner` class for
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -17094,12 +17869,12 @@ if (!__Pyx_RefNanny) {
 }
 
 static void __Pyx_CleanupGlobals(void) {
-  Py_CLEAR(__pyx_tuple_);
-  Py_CLEAR(__pyx_tuple__2);
-  Py_CLEAR(__pyx_tuple__3);
+  Py_CLEAR(__pyx_codeobj_);
+  Py_CLEAR(__pyx_codeobj__2);
+  Py_CLEAR(__pyx_codeobj__3);
+  Py_CLEAR(__pyx_tuple__4);
   Py_CLEAR(__pyx_tuple__5);
   Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_tuple__7);
   Py_CLEAR(__pyx_tuple__8);
   Py_CLEAR(__pyx_tuple__9);
   Py_CLEAR(__pyx_tuple__10);
@@ -17109,64 +17884,64 @@ static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple__14);
   Py_CLEAR(__pyx_tuple__15);
   Py_CLEAR(__pyx_tuple__16);
+  Py_CLEAR(__pyx_tuple__17);
   Py_CLEAR(__pyx_tuple__18);
-  Py_CLEAR(__pyx_tuple__20);
-  Py_CLEAR(__pyx_tuple__21);
-  Py_CLEAR(__pyx_slice__22);
-  Py_CLEAR(__pyx_tuple__23);
+  Py_CLEAR(__pyx_tuple__19);
+  Py_CLEAR(__pyx_codeobj__20);
+  Py_CLEAR(__pyx_codeobj__21);
+  Py_CLEAR(__pyx_codeobj__22);
   Py_CLEAR(__pyx_tuple__24);
-  Py_CLEAR(__pyx_tuple__26);
-  Py_CLEAR(__pyx_tuple__28);
-  Py_CLEAR(__pyx_slice__29);
+  Py_CLEAR(__pyx_codeobj__25);
+  Py_CLEAR(__pyx_codeobj__26);
+  Py_CLEAR(__pyx_codeobj__27);
+  Py_CLEAR(__pyx_codeobj__28);
   Py_CLEAR(__pyx_tuple__30);
-  Py_CLEAR(__pyx_tuple__31);
-  Py_CLEAR(__pyx_tuple__32);
+  Py_CLEAR(__pyx_codeobj__31);
+  Py_CLEAR(__pyx_codeobj__32);
   Py_CLEAR(__pyx_tuple__33);
   Py_CLEAR(__pyx_slice__34);
-  Py_CLEAR(__pyx_tuple__35);
+  Py_CLEAR(__pyx_codeobj__35);
   Py_CLEAR(__pyx_tuple__36);
-  Py_CLEAR(__pyx_codeobj__37);
-  Py_CLEAR(__pyx_tuple__38);
+  Py_CLEAR(__pyx_tuple__37);
   Py_CLEAR(__pyx_tuple__39);
-  Py_CLEAR(__pyx_tuple__40);
   Py_CLEAR(__pyx_tuple__41);
-  Py_CLEAR(__pyx_tuple__42);
-  Py_CLEAR(__pyx_codeobj__43);
+  Py_CLEAR(__pyx_slice__42);
+  Py_CLEAR(__pyx_tuple__43);
   Py_CLEAR(__pyx_tuple__44);
-  Py_CLEAR(__pyx_codeobj__45);
+  Py_CLEAR(__pyx_tuple__45);
   Py_CLEAR(__pyx_tuple__46);
-  Py_CLEAR(__pyx_codeobj__47);
-  Py_CLEAR(__pyx_tuple__48);
+  Py_CLEAR(__pyx_slice__47);
+  Py_CLEAR(__pyx_codeobj__48);
   Py_CLEAR(__pyx_codeobj__49);
   Py_CLEAR(__pyx_tuple__50);
   Py_CLEAR(__pyx_codeobj__51);
-  Py_CLEAR(__pyx_tuple__52);
+  Py_CLEAR(__pyx_codeobj__52);
   Py_CLEAR(__pyx_codeobj__53);
   Py_CLEAR(__pyx_tuple__54);
-  Py_CLEAR(__pyx_codeobj__55);
+  Py_CLEAR(__pyx_tuple__55);
   Py_CLEAR(__pyx_tuple__56);
   Py_CLEAR(__pyx_tuple__57);
-  Py_CLEAR(__pyx_codeobj__58);
+  Py_CLEAR(__pyx_tuple__58);
+  Py_CLEAR(__pyx_tuple__59);
   Py_CLEAR(__pyx_tuple__60);
-  Py_CLEAR(__pyx_codeobj__61);
+  Py_CLEAR(__pyx_tuple__61);
   Py_CLEAR(__pyx_tuple__62);
-  Py_CLEAR(__pyx_codeobj__63);
+  Py_CLEAR(__pyx_tuple__63);
   Py_CLEAR(__pyx_tuple__64);
   Py_CLEAR(__pyx_tuple__65);
-  Py_CLEAR(__pyx_codeobj__66);
+  Py_CLEAR(__pyx_tuple__66);
   Py_CLEAR(__pyx_tuple__67);
-  Py_CLEAR(__pyx_codeobj__68);
   Py_CLEAR(__pyx_tuple__69);
-  Py_CLEAR(__pyx_codeobj__70);
+  Py_CLEAR(__pyx_tuple__70);
   Py_CLEAR(__pyx_tuple__71);
-  Py_CLEAR(__pyx_codeobj__72);
+  Py_CLEAR(__pyx_tuple__72);
   Py_CLEAR(__pyx_tuple__73);
   Py_CLEAR(__pyx_tuple__74);
-  Py_CLEAR(__pyx_codeobj__75);
+  Py_CLEAR(__pyx_tuple__75);
   Py_CLEAR(__pyx_tuple__76);
-  Py_CLEAR(__pyx_codeobj__77);
+  Py_CLEAR(__pyx_tuple__77);
   Py_CLEAR(__pyx_tuple__78);
-  Py_CLEAR(__pyx_codeobj__79);
+  Py_CLEAR(__pyx_tuple__79);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
@@ -17248,6 +18023,123 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
     return result;
 }
 
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
+
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* GetModuleGlobalName */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
     PyObject *result;
@@ -17778,30 +18670,6 @@ bad:
     }
 }
 
-/* PyErrFetchRestore */
-    #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-#endif
-
 /* RaiseException */
     #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
@@ -19939,6 +20807,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -20893,6 +21764,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index 2c912d9..717c060 100644 (file)
@@ -1,17 +1,18 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "/usr/include/libxml2", 
             "src", 
@@ -22,7 +23,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml.html.diff", 
@@ -41,7 +41,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -487,6 +487,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -679,7 +680,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -787,7 +788,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -970,6 +971,244 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
     const char* function_name);
 
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* GetModuleGlobalName.proto */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
 
@@ -1156,17 +1395,6 @@ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                                int is_list, int wraparound, int boundscheck);
 
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
-#endif
-
 /* SaveResetException.proto */
 #if CYTHON_FAST_THREAD_STATE
 #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1178,31 +1406,6 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
 #define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
 #endif
 
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
-#endif
-
 /* FastTypeChecks.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
@@ -1589,7 +1792,6 @@ static PyObject *__pyx_builtin_ImportError;
 static PyObject *__pyx_builtin_NameError;
 static PyObject *__pyx_builtin_zip;
 static PyObject *__pyx_builtin_ValueError;
-static const char __pyx_k_[] = "";
 static const char __pyx_k_I[] = "I";
 static const char __pyx_k_S[] = "S";
 static const char __pyx_k_U[] = "U";
@@ -1597,7 +1799,7 @@ static const char __pyx_k_a[] = "a";
 static const char __pyx_k_b[] = "b";
 static const char __pyx_k_p[] = "p";
 static const char __pyx_k_s[] = "s";
-static const char __pyx_k__5[] = " ";
+static const char __pyx_k__3[] = "";
 static const char __pyx_k_br[] = "br";
 static const char __pyx_k_dd[] = "dd";
 static const char __pyx_k_dl[] = "dl";
@@ -1622,12 +1824,13 @@ static const char __pyx_k_th[] = "th";
 static const char __pyx_k_tr[] = "tr";
 static const char __pyx_k_ul[] = "ul";
 static const char __pyx_k_S_s[] = "\\S+(?:\\s+|$)";
-static const char __pyx_k__12[] = "<";
-static const char __pyx_k__14[] = "/";
-static const char __pyx_k__15[] = "<>/";
-static const char __pyx_k__17[] = "<>";
-static const char __pyx_k__22[] = "</";
-static const char __pyx_k__34[] = ">";
+static const char __pyx_k__15[] = " ";
+static const char __pyx_k__25[] = "<";
+static const char __pyx_k__27[] = "/";
+static const char __pyx_k__28[] = "<>/";
+static const char __pyx_k__32[] = "<>";
+static const char __pyx_k__38[] = "</";
+static const char __pyx_k__70[] = ">";
 static const char __pyx_k_all[] = "__all__";
 static const char __pyx_k_cgi[] = "cgi";
 static const char __pyx_k_cls[] = "cls";
@@ -1909,7 +2112,6 @@ static const char __pyx_k_InsensitiveSequenceMatcher_get_m[] = "InsensitiveSeque
 static const char __pyx_k_You_should_pass_in_an_element_no[] = "You should pass in an element, not a string like %r";
 static const char __pyx_k_locate_unbalanced_start_line_361[] = "locate_unbalanced_start (line 361)";
 static const char __pyx_k_tag_token_s_s_html_repr_s_post_t[] = "tag_token(%s, %s, html_repr=%s, post_tags=%r, pre_tags=%r, trailing_whitespace=%r)";
-static PyObject *__pyx_kp_s_;
 static PyObject *__pyx_kp_s_Acts_like_SequenceMatcher_but_t;
 static PyObject *__pyx_n_s_DEL_END;
 static PyObject *__pyx_n_s_DEL_START;
@@ -1933,13 +2135,14 @@ static PyObject *__pyx_kp_s_Unexpected_delete_tag_r;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_kp_s_Weird_state_cur_word_r_result_r;
 static PyObject *__pyx_kp_s_You_should_pass_in_an_element_no;
-static PyObject *__pyx_kp_s__12;
-static PyObject *__pyx_kp_s__14;
 static PyObject *__pyx_kp_s__15;
-static PyObject *__pyx_kp_s__17;
-static PyObject *__pyx_kp_s__22;
-static PyObject *__pyx_kp_s__34;
-static PyObject *__pyx_kp_s__5;
+static PyObject *__pyx_kp_s__25;
+static PyObject *__pyx_kp_s__27;
+static PyObject *__pyx_kp_s__28;
+static PyObject *__pyx_kp_s__3;
+static PyObject *__pyx_kp_s__32;
+static PyObject *__pyx_kp_s__38;
+static PyObject *__pyx_kp_s__70;
 static PyObject *__pyx_n_s_a;
 static PyObject *__pyx_n_s_actual;
 static PyObject *__pyx_n_s_address;
@@ -2283,133 +2486,133 @@ static PyObject *__pyx_int_1;
 static PyObject *__pyx_int_2;
 static PyObject *__pyx_int_4;
 static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_slice__2;
+static PyObject *__pyx_codeobj_;
 static PyObject *__pyx_slice__8;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__11;
-static PyObject *__pyx_slice__38;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__13;
+static PyObject *__pyx_slice__18;
+static PyObject *__pyx_slice__23;
+static PyObject *__pyx_slice__77;
 static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__17;
 static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
-static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__27;
-static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__26;
 static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
 static PyObject *__pyx_tuple__33;
+static PyObject *__pyx_tuple__34;
 static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
 static PyObject *__pyx_tuple__37;
 static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__40;
 static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__54;
+static PyObject *__pyx_tuple__55;
 static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__59;
-static PyObject *__pyx_tuple__60;
+static PyObject *__pyx_tuple__57;
 static PyObject *__pyx_tuple__62;
 static PyObject *__pyx_tuple__64;
 static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__68;
-static PyObject *__pyx_tuple__70;
+static PyObject *__pyx_tuple__67;
+static PyObject *__pyx_tuple__71;
 static PyObject *__pyx_tuple__72;
 static PyObject *__pyx_tuple__74;
-static PyObject *__pyx_tuple__76;
-static PyObject *__pyx_tuple__77;
-static PyObject *__pyx_tuple__79;
+static PyObject *__pyx_tuple__80;
 static PyObject *__pyx_tuple__81;
+static PyObject *__pyx_tuple__82;
 static PyObject *__pyx_tuple__83;
 static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__85;
 static PyObject *__pyx_tuple__86;
+static PyObject *__pyx_tuple__87;
 static PyObject *__pyx_tuple__88;
+static PyObject *__pyx_tuple__89;
 static PyObject *__pyx_tuple__90;
+static PyObject *__pyx_tuple__91;
 static PyObject *__pyx_tuple__92;
 static PyObject *__pyx_tuple__93;
+static PyObject *__pyx_tuple__94;
 static PyObject *__pyx_tuple__95;
 static PyObject *__pyx_tuple__96;
+static PyObject *__pyx_tuple__97;
 static PyObject *__pyx_tuple__98;
 static PyObject *__pyx_tuple__99;
-static PyObject *__pyx_codeobj__3;
+static PyObject *__pyx_codeobj__2;
 static PyObject *__pyx_codeobj__4;
+static PyObject *__pyx_codeobj__5;
+static PyObject *__pyx_codeobj__6;
+static PyObject *__pyx_codeobj__7;
+static PyObject *__pyx_codeobj__9;
+static PyObject *__pyx_tuple__100;
 static PyObject *__pyx_tuple__101;
+static PyObject *__pyx_tuple__102;
 static PyObject *__pyx_tuple__103;
 static PyObject *__pyx_tuple__104;
 static PyObject *__pyx_tuple__105;
 static PyObject *__pyx_tuple__106;
 static PyObject *__pyx_tuple__107;
 static PyObject *__pyx_tuple__108;
+static PyObject *__pyx_tuple__109;
 static PyObject *__pyx_tuple__110;
 static PyObject *__pyx_tuple__111;
+static PyObject *__pyx_tuple__112;
 static PyObject *__pyx_tuple__113;
+static PyObject *__pyx_tuple__114;
 static PyObject *__pyx_tuple__115;
+static PyObject *__pyx_tuple__116;
 static PyObject *__pyx_tuple__117;
+static PyObject *__pyx_tuple__118;
 static PyObject *__pyx_tuple__119;
+static PyObject *__pyx_tuple__120;
 static PyObject *__pyx_tuple__121;
+static PyObject *__pyx_tuple__122;
 static PyObject *__pyx_tuple__123;
+static PyObject *__pyx_tuple__124;
 static PyObject *__pyx_tuple__125;
 static PyObject *__pyx_tuple__126;
+static PyObject *__pyx_tuple__127;
 static PyObject *__pyx_tuple__128;
+static PyObject *__pyx_tuple__129;
 static PyObject *__pyx_tuple__130;
+static PyObject *__pyx_tuple__131;
 static PyObject *__pyx_tuple__132;
+static PyObject *__pyx_tuple__133;
 static PyObject *__pyx_tuple__134;
-static PyObject *__pyx_codeobj__26;
-static PyObject *__pyx_codeobj__40;
+static PyObject *__pyx_tuple__135;
+static PyObject *__pyx_codeobj__10;
+static PyObject *__pyx_codeobj__11;
+static PyObject *__pyx_codeobj__12;
+static PyObject *__pyx_codeobj__13;
+static PyObject *__pyx_codeobj__14;
+static PyObject *__pyx_codeobj__19;
+static PyObject *__pyx_codeobj__20;
+static PyObject *__pyx_codeobj__24;
+static PyObject *__pyx_codeobj__30;
+static PyObject *__pyx_codeobj__31;
+static PyObject *__pyx_codeobj__36;
+static PyObject *__pyx_codeobj__41;
 static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__43;
 static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__45;
 static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__47;
 static PyObject *__pyx_codeobj__48;
+static PyObject *__pyx_codeobj__49;
 static PyObject *__pyx_codeobj__50;
+static PyObject *__pyx_codeobj__51;
 static PyObject *__pyx_codeobj__52;
-static PyObject *__pyx_codeobj__55;
-static PyObject *__pyx_codeobj__57;
+static PyObject *__pyx_codeobj__54;
+static PyObject *__pyx_codeobj__58;
+static PyObject *__pyx_codeobj__59;
+static PyObject *__pyx_codeobj__60;
 static PyObject *__pyx_codeobj__61;
 static PyObject *__pyx_codeobj__63;
 static PyObject *__pyx_codeobj__65;
-static PyObject *__pyx_codeobj__67;
+static PyObject *__pyx_codeobj__68;
 static PyObject *__pyx_codeobj__69;
-static PyObject *__pyx_codeobj__71;
 static PyObject *__pyx_codeobj__73;
 static PyObject *__pyx_codeobj__75;
+static PyObject *__pyx_codeobj__76;
 static PyObject *__pyx_codeobj__78;
-static PyObject *__pyx_codeobj__80;
-static PyObject *__pyx_codeobj__82;
-static PyObject *__pyx_codeobj__85;
-static PyObject *__pyx_codeobj__87;
-static PyObject *__pyx_codeobj__89;
-static PyObject *__pyx_codeobj__91;
-static PyObject *__pyx_codeobj__94;
-static PyObject *__pyx_codeobj__97;
-static PyObject *__pyx_codeobj__100;
-static PyObject *__pyx_codeobj__102;
-static PyObject *__pyx_codeobj__109;
-static PyObject *__pyx_codeobj__112;
-static PyObject *__pyx_codeobj__114;
-static PyObject *__pyx_codeobj__116;
-static PyObject *__pyx_codeobj__118;
-static PyObject *__pyx_codeobj__120;
-static PyObject *__pyx_codeobj__122;
-static PyObject *__pyx_codeobj__124;
-static PyObject *__pyx_codeobj__127;
-static PyObject *__pyx_codeobj__129;
-static PyObject *__pyx_codeobj__131;
-static PyObject *__pyx_codeobj__133;
-static PyObject *__pyx_codeobj__135;
+static PyObject *__pyx_codeobj__79;
 /* Late includes */
 
 /* "lxml/html/diff.py":27
@@ -2484,6 +2687,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_1default_markup(PyObject *__pyx_self
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text, PyObject *__pyx_v_version) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -2492,7 +2696,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj_)
   __Pyx_RefNannySetupContext("default_markup", 0);
+  __Pyx_TraceCall("default_markup", __pyx_f[0], 27, 0, __PYX_ERR(0, 27, __pyx_L1_error));
 
   /* "lxml/html/diff.py":28
  * 
@@ -2501,6 +2707,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
  *         html_escape(_unicode(version), 1), text)
  * 
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(0, 28, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "lxml/html/diff.py":29
@@ -2510,6 +2717,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
  * 
  * def html_annotate(doclist, markup=default_markup):
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(0, 29, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_html_escape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 29, __pyx_L1_error)
@@ -2620,6 +2828,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
  *         html_escape(_unicode(version), 1), text)
  * 
  */
+  __Pyx_TraceLine(28,0,__PYX_ERR(0, 28, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_span_title_s_s_span, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -2647,6 +2856,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2661,10 +2871,12 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_default_markup(CYTHON_UNUSED PyObjec
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_75__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__defaults__", 0);
+  __Pyx_TraceCall("__defaults__", __pyx_f[0], 31, 0, __PYX_ERR(0, 31, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -2691,6 +2903,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_75__defaults__(CYTHON_UNUSED PyObjec
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2771,6 +2984,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_v_version = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -2782,7 +2996,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_8 = NULL;
   PyObject *(*__pyx_t_9)(PyObject *);
   int __pyx_t_10;
+  __Pyx_TraceFrameInit(__pyx_codeobj__2)
   __Pyx_RefNannySetupContext("html_annotate", 0);
+  __Pyx_TraceCall("html_annotate", __pyx_f[0], 31, 0, __PYX_ERR(0, 31, __pyx_L1_error));
 
   /* "lxml/html/diff.py":57
  *     # appeared in the document; the annotation attached to the token
@@ -2791,6 +3007,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *                  for doc, version in doclist]
  *     cur_tokens = tokenlist[0]
  */
+  __Pyx_TraceLine(57,0,__PYX_ERR(0, 57, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -2801,6 +3018,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *     cur_tokens = tokenlist[0]
  *     for tokens in tokenlist[1:]:
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(0, 58, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_doclist)) || PyTuple_CheckExact(__pyx_v_doclist)) {
     __pyx_t_2 = __pyx_v_doclist; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
@@ -2898,6 +3116,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *                  for doc, version in doclist]
  *     cur_tokens = tokenlist[0]
  */
+    __Pyx_TraceLine(57,0,__PYX_ERR(0, 57, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_tokenize_annotated); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 57, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -2955,6 +3174,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *     cur_tokens = tokenlist[0]
  *     for tokens in tokenlist[1:]:
  */
+    __Pyx_TraceLine(58,0,__PYX_ERR(0, 58, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_tokenlist = ((PyObject*)__pyx_t_1);
@@ -2967,6 +3187,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *     for tokens in tokenlist[1:]:
  *         html_annotate_merge_annotations(cur_tokens, tokens)
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(0, 59, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_tokenlist, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_cur_tokens = __pyx_t_1;
@@ -2979,6 +3200,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *         html_annotate_merge_annotations(cur_tokens, tokens)
  *         cur_tokens = tokens
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(0, 60, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_tokenlist, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
@@ -3001,6 +3223,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *         cur_tokens = tokens
  * 
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(0, 61, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_html_annotate_merge_annotations); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 61, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = NULL;
@@ -3057,6 +3280,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  * 
  *     # After we've tracked all the tokens, we can combine spans of text
  */
+    __Pyx_TraceLine(62,0,__PYX_ERR(0, 62, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_tokens);
     __Pyx_DECREF_SET(__pyx_v_cur_tokens, __pyx_v_tokens);
 
@@ -3067,6 +3291,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *         html_annotate_merge_annotations(cur_tokens, tokens)
  *         cur_tokens = tokens
  */
+    __Pyx_TraceLine(60,0,__PYX_ERR(0, 60, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -3077,6 +3302,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *     # And finally add markup
  *     result = markup_serialize_tokens(cur_tokens, markup)
  */
+  __Pyx_TraceLine(66,0,__PYX_ERR(0, 66, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_compress_tokens); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = NULL;
@@ -3132,6 +3358,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  *     return ''.join(result).strip()
  * 
  */
+  __Pyx_TraceLine(68,0,__PYX_ERR(0, 68, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_markup_serialize_tokens); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_8 = NULL;
@@ -3189,8 +3416,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
  * 
  * def tokenize_annotated(doc, annotation):
  */
+  __Pyx_TraceLine(69,0,__PYX_ERR(0, 69, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s_, __pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__3, __pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -3243,6 +3471,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_2html_annotate(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_version);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3322,6 +3551,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
   PyObject *__pyx_v_tokens = NULL;
   PyObject *__pyx_v_tok = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -3329,7 +3559,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
   PyObject *__pyx_t_4 = NULL;
   Py_ssize_t __pyx_t_5;
   PyObject *(*__pyx_t_6)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__4)
   __Pyx_RefNannySetupContext("tokenize_annotated", 0);
+  __Pyx_TraceCall("tokenize_annotated", __pyx_f[0], 71, 0, __PYX_ERR(0, 71, __pyx_L1_error));
 
   /* "lxml/html/diff.py":74
  *     """Tokenize a document and add an annotation attribute to each token
@@ -3338,6 +3570,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
  *     for tok in tokens:
  *         tok.annotation = annotation
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tokenize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error)
@@ -3363,6 +3596,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
  *         tok.annotation = annotation
  *     return tokens
  */
+  __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_tokens)) || PyTuple_CheckExact(__pyx_v_tokens)) {
     __pyx_t_4 = __pyx_v_tokens; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
@@ -3412,6 +3646,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
  *     return tokens
  * 
  */
+    __Pyx_TraceLine(76,0,__PYX_ERR(0, 76, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_tok, __pyx_n_s_annotation, __pyx_v_annotation) < 0) __PYX_ERR(0, 76, __pyx_L1_error)
 
     /* "lxml/html/diff.py":75
@@ -3421,6 +3656,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
  *         tok.annotation = annotation
  *     return tokens
  */
+    __Pyx_TraceLine(75,0,__PYX_ERR(0, 75, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -3431,6 +3667,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
  * 
  * def html_annotate_merge_annotations(tokens_old, tokens_new):
  */
+  __Pyx_TraceLine(77,0,__PYX_ERR(0, 77, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_tokens);
   __pyx_r = __pyx_v_tokens;
@@ -3456,6 +3693,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_4tokenize_annotated(CYTHON_UNUSED Py
   __Pyx_XDECREF(__pyx_v_tokens);
   __Pyx_XDECREF(__pyx_v_tok);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3542,6 +3780,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
   PyObject *__pyx_v_eq_old = NULL;
   PyObject *__pyx_v_eq_new = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -3556,7 +3795,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
   PyObject *(*__pyx_t_11)(PyObject *);
   int __pyx_t_12;
   int __pyx_t_13;
+  __Pyx_TraceFrameInit(__pyx_codeobj__5)
   __Pyx_RefNannySetupContext("html_annotate_merge_annotations", 0);
+  __Pyx_TraceCall("html_annotate_merge_annotations", __pyx_f[0], 79, 0, __PYX_ERR(0, 79, __pyx_L1_error));
 
   /* "lxml/html/diff.py":83
  *     tokens in the new document already existed in the old document.
@@ -3565,6 +3806,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *     commands = s.get_opcodes()
  * 
  */
+  __Pyx_TraceLine(83,0,__PYX_ERR(0, 83, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_InsensitiveSequenceMatcher); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
@@ -3585,6 +3827,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  * 
  *     for command, i1, i2, j1, j2 in commands:
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(0, 84, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_get_opcodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
@@ -3615,6 +3858,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *         if command == 'equal':
  *             eq_old = tokens_old[i1:i2]
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(0, 86, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_commands)) || PyTuple_CheckExact(__pyx_v_commands)) {
     __pyx_t_3 = __pyx_v_commands; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
@@ -3734,6 +3978,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *             eq_old = tokens_old[i1:i2]
  *             eq_new = tokens_new[j1:j2]
  */
+    __Pyx_TraceLine(87,0,__PYX_ERR(0, 87, __pyx_L1_error))
     __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_command, __pyx_n_s_equal, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 87, __pyx_L1_error)
     if (__pyx_t_12) {
 
@@ -3744,6 +3989,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *             eq_new = tokens_new[j1:j2]
  *             copy_annotations(eq_old, eq_new)
  */
+      __Pyx_TraceLine(88,0,__PYX_ERR(0, 88, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_tokens_old, 0, 0, &__pyx_v_i1, &__pyx_v_i2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_XDECREF_SET(__pyx_v_eq_old, __pyx_t_2);
@@ -3756,6 +4002,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *             copy_annotations(eq_old, eq_new)
  * 
  */
+      __Pyx_TraceLine(89,0,__PYX_ERR(0, 89, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_tokens_new, 0, 0, &__pyx_v_j1, &__pyx_v_j2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_XDECREF_SET(__pyx_v_eq_new, __pyx_t_2);
@@ -3768,6 +4015,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  * 
  * def copy_annotations(src, dest):
  */
+      __Pyx_TraceLine(90,0,__PYX_ERR(0, 90, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_copy_annotations); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 90, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = NULL;
@@ -3833,6 +4081,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
  *         if command == 'equal':
  *             eq_old = tokens_old[i1:i2]
  */
+    __Pyx_TraceLine(86,0,__PYX_ERR(0, 86, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -3869,6 +4118,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_6html_annotate_merge_annotations(CYT
   __Pyx_XDECREF(__pyx_v_eq_old);
   __Pyx_XDECREF(__pyx_v_eq_new);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3948,6 +4198,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
   PyObject *__pyx_v_src_tok = NULL;
   PyObject *__pyx_v_dest_tok = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   Py_ssize_t __pyx_t_2;
@@ -3958,7 +4209,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
   PyObject *(*__pyx_t_9)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__6)
   __Pyx_RefNannySetupContext("copy_annotations", 0);
+  __Pyx_TraceCall("copy_annotations", __pyx_f[0], 92, 0, __PYX_ERR(0, 92, __pyx_L1_error));
 
   /* "lxml/html/diff.py":96
  *     Copy annotations from the tokens listed in src to the tokens in dest
@@ -3967,6 +4220,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
  *     for src_tok, dest_tok in zip(src, dest):
  *         dest_tok.annotation = src_tok.annotation
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = PyObject_Length(__pyx_v_src); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 96, __pyx_L1_error)
@@ -3985,6 +4239,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
  *         dest_tok.annotation = src_tok.annotation
  * 
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_src);
@@ -4094,6 +4349,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
  * 
  * def compress_tokens(tokens):
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(0, 98, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_src_tok, __pyx_n_s_annotation); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_dest_tok, __pyx_n_s_annotation, __pyx_t_4) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
@@ -4106,6 +4362,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
  *         dest_tok.annotation = src_tok.annotation
  * 
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -4132,6 +4389,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_8copy_annotations(CYTHON_UNUSED PyOb
   __Pyx_XDECREF(__pyx_v_src_tok);
   __Pyx_XDECREF(__pyx_v_dest_tok);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4163,6 +4421,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_v_tok = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -4176,7 +4435,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
   int __pyx_t_10;
   PyObject *__pyx_t_11 = NULL;
   int __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__7)
   __Pyx_RefNannySetupContext("compress_tokens", 0);
+  __Pyx_TraceCall("compress_tokens", __pyx_f[0], 100, 0, __PYX_ERR(0, 100, __pyx_L1_error));
 
   /* "lxml/html/diff.py":105
  *     and they share an annotation
@@ -4185,6 +4446,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *     for tok in tokens[1:]:
  *         if (not result[-1].post_tags and
  */
+  __Pyx_TraceLine(105,0,__PYX_ERR(0, 105, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tokens, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
@@ -4202,7 +4464,8 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *         if (not result[-1].post_tags and
  *             not tok.pre_tags and
  */
-  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_tokens, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_tokens, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
@@ -4254,6 +4517,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *             not tok.pre_tags and
  *             result[-1].annotation == tok.annotation):
  */
+    __Pyx_TraceLine(107,0,__PYX_ERR(0, 107, __pyx_L1_error))
     __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_result, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
@@ -4275,6 +4539,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *             result[-1].annotation == tok.annotation):
  *             compress_merge_back(result, tok)
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(0, 108, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_pre_tags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 108, __pyx_L1_error)
@@ -4293,6 +4558,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *             compress_merge_back(result, tok)
  *         else:
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(0, 109, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_result, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_annotation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
@@ -4315,6 +4581,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *             not tok.pre_tags and
  *             result[-1].annotation == tok.annotation):
  */
+    __Pyx_TraceLine(107,0,__PYX_ERR(0, 107, __pyx_L1_error))
     if (__pyx_t_5) {
 
       /* "lxml/html/diff.py":110
@@ -4324,6 +4591,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *         else:
  *             result.append(tok)
  */
+      __Pyx_TraceLine(110,0,__PYX_ERR(0, 110, __pyx_L1_error))
       __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_compress_merge_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_2 = NULL;
@@ -4390,6 +4658,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *     return result
  * 
  */
+    __Pyx_TraceLine(112,0,__PYX_ERR(0, 112, __pyx_L1_error))
     /*else*/ {
       __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_tok); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 112, __pyx_L1_error)
     }
@@ -4402,6 +4671,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  *         if (not result[-1].post_tags and
  *             not tok.pre_tags and
  */
+    __Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -4412,6 +4682,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
  * 
  * def compress_merge_back(tokens, tok):
  */
+  __Pyx_TraceLine(113,0,__PYX_ERR(0, 113, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -4438,6 +4709,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10compress_tokens(CYTHON_UNUSED PyOb
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XDECREF(__pyx_v_tok);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4518,6 +4790,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_v_merged = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -4527,7 +4800,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__9)
   __Pyx_RefNannySetupContext("compress_merge_back", 0);
+  __Pyx_TraceCall("compress_merge_back", __pyx_f[0], 115, 0, __PYX_ERR(0, 115, __pyx_L1_error));
 
   /* "lxml/html/diff.py":118
  *     """ Merge tok into the last element of tokens (modifying the list of
@@ -4536,6 +4811,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *     if type(last) is not token or type(tok) is not token:
  *         tokens.append(tok)
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(0, 118, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tokens, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_last = __pyx_t_1;
@@ -4548,6 +4824,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         tokens.append(tok)
  *     else:
  */
+  __Pyx_TraceLine(119,0,__PYX_ERR(0, 119, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v_last)) != __pyx_t_1);
@@ -4574,6 +4851,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *     else:
  *         text = _unicode(last)
  */
+    __Pyx_TraceLine(120,0,__PYX_ERR(0, 120, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_tokens, __pyx_v_tok); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 120, __pyx_L1_error)
 
     /* "lxml/html/diff.py":119
@@ -4593,6 +4871,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         if last.trailing_whitespace:
  *             text += last.trailing_whitespace
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(0, 122, __pyx_L1_error))
   /*else*/ {
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
@@ -4649,6 +4928,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *             text += last.trailing_whitespace
  *         text += tok
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(0, 123, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_last, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 123, __pyx_L1_error)
@@ -4662,6 +4942,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         text += tok
  *         merged = token(text,
  */
+      __Pyx_TraceLine(124,0,__PYX_ERR(0, 124, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_last, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_text, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
@@ -4686,6 +4967,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         merged = token(text,
  *                        pre_tags=last.pre_tags,
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(0, 125, __pyx_L1_error))
     __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_text, __pyx_v_tok); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_6);
@@ -4698,6 +4980,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *                        pre_tags=last.pre_tags,
  *                        post_tags=tok.post_tags,
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(0, 126, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
@@ -4713,6 +4996,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *                        post_tags=tok.post_tags,
  *                        trailing_whitespace=tok.trailing_whitespace)
  */
+    __Pyx_TraceLine(127,0,__PYX_ERR(0, 127, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 127, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_last, __pyx_n_s_pre_tags); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 127, __pyx_L1_error)
@@ -4727,6 +5011,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *                        trailing_whitespace=tok.trailing_whitespace)
  *         merged.annotation = last.annotation
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(0, 128, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 128, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_post_tags, __pyx_t_7) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
@@ -4739,6 +5024,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         merged.annotation = last.annotation
  *         tokens[-1] = merged
  */
+    __Pyx_TraceLine(129,0,__PYX_ERR(0, 129, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_trailing_whitespace, __pyx_t_7) < 0) __PYX_ERR(0, 127, __pyx_L1_error)
@@ -4751,6 +5037,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *                        pre_tags=last.pre_tags,
  *                        post_tags=tok.post_tags,
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(0, 126, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -4766,6 +5053,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  *         tokens[-1] = merged
  * 
  */
+    __Pyx_TraceLine(130,0,__PYX_ERR(0, 130, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_last, __pyx_n_s_annotation); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 130, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_merged, __pyx_n_s_annotation, __pyx_t_7) < 0) __PYX_ERR(0, 130, __pyx_L1_error)
@@ -4778,6 +5066,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
  * 
  * def markup_serialize_tokens(tokens, markup_func):
  */
+    __Pyx_TraceLine(131,0,__PYX_ERR(0, 131, __pyx_L1_error))
     if (unlikely(__Pyx_SetItemInt(__pyx_v_tokens, -1L, __pyx_v_merged, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) __PYX_ERR(0, 131, __pyx_L1_error)
   }
   __pyx_L3:;
@@ -4805,6 +5094,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_12compress_merge_back(CYTHON_UNUSED
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XDECREF(__pyx_v_merged);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4901,7 +5191,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_14markup_serialize_tokens(CYTHON_UNU
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_markup_func);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_markup_func);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_16generator, __pyx_codeobj__3, (PyObject *) __pyx_cur_scope, __pyx_n_s_markup_serialize_tokens, __pyx_n_s_markup_serialize_tokens, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 133, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_16generator, __pyx_codeobj__10, (PyObject *) __pyx_cur_scope, __pyx_n_s_markup_serialize_tokens, __pyx_n_s_markup_serialize_tokens, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 133, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -4921,6 +5211,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
 {
   struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct__markup_serialize_tokens *__pyx_cur_scope = ((struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct__markup_serialize_tokens *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -4935,12 +5226,15 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
   int __pyx_t_12;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("markup_serialize_tokens", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__10)
+  __Pyx_TraceCall("markup_serialize_tokens", __pyx_f[0], 133, 0, __PYX_ERR(0, 133, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
     case 2: goto __pyx_L10_resume_from_yield;
     case 3: goto __pyx_L13_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -4954,6 +5248,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         for pre in token.pre_tags:
  *             yield pre
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(0, 138, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_tokens)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_tokens)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_tokens; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -5005,6 +5300,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *             yield pre
  *         html = token.html()
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(0, 139, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_pre_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
@@ -5059,6 +5355,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         html = token.html()
  *         html = markup_func(html, token.annotation)
  */
+      __Pyx_TraceLine(140,0,__PYX_ERR(0, 140, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pre);
       __pyx_r = __pyx_cur_scope->__pyx_v_pre;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -5070,6 +5367,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -5095,6 +5393,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *             yield pre
  *         html = token.html()
  */
+      __Pyx_TraceLine(139,0,__PYX_ERR(0, 139, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -5105,6 +5404,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         html = markup_func(html, token.annotation)
  *         if token.trailing_whitespace:
  */
+    __Pyx_TraceLine(141,0,__PYX_ERR(0, 141, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_html); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_8 = NULL;
@@ -5137,6 +5437,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         if token.trailing_whitespace:
  *             html += token.trailing_whitespace
  */
+    __Pyx_TraceLine(142,0,__PYX_ERR(0, 142, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_annotation); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_cur_scope->__pyx_v_markup_func);
@@ -5199,6 +5500,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *             html += token.trailing_whitespace
  *         yield html
  */
+    __Pyx_TraceLine(143,0,__PYX_ERR(0, 143, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
@@ -5212,6 +5514,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         yield html
  *         for post in token.post_tags:
  */
+      __Pyx_TraceLine(144,0,__PYX_ERR(0, 144, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_html, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 144, __pyx_L1_error)
@@ -5238,6 +5541,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         for post in token.post_tags:
  *             yield post
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(0, 145, __pyx_L1_error))
     __Pyx_INCREF(__pyx_cur_scope->__pyx_v_html);
     __pyx_r = __pyx_cur_scope->__pyx_v_html;
     __Pyx_XGIVEREF(__pyx_t_1);
@@ -5245,6 +5549,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
     __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
     __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -5265,6 +5570,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *             yield post
  * 
  */
+    __Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
@@ -5319,6 +5625,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  * 
  * 
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(0, 147, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_post);
       __pyx_r = __pyx_cur_scope->__pyx_v_post;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -5330,6 +5637,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -5355,6 +5663,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *             yield post
  * 
  */
+      __Pyx_TraceLine(146,0,__PYX_ERR(0, 146, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -5365,6 +5674,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
  *         for pre in token.pre_tags:
  *             yield pre
  */
+    __Pyx_TraceLine(138,0,__PYX_ERR(0, 138, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -5393,6 +5703,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_16generator(__pyx_CoroutineObject *_
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5473,13 +5784,16 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_v_new_html_tokens = NULL;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__11)
   __Pyx_RefNannySetupContext("htmldiff", 0);
+  __Pyx_TraceCall("htmldiff", __pyx_f[0], 154, 0, __PYX_ERR(0, 154, __pyx_L1_error));
 
   /* "lxml/html/diff.py":171
  *     are noted inside the tag itself when there are changes.
@@ -5488,6 +5802,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
  *     new_html_tokens = tokenize(new_html)
  *     result = htmldiff_tokens(old_html_tokens, new_html_tokens)
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(0, 171, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_tokenize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -5543,6 +5858,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
  *     result = htmldiff_tokens(old_html_tokens, new_html_tokens)
  *     result = ''.join(result).strip()
  */
+  __Pyx_TraceLine(172,0,__PYX_ERR(0, 172, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_tokenize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = NULL;
@@ -5598,6 +5914,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
  *     result = ''.join(result).strip()
  *     return fixup_ins_del_tags(result)
  */
+  __Pyx_TraceLine(173,0,__PYX_ERR(0, 173, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_htmldiff_tokens); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -5655,7 +5972,8 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
  *     return fixup_ins_del_tags(result)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Join(__pyx_kp_s_, __pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __Pyx_TraceLine(174,0,__PYX_ERR(0, 174, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_PyString_Join(__pyx_kp_s__3, __pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -5688,6 +6006,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
  * 
  * def htmldiff_tokens(html1_tokens, html2_tokens):
  */
+  __Pyx_TraceLine(175,0,__PYX_ERR(0, 175, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_fixup_ins_del_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -5759,6 +6078,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_17htmldiff(CYTHON_UNUSED PyObject *_
   __Pyx_XDECREF(__pyx_v_new_html_tokens);
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5846,6 +6166,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
   PyObject *__pyx_v_ins_tokens = NULL;
   PyObject *__pyx_v_del_tokens = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -5861,7 +6182,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
   int __pyx_t_12;
   int __pyx_t_13;
   int __pyx_t_14;
+  __Pyx_TraceFrameInit(__pyx_codeobj__12)
   __Pyx_RefNannySetupContext("htmldiff_tokens", 0);
+  __Pyx_TraceCall("htmldiff_tokens", __pyx_f[0], 177, 0, __PYX_ERR(0, 177, __pyx_L1_error));
 
   /* "lxml/html/diff.py":194
  *     # fuzzy where in the new document the old text would have gone.
@@ -5870,6 +6193,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *     commands = s.get_opcodes()
  *     result = []
  */
+  __Pyx_TraceLine(194,0,__PYX_ERR(0, 194, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_InsensitiveSequenceMatcher); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error)
@@ -5890,6 +6214,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *     result = []
  *     for command, i1, i2, j1, j2 in commands:
  */
+  __Pyx_TraceLine(195,0,__PYX_ERR(0, 195, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_get_opcodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
@@ -5920,6 +6245,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *     for command, i1, i2, j1, j2 in commands:
  *         if command == 'equal':
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(0, 196, __pyx_L1_error))
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_result = __pyx_t_3;
@@ -5932,6 +6258,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *         if command == 'equal':
  *             result.extend(expand_tokens(html2_tokens[j1:j2], equal=True))
  */
+  __Pyx_TraceLine(197,0,__PYX_ERR(0, 197, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_commands)) || PyTuple_CheckExact(__pyx_v_commands)) {
     __pyx_t_3 = __pyx_v_commands; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
@@ -6051,6 +6378,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             result.extend(expand_tokens(html2_tokens[j1:j2], equal=True))
  *             continue
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(0, 198, __pyx_L1_error))
     __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_command, __pyx_n_s_equal, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 198, __pyx_L1_error)
     if (__pyx_t_12) {
 
@@ -6061,6 +6389,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             continue
  *         if command == 'insert' or command == 'replace':
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(0, 199, __pyx_L1_error))
       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_extend); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 199, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand_tokens); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L1_error)
@@ -6135,6 +6464,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *         if command == 'insert' or command == 'replace':
  *             ins_tokens = expand_tokens(html2_tokens[j1:j2])
  */
+      __Pyx_TraceLine(200,0,__PYX_ERR(0, 200, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/html/diff.py":198
@@ -6153,6 +6483,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             ins_tokens = expand_tokens(html2_tokens[j1:j2])
  *             merge_insert(ins_tokens, result)
  */
+    __Pyx_TraceLine(201,0,__PYX_ERR(0, 201, __pyx_L1_error))
     __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_command, __pyx_n_s_insert, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 201, __pyx_L1_error)
     if (!__pyx_t_13) {
     } else {
@@ -6171,6 +6502,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             merge_insert(ins_tokens, result)
  *         if command == 'delete' or command == 'replace':
  */
+      __Pyx_TraceLine(202,0,__PYX_ERR(0, 202, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand_tokens); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 202, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_html2_tokens, 0, 0, &__pyx_v_j1, &__pyx_v_j2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 202, __pyx_L1_error)
@@ -6231,6 +6563,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *         if command == 'delete' or command == 'replace':
  *             del_tokens = expand_tokens(html1_tokens[i1:i2])
  */
+      __Pyx_TraceLine(203,0,__PYX_ERR(0, 203, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_merge_insert); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 203, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_7 = NULL;
@@ -6296,6 +6629,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             del_tokens = expand_tokens(html1_tokens[i1:i2])
  *             merge_delete(del_tokens, result)
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(0, 204, __pyx_L1_error))
     __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_command, __pyx_n_s_delete, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 204, __pyx_L1_error)
     if (!__pyx_t_13) {
     } else {
@@ -6314,6 +6648,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *             merge_delete(del_tokens, result)
  *     # If deletes were inserted directly as <del> then we'd have an
  */
+      __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand_tokens); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 205, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_html1_tokens, 0, 0, &__pyx_v_i1, &__pyx_v_i2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 205, __pyx_L1_error)
@@ -6374,6 +6709,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *     # If deletes were inserted directly as <del> then we'd have an
  *     # invalid document at this point.  Instead we put in special
  */
+      __Pyx_TraceLine(206,0,__PYX_ERR(0, 206, __pyx_L1_error))
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_merge_delete); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 206, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_1 = NULL;
@@ -6439,6 +6775,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  *         if command == 'equal':
  *             result.extend(expand_tokens(html2_tokens[j1:j2], equal=True))
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(0, 197, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6450,6 +6787,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  * 
  *     return result
  */
+  __Pyx_TraceLine(211,0,__PYX_ERR(0, 211, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cleanup_delete); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_9 = NULL;
@@ -6505,6 +6843,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
  * 
  * def expand_tokens(tokens, equal=False):
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(0, 213, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -6542,6 +6881,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_19htmldiff_tokens(CYTHON_UNUSED PyOb
   __Pyx_XDECREF(__pyx_v_ins_tokens);
   __Pyx_XDECREF(__pyx_v_del_tokens);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6642,7 +6982,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_21expand_tokens(CYTHON_UNUSED PyObje
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_equal);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_equal);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_23generator1, __pyx_codeobj__4, (PyObject *) __pyx_cur_scope, __pyx_n_s_expand_tokens, __pyx_n_s_expand_tokens, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 215, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_23generator1, __pyx_codeobj__13, (PyObject *) __pyx_cur_scope, __pyx_n_s_expand_tokens, __pyx_n_s_expand_tokens, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 215, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -6662,6 +7002,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
 {
   struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct_1_expand_tokens *__pyx_cur_scope = ((struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct_1_expand_tokens *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
   PyObject *(*__pyx_t_3)(PyObject *);
@@ -6675,6 +7016,8 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("expand_tokens", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__13)
+  __Pyx_TraceCall("expand_tokens", __pyx_f[0], 215, 0, __PYX_ERR(0, 215, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L8_resume_from_yield;
@@ -6682,6 +7025,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
     case 3: goto __pyx_L14_resume_from_yield;
     case 4: goto __pyx_L17_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -6695,6 +7039,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *         for pre in token.pre_tags:
  *             yield pre
  */
+  __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_tokens)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_tokens)) {
     __pyx_t_1 = __pyx_cur_scope->__pyx_v_tokens; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -6746,6 +7091,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             yield pre
  *         if not equal or not token.hide_when_equal:
  */
+    __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_pre_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
@@ -6800,6 +7146,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *         if not equal or not token.hide_when_equal:
  *             if token.trailing_whitespace:
  */
+      __Pyx_TraceLine(221,0,__PYX_ERR(0, 221, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pre);
       __pyx_r = __pyx_cur_scope->__pyx_v_pre;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -6811,6 +7158,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -6836,6 +7184,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             yield pre
  *         if not equal or not token.hide_when_equal:
  */
+      __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -6846,6 +7195,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             if token.trailing_whitespace:
  *                 yield token.html() + token.trailing_whitespace
  */
+    __Pyx_TraceLine(222,0,__PYX_ERR(0, 222, __pyx_L1_error))
     __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_equal); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 222, __pyx_L1_error)
     __pyx_t_10 = ((!__pyx_t_9) != 0);
     if (!__pyx_t_10) {
@@ -6869,6 +7219,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *                 yield token.html() + token.trailing_whitespace
  *             else:
  */
+      __Pyx_TraceLine(223,0,__PYX_ERR(0, 223, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 223, __pyx_L1_error)
@@ -6882,6 +7233,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             else:
  *                 yield token.html()
  */
+        __Pyx_TraceLine(224,0,__PYX_ERR(0, 224, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_html); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_11 = NULL;
@@ -6915,6 +7267,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
         __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
         __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
         __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_TraceReturn(__pyx_r, 0);
         __Pyx_RefNannyFinishContext();
         __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
         /* return from generator, yielding value */
@@ -6945,6 +7298,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *         for post in token.post_tags:
  *             yield post
  */
+      __Pyx_TraceLine(226,0,__PYX_ERR(0, 226, __pyx_L1_error))
       /*else*/ {
         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_html); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
@@ -6973,6 +7327,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
         __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
         __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
         __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_TraceReturn(__pyx_r, 0);
         __Pyx_RefNannyFinishContext();
         __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
         /* return from generator, yielding value */
@@ -7004,6 +7359,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             yield post
  * 
  */
+    __Pyx_TraceLine(227,0,__PYX_ERR(0, 227, __pyx_L1_error))
     __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_token, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 227, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
@@ -7058,6 +7414,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  * 
  * def merge_insert(ins_chunks, doc):
  */
+      __Pyx_TraceLine(228,0,__PYX_ERR(0, 228, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_post);
       __pyx_r = __pyx_cur_scope->__pyx_v_post;
       __Pyx_XGIVEREF(__pyx_t_1);
@@ -7069,6 +7426,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -7094,6 +7452,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *             yield post
  * 
  */
+      __Pyx_TraceLine(227,0,__PYX_ERR(0, 227, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -7104,6 +7463,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
  *         for pre in token.pre_tags:
  *             yield pre
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
@@ -7130,6 +7490,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_23generator1(__pyx_CoroutineObject *
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7210,6 +7571,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_balanced = NULL;
   PyObject *__pyx_v_unbalanced_end = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -7222,7 +7584,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
   int __pyx_t_9;
   Py_ssize_t __pyx_t_10;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__14)
   __Pyx_RefNannySetupContext("merge_insert", 0);
+  __Pyx_TraceCall("merge_insert", __pyx_f[0], 230, 0, __PYX_ERR(0, 230, __pyx_L1_error));
 
   /* "lxml/html/diff.py":236
  *     # (we assume there is accompanying markup later or earlier in the
@@ -7231,6 +7595,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     doc.extend(unbalanced_start)
  *     if doc and not doc[-1].endswith(' '):
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(0, 236, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_unbalanced); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -7343,6 +7708,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     if doc and not doc[-1].endswith(' '):
  *         # Fix up the case where the word before the insert didn't end with
  */
+  __Pyx_TraceLine(237,0,__PYX_ERR(0, 237, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -7397,6 +7763,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *         # Fix up the case where the word before the insert didn't end with
  *         # a space
  */
+  __Pyx_TraceLine(238,0,__PYX_ERR(0, 238, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_doc); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 238, __pyx_L1_error)
   if (__pyx_t_8) {
   } else {
@@ -7408,7 +7775,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 238, __pyx_L1_error)
@@ -7425,10 +7792,11 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     doc.append('<ins>')
  *     if balanced and balanced[-1].endswith(' '):
  */
+    __Pyx_TraceLine(241,0,__PYX_ERR(0, 241, __pyx_L1_error))
     __pyx_t_10 = -1L;
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_doc, __pyx_t_10, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_kp_s__5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_kp_s__15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (unlikely(__Pyx_SetItemInt(__pyx_v_doc, __pyx_t_10, __pyx_t_3, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(0, 241, __pyx_L1_error)
@@ -7450,6 +7818,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     if balanced and balanced[-1].endswith(' '):
  *         # We move space outside of </ins>
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(0, 242, __pyx_L1_error))
   __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_kp_s_ins); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 242, __pyx_L1_error)
 
   /* "lxml/html/diff.py":243
@@ -7459,6 +7828,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *         # We move space outside of </ins>
  *         balanced[-1] = balanced[-1][:-1]
  */
+  __Pyx_TraceLine(243,0,__PYX_ERR(0, 243, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_balanced); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
   if (__pyx_t_9) {
   } else {
@@ -7470,7 +7840,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_endswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 243, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 243, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
@@ -7486,9 +7856,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     doc.extend(balanced)
  *     doc.append('</ins> ')
  */
+    __Pyx_TraceLine(245,0,__PYX_ERR(0, 245, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_balanced, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, -1L, NULL, NULL, &__pyx_slice__8, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, -1L, NULL, NULL, &__pyx_slice__18, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (unlikely(__Pyx_SetItemInt(__pyx_v_balanced, -1L, __pyx_t_1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) __PYX_ERR(0, 245, __pyx_L1_error)
@@ -7510,6 +7881,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     doc.append('</ins> ')
  *     doc.extend(unbalanced_end)
  */
+  __Pyx_TraceLine(246,0,__PYX_ERR(0, 246, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
@@ -7564,6 +7936,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  *     doc.extend(unbalanced_end)
  * 
  */
+  __Pyx_TraceLine(247,0,__PYX_ERR(0, 247, __pyx_L1_error))
   __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_kp_s_ins_2); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 247, __pyx_L1_error)
 
   /* "lxml/html/diff.py":248
@@ -7573,6 +7946,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
  * 
  * # These are sentinals to represent the start and end of a <del>
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(0, 248, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 248, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -7644,6 +8018,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_24merge_insert(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_balanced);
   __Pyx_XDECREF(__pyx_v_unbalanced_end);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7721,13 +8096,16 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_27merge_delete(PyObject *__pyx_self,
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_26merge_delete(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_del_chunks, PyObject *__pyx_v_doc) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__19)
   __Pyx_RefNannySetupContext("merge_delete", 0);
+  __Pyx_TraceCall("merge_delete", __pyx_f[0], 262, 0, __PYX_ERR(0, 262, __pyx_L1_error));
 
   /* "lxml/html/diff.py":266
  *     list of text chunks) with marker to show it is a delete.
@@ -7736,6 +8114,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26merge_delete(CYTHON_UNUSED PyObjec
  *     doc.extend(del_chunks)
  *     doc.append(DEL_END)
  */
+  __Pyx_TraceLine(266,0,__PYX_ERR(0, 266, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_START); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 266, __pyx_L1_error)
@@ -7748,6 +8127,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26merge_delete(CYTHON_UNUSED PyObjec
  *     doc.append(DEL_END)
  * 
  */
+  __Pyx_TraceLine(267,0,__PYX_ERR(0, 267, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
@@ -7802,6 +8182,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26merge_delete(CYTHON_UNUSED PyObjec
  * 
  * def cleanup_delete(chunks):
  */
+  __Pyx_TraceLine(268,0,__PYX_ERR(0, 268, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_END); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 268, __pyx_L1_error)
@@ -7827,6 +8208,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26merge_delete(CYTHON_UNUSED PyObjec
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7863,6 +8245,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
   PyObject *__pyx_v_unbalanced_end = NULL;
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -7879,7 +8262,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
   int __pyx_t_13;
   Py_ssize_t __pyx_t_14;
   int __pyx_t_15;
+  __Pyx_TraceFrameInit(__pyx_codeobj__20)
   __Pyx_RefNannySetupContext("cleanup_delete", 0);
+  __Pyx_TraceCall("cleanup_delete", __pyx_f[0], 270, 0, __PYX_ERR(0, 270, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_chunks);
 
   /* "lxml/html/diff.py":279
@@ -7889,6 +8274,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         # Find a pending DEL_START/DEL_END, splitting the document
  *         # into stuff-preceding-DEL_START, stuff-inside, and
  */
+  __Pyx_TraceLine(279,0,__PYX_ERR(0, 279, __pyx_L1_error))
   while (1) {
 
     /* "lxml/html/diff.py":283
@@ -7898,6 +8284,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *             pre_delete, delete, post_delete = split_delete(chunks)
  *         except NoDeletes:
  */
+    __Pyx_TraceLine(283,0,__PYX_ERR(0, 283, __pyx_L5_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -7914,6 +8301,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         except NoDeletes:
  *             # Nothing found, we've cleaned up the entire doc
  */
+        __Pyx_TraceLine(284,0,__PYX_ERR(0, 284, __pyx_L5_error))
         __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_delete); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_6 = NULL;
@@ -8045,6 +8433,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *             # Nothing found, we've cleaned up the entire doc
  *             break
  */
+      __Pyx_TraceLine(285,0,__PYX_ERR(0, 285, __pyx_L7_except_error))
       __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7);
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoDeletes); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -8066,6 +8455,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         # The stuff-inside-DEL_START/END may not be well balanced
  *         # markup.  First we figure out what unbalanced portions there are:
  */
+        __Pyx_TraceLine(287,0,__PYX_ERR(0, 287, __pyx_L7_except_error))
         goto __pyx_L15_except_break;
         __pyx_L15_except_break:;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -8104,6 +8494,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         # Then we move the span forward and/or backward based on these
  *         # unbalanced portions:
  */
+    __Pyx_TraceLine(290,0,__PYX_ERR(0, 290, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_unbalanced); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 290, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = NULL;
@@ -8216,6 +8607,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         locate_unbalanced_end(unbalanced_end, pre_delete, post_delete)
  *         doc = pre_delete
  */
+    __Pyx_TraceLine(293,0,__PYX_ERR(0, 293, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_locate_unbalanced_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 293, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_5 = NULL;
@@ -8275,6 +8667,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         doc = pre_delete
  *         if doc and not doc[-1].endswith(' '):
  */
+    __Pyx_TraceLine(294,0,__PYX_ERR(0, 294, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_locate_unbalanced_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -8334,6 +8727,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         if doc and not doc[-1].endswith(' '):
  *             # Fix up case where the word before us didn't have a trailing space
  */
+    __Pyx_TraceLine(295,0,__PYX_ERR(0, 295, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_pre_delete);
     __Pyx_XDECREF_SET(__pyx_v_doc, __pyx_v_pre_delete);
 
@@ -8344,6 +8738,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *             # Fix up case where the word before us didn't have a trailing space
  *             doc[-1] += ' '
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(0, 296, __pyx_L1_error))
     __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_doc); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 296, __pyx_L1_error)
     if (__pyx_t_12) {
     } else {
@@ -8355,7 +8750,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_endswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 296, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 296, __pyx_L1_error)
@@ -8372,10 +8767,11 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         doc.append('<del>')
  *         if balanced and balanced[-1].endswith(' '):
  */
+      __Pyx_TraceLine(298,0,__PYX_ERR(0, 298, __pyx_L1_error))
       __pyx_t_14 = -1L;
       __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_doc, __pyx_t_14, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_kp_s__5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 298, __pyx_L1_error)
+      __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_kp_s__15); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 298, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (unlikely(__Pyx_SetItemInt(__pyx_v_doc, __pyx_t_14, __pyx_t_7, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(0, 298, __pyx_L1_error)
@@ -8397,6 +8793,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         if balanced and balanced[-1].endswith(' '):
  *             # We move space outside of </del>
  */
+    __Pyx_TraceLine(299,0,__PYX_ERR(0, 299, __pyx_L1_error))
     __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_kp_s_del); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 299, __pyx_L1_error)
 
     /* "lxml/html/diff.py":300
@@ -8406,6 +8803,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *             # We move space outside of </del>
  *             balanced[-1] = balanced[-1][:-1]
  */
+    __Pyx_TraceLine(300,0,__PYX_ERR(0, 300, __pyx_L1_error))
     __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_balanced); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 300, __pyx_L1_error)
     if (__pyx_t_13) {
     } else {
@@ -8417,7 +8815,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 300, __pyx_L1_error)
@@ -8433,9 +8831,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         doc.extend(balanced)
  *         doc.append('</del> ')
  */
+      __Pyx_TraceLine(302,0,__PYX_ERR(0, 302, __pyx_L1_error))
       __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_balanced, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 302, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_7, 0, -1L, NULL, NULL, &__pyx_slice__11, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_7, 0, -1L, NULL, NULL, &__pyx_slice__23, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       if (unlikely(__Pyx_SetItemInt(__pyx_v_balanced, -1L, __pyx_t_4, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) __PYX_ERR(0, 302, __pyx_L1_error)
@@ -8457,6 +8856,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         doc.append('</del> ')
  *         doc.extend(post_delete)
  */
+    __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 303, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_5 = NULL;
@@ -8511,6 +8911,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         doc.extend(post_delete)
  *         chunks = doc
  */
+    __Pyx_TraceLine(304,0,__PYX_ERR(0, 304, __pyx_L1_error))
     __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_doc, __pyx_kp_s_del_2); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 304, __pyx_L1_error)
 
     /* "lxml/html/diff.py":305
@@ -8520,6 +8921,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *         chunks = doc
  *     return chunks
  */
+    __Pyx_TraceLine(305,0,__PYX_ERR(0, 305, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_extend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 305, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = NULL;
@@ -8574,6 +8976,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  *     return chunks
  * 
  */
+    __Pyx_TraceLine(306,0,__PYX_ERR(0, 306, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_doc);
     __Pyx_DECREF_SET(__pyx_v_chunks, __pyx_v_doc);
   }
@@ -8586,6 +8989,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
  * 
  * def split_unbalanced(chunks):
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(0, 307, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_chunks);
   __pyx_r = __pyx_v_chunks;
@@ -8618,6 +9022,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_28cleanup_delete(CYTHON_UNUSED PyObj
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_chunks);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8656,6 +9061,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
   PyObject *__pyx_v_pos = NULL;
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -8672,7 +9078,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
   Py_ssize_t __pyx_t_13;
   PyObject *__pyx_t_14 = NULL;
   PyObject *__pyx_t_15 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__24)
   __Pyx_RefNannySetupContext("split_unbalanced", 0);
+  __Pyx_TraceCall("split_unbalanced", __pyx_f[0], 309, 0, __PYX_ERR(0, 309, __pyx_L1_error));
 
   /* "lxml/html/diff.py":317
  *     tags that are closed but were not opened.  Extracting these might
@@ -8681,6 +9089,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     end = []
  *     tag_stack = []
  */
+  __Pyx_TraceLine(317,0,__PYX_ERR(0, 317, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_start = ((PyObject*)__pyx_t_1);
@@ -8693,6 +9102,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     tag_stack = []
  *     balanced = []
  */
+  __Pyx_TraceLine(318,0,__PYX_ERR(0, 318, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_end = ((PyObject*)__pyx_t_1);
@@ -8705,6 +9115,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     balanced = []
  *     for chunk in chunks:
  */
+  __Pyx_TraceLine(319,0,__PYX_ERR(0, 319, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tag_stack = ((PyObject*)__pyx_t_1);
@@ -8717,6 +9128,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     for chunk in chunks:
  *         if not chunk.startswith('<'):
  */
+  __Pyx_TraceLine(320,0,__PYX_ERR(0, 320, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_balanced = ((PyObject*)__pyx_t_1);
@@ -8729,6 +9141,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         if not chunk.startswith('<'):
  *             balanced.append(chunk)
  */
+  __Pyx_TraceLine(321,0,__PYX_ERR(0, 321, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_chunks)) || PyTuple_CheckExact(__pyx_v_chunks)) {
     __pyx_t_1 = __pyx_v_chunks; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -8778,9 +9191,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             balanced.append(chunk)
  *             continue
  */
+    __Pyx_TraceLine(322,0,__PYX_ERR(0, 322, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 322, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 322, __pyx_L1_error)
@@ -8795,6 +9209,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             continue
  *         endtag = chunk[1] == '/'
  */
+      __Pyx_TraceLine(323,0,__PYX_ERR(0, 323, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_balanced, __pyx_v_chunk); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L1_error)
 
       /* "lxml/html/diff.py":324
@@ -8804,6 +9219,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         endtag = chunk[1] == '/'
  *         name = chunk.split()[0].strip('<>/')
  */
+      __Pyx_TraceLine(324,0,__PYX_ERR(0, 324, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/html/diff.py":322
@@ -8822,9 +9238,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         name = chunk.split()[0].strip('<>/')
  *         if name in empty_tags:
  */
+    __Pyx_TraceLine(325,0,__PYX_ERR(0, 325, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_chunk, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 325, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_kp_s__14, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error)
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_kp_s__27, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF_SET(__pyx_v_endtag, __pyx_t_4);
     __pyx_t_4 = 0;
@@ -8836,6 +9253,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         if name in empty_tags:
  *             balanced.append(chunk)
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(0, 326, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_9 = NULL;
@@ -8862,7 +9280,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 326, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
@@ -8875,6 +9293,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             balanced.append(chunk)
  *             continue
  */
+    __Pyx_TraceLine(327,0,__PYX_ERR(0, 327, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_empty_tags); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 327, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_5, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 327, __pyx_L1_error)
@@ -8889,6 +9308,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             continue
  *         if endtag:
  */
+      __Pyx_TraceLine(328,0,__PYX_ERR(0, 328, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_balanced, __pyx_v_chunk); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 328, __pyx_L1_error)
 
       /* "lxml/html/diff.py":329
@@ -8898,6 +9318,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         if endtag:
  *             if tag_stack and tag_stack[-1][0] == name:
  */
+      __Pyx_TraceLine(329,0,__PYX_ERR(0, 329, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/html/diff.py":327
@@ -8916,6 +9337,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             if tag_stack and tag_stack[-1][0] == name:
  *                 balanced.append(chunk)
  */
+    __Pyx_TraceLine(330,0,__PYX_ERR(0, 330, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_endtag); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 330, __pyx_L1_error)
     if (__pyx_t_6) {
 
@@ -8926,6 +9348,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 balanced.append(chunk)
  *                 name, pos, tag = tag_stack.pop()
  */
+      __Pyx_TraceLine(331,0,__PYX_ERR(0, 331, __pyx_L1_error))
       __pyx_t_7 = (PyList_GET_SIZE(__pyx_v_tag_stack) != 0);
       if (__pyx_t_7) {
       } else {
@@ -8952,6 +9375,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 name, pos, tag = tag_stack.pop()
  *                 balanced[pos] = tag
  */
+        __Pyx_TraceLine(332,0,__PYX_ERR(0, 332, __pyx_L1_error))
         __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_balanced, __pyx_v_chunk); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
 
         /* "lxml/html/diff.py":333
@@ -8961,6 +9385,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 balanced[pos] = tag
  *             elif tag_stack:
  */
+        __Pyx_TraceLine(333,0,__PYX_ERR(0, 333, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyList_Pop(__pyx_v_tag_stack); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -9030,6 +9455,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             elif tag_stack:
  *                 start.extend([tag for name, pos, tag in tag_stack])
  */
+        __Pyx_TraceLine(334,0,__PYX_ERR(0, 334, __pyx_L1_error))
         if (unlikely(PyObject_SetItem(__pyx_v_balanced, __pyx_v_pos, __pyx_v_tag) < 0)) __PYX_ERR(0, 334, __pyx_L1_error)
 
         /* "lxml/html/diff.py":331
@@ -9049,6 +9475,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 start.extend([tag for name, pos, tag in tag_stack])
  *                 tag_stack = []
  */
+      __Pyx_TraceLine(335,0,__PYX_ERR(0, 335, __pyx_L1_error))
       __pyx_t_6 = (PyList_GET_SIZE(__pyx_v_tag_stack) != 0);
       if (__pyx_t_6) {
 
@@ -9059,6 +9486,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 tag_stack = []
  *                 end.append(chunk)
  */
+        __Pyx_TraceLine(336,0,__PYX_ERR(0, 336, __pyx_L1_error))
         __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_10 = __pyx_v_tag_stack; __Pyx_INCREF(__pyx_t_10); __pyx_t_13 = 0;
@@ -9142,6 +9570,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *                 end.append(chunk)
  *             else:
  */
+        __Pyx_TraceLine(337,0,__PYX_ERR(0, 337, __pyx_L1_error))
         __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF_SET(__pyx_v_tag_stack, ((PyObject*)__pyx_t_5));
@@ -9154,6 +9583,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             else:
  *                 end.append(chunk)
  */
+        __Pyx_TraceLine(338,0,__PYX_ERR(0, 338, __pyx_L1_error))
         __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_end, __pyx_v_chunk); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error)
 
         /* "lxml/html/diff.py":335
@@ -9173,6 +9603,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         else:
  *             tag_stack.append((name, len(balanced), chunk))
  */
+      __Pyx_TraceLine(340,0,__PYX_ERR(0, 340, __pyx_L1_error))
       /*else*/ {
         __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_end, __pyx_v_chunk); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 340, __pyx_L1_error)
       }
@@ -9195,6 +9626,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *             balanced.append(None)
  *     start.extend(
  */
+    __Pyx_TraceLine(342,0,__PYX_ERR(0, 342, __pyx_L1_error))
     /*else*/ {
       __pyx_t_13 = PyList_GET_SIZE(__pyx_v_balanced); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 342, __pyx_L1_error)
       __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 342, __pyx_L1_error)
@@ -9220,6 +9652,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     start.extend(
  *         [chunk for name, pos, chunk in tag_stack])
  */
+      __Pyx_TraceLine(343,0,__PYX_ERR(0, 343, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_balanced, Py_None); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 343, __pyx_L1_error)
     }
     __pyx_L7:;
@@ -9231,6 +9664,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         if not chunk.startswith('<'):
  *             balanced.append(chunk)
  */
+    __Pyx_TraceLine(321,0,__PYX_ERR(0, 321, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9242,6 +9676,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     balanced = [chunk for chunk in balanced if chunk is not None]
  *     return start, balanced, end
  */
+  __Pyx_TraceLine(345,0,__PYX_ERR(0, 345, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_10 = __pyx_v_tag_stack; __Pyx_INCREF(__pyx_t_10); __pyx_t_2 = 0;
@@ -9323,6 +9758,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *         [chunk for name, pos, chunk in tag_stack])
  *     balanced = [chunk for chunk in balanced if chunk is not None]
  */
+  __Pyx_TraceLine(344,0,__PYX_ERR(0, 344, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyList_Extend(__pyx_v_start, __pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 344, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -9333,6 +9769,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  *     return start, balanced, end
  * 
  */
+  __Pyx_TraceLine(346,0,__PYX_ERR(0, 346, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_10 = __pyx_v_balanced; __Pyx_INCREF(__pyx_t_10); __pyx_t_2 = 0;
@@ -9363,6 +9800,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
  * 
  * def split_delete(chunks):
  */
+  __Pyx_TraceLine(347,0,__PYX_ERR(0, 347, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -9410,6 +9848,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_30split_unbalanced(CYTHON_UNUSED PyO
   __Pyx_XDECREF(__pyx_v_pos);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9441,6 +9880,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_pos = NULL;
   PyObject *__pyx_v_pos2 = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -9451,7 +9891,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
   int __pyx_t_9;
+  __Pyx_TraceFrameInit(__pyx_codeobj__30)
   __Pyx_RefNannySetupContext("split_delete", 0);
+  __Pyx_TraceCall("split_delete", __pyx_f[0], 349, 0, __PYX_ERR(0, 349, __pyx_L1_error));
 
   /* "lxml/html/diff.py":354
  *     more DEL_STARTs in stuff_after_DEL_END).  Raises NoDeletes if
@@ -9460,6 +9902,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  *         pos = chunks.index(DEL_START)
  *     except ValueError:
  */
+  __Pyx_TraceLine(354,0,__PYX_ERR(0, 354, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -9476,6 +9919,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  *     except ValueError:
  *         raise NoDeletes
  */
+      __Pyx_TraceLine(355,0,__PYX_ERR(0, 355, __pyx_L3_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunks, __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 355, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_START); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 355, __pyx_L3_error)
@@ -9555,6 +9999,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  *         raise NoDeletes
  *     pos2 = chunks.index(DEL_END)
  */
+    __Pyx_TraceLine(356,0,__PYX_ERR(0, 356, __pyx_L5_except_error))
     __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
     if (__pyx_t_9) {
       __Pyx_AddTraceback("lxml.html.diff.split_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -9570,6 +10015,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  *     pos2 = chunks.index(DEL_END)
  *     return chunks[:pos], chunks[pos+1:pos2], chunks[pos2+1:]
  */
+      __Pyx_TraceLine(357,0,__PYX_ERR(0, 357, __pyx_L5_except_error))
       __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_NoDeletes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
@@ -9601,6 +10047,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  *     return chunks[:pos], chunks[pos+1:pos2], chunks[pos2+1:]
  * 
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(0, 358, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunks, __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_END); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L1_error)
@@ -9661,6 +10108,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
  * 
  * def locate_unbalanced_start(unbalanced_start, pre_delete, post_delete):
  */
+  __Pyx_TraceLine(359,0,__PYX_ERR(0, 359, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_chunks, 0, 0, NULL, &__pyx_v_pos, NULL, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
@@ -9710,6 +10158,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_32split_delete(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_pos);
   __Pyx_XDECREF(__pyx_v_pos2);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9802,6 +10251,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
   PyObject *__pyx_v_next = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -9810,7 +10260,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__31)
   __Pyx_RefNannySetupContext("locate_unbalanced_start", 0);
+  __Pyx_TraceCall("locate_unbalanced_start", __pyx_f[0], 361, 0, __PYX_ERR(0, 361, __pyx_L1_error));
 
   /* "lxml/html/diff.py":383
  *     unbalanced_start without doing anything.
@@ -9819,6 +10271,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if not unbalanced_start:
  *             # We have totally succeeded in finding the position
  */
+  __Pyx_TraceLine(383,0,__PYX_ERR(0, 383, __pyx_L1_error))
   while (1) {
 
     /* "lxml/html/diff.py":384
@@ -9828,6 +10281,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             # We have totally succeeded in finding the position
  *             break
  */
+    __Pyx_TraceLine(384,0,__PYX_ERR(0, 384, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unbalanced_start); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 384, __pyx_L1_error)
     __pyx_t_2 = ((!__pyx_t_1) != 0);
     if (__pyx_t_2) {
@@ -9839,6 +10293,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         finding = unbalanced_start[0]
  *         finding_name = finding.split()[0].strip('<>')
  */
+      __Pyx_TraceLine(386,0,__PYX_ERR(0, 386, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":384
@@ -9857,6 +10312,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         finding_name = finding.split()[0].strip('<>')
  *         if not post_delete:
  */
+    __Pyx_TraceLine(387,0,__PYX_ERR(0, 387, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_unbalanced_start, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_finding, __pyx_t_3);
@@ -9869,6 +10325,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if not post_delete:
  *             break
  */
+    __Pyx_TraceLine(388,0,__PYX_ERR(0, 388, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_finding, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -9895,7 +10352,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 388, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_finding_name, __pyx_t_4);
@@ -9908,6 +10365,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             break
  *         next = post_delete[0]
  */
+    __Pyx_TraceLine(389,0,__PYX_ERR(0, 389, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_post_delete); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 389, __pyx_L1_error)
     __pyx_t_1 = ((!__pyx_t_2) != 0);
     if (__pyx_t_1) {
@@ -9919,6 +10377,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         next = post_delete[0]
  *         if next is DEL_START or not next.startswith('<'):
  */
+      __Pyx_TraceLine(390,0,__PYX_ERR(0, 390, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":389
@@ -9937,6 +10396,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if next is DEL_START or not next.startswith('<'):
  *             # Reached a word, we can't move the delete text forward
  */
+    __Pyx_TraceLine(391,0,__PYX_ERR(0, 391, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_post_delete, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 391, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_next, __pyx_t_4);
@@ -9949,6 +10409,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             # Reached a word, we can't move the delete text forward
  *             break
  */
+    __Pyx_TraceLine(392,0,__PYX_ERR(0, 392, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_2 = (__pyx_v_next == __pyx_t_4);
@@ -9961,7 +10422,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
     }
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_next, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 392, __pyx_L1_error)
@@ -9978,6 +10439,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if next[1] == '/':
  *             # Reached a closing tag, can we go further?  Maybe not...
  */
+      __Pyx_TraceLine(394,0,__PYX_ERR(0, 394, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":392
@@ -9996,9 +10458,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             # Reached a closing tag, can we go further?  Maybe not...
  *             break
  */
+    __Pyx_TraceLine(395,0,__PYX_ERR(0, 395, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_next, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 395, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_kp_s__14, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 395, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_kp_s__27, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 395, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_1) {
 
@@ -10009,6 +10472,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         name = next.split()[0].strip('<>')
  *         if name == 'ins':
  */
+      __Pyx_TraceLine(397,0,__PYX_ERR(0, 397, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":395
@@ -10027,6 +10491,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if name == 'ins':
  *             # Can't move into an insert
  */
+    __Pyx_TraceLine(398,0,__PYX_ERR(0, 398, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_next, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 398, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -10053,7 +10518,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 398, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 398, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 398, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -10066,6 +10531,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             # Can't move into an insert
  *             break
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(0, 399, __pyx_L1_error))
     __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ins_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 399, __pyx_L1_error)
     if (__pyx_t_1) {
 
@@ -10076,6 +10542,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         assert name != 'del', (
  *             "Unexpected delete tag: %r" % next)
  */
+      __Pyx_TraceLine(401,0,__PYX_ERR(0, 401, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":399
@@ -10094,6 +10561,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             "Unexpected delete tag: %r" % next)
  *         if name == finding_name:
  */
+    __Pyx_TraceLine(402,0,__PYX_ERR(0, 402, __pyx_L1_error))
     #ifndef CYTHON_WITHOUT_ASSERTIONS
     if (unlikely(!Py_OptimizeFlag)) {
       __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_del_3, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 402, __pyx_L1_error)
@@ -10106,6 +10574,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         if name == finding_name:
  *             unbalanced_start.pop(0)
  */
+        __Pyx_TraceLine(403,0,__PYX_ERR(0, 403, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Unexpected_delete_tag_r, __pyx_v_next); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 403, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
@@ -10122,6 +10591,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             unbalanced_start.pop(0)
  *             pre_delete.append(post_delete.pop(0))
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(0, 404, __pyx_L1_error))
     __pyx_t_4 = PyObject_RichCompare(__pyx_v_name, __pyx_v_finding_name, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error)
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 404, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10134,6 +10604,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *             pre_delete.append(post_delete.pop(0))
  *         else:
  */
+      __Pyx_TraceLine(405,0,__PYX_ERR(0, 405, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_PopIndex(__pyx_v_unbalanced_start, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 405, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10145,6 +10616,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  *         else:
  *             # Found a tag that doesn't match
  */
+      __Pyx_TraceLine(406,0,__PYX_ERR(0, 406, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_PopIndex(__pyx_v_post_delete, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_pre_delete, __pyx_t_4); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 406, __pyx_L1_error)
@@ -10167,6 +10639,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
  * 
  * def locate_unbalanced_end(unbalanced_end, pre_delete, post_delete):
  */
+    __Pyx_TraceLine(409,0,__PYX_ERR(0, 409, __pyx_L1_error))
     /*else*/ {
       goto __pyx_L4_break;
     }
@@ -10197,6 +10670,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_34locate_unbalanced_start(CYTHON_UNU
   __Pyx_XDECREF(__pyx_v_next);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10289,6 +10763,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
   PyObject *__pyx_v_next = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -10299,7 +10774,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__36)
   __Pyx_RefNannySetupContext("locate_unbalanced_end", 0);
+  __Pyx_TraceCall("locate_unbalanced_end", __pyx_f[0], 411, 0, __PYX_ERR(0, 411, __pyx_L1_error));
 
   /* "lxml/html/diff.py":414
  *     """ like locate_unbalanced_start, except handling end tags and
@@ -10308,6 +10785,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         if not unbalanced_end:
  *             # Success
  */
+  __Pyx_TraceLine(414,0,__PYX_ERR(0, 414, __pyx_L1_error))
   while (1) {
 
     /* "lxml/html/diff.py":415
@@ -10317,6 +10795,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             # Success
  *             break
  */
+    __Pyx_TraceLine(415,0,__PYX_ERR(0, 415, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unbalanced_end); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 415, __pyx_L1_error)
     __pyx_t_2 = ((!__pyx_t_1) != 0);
     if (__pyx_t_2) {
@@ -10328,6 +10807,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         finding = unbalanced_end[-1]
  *         finding_name = finding.split()[0].strip('<>/')
  */
+      __Pyx_TraceLine(417,0,__PYX_ERR(0, 417, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":415
@@ -10346,6 +10826,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         finding_name = finding.split()[0].strip('<>/')
  *         if not pre_delete:
  */
+    __Pyx_TraceLine(418,0,__PYX_ERR(0, 418, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_unbalanced_end, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 418, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_finding, __pyx_t_3);
@@ -10358,6 +10839,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         if not pre_delete:
  *             break
  */
+    __Pyx_TraceLine(419,0,__PYX_ERR(0, 419, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_finding, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -10384,7 +10866,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_finding_name, __pyx_t_4);
@@ -10397,6 +10879,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             break
  *         next = pre_delete[-1]
  */
+    __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_pre_delete); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 420, __pyx_L1_error)
     __pyx_t_1 = ((!__pyx_t_2) != 0);
     if (__pyx_t_1) {
@@ -10408,6 +10891,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         next = pre_delete[-1]
  *         if next is DEL_END or not next.startswith('</'):
  */
+      __Pyx_TraceLine(421,0,__PYX_ERR(0, 421, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":420
@@ -10426,6 +10910,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         if next is DEL_END or not next.startswith('</'):
  *             # A word or a start tag
  */
+    __Pyx_TraceLine(422,0,__PYX_ERR(0, 422, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_pre_delete, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 422, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_next, __pyx_t_4);
@@ -10438,6 +10923,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             # A word or a start tag
  *             break
  */
+    __Pyx_TraceLine(423,0,__PYX_ERR(0, 423, __pyx_L1_error))
     __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DEL_END); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_2 = (__pyx_v_next == __pyx_t_4);
@@ -10450,7 +10936,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
     }
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_next, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 423, __pyx_L1_error)
@@ -10467,6 +10953,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         name = next.split()[0].strip('<>/')
  *         if name == 'ins' or name == 'del':
  */
+      __Pyx_TraceLine(425,0,__PYX_ERR(0, 425, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":423
@@ -10485,6 +10972,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         if name == 'ins' or name == 'del':
  *             # Can't move into an insert or delete
  */
+    __Pyx_TraceLine(426,0,__PYX_ERR(0, 426, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_next, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
@@ -10511,7 +10999,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 426, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -10524,6 +11012,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             # Can't move into an insert or delete
  *             break
  */
+    __Pyx_TraceLine(427,0,__PYX_ERR(0, 427, __pyx_L1_error))
     __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ins_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 427, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
@@ -10542,6 +11031,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         if name == finding_name:
  *             unbalanced_end.pop()
  */
+      __Pyx_TraceLine(429,0,__PYX_ERR(0, 429, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":427
@@ -10560,6 +11050,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             unbalanced_end.pop()
  *             post_delete.insert(0, pre_delete.pop())
  */
+    __Pyx_TraceLine(430,0,__PYX_ERR(0, 430, __pyx_L1_error))
     __pyx_t_4 = PyObject_RichCompare(__pyx_v_name, __pyx_v_finding_name, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error)
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 430, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10572,6 +11063,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *             post_delete.insert(0, pre_delete.pop())
  *         else:
  */
+      __Pyx_TraceLine(431,0,__PYX_ERR(0, 431, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_unbalanced_end); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10583,6 +11075,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  *         else:
  *             # Found a tag that doesn't match
  */
+      __Pyx_TraceLine(432,0,__PYX_ERR(0, 432, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_post_delete, __pyx_n_s_insert); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = __Pyx_PyObject_Pop(__pyx_v_pre_delete); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error)
@@ -10653,6 +11146,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
  * 
  * class token(_unicode):
  */
+    __Pyx_TraceLine(435,0,__PYX_ERR(0, 435, __pyx_L1_error))
     /*else*/ {
       goto __pyx_L4_break;
     }
@@ -10685,6 +11179,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_36locate_unbalanced_end(CYTHON_UNUSE
   __Pyx_XDECREF(__pyx_v_next);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10714,7 +11209,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_5token_1__new__(PyObject *__pyx_self
     PyObject* values[5] = {0,0,0,0,0};
     values[2] = ((PyObject *)((PyObject *)Py_None));
     values[3] = ((PyObject *)((PyObject *)Py_None));
-    values[4] = ((PyObject *)((PyObject*)__pyx_kp_s_));
+    values[4] = ((PyObject *)((PyObject*)__pyx_kp_s__3));
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -10803,6 +11298,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_5token_1__new__(PyObject *__pyx_self
 static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_text, PyObject *__pyx_v_pre_tags, PyObject *__pyx_v_post_tags, PyObject *__pyx_v_trailing_whitespace) {
   PyObject *__pyx_v_obj = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -10811,7 +11307,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__41)
   __Pyx_RefNannySetupContext("__new__", 0);
+  __Pyx_TraceCall("__new__", __pyx_f[0], 454, 0, __PYX_ERR(0, 454, __pyx_L1_error));
 
   /* "lxml/html/diff.py":455
  * 
@@ -10820,6 +11318,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  * 
  *         if pre_tags is not None:
  */
+  __Pyx_TraceLine(455,0,__PYX_ERR(0, 455, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error)
@@ -10880,6 +11379,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  *             obj.pre_tags = pre_tags
  *         else:
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(0, 457, __pyx_L1_error))
   __pyx_t_6 = (__pyx_v_pre_tags != Py_None);
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
@@ -10891,6 +11391,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  *         else:
  *             obj.pre_tags = []
  */
+    __Pyx_TraceLine(458,0,__PYX_ERR(0, 458, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_pre_tags, __pyx_v_pre_tags) < 0) __PYX_ERR(0, 458, __pyx_L1_error)
 
     /* "lxml/html/diff.py":457
@@ -10910,6 +11411,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  * 
  *         if post_tags is not None:
  */
+  __Pyx_TraceLine(460,0,__PYX_ERR(0, 460, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -10925,6 +11427,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  *             obj.post_tags = post_tags
  *         else:
  */
+  __Pyx_TraceLine(462,0,__PYX_ERR(0, 462, __pyx_L1_error))
   __pyx_t_7 = (__pyx_v_post_tags != Py_None);
   __pyx_t_6 = (__pyx_t_7 != 0);
   if (__pyx_t_6) {
@@ -10936,6 +11439,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  *         else:
  *             obj.post_tags = []
  */
+    __Pyx_TraceLine(463,0,__PYX_ERR(0, 463, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_post_tags, __pyx_v_post_tags) < 0) __PYX_ERR(0, 463, __pyx_L1_error)
 
     /* "lxml/html/diff.py":462
@@ -10955,6 +11459,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  * 
  *         obj.trailing_whitespace = trailing_whitespace
  */
+  __Pyx_TraceLine(465,0,__PYX_ERR(0, 465, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -10970,6 +11475,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  * 
  *         return obj
  */
+  __Pyx_TraceLine(467,0,__PYX_ERR(0, 467, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_trailing_whitespace, __pyx_v_trailing_whitespace) < 0) __PYX_ERR(0, 467, __pyx_L1_error)
 
   /* "lxml/html/diff.py":469
@@ -10979,6 +11485,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(469,0,__PYX_ERR(0, 469, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_obj);
   __pyx_r = __pyx_v_obj;
@@ -11003,6 +11510,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token___new__(CYTHON_UNUSED PyObjec
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_obj);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11031,13 +11539,16 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_5token_3__repr__(PyObject *__pyx_sel
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_5token_2__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__42)
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 471, 0, __PYX_ERR(0, 471, __pyx_L1_error));
 
   /* "lxml/html/diff.py":472
  * 
@@ -11046,6 +11557,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_2__repr__(CYTHON_UNUSED PyObj
  *                                           self.post_tags, self.trailing_whitespace)
  * 
  */
+  __Pyx_TraceLine(472,0,__PYX_ERR(0, 472, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -11105,6 +11617,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_2__repr__(CYTHON_UNUSED PyObj
  * 
  *     def html(self):
  */
+  __Pyx_TraceLine(473,0,__PYX_ERR(0, 473, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error)
@@ -11117,6 +11630,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_2__repr__(CYTHON_UNUSED PyObj
  *                                           self.post_tags, self.trailing_whitespace)
  * 
  */
+  __Pyx_TraceLine(472,0,__PYX_ERR(0, 472, __pyx_L1_error))
   __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -11157,6 +11671,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_2__repr__(CYTHON_UNUSED PyObj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11185,12 +11700,15 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_5token_5html(PyObject *__pyx_self, P
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_5token_4html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__43)
   __Pyx_RefNannySetupContext("html", 0);
+  __Pyx_TraceCall("html", __pyx_f[0], 475, 0, __PYX_ERR(0, 475, __pyx_L1_error));
 
   /* "lxml/html/diff.py":476
  * 
@@ -11199,6 +11717,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_4html(CYTHON_UNUSED PyObject
  * 
  * class tag_token(token):
  */
+  __Pyx_TraceLine(476,0,__PYX_ERR(0, 476, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -11267,6 +11786,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_5token_4html(CYTHON_UNUSED PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11306,7 +11826,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_9tag_token_1__new__(PyObject *__pyx_
  *                             pre_tags=pre_tags,
  */
     values[5] = ((PyObject *)((PyObject *)Py_None));
-    values[6] = ((PyObject *)((PyObject*)__pyx_kp_s_));
+    values[6] = ((PyObject *)((PyObject*)__pyx_kp_s__3));
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -11423,12 +11943,15 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_9tag_token_1__new__(PyObject *__pyx_
 static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_tag, PyObject *__pyx_v_data, PyObject *__pyx_v_html_repr, PyObject *__pyx_v_pre_tags, PyObject *__pyx_v_post_tags, PyObject *__pyx_v_trailing_whitespace) {
   PyObject *__pyx_v_obj = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__44)
   __Pyx_RefNannySetupContext("__new__", 0);
+  __Pyx_TraceCall("__new__", __pyx_f[0], 484, 0, __PYX_ERR(0, 484, __pyx_L1_error));
 
   /* "lxml/html/diff.py":486
  *     def __new__(cls, tag, data, html_repr, pre_tags=None,
@@ -11437,6 +11960,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *                             pre_tags=pre_tags,
  *                             post_tags=post_tags,
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(0, 486, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 486, __pyx_L1_error)
@@ -11469,6 +11993,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *                             post_tags=post_tags,
  *                             trailing_whitespace=trailing_whitespace)
  */
+  __Pyx_TraceLine(487,0,__PYX_ERR(0, 487, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_pre_tags, __pyx_v_pre_tags) < 0) __PYX_ERR(0, 487, __pyx_L1_error)
@@ -11480,6 +12005,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *                             trailing_whitespace=trailing_whitespace)
  *         obj.tag = tag
  */
+  __Pyx_TraceLine(488,0,__PYX_ERR(0, 488, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_post_tags, __pyx_v_post_tags) < 0) __PYX_ERR(0, 487, __pyx_L1_error)
 
   /* "lxml/html/diff.py":489
@@ -11489,6 +12015,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *         obj.tag = tag
  *         obj.data = data
  */
+  __Pyx_TraceLine(489,0,__PYX_ERR(0, 489, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_trailing_whitespace, __pyx_v_trailing_whitespace) < 0) __PYX_ERR(0, 487, __pyx_L1_error)
 
   /* "lxml/html/diff.py":486
@@ -11498,6 +12025,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *                             pre_tags=pre_tags,
  *                             post_tags=post_tags,
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(0, 486, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 486, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11513,6 +12041,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *         obj.data = data
  *         obj.html_repr = html_repr
  */
+  __Pyx_TraceLine(490,0,__PYX_ERR(0, 490, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(0, 490, __pyx_L1_error)
 
   /* "lxml/html/diff.py":491
@@ -11522,6 +12051,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *         obj.html_repr = html_repr
  *         return obj
  */
+  __Pyx_TraceLine(491,0,__PYX_ERR(0, 491, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 491, __pyx_L1_error)
 
   /* "lxml/html/diff.py":492
@@ -11531,6 +12061,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  *         return obj
  * 
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(0, 492, __pyx_L1_error))
   if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_html_repr, __pyx_v_html_repr) < 0) __PYX_ERR(0, 492, __pyx_L1_error)
 
   /* "lxml/html/diff.py":493
@@ -11540,6 +12071,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(493,0,__PYX_ERR(0, 493, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_obj);
   __pyx_r = __pyx_v_obj;
@@ -11564,6 +12096,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token___new__(CYTHON_UNUSED PyO
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_obj);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11592,6 +12125,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_9tag_token_3__repr__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -11600,7 +12134,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__45)
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 495, 0, __PYX_ERR(0, 495, __pyx_L1_error));
 
   /* "lxml/html/diff.py":496
  * 
@@ -11609,6 +12145,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.tag,
  *             self.data,
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(0, 496, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "lxml/html/diff.py":497
@@ -11618,6 +12155,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.data,
  *             self.html_repr,
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(0, 497, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -11628,6 +12166,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.html_repr,
  *             self.pre_tags,
  */
+  __Pyx_TraceLine(498,0,__PYX_ERR(0, 498, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -11638,6 +12177,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.pre_tags,
  *             self.post_tags,
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(0, 499, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_html_repr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
@@ -11648,6 +12188,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.post_tags,
  *             self.trailing_whitespace)
  */
+  __Pyx_TraceLine(500,0,__PYX_ERR(0, 500, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pre_tags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 500, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
@@ -11658,6 +12199,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.trailing_whitespace)
  *     def html(self):
  */
+  __Pyx_TraceLine(501,0,__PYX_ERR(0, 501, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
 
@@ -11668,6 +12210,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *     def html(self):
  *         return self.html_repr
  */
+  __Pyx_TraceLine(502,0,__PYX_ERR(0, 502, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_trailing_whitespace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
 
@@ -11678,6 +12221,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.data,
  *             self.html_repr,
  */
+  __Pyx_TraceLine(497,0,__PYX_ERR(0, 497, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -11706,6 +12250,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
  *             self.tag,
  *             self.data,
  */
+  __Pyx_TraceLine(496,0,__PYX_ERR(0, 496, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_tag_token_s_s_html_repr_s_post_t, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -11734,6 +12279,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_2__repr__(CYTHON_UNUSED P
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11762,9 +12308,12 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_9tag_token_5html(PyObject *__pyx_sel
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_4html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__46)
   __Pyx_RefNannySetupContext("html", 0);
+  __Pyx_TraceCall("html", __pyx_f[0], 503, 0, __PYX_ERR(0, 503, __pyx_L1_error));
 
   /* "lxml/html/diff.py":504
  *             self.trailing_whitespace)
@@ -11773,6 +12322,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_4html(CYTHON_UNUSED PyObj
  * 
  * class href_token(token):
  */
+  __Pyx_TraceLine(504,0,__PYX_ERR(0, 504, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_html_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11795,6 +12345,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_9tag_token_4html(CYTHON_UNUSED PyObj
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11823,9 +12374,12 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_10href_token_1html(PyObject *__pyx_s
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_10href_token_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__47)
   __Pyx_RefNannySetupContext("html", 0);
+  __Pyx_TraceCall("html", __pyx_f[0], 513, 0, __PYX_ERR(0, 513, __pyx_L1_error));
 
   /* "lxml/html/diff.py":514
  * 
@@ -11834,6 +12388,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10href_token_html(CYTHON_UNUSED PyOb
  * 
  * def tokenize(html, include_hrefs=True):
  */
+  __Pyx_TraceLine(514,0,__PYX_ERR(0, 514, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Link_s, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11856,6 +12411,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_10href_token_html(CYTHON_UNUSED PyOb
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11939,13 +12495,16 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_v_body_el = NULL;
   PyObject *__pyx_v_chunks = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__48)
   __Pyx_RefNannySetupContext("tokenize", 0);
+  __Pyx_TraceCall("tokenize", __pyx_f[0], 516, 0, __PYX_ERR(0, 516, __pyx_L1_error));
 
   /* "lxml/html/diff.py":531
  *     If include_hrefs is true, then the href attribute of <a> tags is
@@ -11954,6 +12513,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
  *         body_el = html
  *     else:
  */
+  __Pyx_TraceLine(531,0,__PYX_ERR(0, 531, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iselement); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 531, __pyx_L1_error)
@@ -12013,6 +12573,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
  *     else:
  *         body_el = parse_html(html, cleanup=True)
  */
+    __Pyx_TraceLine(532,0,__PYX_ERR(0, 532, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_html);
     __pyx_v_body_el = __pyx_v_html;
 
@@ -12033,6 +12594,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
  *     # Then we split the document into text chunks for each tag, word, and end tag:
  *     chunks = flatten_el(body_el, skip_tag=True, include_hrefs=include_hrefs)
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(0, 534, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_html); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -12061,6 +12623,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
  *     # Finally re-joining them into token objects:
  *     return fixup_chunks(chunks)
  */
+  __Pyx_TraceLine(536,0,__PYX_ERR(0, 536, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_flatten_el); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 536, __pyx_L1_error)
@@ -12087,6 +12650,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
  * 
  * def parse_html(html, cleanup=True):
  */
+  __Pyx_TraceLine(538,0,__PYX_ERR(0, 538, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_fixup_chunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 538, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -12157,6 +12721,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_38tokenize(CYTHON_UNUSED PyObject *_
   __Pyx_XDECREF(__pyx_v_body_el);
   __Pyx_XDECREF(__pyx_v_chunks);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12238,13 +12803,16 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_41parse_html(PyObject *__pyx_self, P
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_40parse_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_cleanup) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__49)
   __Pyx_RefNannySetupContext("parse_html", 0);
+  __Pyx_TraceCall("parse_html", __pyx_f[0], 540, 0, __PYX_ERR(0, 540, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_html);
 
   /* "lxml/html/diff.py":548
@@ -12254,6 +12822,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_40parse_html(CYTHON_UNUSED PyObject
  *         # This removes any extra markup or structure like <head>:
  *         html = cleanup_html(html)
  */
+  __Pyx_TraceLine(548,0,__PYX_ERR(0, 548, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_cleanup); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 548, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -12264,6 +12833,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_40parse_html(CYTHON_UNUSED PyObject
  *     return fragment_fromstring(html, create_parent=True)
  * 
  */
+    __Pyx_TraceLine(550,0,__PYX_ERR(0, 550, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cleanup_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
@@ -12328,6 +12898,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_40parse_html(CYTHON_UNUSED PyObject
  * 
  * _body_re = re.compile(r'<body.*?>', re.I|re.S)
  */
+  __Pyx_TraceLine(551,0,__PYX_ERR(0, 551, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_fragment_fromstring); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -12367,6 +12938,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_40parse_html(CYTHON_UNUSED PyObject
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_html);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12397,6 +12969,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_43cleanup_html(PyObject *__pyx_self,
 static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html) {
   PyObject *__pyx_v_match = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -12404,7 +12977,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
   int __pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__50)
   __Pyx_RefNannySetupContext("cleanup_html", 0);
+  __Pyx_TraceCall("cleanup_html", __pyx_f[0], 557, 0, __PYX_ERR(0, 557, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_html);
 
   /* "lxml/html/diff.py":561
@@ -12414,6 +12989,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *     if match:
  *         html = html[match.end():]
  */
+  __Pyx_TraceLine(561,0,__PYX_ERR(0, 561, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_body_re); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_search); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L1_error)
@@ -12472,6 +13048,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *         html = html[match.end():]
  *     match = _end_body_re.search(html)
  */
+  __Pyx_TraceLine(562,0,__PYX_ERR(0, 562, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 562, __pyx_L1_error)
   if (__pyx_t_5) {
 
@@ -12482,6 +13059,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *     match = _end_body_re.search(html)
  *     if match:
  */
+    __Pyx_TraceLine(563,0,__PYX_ERR(0, 563, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_end); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 563, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
@@ -12524,6 +13102,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *     if match:
  *         html = html[:match.start()]
  */
+  __Pyx_TraceLine(564,0,__PYX_ERR(0, 564, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_end_body_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_search); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error)
@@ -12582,6 +13161,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *         html = html[:match.start()]
  *     html = _ins_del_re.sub('', html)
  */
+  __Pyx_TraceLine(565,0,__PYX_ERR(0, 565, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 565, __pyx_L1_error)
   if (__pyx_t_5) {
 
@@ -12592,6 +13172,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *     html = _ins_del_re.sub('', html)
  *     return html
  */
+    __Pyx_TraceLine(566,0,__PYX_ERR(0, 566, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 566, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_2 = NULL;
@@ -12634,6 +13215,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  *     return html
  * 
  */
+  __Pyx_TraceLine(567,0,__PYX_ERR(0, 567, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ins_del_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 567, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error)
@@ -12653,7 +13235,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
   }
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_, __pyx_v_html};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__3, __pyx_v_html};
     __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_4);
@@ -12661,7 +13243,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
   #endif
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_, __pyx_v_html};
+    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s__3, __pyx_v_html};
     __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_4);
@@ -12673,9 +13255,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
     }
-    __Pyx_INCREF(__pyx_kp_s_);
-    __Pyx_GIVEREF(__pyx_kp_s_);
-    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_kp_s_);
+    __Pyx_INCREF(__pyx_kp_s__3);
+    __Pyx_GIVEREF(__pyx_kp_s__3);
+    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_kp_s__3);
     __Pyx_INCREF(__pyx_v_html);
     __Pyx_GIVEREF(__pyx_v_html);
     PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_html);
@@ -12694,6 +13276,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
  * 
  * 
  */
+  __Pyx_TraceLine(568,0,__PYX_ERR(0, 568, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_html);
   __pyx_r = __pyx_v_html;
@@ -12719,6 +13302,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_42cleanup_html(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_match);
   __Pyx_XDECREF(__pyx_v_html);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12749,12 +13333,15 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_45split_trailing_whitespace(PyObject
 static PyObject *__pyx_pf_4lxml_4html_4diff_44split_trailing_whitespace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_word) {
   Py_ssize_t __pyx_v_stripped_length;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   Py_ssize_t __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__51)
   __Pyx_RefNannySetupContext("split_trailing_whitespace", 0);
+  __Pyx_TraceCall("split_trailing_whitespace", __pyx_f[0], 573, 0, __PYX_ERR(0, 573, __pyx_L1_error));
 
   /* "lxml/html/diff.py":577
  *     This function takes a word, such as 'test\n\n' and returns ('test','\n\n')
@@ -12763,6 +13350,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_44split_trailing_whitespace(CYTHON_U
  *     return word[0:stripped_length], word[stripped_length:]
  * 
  */
+  __Pyx_TraceLine(577,0,__PYX_ERR(0, 577, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_word, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -12794,6 +13382,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_44split_trailing_whitespace(CYTHON_U
  * 
  * 
  */
+  __Pyx_TraceLine(578,0,__PYX_ERR(0, 578, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_word, 0, __pyx_v_stripped_length, NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12828,6 +13417,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_44split_trailing_whitespace(CYTHON_U
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12865,6 +13455,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
   PyObject *__pyx_v_trailing_whitespace = NULL;
   PyObject *__pyx_v_href = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -12878,7 +13469,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
   PyObject *__pyx_t_10 = NULL;
   PyObject *(*__pyx_t_11)(PyObject *);
   int __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__52)
   __Pyx_RefNannySetupContext("fixup_chunks", 0);
+  __Pyx_TraceCall("fixup_chunks", __pyx_f[0], 581, 0, __PYX_ERR(0, 581, __pyx_L1_error));
 
   /* "lxml/html/diff.py":585
  *     This function takes a list of chunks and produces a list of tokens.
@@ -12887,6 +13480,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *     cur_word = None
  *     result = []
  */
+  __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tag_accum = ((PyObject*)__pyx_t_1);
@@ -12899,6 +13493,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *     result = []
  *     for chunk in chunks:
  */
+  __Pyx_TraceLine(586,0,__PYX_ERR(0, 586, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_cur_word = Py_None;
 
@@ -12909,6 +13504,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *     for chunk in chunks:
  *         if isinstance(chunk, tuple):
  */
+  __Pyx_TraceLine(587,0,__PYX_ERR(0, 587, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((PyObject*)__pyx_t_1);
@@ -12921,6 +13517,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *         if isinstance(chunk, tuple):
  *             if chunk[0] == 'img':
  */
+  __Pyx_TraceLine(588,0,__PYX_ERR(0, 588, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_chunks)) || PyTuple_CheckExact(__pyx_v_chunks)) {
     __pyx_t_1 = __pyx_v_chunks; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -12970,6 +13567,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             if chunk[0] == 'img':
  *                 src = chunk[1]
  */
+    __Pyx_TraceLine(589,0,__PYX_ERR(0, 589, __pyx_L1_error))
     __pyx_t_5 = PyTuple_Check(__pyx_v_chunk); 
     __pyx_t_6 = (__pyx_t_5 != 0);
     if (__pyx_t_6) {
@@ -12981,6 +13579,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 src = chunk[1]
  *                 tag, trailing_whitespace = split_trailing_whitespace(chunk[2])
  */
+      __Pyx_TraceLine(590,0,__PYX_ERR(0, 590, __pyx_L1_error))
       __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_chunk, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_img, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 590, __pyx_L1_error)
@@ -12994,6 +13593,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 tag, trailing_whitespace = split_trailing_whitespace(chunk[2])
  *                 cur_word = tag_token('img', src, html_repr=tag,
  */
+        __Pyx_TraceLine(591,0,__PYX_ERR(0, 591, __pyx_L1_error))
         __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_chunk, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 591, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_XDECREF_SET(__pyx_v_src, __pyx_t_4);
@@ -13006,6 +13606,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 cur_word = tag_token('img', src, html_repr=tag,
  *                                      pre_tags=tag_accum,
  */
+        __Pyx_TraceLine(592,0,__PYX_ERR(0, 592, __pyx_L1_error))
         __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_trailing_whitespace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 592, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_chunk, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
@@ -13114,6 +13715,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                                      pre_tags=tag_accum,
  *                                      trailing_whitespace=trailing_whitespace)
  */
+        __Pyx_TraceLine(593,0,__PYX_ERR(0, 593, __pyx_L1_error))
         __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_tag_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 593, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 593, __pyx_L1_error)
@@ -13135,6 +13737,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                                      trailing_whitespace=trailing_whitespace)
  *                 tag_accum = []
  */
+        __Pyx_TraceLine(594,0,__PYX_ERR(0, 594, __pyx_L1_error))
         if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pre_tags, __pyx_v_tag_accum) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
 
         /* "lxml/html/diff.py":595
@@ -13144,6 +13747,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 tag_accum = []
  *                 result.append(cur_word)
  */
+        __Pyx_TraceLine(595,0,__PYX_ERR(0, 595, __pyx_L1_error))
         if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_trailing_whitespace, __pyx_v_trailing_whitespace) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
 
         /* "lxml/html/diff.py":593
@@ -13153,6 +13757,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                                      pre_tags=tag_accum,
  *                                      trailing_whitespace=trailing_whitespace)
  */
+        __Pyx_TraceLine(593,0,__PYX_ERR(0, 593, __pyx_L1_error))
         __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 593, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -13168,6 +13773,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 result.append(cur_word)
  * 
  */
+        __Pyx_TraceLine(596,0,__PYX_ERR(0, 596, __pyx_L1_error))
         __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 596, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v_tag_accum, ((PyObject*)__pyx_t_8));
@@ -13180,6 +13786,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *             elif chunk[0] == 'href':
  */
+        __Pyx_TraceLine(597,0,__PYX_ERR(0, 597, __pyx_L1_error))
         __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_cur_word); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 597, __pyx_L1_error)
 
         /* "lxml/html/diff.py":590
@@ -13199,6 +13806,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 href = chunk[1]
  *                 cur_word = href_token(href, pre_tags=tag_accum, trailing_whitespace=" ")
  */
+      __Pyx_TraceLine(599,0,__PYX_ERR(0, 599, __pyx_L1_error))
       __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_chunk, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_8, __pyx_n_s_href, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 599, __pyx_L1_error)
@@ -13212,6 +13820,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 cur_word = href_token(href, pre_tags=tag_accum, trailing_whitespace=" ")
  *                 tag_accum = []
  */
+        __Pyx_TraceLine(600,0,__PYX_ERR(0, 600, __pyx_L1_error))
         __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_chunk, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 600, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_XDECREF_SET(__pyx_v_href, __pyx_t_8);
@@ -13224,6 +13833,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 tag_accum = []
  *                 result.append(cur_word)
  */
+        __Pyx_TraceLine(601,0,__PYX_ERR(0, 601, __pyx_L1_error))
         __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_href_token); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 601, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 601, __pyx_L1_error)
@@ -13234,7 +13844,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
         __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 601, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_pre_tags, __pyx_v_tag_accum) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
-        if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_trailing_whitespace, __pyx_kp_s__5) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_trailing_whitespace, __pyx_kp_s__15) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
         __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 601, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -13250,6 +13860,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 result.append(cur_word)
  *             continue
  */
+        __Pyx_TraceLine(602,0,__PYX_ERR(0, 602, __pyx_L1_error))
         __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_tag_accum, ((PyObject*)__pyx_t_4));
@@ -13262,6 +13873,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             continue
  * 
  */
+        __Pyx_TraceLine(603,0,__PYX_ERR(0, 603, __pyx_L1_error))
         __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_cur_word); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 603, __pyx_L1_error)
 
         /* "lxml/html/diff.py":599
@@ -13281,6 +13893,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *         if is_word(chunk):
  */
+      __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/html/diff.py":589
@@ -13299,6 +13912,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             chunk, trailing_whitespace = split_trailing_whitespace(chunk)
  *             cur_word = token(chunk, pre_tags=tag_accum, trailing_whitespace=trailing_whitespace)
  */
+    __Pyx_TraceLine(606,0,__PYX_ERR(0, 606, __pyx_L1_error))
     __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_word); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 606, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_7 = NULL;
@@ -13355,6 +13969,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             cur_word = token(chunk, pre_tags=tag_accum, trailing_whitespace=trailing_whitespace)
  *             tag_accum = []
  */
+      __Pyx_TraceLine(607,0,__PYX_ERR(0, 607, __pyx_L1_error))
       __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_trailing_whitespace); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 607, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_8 = NULL;
@@ -13458,6 +14073,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             tag_accum = []
  *             result.append(cur_word)
  */
+      __Pyx_TraceLine(608,0,__PYX_ERR(0, 608, __pyx_L1_error))
       __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 608, __pyx_L1_error)
@@ -13484,6 +14100,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             result.append(cur_word)
  * 
  */
+      __Pyx_TraceLine(609,0,__PYX_ERR(0, 609, __pyx_L1_error))
       __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 609, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF_SET(__pyx_v_tag_accum, ((PyObject*)__pyx_t_8));
@@ -13496,6 +14113,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *         elif is_start_tag(chunk):
  */
+      __Pyx_TraceLine(610,0,__PYX_ERR(0, 610, __pyx_L1_error))
       __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_cur_word); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 610, __pyx_L1_error)
 
       /* "lxml/html/diff.py":606
@@ -13515,6 +14133,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             tag_accum.append(chunk)
  * 
  */
+    __Pyx_TraceLine(612,0,__PYX_ERR(0, 612, __pyx_L1_error))
     __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_start_tag); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 612, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_7 = NULL;
@@ -13571,6 +14190,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *         elif is_end_tag(chunk):
  */
+      __Pyx_TraceLine(613,0,__PYX_ERR(0, 613, __pyx_L1_error))
       __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_tag_accum, __pyx_v_chunk); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 613, __pyx_L1_error)
 
       /* "lxml/html/diff.py":612
@@ -13590,6 +14210,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             if tag_accum:
  *                 tag_accum.append(chunk)
  */
+    __Pyx_TraceLine(615,0,__PYX_ERR(0, 615, __pyx_L1_error))
     __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_end_tag); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 615, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_4 = NULL;
@@ -13646,6 +14267,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 tag_accum.append(chunk)
  *             else:
  */
+      __Pyx_TraceLine(616,0,__PYX_ERR(0, 616, __pyx_L1_error))
       __pyx_t_6 = (PyList_GET_SIZE(__pyx_v_tag_accum) != 0);
       if (__pyx_t_6) {
 
@@ -13656,6 +14278,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *             else:
  *                 assert cur_word, (
  */
+        __Pyx_TraceLine(617,0,__PYX_ERR(0, 617, __pyx_L1_error))
         __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_tag_accum, __pyx_v_chunk); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 617, __pyx_L1_error)
 
         /* "lxml/html/diff.py":616
@@ -13675,6 +14298,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                     "Weird state, cur_word=%r, result=%r, chunks=%r of %r"
  *                     % (cur_word, result, chunk, chunks))
  */
+      __Pyx_TraceLine(619,0,__PYX_ERR(0, 619, __pyx_L1_error))
       /*else*/ {
         #ifndef CYTHON_WITHOUT_ASSERTIONS
         if (unlikely(!Py_OptimizeFlag)) {
@@ -13688,6 +14312,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *                 cur_word.post_tags.append(chunk)
  *         else:
  */
+            __Pyx_TraceLine(621,0,__PYX_ERR(0, 621, __pyx_L1_error))
             __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 621, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_8);
             __Pyx_INCREF(__pyx_v_cur_word);
@@ -13719,6 +14344,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *         else:
  *             assert(0)
  */
+        __Pyx_TraceLine(622,0,__PYX_ERR(0, 622, __pyx_L1_error))
         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_cur_word, __pyx_n_s_post_tags); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 622, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __pyx_t_12 = __Pyx_PyObject_Append(__pyx_t_10, __pyx_v_chunk); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 622, __pyx_L1_error)
@@ -13743,6 +14369,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *     if not result:
  */
+    __Pyx_TraceLine(624,0,__PYX_ERR(0, 624, __pyx_L1_error))
     /*else*/ {
       #ifndef CYTHON_WITHOUT_ASSERTIONS
       if (unlikely(!Py_OptimizeFlag)) {
@@ -13762,6 +14389,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *         if isinstance(chunk, tuple):
  *             if chunk[0] == 'img':
  */
+    __Pyx_TraceLine(588,0,__PYX_ERR(0, 588, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13773,6 +14401,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *         return [token('', pre_tags=tag_accum)]
  *     else:
  */
+  __Pyx_TraceLine(626,0,__PYX_ERR(0, 626, __pyx_L1_error))
   __pyx_t_6 = (PyList_GET_SIZE(__pyx_v_result) != 0);
   __pyx_t_5 = ((!__pyx_t_6) != 0);
   if (__pyx_t_5) {
@@ -13784,13 +14413,14 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  *     else:
  *         result[-1].post_tags.extend(tag_accum)
  */
+    __Pyx_TraceLine(627,0,__PYX_ERR(0, 627, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 627, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_pre_tags, __pyx_v_tag_accum) < 0) __PYX_ERR(0, 627, __pyx_L1_error)
-    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 627, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__53, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 627, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -13819,6 +14449,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  *     return result
  */
+  __Pyx_TraceLine(629,0,__PYX_ERR(0, 629, __pyx_L1_error))
   /*else*/ {
     __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_result, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 629, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
@@ -13881,6 +14512,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
  * 
  * 
  */
+  __Pyx_TraceLine(631,0,__PYX_ERR(0, 631, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -13914,6 +14546,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_46fixup_chunks(CYTHON_UNUSED PyObjec
   __Pyx_XDECREF(__pyx_v_trailing_whitespace);
   __Pyx_XDECREF(__pyx_v_href);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14028,7 +14661,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_48flatten_el(CYTHON_UNUSED PyObject
   __Pyx_INCREF(__pyx_cur_scope->__pyx_v_skip_tag);
   __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_skip_tag);
   {
-    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_50generator2, __pyx_codeobj__26, (PyObject *) __pyx_cur_scope, __pyx_n_s_flatten_el, __pyx_n_s_flatten_el, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 680, __pyx_L1_error)
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4lxml_4html_4diff_50generator2, __pyx_codeobj__54, (PyObject *) __pyx_cur_scope, __pyx_n_s_flatten_el, __pyx_n_s_flatten_el, __pyx_n_s_lxml_html_diff); if (unlikely(!gen)) __PYX_ERR(0, 680, __pyx_L1_error)
     __Pyx_DECREF(__pyx_cur_scope);
     __Pyx_RefNannyFinishContext();
     return (PyObject *) gen;
@@ -14048,6 +14681,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
 {
   struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct_2_flatten_el *__pyx_cur_scope = ((struct __pyx_obj_4lxml_4html_4diff___pyx_scope_struct_2_flatten_el *)__pyx_generator->closure);
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
@@ -14062,6 +14696,8 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
   PyObject *(*__pyx_t_12)(PyObject *);
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("flatten_el", 0);
+  __Pyx_TraceFrameInit(__pyx_codeobj__54)
+  __Pyx_TraceCall("flatten_el", __pyx_f[0], 680, 0, __PYX_ERR(0, 680, __pyx_L1_error));
   switch (__pyx_generator->resume_label) {
     case 0: goto __pyx_L3_first_run;
     case 1: goto __pyx_L6_resume_from_yield;
@@ -14072,6 +14708,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
     case 6: goto __pyx_L27_resume_from_yield;
     case 7: goto __pyx_L30_resume_from_yield;
     default: /* CPython raises the right error here */
+    __Pyx_TraceReturn(Py_None, 0);
     __Pyx_RefNannyFinishContext();
     return NULL;
   }
@@ -14085,6 +14722,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         if el.tag == 'img':
  *             yield ('img', el.get('src'), start_tag(el))
  */
+  __Pyx_TraceLine(687,0,__PYX_ERR(0, 687, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_skip_tag); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 687, __pyx_L1_error)
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
@@ -14096,6 +14734,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *             yield ('img', el.get('src'), start_tag(el))
  *         else:
  */
+    __Pyx_TraceLine(688,0,__PYX_ERR(0, 688, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_img, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 688, __pyx_L1_error)
@@ -14109,9 +14748,10 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         else:
  *             yield start_tag(el)
  */
+      __Pyx_TraceLine(689,0,__PYX_ERR(0, 689, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 689, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_start_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 689, __pyx_L1_error)
@@ -14173,6 +14813,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
       __pyx_r = __pyx_t_5;
       __pyx_t_5 = 0;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -14198,6 +14839,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     if el.tag in empty_tags and not el.text and not len(el) and not el.tail:
  *         return
  */
+    __Pyx_TraceLine(691,0,__PYX_ERR(0, 691, __pyx_L1_error))
     /*else*/ {
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_start_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -14247,6 +14889,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
       __pyx_r = __pyx_t_5;
       __pyx_t_5 = 0;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -14273,6 +14916,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         return
  *     start_words = split_words(el.text)
  */
+  __Pyx_TraceLine(692,0,__PYX_ERR(0, 692, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_empty_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
@@ -14319,6 +14963,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     start_words = split_words(el.text)
  *     for word in start_words:
  */
+    __Pyx_TraceLine(693,0,__PYX_ERR(0, 693, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = NULL;
     goto __pyx_L0;
@@ -14339,6 +14984,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     for word in start_words:
  *         yield html_escape(word)
  */
+  __Pyx_TraceLine(694,0,__PYX_ERR(0, 694, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_words); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 694, __pyx_L1_error)
@@ -14400,6 +15046,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         yield html_escape(word)
  *     for child in el:
  */
+  __Pyx_TraceLine(695,0,__PYX_ERR(0, 695, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_start_words)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_start_words)) {
     __pyx_t_3 = __pyx_cur_scope->__pyx_v_start_words; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
@@ -14451,6 +15098,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     for child in el:
  *         for item in flatten_el(child, include_hrefs=include_hrefs):
  */
+    __Pyx_TraceLine(696,0,__PYX_ERR(0, 696, __pyx_L1_error))
     __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_html_escape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = NULL;
@@ -14503,6 +15151,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
     __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
     __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -14523,6 +15172,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         yield html_escape(word)
  *     for child in el:
  */
+    __Pyx_TraceLine(695,0,__PYX_ERR(0, 695, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -14533,6 +15183,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         for item in flatten_el(child, include_hrefs=include_hrefs):
  *             yield item
  */
+  __Pyx_TraceLine(697,0,__PYX_ERR(0, 697, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_el)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_el)) {
     __pyx_t_3 = __pyx_cur_scope->__pyx_v_el; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
@@ -14584,6 +15235,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *             yield item
  *     if el.tag == 'a' and el.get('href') and include_hrefs:
  */
+    __Pyx_TraceLine(698,0,__PYX_ERR(0, 698, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_flatten_el); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 698, __pyx_L1_error)
@@ -14651,6 +15303,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     if el.tag == 'a' and el.get('href') and include_hrefs:
  *         yield ('href', el.get('href'))
  */
+      __Pyx_TraceLine(699,0,__PYX_ERR(0, 699, __pyx_L1_error))
       __Pyx_INCREF(__pyx_cur_scope->__pyx_v_item);
       __pyx_r = __pyx_cur_scope->__pyx_v_item;
       __Pyx_XGIVEREF(__pyx_t_3);
@@ -14662,6 +15315,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
       __pyx_cur_scope->__pyx_t_4 = __pyx_t_11;
       __pyx_cur_scope->__pyx_t_5 = __pyx_t_12;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -14687,6 +15341,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *             yield item
  *     if el.tag == 'a' and el.get('href') and include_hrefs:
  */
+      __Pyx_TraceLine(698,0,__PYX_ERR(0, 698, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -14697,6 +15352,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         for item in flatten_el(child, include_hrefs=include_hrefs):
  *             yield item
  */
+    __Pyx_TraceLine(697,0,__PYX_ERR(0, 697, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -14707,6 +15363,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         yield ('href', el.get('href'))
  *     if not skip_tag:
  */
+  __Pyx_TraceLine(700,0,__PYX_ERR(0, 700, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 700, __pyx_L1_error)
@@ -14718,7 +15375,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
   }
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 700, __pyx_L1_error)
@@ -14740,9 +15397,10 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *     if not skip_tag:
  *         yield end_tag(el)
  */
+    __Pyx_TraceLine(701,0,__PYX_ERR(0, 701, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error)
@@ -14756,6 +15414,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -14780,6 +15439,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         yield end_tag(el)
  *         end_words = split_words(el.tail)
  */
+  __Pyx_TraceLine(702,0,__PYX_ERR(0, 702, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_skip_tag); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 702, __pyx_L1_error)
   __pyx_t_8 = ((!__pyx_t_2) != 0);
   if (__pyx_t_8) {
@@ -14791,6 +15451,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         end_words = split_words(el.tail)
  *         for word in end_words:
  */
+    __Pyx_TraceLine(703,0,__PYX_ERR(0, 703, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_end_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_7 = NULL;
@@ -14839,6 +15500,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_TraceReturn(__pyx_r, 0);
     __Pyx_RefNannyFinishContext();
     __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
     /* return from generator, yielding value */
@@ -14854,6 +15516,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *         for word in end_words:
  *             yield html_escape(word)
  */
+    __Pyx_TraceLine(704,0,__PYX_ERR(0, 704, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_words); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_el, __pyx_n_s_tail); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 704, __pyx_L1_error)
@@ -14915,6 +15578,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *             yield html_escape(word)
  * 
  */
+    __Pyx_TraceLine(705,0,__PYX_ERR(0, 705, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_end_words)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_end_words)) {
       __pyx_t_4 = __pyx_cur_scope->__pyx_v_end_words; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
       __pyx_t_10 = NULL;
@@ -14966,6 +15630,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  * 
  * split_words_re = re.compile(r'\S+(?:\s+|$)', re.U)
  */
+      __Pyx_TraceLine(706,0,__PYX_ERR(0, 706, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_html_escape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
@@ -15018,6 +15683,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
       __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
       __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
       __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_TraceReturn(__pyx_r, 0);
       __Pyx_RefNannyFinishContext();
       __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
       /* return from generator, yielding value */
@@ -15038,6 +15704,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
  *             yield html_escape(word)
  * 
  */
+      __Pyx_TraceLine(705,0,__PYX_ERR(0, 705, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -15074,6 +15741,7 @@ static PyObject *__pyx_gb_4lxml_4html_4diff_50generator2(__pyx_CoroutineObject *
   __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
   __pyx_generator->resume_label = -1;
   __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15104,6 +15772,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_52split_words(PyObject *__pyx_self,
 static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) {
   PyObject *__pyx_v_words = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -15112,7 +15781,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__58)
   __Pyx_RefNannySetupContext("split_words", 0);
+  __Pyx_TraceCall("split_words", __pyx_f[0], 710, 0, __PYX_ERR(0, 710, __pyx_L1_error));
 
   /* "lxml/html/diff.py":713
  *     """ Splits some text into words. Includes trailing whitespace
@@ -15121,6 +15792,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
  *         return []
  * 
  */
+  __Pyx_TraceLine(713,0,__PYX_ERR(0, 713, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 713, __pyx_L1_error)
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (!__pyx_t_3) {
@@ -15162,6 +15834,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
  * 
  *     words = split_words_re.findall(text)
  */
+    __Pyx_TraceLine(714,0,__PYX_ERR(0, 714, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 714, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -15185,6 +15858,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
  *     return words
  * 
  */
+  __Pyx_TraceLine(716,0,__PYX_ERR(0, 716, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_split_words_re); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 716, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_findall); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 716, __pyx_L1_error)
@@ -15243,6 +15917,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
  * 
  * start_whitespace_re = re.compile(r'^[ \t\n\r]')
  */
+  __Pyx_TraceLine(717,0,__PYX_ERR(0, 717, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_words);
   __pyx_r = __pyx_v_words;
@@ -15267,6 +15942,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_51split_words(CYTHON_UNUSED PyObject
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_words);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15298,6 +15974,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -15310,7 +15987,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_9 = NULL;
   PyObject *(*__pyx_t_10)(PyObject *);
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__59)
   __Pyx_RefNannySetupContext("start_tag", 0);
+  __Pyx_TraceCall("start_tag", __pyx_f[0], 721, 0, __PYX_ERR(0, 721, __pyx_L1_error));
 
   /* "lxml/html/diff.py":725
  *     The text representation of the start tag for a tag.
@@ -15319,6 +15998,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  *         el.tag, ''.join([' %s="%s"' % (name, html_escape(value, True))
  *                          for name, value in el.attrib.items()]))
  */
+  __Pyx_TraceLine(725,0,__PYX_ERR(0, 725, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
 
   /* "lxml/html/diff.py":726
@@ -15328,6 +16008,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  *                          for name, value in el.attrib.items()]))
  * 
  */
+  __Pyx_TraceLine(726,0,__PYX_ERR(0, 726, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 726, __pyx_L1_error)
@@ -15340,6 +16021,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  * 
  * def end_tag(el):
  */
+  __Pyx_TraceLine(727,0,__PYX_ERR(0, 727, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 727, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 727, __pyx_L1_error)
@@ -15461,6 +16143,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  *                          for name, value in el.attrib.items()]))
  * 
  */
+    __Pyx_TraceLine(726,0,__PYX_ERR(0, 726, __pyx_L1_error))
     __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_html_escape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 726, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_4 = NULL;
@@ -15529,6 +16212,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  * 
  * def end_tag(el):
  */
+    __Pyx_TraceLine(727,0,__PYX_ERR(0, 727, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -15539,7 +16223,8 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  *                          for name, value in el.attrib.items()]))
  * 
  */
-  __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s_, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error)
+  __Pyx_TraceLine(726,0,__PYX_ERR(0, 726, __pyx_L1_error))
+  __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 726, __pyx_L1_error)
@@ -15558,6 +16243,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
  *         el.tag, ''.join([' %s="%s"' % (name, html_escape(value, True))
  *                          for name, value in el.attrib.items()]))
  */
+  __Pyx_TraceLine(725,0,__PYX_ERR(0, 725, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_2, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -15588,6 +16274,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_53start_tag(CYTHON_UNUSED PyObject *
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15618,6 +16305,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_56end_tag(PyObject *__pyx_self, PyOb
 static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_el) {
   PyObject *__pyx_v_extra = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -15626,7 +16314,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__60)
   __Pyx_RefNannySetupContext("end_tag", 0);
+  __Pyx_TraceCall("end_tag", __pyx_f[0], 729, 0, __PYX_ERR(0, 729, __pyx_L1_error));
 
   /* "lxml/html/diff.py":732
  *     """ The text representation of an end tag for a tag.  Includes
@@ -15635,6 +16325,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
  *         extra = ' '
  *     else:
  */
+  __Pyx_TraceLine(732,0,__PYX_ERR(0, 732, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tail); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 732, __pyx_L1_error)
@@ -15710,8 +16401,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
  *     else:
  *         extra = ''
  */
-    __Pyx_INCREF(__pyx_kp_s__5);
-    __pyx_v_extra = __pyx_kp_s__5;
+    __Pyx_TraceLine(733,0,__PYX_ERR(0, 733, __pyx_L1_error))
+    __Pyx_INCREF(__pyx_kp_s__15);
+    __pyx_v_extra = __pyx_kp_s__15;
 
     /* "lxml/html/diff.py":732
  *     """ The text representation of an end tag for a tag.  Includes
@@ -15730,9 +16422,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
  *     return '</%s>%s' % (el.tag, extra)
  * 
  */
+  __Pyx_TraceLine(735,0,__PYX_ERR(0, 735, __pyx_L1_error))
   /*else*/ {
-    __Pyx_INCREF(__pyx_kp_s_);
-    __pyx_v_extra = __pyx_kp_s_;
+    __Pyx_INCREF(__pyx_kp_s__3);
+    __pyx_v_extra = __pyx_kp_s__3;
   }
   __pyx_L3:;
 
@@ -15743,6 +16436,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
  * 
  * def is_word(tok):
  */
+  __Pyx_TraceLine(736,0,__PYX_ERR(0, 736, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -15781,6 +16475,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_55end_tag(CYTHON_UNUSED PyObject *__
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_extra);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15809,11 +16504,14 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_58is_word(PyObject *__pyx_self, PyOb
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_57is_word(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tok) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__61)
   __Pyx_RefNannySetupContext("is_word", 0);
+  __Pyx_TraceCall("is_word", __pyx_f[0], 738, 0, __PYX_ERR(0, 738, __pyx_L1_error));
 
   /* "lxml/html/diff.py":739
  * 
@@ -15822,10 +16520,11 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_57is_word(CYTHON_UNUSED PyObject *__
  * 
  * def is_end_tag(tok):
  */
+  __Pyx_TraceLine(739,0,__PYX_ERR(0, 739, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 739, __pyx_L1_error)
@@ -15852,6 +16551,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_57is_word(CYTHON_UNUSED PyObject *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15880,10 +16580,13 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_60is_end_tag(PyObject *__pyx_self, P
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_59is_end_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tok) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__63)
   __Pyx_RefNannySetupContext("is_end_tag", 0);
+  __Pyx_TraceCall("is_end_tag", __pyx_f[0], 741, 0, __PYX_ERR(0, 741, __pyx_L1_error));
 
   /* "lxml/html/diff.py":742
  * 
@@ -15892,10 +16595,11 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_59is_end_tag(CYTHON_UNUSED PyObject
  * 
  * def is_start_tag(tok):
  */
+  __Pyx_TraceLine(742,0,__PYX_ERR(0, 742, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 742, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 742, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
@@ -15918,6 +16622,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_59is_end_tag(CYTHON_UNUSED PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15946,13 +16651,16 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_62is_start_tag(PyObject *__pyx_self,
 
 static PyObject *__pyx_pf_4lxml_4html_4diff_61is_start_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tok) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__65)
   __Pyx_RefNannySetupContext("is_start_tag", 0);
+  __Pyx_TraceCall("is_start_tag", __pyx_f[0], 744, 0, __PYX_ERR(0, 744, __pyx_L1_error));
 
   /* "lxml/html/diff.py":745
  * 
@@ -15961,10 +16669,11 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_61is_start_tag(CYTHON_UNUSED PyObjec
  * 
  * def fixup_ins_del_tags(html):
  */
+  __Pyx_TraceLine(745,0,__PYX_ERR(0, 745, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 745, __pyx_L1_error)
@@ -15978,7 +16687,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_61is_start_tag(CYTHON_UNUSED PyObjec
   }
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_tok, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 745, __pyx_L1_error)
@@ -16010,6 +16719,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_61is_start_tag(CYTHON_UNUSED PyObjec
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16040,12 +16750,15 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_64fixup_ins_del_tags(PyObject *__pyx
 static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html) {
   PyObject *__pyx_v_doc = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__68)
   __Pyx_RefNannySetupContext("fixup_ins_del_tags", 0);
+  __Pyx_TraceCall("fixup_ins_del_tags", __pyx_f[0], 747, 0, __PYX_ERR(0, 747, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_html);
 
   /* "lxml/html/diff.py":751
@@ -16055,6 +16768,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED P
  *     _fixup_ins_del_tags(doc)
  *     html = serialize_html_fragment(doc, skip_outer=True)
  */
+  __Pyx_TraceLine(751,0,__PYX_ERR(0, 751, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_html); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 751, __pyx_L1_error)
@@ -16080,6 +16794,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED P
  *     html = serialize_html_fragment(doc, skip_outer=True)
  *     return html
  */
+  __Pyx_TraceLine(752,0,__PYX_ERR(0, 752, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_fixup_ins_del_tags_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 752, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
@@ -16134,6 +16849,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED P
  *     return html
  * 
  */
+  __Pyx_TraceLine(753,0,__PYX_ERR(0, 753, __pyx_L1_error))
   __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_serialize_html_fragment); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 753, __pyx_L1_error)
@@ -16159,6 +16875,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED P
  * 
  * def serialize_html_fragment(el, skip_outer=False):
  */
+  __Pyx_TraceLine(754,0,__PYX_ERR(0, 754, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_html);
   __pyx_r = __pyx_v_html;
@@ -16184,6 +16901,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_63fixup_ins_del_tags(CYTHON_UNUSED P
   __Pyx_XDECREF(__pyx_v_doc);
   __Pyx_XDECREF(__pyx_v_html);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16266,13 +16984,16 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_66serialize_html_fragment(PyObject *
 static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_el, PyObject *__pyx_v_skip_outer) {
   PyObject *__pyx_v_html = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__69)
   __Pyx_RefNannySetupContext("serialize_html_fragment", 0);
+  __Pyx_TraceCall("serialize_html_fragment", __pyx_f[0], 756, 0, __PYX_ERR(0, 756, __pyx_L1_error));
 
   /* "lxml/html/diff.py":762
  *     If skip_outer is true, then don't serialize the outermost tag
@@ -16281,6 +17002,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *         "You should pass in an element, not a string like %r" % el)
  *     html = etree.tostring(el, method="html", encoding=_unicode)
  */
+  __Pyx_TraceLine(762,0,__PYX_ERR(0, 762, __pyx_L1_error))
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error)
@@ -16296,6 +17018,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *     html = etree.tostring(el, method="html", encoding=_unicode)
  *     if skip_outer:
  */
+      __Pyx_TraceLine(763,0,__PYX_ERR(0, 763, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_You_should_pass_in_an_element_no, __pyx_v_el); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       PyErr_SetObject(PyExc_AssertionError, __pyx_t_1);
@@ -16312,6 +17035,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *     if skip_outer:
  *         # Get rid of the extra starting tag:
  */
+  __Pyx_TraceLine(764,0,__PYX_ERR(0, 764, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error)
@@ -16344,6 +17068,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *         # Get rid of the extra starting tag:
  *         html = html[html.find('>')+1:]
  */
+  __Pyx_TraceLine(765,0,__PYX_ERR(0, 765, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_outer); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 765, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -16354,9 +17079,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *         # Get rid of the extra end tag:
  *         html = html[:html.rfind('<')]
  */
+    __Pyx_TraceLine(767,0,__PYX_ERR(0, 767, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_html, __pyx_n_s_find); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 767, __pyx_L1_error)
@@ -16375,9 +17101,10 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *         return html.strip()
  *     else:
  */
+    __Pyx_TraceLine(769,0,__PYX_ERR(0, 769, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_html, __pyx_n_s_rfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 769, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_html, 0, 0, NULL, &__pyx_t_5, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error)
@@ -16393,6 +17120,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  *     else:
  *         return html
  */
+    __Pyx_TraceLine(770,0,__PYX_ERR(0, 770, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_html, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -16434,6 +17162,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
  * 
  * def _fixup_ins_del_tags(doc):
  */
+  __Pyx_TraceLine(772,0,__PYX_ERR(0, 772, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_html);
@@ -16460,6 +17189,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_65serialize_html_fragment(CYTHON_UNU
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_html);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16491,6 +17221,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_v_el = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -16503,7 +17234,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
   PyObject *(*__pyx_t_9)(PyObject *);
   int __pyx_t_10;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__73)
   __Pyx_RefNannySetupContext("_fixup_ins_del_tags", 0);
+  __Pyx_TraceCall("_fixup_ins_del_tags", __pyx_f[0], 774, 0, __PYX_ERR(0, 774, __pyx_L1_error));
 
   /* "lxml/html/diff.py":777
  *     """fixup_ins_del_tags that works on an lxml document in-place
@@ -16512,7 +17245,8 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *         for el in doc.xpath('descendant-or-self::%s' % tag):
  *             if not _contains_block_level_tag(el):
  */
-  __pyx_t_1 = __pyx_tuple__37; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
+  __Pyx_TraceLine(777,0,__PYX_ERR(0, 777, __pyx_L1_error))
+  __pyx_t_1 = __pyx_tuple__74; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
   for (;;) {
     if (__pyx_t_2 >= 2) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
@@ -16531,6 +17265,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *             if not _contains_block_level_tag(el):
  *                 continue
  */
+    __Pyx_TraceLine(778,0,__PYX_ERR(0, 778, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_doc, __pyx_n_s_xpath); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 778, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_descendant_or_self_s, __pyx_v_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 778, __pyx_L1_error)
@@ -16631,6 +17366,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *                 continue
  *             _move_el_inside_block(el, tag=tag)
  */
+      __Pyx_TraceLine(779,0,__PYX_ERR(0, 779, __pyx_L1_error))
       __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_contains_block_level_tag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 779, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_5 = NULL;
@@ -16688,6 +17424,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *             _move_el_inside_block(el, tag=tag)
  *             el.drop_tag()
  */
+        __Pyx_TraceLine(780,0,__PYX_ERR(0, 780, __pyx_L1_error))
         goto __pyx_L5_continue;
 
         /* "lxml/html/diff.py":779
@@ -16706,6 +17443,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *             el.drop_tag()
  *             #_merge_element_contents(el)
  */
+      __Pyx_TraceLine(781,0,__PYX_ERR(0, 781, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_move_el_inside_block); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 781, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 781, __pyx_L1_error)
@@ -16730,6 +17468,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *             #_merge_element_contents(el)
  * 
  */
+      __Pyx_TraceLine(782,0,__PYX_ERR(0, 782, __pyx_L1_error))
       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_drop_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 782, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = NULL;
@@ -16759,6 +17498,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *             if not _contains_block_level_tag(el):
  *                 continue
  */
+      __Pyx_TraceLine(778,0,__PYX_ERR(0, 778, __pyx_L1_error))
       __pyx_L5_continue:;
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -16770,6 +17510,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
  *         for el in doc.xpath('descendant-or-self::%s' % tag):
  *             if not _contains_block_level_tag(el):
  */
+    __Pyx_TraceLine(777,0,__PYX_ERR(0, 777, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -16797,6 +17538,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_67_fixup_ins_del_tags(CYTHON_UNUSED
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_el);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16827,6 +17569,7 @@ static PyObject *__pyx_pw_4lxml_4html_4diff_70_contains_block_level_tag(PyObject
 static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_el) {
   PyObject *__pyx_v_child = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -16838,7 +17581,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   PyObject *__pyx_t_10 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__75)
   __Pyx_RefNannySetupContext("_contains_block_level_tag", 0);
+  __Pyx_TraceCall("_contains_block_level_tag", __pyx_f[0], 785, 0, __PYX_ERR(0, 785, __pyx_L1_error));
 
   /* "lxml/html/diff.py":788
  *     """True if the element contains any block-level elements, like <p>, <td>, etc.
@@ -16847,6 +17592,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *         return True
  *     for child in el:
  */
+  __Pyx_TraceLine(788,0,__PYX_ERR(0, 788, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_block_level_tags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 788, __pyx_L1_error)
@@ -16879,6 +17625,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *     for child in el:
  *         if _contains_block_level_tag(child):
  */
+    __Pyx_TraceLine(789,0,__PYX_ERR(0, 789, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_True);
     __pyx_r = Py_True;
@@ -16900,6 +17647,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *         if _contains_block_level_tag(child):
  *             return True
  */
+  __Pyx_TraceLine(790,0,__PYX_ERR(0, 790, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_el)) || PyTuple_CheckExact(__pyx_v_el)) {
     __pyx_t_2 = __pyx_v_el; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
@@ -16949,6 +17697,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *             return True
  *     return False
  */
+    __Pyx_TraceLine(791,0,__PYX_ERR(0, 791, __pyx_L1_error))
     __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_contains_block_level_tag); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 791, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
@@ -17005,6 +17754,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *     return False
  * 
  */
+      __Pyx_TraceLine(792,0,__PYX_ERR(0, 792, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(Py_True);
       __pyx_r = Py_True;
@@ -17027,6 +17777,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  *         if _contains_block_level_tag(child):
  *             return True
  */
+    __Pyx_TraceLine(790,0,__PYX_ERR(0, 790, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -17037,6 +17788,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
  * 
  * def _move_el_inside_block(el, tag):
  */
+  __Pyx_TraceLine(793,0,__PYX_ERR(0, 793, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_False);
   __pyx_r = Py_False;
@@ -17062,6 +17814,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_69_contains_block_level_tag(CYTHON_U
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_child);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -17145,6 +17898,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
   PyObject *__pyx_v_child_tag = NULL;
   PyObject *__pyx_v_text_tag = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -17158,7 +17912,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
   int __pyx_t_10;
   PyObject *__pyx_t_11 = NULL;
   int __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__76)
   __Pyx_RefNannySetupContext("_move_el_inside_block", 0);
+  __Pyx_TraceCall("_move_el_inside_block", __pyx_f[0], 795, 0, __PYX_ERR(0, 795, __pyx_L1_error));
 
   /* "lxml/html/diff.py":798
  *     """ helper for _fixup_ins_del_tags; actually takes the <ins> etc tags
@@ -17167,6 +17923,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         if _contains_block_level_tag(child):
  *             break
  */
+  __Pyx_TraceLine(798,0,__PYX_ERR(0, 798, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_el)) || PyTuple_CheckExact(__pyx_v_el)) {
     __pyx_t_1 = __pyx_v_el; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -17216,6 +17973,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *             break
  *     else:
  */
+    __Pyx_TraceLine(799,0,__PYX_ERR(0, 799, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_contains_block_level_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 799, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -17272,6 +18030,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *     else:
  *         import sys
  */
+      __Pyx_TraceLine(800,0,__PYX_ERR(0, 800, __pyx_L1_error))
       goto __pyx_L4_break;
 
       /* "lxml/html/diff.py":799
@@ -17290,6 +18049,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         if _contains_block_level_tag(child):
  *             break
  */
+    __Pyx_TraceLine(798,0,__PYX_ERR(0, 798, __pyx_L1_error))
   }
   /*else*/ {
 
@@ -17300,6 +18060,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         # No block-level tags in any child
  *         children_tag = etree.Element(tag)
  */
+    __Pyx_TraceLine(802,0,__PYX_ERR(0, 802, __pyx_L1_error))
     __pyx_t_4 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_sys = __pyx_t_4;
@@ -17312,6 +18073,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         children_tag.text = el.text
  *         el.text = None
  */
+    __Pyx_TraceLine(804,0,__PYX_ERR(0, 804, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 804, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Element); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L1_error)
@@ -17370,6 +18132,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         el.text = None
  *         children_tag.extend(list(el))
  */
+    __Pyx_TraceLine(805,0,__PYX_ERR(0, 805, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_children_tag, __pyx_n_s_text, __pyx_t_4) < 0) __PYX_ERR(0, 805, __pyx_L1_error)
@@ -17382,6 +18145,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         children_tag.extend(list(el))
  *         el[:] = [children_tag]
  */
+    __Pyx_TraceLine(806,0,__PYX_ERR(0, 806, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_text, Py_None) < 0) __PYX_ERR(0, 806, __pyx_L1_error)
 
     /* "lxml/html/diff.py":807
@@ -17391,6 +18155,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         el[:] = [children_tag]
  *         return
  */
+    __Pyx_TraceLine(807,0,__PYX_ERR(0, 807, __pyx_L1_error))
     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_children_tag, __pyx_n_s_extend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 807, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_6 = PySequence_List(__pyx_v_el); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 807, __pyx_L1_error)
@@ -17450,12 +18215,13 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         return
  *     for child in list(el):
  */
+    __Pyx_TraceLine(808,0,__PYX_ERR(0, 808, __pyx_L1_error))
     __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 808, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_children_tag);
     __Pyx_GIVEREF(__pyx_v_children_tag);
     PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_children_tag);
-    if (__Pyx_PyObject_SetSlice(__pyx_v_el, __pyx_t_4, 0, 0, NULL, NULL, &__pyx_slice__38, 0, 0, 1) < 0) __PYX_ERR(0, 808, __pyx_L1_error)
+    if (__Pyx_PyObject_SetSlice(__pyx_v_el, __pyx_t_4, 0, 0, NULL, NULL, &__pyx_slice__77, 0, 0, 1) < 0) __PYX_ERR(0, 808, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
     /* "lxml/html/diff.py":809
@@ -17465,6 +18231,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *     for child in list(el):
  *         if _contains_block_level_tag(child):
  */
+    __Pyx_TraceLine(809,0,__PYX_ERR(0, 809, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17478,6 +18245,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         if _contains_block_level_tag(child):
  *             break
  */
+  __Pyx_TraceLine(798,0,__PYX_ERR(0, 798, __pyx_L1_error))
   __pyx_L4_break:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -17488,6 +18256,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         if _contains_block_level_tag(child):
  *             _move_el_inside_block(child, tag)
  */
+  __Pyx_TraceLine(810,0,__PYX_ERR(0, 810, __pyx_L1_error))
   __pyx_t_1 = PySequence_List(__pyx_v_el); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 810, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
@@ -17510,6 +18279,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *             _move_el_inside_block(child, tag)
  *             if child.tail:
  */
+    __Pyx_TraceLine(811,0,__PYX_ERR(0, 811, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_contains_block_level_tag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_9 = NULL;
@@ -17566,6 +18336,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *             if child.tail:
  *                 tail_tag = etree.Element(tag)
  */
+      __Pyx_TraceLine(812,0,__PYX_ERR(0, 812, __pyx_L1_error))
       __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_move_el_inside_block); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 812, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_6 = NULL;
@@ -17622,6 +18393,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *                 tail_tag = etree.Element(tag)
  *                 tail_tag.text = child.tail
  */
+      __Pyx_TraceLine(813,0,__PYX_ERR(0, 813, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 813, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 813, __pyx_L1_error)
@@ -17635,6 +18407,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *                 tail_tag.text = child.tail
  *                 child.tail = None
  */
+        __Pyx_TraceLine(814,0,__PYX_ERR(0, 814, __pyx_L1_error))
         __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Element); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 814, __pyx_L1_error)
@@ -17693,6 +18466,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *                 child.tail = None
  *                 el.insert(el.index(child)+1, tail_tag)
  */
+        __Pyx_TraceLine(815,0,__PYX_ERR(0, 815, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_tail_tag, __pyx_n_s_text, __pyx_t_1) < 0) __PYX_ERR(0, 815, __pyx_L1_error)
@@ -17705,6 +18479,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *                 el.insert(el.index(child)+1, tail_tag)
  *         else:
  */
+        __Pyx_TraceLine(816,0,__PYX_ERR(0, 816, __pyx_L1_error))
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_child, __pyx_n_s_tail, Py_None) < 0) __PYX_ERR(0, 816, __pyx_L1_error)
 
         /* "lxml/html/diff.py":817
@@ -17714,6 +18489,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         else:
  *             child_tag = etree.Element(tag)
  */
+        __Pyx_TraceLine(817,0,__PYX_ERR(0, 817, __pyx_L1_error))
         __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_insert); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 817, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 817, __pyx_L1_error)
@@ -17839,6 +18615,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *             el.replace(child, child_tag)
  *             child_tag.append(child)
  */
+    __Pyx_TraceLine(819,0,__PYX_ERR(0, 819, __pyx_L1_error))
     /*else*/ {
       __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 819, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
@@ -17898,6 +18675,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *             child_tag.append(child)
  *     if el.text:
  */
+      __Pyx_TraceLine(820,0,__PYX_ERR(0, 820, __pyx_L1_error))
       __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_replace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 820, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_7 = NULL;
@@ -17954,6 +18732,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *     if el.text:
  *         text_tag = etree.Element(tag)
  */
+      __Pyx_TraceLine(821,0,__PYX_ERR(0, 821, __pyx_L1_error))
       __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_child_tag, __pyx_v_child); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 821, __pyx_L1_error)
     }
     __pyx_L9:;
@@ -17965,6 +18744,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         if _contains_block_level_tag(child):
  *             _move_el_inside_block(child, tag)
  */
+    __Pyx_TraceLine(810,0,__PYX_ERR(0, 810, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -17975,6 +18755,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         text_tag = etree.Element(tag)
  *         text_tag.text = el.text
  */
+  __Pyx_TraceLine(822,0,__PYX_ERR(0, 822, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 822, __pyx_L1_error)
@@ -17988,6 +18769,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         text_tag.text = el.text
  *         el.text = None
  */
+    __Pyx_TraceLine(823,0,__PYX_ERR(0, 823, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_etree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Element); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 823, __pyx_L1_error)
@@ -18046,6 +18828,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         el.text = None
  *         el.insert(0, text_tag)
  */
+    __Pyx_TraceLine(824,0,__PYX_ERR(0, 824, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 824, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_text_tag, __pyx_n_s_text, __pyx_t_4) < 0) __PYX_ERR(0, 824, __pyx_L1_error)
@@ -18058,6 +18841,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  *         el.insert(0, text_tag)
  * 
  */
+    __Pyx_TraceLine(825,0,__PYX_ERR(0, 825, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(__pyx_v_el, __pyx_n_s_text, Py_None) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
 
     /* "lxml/html/diff.py":826
@@ -18067,6 +18851,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
  * 
  * def _merge_element_contents(el):
  */
+    __Pyx_TraceLine(826,0,__PYX_ERR(0, 826, __pyx_L1_error))
     __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_insert); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 826, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __pyx_t_9 = NULL;
@@ -18154,6 +18939,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_71_move_el_inside_block(CYTHON_UNUSE
   __Pyx_XDECREF(__pyx_v_child_tag);
   __Pyx_XDECREF(__pyx_v_text_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18187,6 +18973,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
   PyObject *__pyx_v_index = NULL;
   PyObject *__pyx_v_previous = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -18195,7 +18982,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
   Py_ssize_t __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
+  __Pyx_TraceFrameInit(__pyx_codeobj__78)
   __Pyx_RefNannySetupContext("_merge_element_contents", 0);
+  __Pyx_TraceCall("_merge_element_contents", __pyx_f[0], 828, 0, __PYX_ERR(0, 828, __pyx_L1_error));
 
   /* "lxml/html/diff.py":834
  *     <p>Hi there!</p>
@@ -18204,6 +18993,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *     text = el.text or ''
  *     if el.tail:
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(0, 834, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_getparent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -18234,6 +19024,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *     if el.tail:
  *         if not len(el):
  */
+  __Pyx_TraceLine(835,0,__PYX_ERR(0, 835, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 835, __pyx_L1_error)
@@ -18245,8 +19036,8 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_s_);
-  __pyx_t_1 = __pyx_kp_s_;
+  __Pyx_INCREF(__pyx_kp_s__3);
+  __pyx_t_1 = __pyx_kp_s__3;
   __pyx_L3_bool_binop_done:;
   __pyx_v_text = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18258,6 +19049,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         if not len(el):
  *             text += el.tail
  */
+  __Pyx_TraceLine(836,0,__PYX_ERR(0, 836, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 836, __pyx_L1_error)
@@ -18271,6 +19063,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             text += el.tail
  *         else:
  */
+    __Pyx_TraceLine(837,0,__PYX_ERR(0, 837, __pyx_L1_error))
     __pyx_t_5 = PyObject_Length(__pyx_v_el); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 837, __pyx_L1_error)
     __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
     if (__pyx_t_4) {
@@ -18282,6 +19075,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         else:
  *             if el[-1].tail:
  */
+      __Pyx_TraceLine(838,0,__PYX_ERR(0, 838, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_text, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
@@ -18307,6 +19101,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *                 el[-1].tail += el.tail
  *             else:
  */
+    __Pyx_TraceLine(840,0,__PYX_ERR(0, 840, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_el, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 840, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -18324,6 +19119,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             else:
  *                 el[-1].tail = el.tail
  */
+        __Pyx_TraceLine(841,0,__PYX_ERR(0, 841, __pyx_L1_error))
         __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_el, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_tail); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 841, __pyx_L1_error)
@@ -18355,6 +19151,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *     index = parent.index(el)
  *     if text:
  */
+      __Pyx_TraceLine(843,0,__PYX_ERR(0, 843, __pyx_L1_error))
       /*else*/ {
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_tail); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
@@ -18384,6 +19181,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *     if text:
  *         if index == 0:
  */
+  __Pyx_TraceLine(844,0,__PYX_ERR(0, 844, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
@@ -18439,6 +19237,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         if index == 0:
  *             previous = None
  */
+  __Pyx_TraceLine(845,0,__PYX_ERR(0, 845, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 845, __pyx_L1_error)
   if (__pyx_t_4) {
 
@@ -18449,6 +19248,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             previous = None
  *         else:
  */
+    __Pyx_TraceLine(846,0,__PYX_ERR(0, 846, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_index, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 846, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 846, __pyx_L1_error)
@@ -18462,6 +19262,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         else:
  *             previous = parent[index-1]
  */
+      __Pyx_TraceLine(847,0,__PYX_ERR(0, 847, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __pyx_v_previous = Py_None;
 
@@ -18482,6 +19283,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         if previous is None:
  *             if parent.text:
  */
+    __Pyx_TraceLine(849,0,__PYX_ERR(0, 849, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = __Pyx_PyInt_SubtractObjC(__pyx_v_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 849, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -18500,6 +19302,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             if parent.text:
  *                 parent.text += text
  */
+    __Pyx_TraceLine(850,0,__PYX_ERR(0, 850, __pyx_L1_error))
     __pyx_t_4 = (__pyx_v_previous == Py_None);
     __pyx_t_7 = (__pyx_t_4 != 0);
     if (__pyx_t_7) {
@@ -18511,6 +19314,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *                 parent.text += text
  *             else:
  */
+      __Pyx_TraceLine(851,0,__PYX_ERR(0, 851, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 851, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 851, __pyx_L1_error)
@@ -18524,6 +19328,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             else:
  *                 parent.text = text
  */
+        __Pyx_TraceLine(852,0,__PYX_ERR(0, 852, __pyx_L1_error))
         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_v_text); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 852, __pyx_L1_error)
@@ -18549,6 +19354,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *         else:
  *             if previous.tail:
  */
+      __Pyx_TraceLine(854,0,__PYX_ERR(0, 854, __pyx_L1_error))
       /*else*/ {
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_parent, __pyx_n_s_text, __pyx_v_text) < 0) __PYX_ERR(0, 854, __pyx_L1_error)
       }
@@ -18571,6 +19377,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *                 previous.tail += text
  *             else:
  */
+    __Pyx_TraceLine(856,0,__PYX_ERR(0, 856, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_previous, __pyx_n_s_tail); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 856, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -18585,6 +19392,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *             else:
  *                 previous.tail = text
  */
+        __Pyx_TraceLine(857,0,__PYX_ERR(0, 857, __pyx_L1_error))
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_previous, __pyx_n_s_tail); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 857, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
@@ -18610,6 +19418,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  *     parent[index:index+1] = el.getchildren()
  * 
  */
+      __Pyx_TraceLine(859,0,__PYX_ERR(0, 859, __pyx_L1_error))
       /*else*/ {
         if (__Pyx_PyObject_SetAttrStr(__pyx_v_previous, __pyx_n_s_tail, __pyx_v_text) < 0) __PYX_ERR(0, 859, __pyx_L1_error)
       }
@@ -18633,6 +19442,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
  * 
  * class InsensitiveSequenceMatcher(difflib.SequenceMatcher):
  */
+  __Pyx_TraceLine(860,0,__PYX_ERR(0, 860, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_el, __pyx_n_s_getchildren); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 860, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_2 = NULL;
@@ -18683,6 +19493,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_73_merge_element_contents(CYTHON_UNU
   __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XDECREF(__pyx_v_previous);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18715,6 +19526,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
   PyObject *__pyx_v_actual = NULL;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -18727,7 +19539,9 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
   PyObject *(*__pyx_t_9)(PyObject *);
   int __pyx_t_10;
   int __pyx_t_11;
+  __Pyx_TraceFrameInit(__pyx_codeobj__79)
   __Pyx_RefNannySetupContext("get_matching_blocks", 0);
+  __Pyx_TraceCall("get_matching_blocks", __pyx_f[0], 870, 0, __PYX_ERR(0, 870, __pyx_L1_error));
 
   /* "lxml/html/diff.py":871
  * 
@@ -18736,6 +19550,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *         threshold = min(self.threshold, size / 4)
  *         actual = difflib.SequenceMatcher.get_matching_blocks(self)
  */
+  __Pyx_TraceLine(871,0,__PYX_ERR(0, 871, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_b); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 871, __pyx_L1_error)
@@ -18761,6 +19576,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *         actual = difflib.SequenceMatcher.get_matching_blocks(self)
  *         return [item for item in actual
  */
+  __Pyx_TraceLine(872,0,__PYX_ERR(0, 872, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_size, __pyx_int_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 872, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_threshold); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __pyx_L1_error)
@@ -18790,6 +19606,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *         return [item for item in actual
  *                 if item[2] > threshold
  */
+  __Pyx_TraceLine(873,0,__PYX_ERR(0, 873, __pyx_L1_error))
   __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_difflib); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 873, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_SequenceMatcher); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 873, __pyx_L1_error)
@@ -18851,6 +19668,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *                 if item[2] > threshold
  *                 or not item[2]]
  */
+  __Pyx_TraceLine(874,0,__PYX_ERR(0, 874, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 874, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -18903,6 +19721,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *                 or not item[2]]
  * 
  */
+    __Pyx_TraceLine(875,0,__PYX_ERR(0, 875, __pyx_L1_error))
     __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 875, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_v_threshold, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error)
@@ -18922,6 +19741,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  * 
  * if __name__ == '__main__':
  */
+    __Pyx_TraceLine(876,0,__PYX_ERR(0, 876, __pyx_L1_error))
     __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 876, __pyx_L1_error)
@@ -18937,6 +19757,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *                 or not item[2]]
  * 
  */
+    __Pyx_TraceLine(875,0,__PYX_ERR(0, 875, __pyx_L1_error))
     if (__pyx_t_8) {
 
       /* "lxml/html/diff.py":874
@@ -18946,6 +19767,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *                 if item[2] > threshold
  *                 or not item[2]]
  */
+      __Pyx_TraceLine(874,0,__PYX_ERR(0, 874, __pyx_L1_error))
       if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_item))) __PYX_ERR(0, 874, __pyx_L1_error)
 
       /* "lxml/html/diff.py":875
@@ -18964,6 +19786,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
  *                 if item[2] > threshold
  *                 or not item[2]]
  */
+    __Pyx_TraceLine(874,0,__PYX_ERR(0, 874, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_r = __pyx_t_1;
@@ -18992,6 +19815,7 @@ static PyObject *__pyx_pf_4lxml_4html_4diff_26InsensitiveSequenceMatcher_get_mat
   __Pyx_XDECREF(__pyx_v_actual);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19406,7 +20230,6 @@ static struct PyModuleDef __pyx_moduledef = {
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
   {&__pyx_kp_s_Acts_like_SequenceMatcher_but_t, __pyx_k_Acts_like_SequenceMatcher_but_t, sizeof(__pyx_k_Acts_like_SequenceMatcher_but_t), 0, 0, 1, 0},
   {&__pyx_n_s_DEL_END, __pyx_k_DEL_END, sizeof(__pyx_k_DEL_END), 0, 0, 1, 1},
   {&__pyx_n_s_DEL_START, __pyx_k_DEL_START, sizeof(__pyx_k_DEL_START), 0, 0, 1, 1},
@@ -19430,13 +20253,14 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_kp_s_Weird_state_cur_word_r_result_r, __pyx_k_Weird_state_cur_word_r_result_r, sizeof(__pyx_k_Weird_state_cur_word_r_result_r), 0, 0, 1, 0},
   {&__pyx_kp_s_You_should_pass_in_an_element_no, __pyx_k_You_should_pass_in_an_element_no, sizeof(__pyx_k_You_should_pass_in_an_element_no), 0, 0, 1, 0},
-  {&__pyx_kp_s__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 0, 1, 0},
-  {&__pyx_kp_s__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 0, 1, 0},
   {&__pyx_kp_s__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 0, 1, 0},
-  {&__pyx_kp_s__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 0, 1, 0},
-  {&__pyx_kp_s__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 0, 1, 0},
-  {&__pyx_kp_s__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 0, 1, 0},
-  {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
+  {&__pyx_kp_s__25, __pyx_k__25, sizeof(__pyx_k__25), 0, 0, 1, 0},
+  {&__pyx_kp_s__27, __pyx_k__27, sizeof(__pyx_k__27), 0, 0, 1, 0},
+  {&__pyx_kp_s__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 0, 1, 0},
+  {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
+  {&__pyx_kp_s__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 0, 1, 0},
+  {&__pyx_kp_s__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 0, 1, 0},
+  {&__pyx_kp_s__70, __pyx_k__70, sizeof(__pyx_k__70), 0, 0, 1, 0},
   {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
   {&__pyx_n_s_actual, __pyx_k_actual, sizeof(__pyx_k_actual), 0, 0, 1, 1},
   {&__pyx_n_s_address, __pyx_k_address, sizeof(__pyx_k_address), 0, 0, 1, 1},
@@ -19749,9 +20573,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if (not result[-1].post_tags and
  *             not tok.pre_tags and
  */
-  __pyx_slice__2 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(0, 106, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__2);
-  __Pyx_GIVEREF(__pyx_slice__2);
+  __pyx_slice__8 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__8);
+  __Pyx_GIVEREF(__pyx_slice__8);
 
   /* "lxml/html/diff.py":238
  *     unbalanced_start, balanced, unbalanced_end = split_unbalanced(ins_chunks)
@@ -19760,9 +20584,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         # Fix up the case where the word before the insert didn't end with
  *         # a space
  */
-  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s__5); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 238, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
+  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 238, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__16);
+  __Pyx_GIVEREF(__pyx_tuple__16);
 
   /* "lxml/html/diff.py":243
  *         doc[-1] += ' '
@@ -19771,9 +20595,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         # We move space outside of </ins>
  *         balanced[-1] = balanced[-1][:-1]
  */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s__5); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 243, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
+  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 243, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
 
   /* "lxml/html/diff.py":245
  *     if balanced and balanced[-1].endswith(' '):
@@ -19782,9 +20606,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     doc.extend(balanced)
  *     doc.append('</ins> ')
  */
-  __pyx_slice__8 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__8);
-  __Pyx_GIVEREF(__pyx_slice__8);
+  __pyx_slice__18 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__18);
+  __Pyx_GIVEREF(__pyx_slice__18);
 
   /* "lxml/html/diff.py":296
  *         locate_unbalanced_end(unbalanced_end, pre_delete, post_delete)
@@ -19793,9 +20617,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # Fix up case where the word before us didn't have a trailing space
  *             doc[-1] += ' '
  */
-  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s__5); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 296, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 296, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
 
   /* "lxml/html/diff.py":300
  *             doc[-1] += ' '
@@ -19804,9 +20628,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # We move space outside of </del>
  *             balanced[-1] = balanced[-1][:-1]
  */
-  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s__5); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 300, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
+  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 300, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__22);
+  __Pyx_GIVEREF(__pyx_tuple__22);
 
   /* "lxml/html/diff.py":302
  *         if balanced and balanced[-1].endswith(' '):
@@ -19815,9 +20639,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         doc.extend(balanced)
  *         doc.append('</del> ')
  */
-  __pyx_slice__11 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__11)) __PYX_ERR(0, 302, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__11);
-  __Pyx_GIVEREF(__pyx_slice__11);
+  __pyx_slice__23 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(0, 302, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__23);
+  __Pyx_GIVEREF(__pyx_slice__23);
 
   /* "lxml/html/diff.py":322
  *     balanced = []
@@ -19826,9 +20650,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             balanced.append(chunk)
  *             continue
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 322, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 322, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
 
   /* "lxml/html/diff.py":326
  *             continue
@@ -19837,9 +20661,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if name in empty_tags:
  *             balanced.append(chunk)
  */
-  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 326, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__16);
-  __Pyx_GIVEREF(__pyx_tuple__16);
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s__28); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 326, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
 
   /* "lxml/html/diff.py":388
  *             break
@@ -19848,9 +20672,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not post_delete:
  *             break
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s__17); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 388, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s__32); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 388, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
 
   /* "lxml/html/diff.py":392
  *             break
@@ -19859,9 +20683,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # Reached a word, we can't move the delete text forward
  *             break
  */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 392, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 392, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
 
   /* "lxml/html/diff.py":398
  *             # Reached a closing tag, can we go further?  Maybe not...
@@ -19870,9 +20694,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if name == 'ins':
  *             # Can't move into an insert
  */
-  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s__17); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 398, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s__32); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 398, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
 
   /* "lxml/html/diff.py":419
  *             break
@@ -19881,9 +20705,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if not pre_delete:
  *             break
  */
-  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 419, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s__28); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 419, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__37);
+  __Pyx_GIVEREF(__pyx_tuple__37);
 
   /* "lxml/html/diff.py":423
  *             break
@@ -19892,9 +20716,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             # A word or a start tag
  *             break
  */
-  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s__22); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__23);
-  __Pyx_GIVEREF(__pyx_tuple__23);
+  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s__38); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__39);
+  __Pyx_GIVEREF(__pyx_tuple__39);
 
   /* "lxml/html/diff.py":426
  *             # A word or a start tag
@@ -19903,9 +20727,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         if name == 'ins' or name == 'del':
  *             # Can't move into an insert or delete
  */
-  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__24);
-  __Pyx_GIVEREF(__pyx_tuple__24);
+  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s__28); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__40);
+  __Pyx_GIVEREF(__pyx_tuple__40);
 
   /* "lxml/html/diff.py":627
  * 
@@ -19914,9 +20738,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     else:
  *         result[-1].post_tags.extend(tag_accum)
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
+  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 627, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__53);
+  __Pyx_GIVEREF(__pyx_tuple__53);
 
   /* "lxml/html/diff.py":689
  *     if not skip_tag:
@@ -19925,9 +20749,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         else:
  *             yield start_tag(el)
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_src); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__27);
-  __Pyx_GIVEREF(__pyx_tuple__27);
+  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_n_s_src); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 689, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__55);
+  __Pyx_GIVEREF(__pyx_tuple__55);
 
   /* "lxml/html/diff.py":700
  *         for item in flatten_el(child, include_hrefs=include_hrefs):
@@ -19936,9 +20760,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         yield ('href', el.get('href'))
  *     if not skip_tag:
  */
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_href); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 700, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
+  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_n_s_href); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 700, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__56);
+  __Pyx_GIVEREF(__pyx_tuple__56);
 
   /* "lxml/html/diff.py":701
  *             yield item
@@ -19947,9 +20771,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     if not skip_tag:
  *         yield end_tag(el)
  */
-  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_href); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__29);
-  __Pyx_GIVEREF(__pyx_tuple__29);
+  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_href); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 701, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__57);
+  __Pyx_GIVEREF(__pyx_tuple__57);
 
   /* "lxml/html/diff.py":739
  * 
@@ -19958,9 +20782,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def is_end_tag(tok):
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 739, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 739, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
 
   /* "lxml/html/diff.py":742
  * 
@@ -19969,9 +20793,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def is_start_tag(tok):
  */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s__22); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
+  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s__38); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__64);
+  __Pyx_GIVEREF(__pyx_tuple__64);
 
   /* "lxml/html/diff.py":745
  * 
@@ -19980,12 +20804,12 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def fixup_ins_del_tags(html):
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 745, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s__22); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 745, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
+  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 745, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__66);
+  __Pyx_GIVEREF(__pyx_tuple__66);
+  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s__38); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 745, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__67);
+  __Pyx_GIVEREF(__pyx_tuple__67);
 
   /* "lxml/html/diff.py":767
  *     if skip_outer:
@@ -19994,9 +20818,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         # Get rid of the extra end tag:
  *         html = html[:html.rfind('<')]
  */
-  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s__34); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 767, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__35);
-  __Pyx_GIVEREF(__pyx_tuple__35);
+  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s__70); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 767, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
   /* "lxml/html/diff.py":769
  *         html = html[html.find('>')+1:]
@@ -20005,9 +20829,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return html.strip()
  *     else:
  */
-  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 769, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__36);
-  __Pyx_GIVEREF(__pyx_tuple__36);
+  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s__25); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 769, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
 
   /* "lxml/html/diff.py":777
  *     """fixup_ins_del_tags that works on an lxml document in-place
@@ -20016,9 +20840,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         for el in doc.xpath('descendant-or-self::%s' % tag):
  *             if not _contains_block_level_tag(el):
  */
-  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_ins_3, __pyx_n_s_del_3); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 777, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
+  __pyx_tuple__74 = PyTuple_Pack(2, __pyx_n_s_ins_3, __pyx_n_s_del_3); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 777, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
 
   /* "lxml/html/diff.py":808
  *         el.text = None
@@ -20027,9 +20851,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return
  *     for child in list(el):
  */
-  __pyx_slice__38 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 808, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__38);
-  __Pyx_GIVEREF(__pyx_slice__38);
+  __pyx_slice__77 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) __PYX_ERR(0, 808, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__77);
+  __Pyx_GIVEREF(__pyx_slice__77);
 
   /* "lxml/html/diff.py":27
  * ############################################################
@@ -20038,10 +20862,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return '<span title="%s">%s</span>' % (
  *         html_escape(_unicode(version), 1), text)
  */
-  __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_text, __pyx_n_s_version); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 27, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__39);
-  __Pyx_GIVEREF(__pyx_tuple__39);
-  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_default_markup, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 27, __pyx_L1_error)
+  __pyx_tuple__80 = PyTuple_Pack(2, __pyx_n_s_text, __pyx_n_s_version); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__80);
+  __Pyx_GIVEREF(__pyx_tuple__80);
+  __pyx_codeobj_ = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_default_markup, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj_)) __PYX_ERR(0, 27, __pyx_L1_error)
 
   /* "lxml/html/diff.py":31
  *         html_escape(_unicode(version), 1), text)
@@ -20050,10 +20874,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     doclist should be ordered from oldest to newest, like::
  */
-  __pyx_tuple__41 = PyTuple_Pack(8, __pyx_n_s_doclist, __pyx_n_s_markup, __pyx_n_s_tokenlist, __pyx_n_s_cur_tokens, __pyx_n_s_tokens, __pyx_n_s_result, __pyx_n_s_doc, __pyx_n_s_version); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 31, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__41);
-  __Pyx_GIVEREF(__pyx_tuple__41);
-  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html_annotate, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 31, __pyx_L1_error)
+  __pyx_tuple__81 = PyTuple_Pack(8, __pyx_n_s_doclist, __pyx_n_s_markup, __pyx_n_s_tokenlist, __pyx_n_s_cur_tokens, __pyx_n_s_tokens, __pyx_n_s_result, __pyx_n_s_doc, __pyx_n_s_version); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__81);
+  __Pyx_GIVEREF(__pyx_tuple__81);
+  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html_annotate, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 31, __pyx_L1_error)
 
   /* "lxml/html/diff.py":71
  *     return ''.join(result).strip()
@@ -20062,10 +20886,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """Tokenize a document and add an annotation attribute to each token
  *     """
  */
-  __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_doc, __pyx_n_s_annotation, __pyx_n_s_tokens, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 71, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
-  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_tokenize_annotated, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 71, __pyx_L1_error)
+  __pyx_tuple__82 = PyTuple_Pack(4, __pyx_n_s_doc, __pyx_n_s_annotation, __pyx_n_s_tokens, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__82);
+  __Pyx_GIVEREF(__pyx_tuple__82);
+  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_tokenize_annotated, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 71, __pyx_L1_error)
 
   /* "lxml/html/diff.py":79
  *     return tokens
@@ -20074,10 +20898,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """Merge the annotations from tokens_old into tokens_new, when the
  *     tokens in the new document already existed in the old document.
  */
-  __pyx_tuple__45 = PyTuple_Pack(11, __pyx_n_s_tokens_old, __pyx_n_s_tokens_new, __pyx_n_s_s, __pyx_n_s_commands, __pyx_n_s_command, __pyx_n_s_i1, __pyx_n_s_i2, __pyx_n_s_j1, __pyx_n_s_j2, __pyx_n_s_eq_old, __pyx_n_s_eq_new); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 79, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
-  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html_annotate_merge_annotations, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __pyx_tuple__83 = PyTuple_Pack(11, __pyx_n_s_tokens_old, __pyx_n_s_tokens_new, __pyx_n_s_s, __pyx_n_s_commands, __pyx_n_s_command, __pyx_n_s_i1, __pyx_n_s_i2, __pyx_n_s_j1, __pyx_n_s_j2, __pyx_n_s_eq_old, __pyx_n_s_eq_new); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__83);
+  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html_annotate_merge_annotations, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 79, __pyx_L1_error)
 
   /* "lxml/html/diff.py":92
  *             copy_annotations(eq_old, eq_new)
@@ -20086,10 +20910,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Copy annotations from the tokens listed in src to the tokens in dest
  */
-  __pyx_tuple__47 = PyTuple_Pack(4, __pyx_n_s_src, __pyx_n_s_dest, __pyx_n_s_src_tok, __pyx_n_s_dest_tok); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 92, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
-  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_copy_annotations, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 92, __pyx_L1_error)
+  __pyx_tuple__84 = PyTuple_Pack(4, __pyx_n_s_src, __pyx_n_s_dest, __pyx_n_s_src_tok, __pyx_n_s_dest_tok); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 92, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__84);
+  __Pyx_GIVEREF(__pyx_tuple__84);
+  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_copy_annotations, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 92, __pyx_L1_error)
 
   /* "lxml/html/diff.py":100
  *         dest_tok.annotation = src_tok.annotation
@@ -20098,10 +20922,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Combine adjacent tokens when there is no HTML between the tokens,
  */
-  __pyx_tuple__49 = PyTuple_Pack(3, __pyx_n_s_tokens, __pyx_n_s_result, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 100, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__49);
-  __Pyx_GIVEREF(__pyx_tuple__49);
-  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_compress_tokens, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __pyx_tuple__85 = PyTuple_Pack(3, __pyx_n_s_tokens, __pyx_n_s_result, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__85);
+  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_compress_tokens, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 100, __pyx_L1_error)
 
   /* "lxml/html/diff.py":115
  *     return result
@@ -20110,10 +20934,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Merge tok into the last element of tokens (modifying the list of
  *     tokens in-place).  """
  */
-  __pyx_tuple__51 = PyTuple_Pack(5, __pyx_n_s_tokens, __pyx_n_s_tok, __pyx_n_s_last, __pyx_n_s_text, __pyx_n_s_merged); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 115, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__51);
-  __Pyx_GIVEREF(__pyx_tuple__51);
-  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_compress_merge_back, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 115, __pyx_L1_error)
+  __pyx_tuple__86 = PyTuple_Pack(5, __pyx_n_s_tokens, __pyx_n_s_tok, __pyx_n_s_last, __pyx_n_s_text, __pyx_n_s_merged); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__86);
+  __Pyx_GIVEREF(__pyx_tuple__86);
+  __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_compress_merge_back, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 115, __pyx_L1_error)
 
   /* "lxml/html/diff.py":133
  *         tokens[-1] = merged
@@ -20122,10 +20946,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Serialize the list of tokens into a list of text chunks, calling
  */
-  __pyx_tuple__53 = PyTuple_Pack(6, __pyx_n_s_tokens, __pyx_n_s_markup_func, __pyx_n_s_token, __pyx_n_s_pre, __pyx_n_s_html, __pyx_n_s_post); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 133, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__53);
-  __Pyx_GIVEREF(__pyx_tuple__53);
-  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_markup_serialize_tokens, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __pyx_tuple__87 = PyTuple_Pack(6, __pyx_n_s_tokens, __pyx_n_s_markup_func, __pyx_n_s_token, __pyx_n_s_pre, __pyx_n_s_html, __pyx_n_s_post); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__87);
+  __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_markup_serialize_tokens, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 133, __pyx_L1_error)
 
   /* "lxml/html/diff.py":154
  * ############################################################
@@ -20134,10 +20958,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     ## FIXME: this should take parsed documents too, and use their body
  *     ## or other content.
  */
-  __pyx_tuple__54 = PyTuple_Pack(5, __pyx_n_s_old_html, __pyx_n_s_new_html, __pyx_n_s_old_html_tokens, __pyx_n_s_new_html_tokens, __pyx_n_s_result); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 154, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__54);
-  __Pyx_GIVEREF(__pyx_tuple__54);
-  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_htmldiff, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 154, __pyx_L1_error)
+  __pyx_tuple__88 = PyTuple_Pack(5, __pyx_n_s_old_html, __pyx_n_s_new_html, __pyx_n_s_old_html_tokens, __pyx_n_s_new_html_tokens, __pyx_n_s_result); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__88);
+  __Pyx_GIVEREF(__pyx_tuple__88);
+  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_htmldiff, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 154, __pyx_L1_error)
 
   /* "lxml/html/diff.py":177
  *     return fixup_ins_del_tags(result)
@@ -20146,10 +20970,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Does a diff on the tokens themselves, returning a list of text
  *     chunks (not tokens).
  */
-  __pyx_tuple__56 = PyTuple_Pack(12, __pyx_n_s_html1_tokens, __pyx_n_s_html2_tokens, __pyx_n_s_s, __pyx_n_s_commands, __pyx_n_s_result, __pyx_n_s_command, __pyx_n_s_i1, __pyx_n_s_i2, __pyx_n_s_j1, __pyx_n_s_j2, __pyx_n_s_ins_tokens, __pyx_n_s_del_tokens); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 177, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__56);
-  __Pyx_GIVEREF(__pyx_tuple__56);
-  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_htmldiff_tokens, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __pyx_tuple__89 = PyTuple_Pack(12, __pyx_n_s_html1_tokens, __pyx_n_s_html2_tokens, __pyx_n_s_s, __pyx_n_s_commands, __pyx_n_s_result, __pyx_n_s_command, __pyx_n_s_i1, __pyx_n_s_i2, __pyx_n_s_j1, __pyx_n_s_j2, __pyx_n_s_ins_tokens, __pyx_n_s_del_tokens); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__89);
+  __Pyx_GIVEREF(__pyx_tuple__89);
+  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(2, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_htmldiff_tokens, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 177, __pyx_L1_error)
 
   /* "lxml/html/diff.py":215
  *     return result
@@ -20158,13 +20982,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """Given a list of tokens, return a generator of the chunks of
  *     text for the data in the tokens.
  */
-  __pyx_tuple__58 = PyTuple_Pack(5, __pyx_n_s_tokens, __pyx_n_s_equal, __pyx_n_s_token, __pyx_n_s_pre, __pyx_n_s_post); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 215, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__58);
-  __Pyx_GIVEREF(__pyx_tuple__58);
-  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_expand_tokens, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 215, __pyx_L1_error)
-  __pyx_tuple__59 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 215, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__59);
-  __Pyx_GIVEREF(__pyx_tuple__59);
+  __pyx_tuple__90 = PyTuple_Pack(5, __pyx_n_s_tokens, __pyx_n_s_equal, __pyx_n_s_token, __pyx_n_s_pre, __pyx_n_s_post); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__90);
+  __Pyx_GIVEREF(__pyx_tuple__90);
+  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_expand_tokens, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __pyx_tuple__91 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__91);
+  __Pyx_GIVEREF(__pyx_tuple__91);
 
   /* "lxml/html/diff.py":230
  *             yield post
@@ -20173,10 +20997,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ doc is the already-handled document (as a list of text chunks);
  *     here we add <ins>ins_chunks</ins> to the end of that.  """
  */
-  __pyx_tuple__60 = PyTuple_Pack(5, __pyx_n_s_ins_chunks, __pyx_n_s_doc, __pyx_n_s_unbalanced_start, __pyx_n_s_balanced, __pyx_n_s_unbalanced_end); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 230, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__60);
-  __Pyx_GIVEREF(__pyx_tuple__60);
-  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_insert, 230, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 230, __pyx_L1_error)
+  __pyx_tuple__92 = PyTuple_Pack(5, __pyx_n_s_ins_chunks, __pyx_n_s_doc, __pyx_n_s_unbalanced_start, __pyx_n_s_balanced, __pyx_n_s_unbalanced_end); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__92);
+  __Pyx_GIVEREF(__pyx_tuple__92);
+  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_insert, 230, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 230, __pyx_L1_error)
 
   /* "lxml/html/diff.py":262
  *     (DEL_START/DEL_END) """
@@ -20185,10 +21009,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Adds the text chunks in del_chunks to the document doc (another
  *     list of text chunks) with marker to show it is a delete.
  */
-  __pyx_tuple__62 = PyTuple_Pack(2, __pyx_n_s_del_chunks, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 262, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__62);
-  __Pyx_GIVEREF(__pyx_tuple__62);
-  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_delete, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_n_s_del_chunks, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__93);
+  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_delete, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 262, __pyx_L1_error)
 
   /* "lxml/html/diff.py":270
  *     doc.append(DEL_END)
@@ -20197,10 +21021,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Cleans up any DEL_START/DEL_END markers in the document, replacing
  *     them with <del></del>.  To do this while keeping the document
  */
-  __pyx_tuple__64 = PyTuple_Pack(8, __pyx_n_s_chunks, __pyx_n_s_pre_delete, __pyx_n_s_delete, __pyx_n_s_post_delete, __pyx_n_s_unbalanced_start, __pyx_n_s_balanced, __pyx_n_s_unbalanced_end, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 270, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__64);
-  __Pyx_GIVEREF(__pyx_tuple__64);
-  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_cleanup_delete, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 270, __pyx_L1_error)
+  __pyx_tuple__94 = PyTuple_Pack(8, __pyx_n_s_chunks, __pyx_n_s_pre_delete, __pyx_n_s_delete, __pyx_n_s_post_delete, __pyx_n_s_unbalanced_start, __pyx_n_s_balanced, __pyx_n_s_unbalanced_end, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 270, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__94);
+  __Pyx_GIVEREF(__pyx_tuple__94);
+  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_cleanup_delete, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 270, __pyx_L1_error)
 
   /* "lxml/html/diff.py":309
  *     return chunks
@@ -20209,10 +21033,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """Return (unbalanced_start, balanced, unbalanced_end), where each is
  *     a list of text and tag chunks.
  */
-  __pyx_tuple__66 = PyTuple_Pack(10, __pyx_n_s_chunks, __pyx_n_s_start, __pyx_n_s_end, __pyx_n_s_tag_stack, __pyx_n_s_balanced, __pyx_n_s_chunk, __pyx_n_s_endtag, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 309, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__66);
-  __Pyx_GIVEREF(__pyx_tuple__66);
-  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_unbalanced, 309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __pyx_tuple__95 = PyTuple_Pack(10, __pyx_n_s_chunks, __pyx_n_s_start, __pyx_n_s_end, __pyx_n_s_tag_stack, __pyx_n_s_balanced, __pyx_n_s_chunk, __pyx_n_s_endtag, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__95);
+  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_unbalanced, 309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 309, __pyx_L1_error)
 
   /* "lxml/html/diff.py":349
  *     return start, balanced, end
@@ -20221,10 +21045,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Returns (stuff_before_DEL_START, stuff_inside_DEL_START_END,
  *     stuff_after_DEL_END).  Returns the first case found (there may be
  */
-  __pyx_tuple__68 = PyTuple_Pack(3, __pyx_n_s_chunks, __pyx_n_s_pos, __pyx_n_s_pos2); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 349, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__68);
-  __Pyx_GIVEREF(__pyx_tuple__68);
-  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_delete, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 349, __pyx_L1_error)
+  __pyx_tuple__96 = PyTuple_Pack(3, __pyx_n_s_chunks, __pyx_n_s_pos, __pyx_n_s_pos2); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(0, 349, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__96);
+  __Pyx_GIVEREF(__pyx_tuple__96);
+  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_delete, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 349, __pyx_L1_error)
 
   /* "lxml/html/diff.py":361
  *     return chunks[:pos], chunks[pos+1:pos2], chunks[pos2+1:]
@@ -20233,10 +21057,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ pre_delete and post_delete implicitly point to a place in the
  *     document (where the two were split).  This moves that point (by
  */
-  __pyx_tuple__70 = PyTuple_Pack(7, __pyx_n_s_unbalanced_start, __pyx_n_s_pre_delete, __pyx_n_s_post_delete, __pyx_n_s_finding, __pyx_n_s_finding_name, __pyx_n_s_next, __pyx_n_s_name); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 361, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__70);
-  __Pyx_GIVEREF(__pyx_tuple__70);
-  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_locate_unbalanced_start, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 361, __pyx_L1_error)
+  __pyx_tuple__97 = PyTuple_Pack(7, __pyx_n_s_unbalanced_start, __pyx_n_s_pre_delete, __pyx_n_s_post_delete, __pyx_n_s_finding, __pyx_n_s_finding_name, __pyx_n_s_next, __pyx_n_s_name); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 361, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__97);
+  __Pyx_GIVEREF(__pyx_tuple__97);
+  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_locate_unbalanced_start, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 361, __pyx_L1_error)
 
   /* "lxml/html/diff.py":411
  *             break
@@ -20245,10 +21069,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ like locate_unbalanced_start, except handling end tags and
  *     possibly moving the point earlier in the document.  """
  */
-  __pyx_tuple__72 = PyTuple_Pack(7, __pyx_n_s_unbalanced_end, __pyx_n_s_pre_delete, __pyx_n_s_post_delete, __pyx_n_s_finding, __pyx_n_s_finding_name, __pyx_n_s_next, __pyx_n_s_name); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 411, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__72);
-  __Pyx_GIVEREF(__pyx_tuple__72);
-  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_locate_unbalanced_end, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __pyx_tuple__98 = PyTuple_Pack(7, __pyx_n_s_unbalanced_end, __pyx_n_s_pre_delete, __pyx_n_s_post_delete, __pyx_n_s_finding, __pyx_n_s_finding_name, __pyx_n_s_next, __pyx_n_s_name); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__98);
+  __Pyx_GIVEREF(__pyx_tuple__98);
+  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_locate_unbalanced_end, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 411, __pyx_L1_error)
 
   /* "lxml/html/diff.py":454
  *     hide_when_equal = False
@@ -20257,13 +21081,13 @@ static int __Pyx_InitCachedConstants(void) {
  *         obj = _unicode.__new__(cls, text)
  * 
  */
-  __pyx_tuple__74 = PyTuple_Pack(6, __pyx_n_s_cls, __pyx_n_s_text, __pyx_n_s_pre_tags, __pyx_n_s_post_tags, __pyx_n_s_trailing_whitespace, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 454, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__74);
-  __Pyx_GIVEREF(__pyx_tuple__74);
-  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(5, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_new, 454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 454, __pyx_L1_error)
-  __pyx_tuple__76 = PyTuple_Pack(3, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject*)__pyx_kp_s_)); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 454, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__76);
-  __Pyx_GIVEREF(__pyx_tuple__76);
+  __pyx_tuple__99 = PyTuple_Pack(6, __pyx_n_s_cls, __pyx_n_s_text, __pyx_n_s_pre_tags, __pyx_n_s_post_tags, __pyx_n_s_trailing_whitespace, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 454, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__99);
+  __Pyx_GIVEREF(__pyx_tuple__99);
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(5, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_new, 454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 454, __pyx_L1_error)
+  __pyx_tuple__100 = PyTuple_Pack(3, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject*)__pyx_kp_s__3)); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 454, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__100);
+  __Pyx_GIVEREF(__pyx_tuple__100);
 
   /* "lxml/html/diff.py":471
  *         return obj
@@ -20272,10 +21096,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return 'token(%s, %r, %r, %r)' % (_unicode.__repr__(self), self.pre_tags,
  *                                           self.post_tags, self.trailing_whitespace)
  */
-  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 471, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__77);
-  __Pyx_GIVEREF(__pyx_tuple__77);
-  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_repr, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 471, __pyx_L1_error)
+  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 471, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__101);
+  __Pyx_GIVEREF(__pyx_tuple__101);
+  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_repr, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 471, __pyx_L1_error)
 
   /* "lxml/html/diff.py":475
  *                                           self.post_tags, self.trailing_whitespace)
@@ -20284,10 +21108,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return _unicode(self)
  * 
  */
-  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 475, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__79);
-  __Pyx_GIVEREF(__pyx_tuple__79);
-  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__102);
+  __Pyx_GIVEREF(__pyx_tuple__102);
+  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 475, __pyx_L1_error)
 
   /* "lxml/html/diff.py":484
  *     is only represented in a document by a tag.  """
@@ -20296,13 +21120,13 @@ static int __Pyx_InitCachedConstants(void) {
  *                 post_tags=None, trailing_whitespace=""):
  *         obj = token.__new__(cls, "%s: %s" % (type, data),
  */
-  __pyx_tuple__81 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_tag, __pyx_n_s_data, __pyx_n_s_html_repr, __pyx_n_s_pre_tags, __pyx_n_s_post_tags, __pyx_n_s_trailing_whitespace, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 484, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__81);
-  __Pyx_GIVEREF(__pyx_tuple__81);
-  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(7, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_new, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 484, __pyx_L1_error)
-  __pyx_tuple__83 = PyTuple_Pack(3, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject*)__pyx_kp_s_)); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 484, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__83);
-  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_tuple__103 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_tag, __pyx_n_s_data, __pyx_n_s_html_repr, __pyx_n_s_pre_tags, __pyx_n_s_post_tags, __pyx_n_s_trailing_whitespace, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 484, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__103);
+  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(7, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__103, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_new, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 484, __pyx_L1_error)
+  __pyx_tuple__104 = PyTuple_Pack(3, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject*)__pyx_kp_s__3)); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 484, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__104);
+  __Pyx_GIVEREF(__pyx_tuple__104);
 
   /* "lxml/html/diff.py":495
  *         return obj
@@ -20311,10 +21135,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return 'tag_token(%s, %s, html_repr=%s, post_tags=%r, pre_tags=%r, trailing_whitespace=%r)' % (
  *             self.tag,
  */
-  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 495, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__84);
-  __Pyx_GIVEREF(__pyx_tuple__84);
-  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_repr, 495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 495, __pyx_L1_error)
+  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 495, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__105);
+  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_repr, 495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 495, __pyx_L1_error)
 
   /* "lxml/html/diff.py":503
  *             self.post_tags,
@@ -20323,10 +21147,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return self.html_repr
  * 
  */
-  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 503, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__86);
-  __Pyx_GIVEREF(__pyx_tuple__86);
-  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 503, __pyx_L1_error)
+  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 503, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__106);
+  __Pyx_GIVEREF(__pyx_tuple__106);
+  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__106, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 503, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 503, __pyx_L1_error)
 
   /* "lxml/html/diff.py":513
  *     hide_when_equal = True
@@ -20335,10 +21159,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return ' Link: %s' % self
  * 
  */
-  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 513, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__88);
-  __Pyx_GIVEREF(__pyx_tuple__88);
-  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__107);
+  __Pyx_GIVEREF(__pyx_tuple__107);
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_html, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 513, __pyx_L1_error)
 
   /* "lxml/html/diff.py":516
  *         return ' Link: %s' % self
@@ -20347,13 +21171,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Parse the given HTML and returns token objects (words with attached tags).
  */
-  __pyx_tuple__90 = PyTuple_Pack(4, __pyx_n_s_html, __pyx_n_s_include_hrefs, __pyx_n_s_body_el, __pyx_n_s_chunks); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 516, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__90);
-  __Pyx_GIVEREF(__pyx_tuple__90);
-  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_tokenize, 516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 516, __pyx_L1_error)
-  __pyx_tuple__92 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 516, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__92);
-  __Pyx_GIVEREF(__pyx_tuple__92);
+  __pyx_tuple__108 = PyTuple_Pack(4, __pyx_n_s_html, __pyx_n_s_include_hrefs, __pyx_n_s_body_el, __pyx_n_s_chunks); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 516, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__108);
+  __Pyx_GIVEREF(__pyx_tuple__108);
+  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_tokenize, 516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 516, __pyx_L1_error)
+  __pyx_tuple__109 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 516, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__109);
+  __Pyx_GIVEREF(__pyx_tuple__109);
 
   /* "lxml/html/diff.py":540
  *     return fixup_chunks(chunks)
@@ -20362,13 +21186,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Parses an HTML fragment, returning an lxml element.  Note that the HTML will be
  */
-  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_cleanup); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 540, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__93);
-  __Pyx_GIVEREF(__pyx_tuple__93);
-  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_parse_html, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 540, __pyx_L1_error)
-  __pyx_tuple__95 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 540, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__95);
-  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_tuple__110 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_cleanup); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__110);
+  __Pyx_GIVEREF(__pyx_tuple__110);
+  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_parse_html, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __pyx_tuple__111 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__111);
+  __Pyx_GIVEREF(__pyx_tuple__111);
 
   /* "lxml/html/diff.py":557
  * _ins_del_re = re.compile(r'</?(ins|del).*?>', re.I|re.S)
@@ -20377,10 +21201,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ This 'cleans' the HTML, meaning that any page structure is removed
  *     (only the contents of <body> are used, if there is any <body).
  */
-  __pyx_tuple__96 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_match); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(0, 557, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__96);
-  __Pyx_GIVEREF(__pyx_tuple__96);
-  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_cleanup_html, 557, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 557, __pyx_L1_error)
+  __pyx_tuple__112 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_match); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(0, 557, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__112);
+  __Pyx_GIVEREF(__pyx_tuple__112);
+  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_cleanup_html, 557, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 557, __pyx_L1_error)
 
   /* "lxml/html/diff.py":571
  * 
@@ -20389,9 +21213,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def split_trailing_whitespace(word):
  */
-  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_s_t_n_r); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 571, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__98);
-  __Pyx_GIVEREF(__pyx_tuple__98);
+  __pyx_tuple__113 = PyTuple_Pack(1, __pyx_kp_s_t_n_r); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(0, 571, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__113);
+  __Pyx_GIVEREF(__pyx_tuple__113);
 
   /* "lxml/html/diff.py":573
  * end_whitespace_re = re.compile(r'[ \t\n\r]$')
@@ -20400,10 +21224,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     This function takes a word, such as 'test\n\n' and returns ('test','\n\n')
  */
-  __pyx_tuple__99 = PyTuple_Pack(2, __pyx_n_s_word, __pyx_n_s_stripped_length); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 573, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__99);
-  __Pyx_GIVEREF(__pyx_tuple__99);
-  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_trailing_whitespace, 573, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __pyx_tuple__114 = PyTuple_Pack(2, __pyx_n_s_word, __pyx_n_s_stripped_length); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__114);
+  __Pyx_GIVEREF(__pyx_tuple__114);
+  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_trailing_whitespace, 573, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 573, __pyx_L1_error)
 
   /* "lxml/html/diff.py":581
  * 
@@ -20412,10 +21236,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     This function takes a list of chunks and produces a list of tokens.
  */
-  __pyx_tuple__101 = PyTuple_Pack(9, __pyx_n_s_chunks, __pyx_n_s_tag_accum, __pyx_n_s_cur_word, __pyx_n_s_result, __pyx_n_s_chunk, __pyx_n_s_src, __pyx_n_s_tag, __pyx_n_s_trailing_whitespace, __pyx_n_s_href); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 581, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__101);
-  __Pyx_GIVEREF(__pyx_tuple__101);
-  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_fixup_chunks, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 581, __pyx_L1_error)
+  __pyx_tuple__115 = PyTuple_Pack(9, __pyx_n_s_chunks, __pyx_n_s_tag_accum, __pyx_n_s_cur_word, __pyx_n_s_result, __pyx_n_s_chunk, __pyx_n_s_src, __pyx_n_s_tag, __pyx_n_s_trailing_whitespace, __pyx_n_s_href); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(0, 581, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__115);
+  __Pyx_GIVEREF(__pyx_tuple__115);
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 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_html_diff_py, __pyx_n_s_fixup_chunks, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 581, __pyx_L1_error)
 
   /* "lxml/html/diff.py":636
  * # All the tags in HTML that don't require end tags:
@@ -20424,9 +21248,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     'base', 'meta', 'link', 'col')
  * 
  */
-  __pyx_tuple__103 = PyTuple_Pack(10, __pyx_n_s_param, __pyx_n_s_img, __pyx_n_s_area, __pyx_n_s_br, __pyx_n_s_basefont, __pyx_n_s_input, __pyx_n_s_base, __pyx_n_s_meta, __pyx_n_s_link, __pyx_n_s_col); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 636, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__103);
-  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_tuple__116 = PyTuple_Pack(10, __pyx_n_s_param, __pyx_n_s_img, __pyx_n_s_area, __pyx_n_s_br, __pyx_n_s_basefont, __pyx_n_s_input, __pyx_n_s_base, __pyx_n_s_meta, __pyx_n_s_link, __pyx_n_s_col); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__116);
+  __Pyx_GIVEREF(__pyx_tuple__116);
 
   /* "lxml/html/diff.py":640
  * 
@@ -20435,9 +21259,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     'blockquote',
  *     'center',
  */
-  __pyx_tuple__104 = PyTuple_Pack(24, __pyx_n_s_address, __pyx_n_s_blockquote, __pyx_n_s_center, __pyx_n_s_dir, __pyx_n_s_div, __pyx_n_s_dl, __pyx_n_s_fieldset, __pyx_n_s_form, __pyx_n_s_h1, __pyx_n_s_h2, __pyx_n_s_h3, __pyx_n_s_h4, __pyx_n_s_h5, __pyx_n_s_h6, __pyx_n_s_hr, __pyx_n_s_isindex, __pyx_n_s_menu, __pyx_n_s_noframes, __pyx_n_s_noscript, __pyx_n_s_ol, __pyx_n_s_p, __pyx_n_s_pre, __pyx_n_s_table, __pyx_n_s_ul); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 640, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__104);
-  __Pyx_GIVEREF(__pyx_tuple__104);
+  __pyx_tuple__117 = PyTuple_Pack(24, __pyx_n_s_address, __pyx_n_s_blockquote, __pyx_n_s_center, __pyx_n_s_dir, __pyx_n_s_div, __pyx_n_s_dl, __pyx_n_s_fieldset, __pyx_n_s_form, __pyx_n_s_h1, __pyx_n_s_h2, __pyx_n_s_h3, __pyx_n_s_h4, __pyx_n_s_h5, __pyx_n_s_h6, __pyx_n_s_hr, __pyx_n_s_isindex, __pyx_n_s_menu, __pyx_n_s_noframes, __pyx_n_s_noscript, __pyx_n_s_ol, __pyx_n_s_p, __pyx_n_s_pre, __pyx_n_s_table, __pyx_n_s_ul); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__117);
+  __Pyx_GIVEREF(__pyx_tuple__117);
 
   /* "lxml/html/diff.py":667
  * 
@@ -20446,9 +21270,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     'dt',
  *     'frameset',
  */
-  __pyx_tuple__105 = PyTuple_Pack(10, __pyx_n_s_dd, __pyx_n_s_dt, __pyx_n_s_frameset, __pyx_n_s_li, __pyx_n_s_tbody, __pyx_n_s_td, __pyx_n_s_tfoot, __pyx_n_s_th, __pyx_n_s_thead, __pyx_n_s_tr); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 667, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__105);
-  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_tuple__118 = PyTuple_Pack(10, __pyx_n_s_dd, __pyx_n_s_dt, __pyx_n_s_frameset, __pyx_n_s_li, __pyx_n_s_tbody, __pyx_n_s_td, __pyx_n_s_tfoot, __pyx_n_s_th, __pyx_n_s_thead, __pyx_n_s_tr); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__118);
+  __Pyx_GIVEREF(__pyx_tuple__118);
 
   /* "lxml/html/diff.py":680
  * 
@@ -20457,13 +21281,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Takes an lxml element el, and generates all the text chunks for
  *     that tag.  Each start tag is a chunk, each word is a chunk, and each
  */
-  __pyx_tuple__106 = PyTuple_Pack(8, __pyx_n_s_el, __pyx_n_s_include_hrefs, __pyx_n_s_skip_tag, __pyx_n_s_start_words, __pyx_n_s_word, __pyx_n_s_child, __pyx_n_s_item, __pyx_n_s_end_words); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 680, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__106);
-  __Pyx_GIVEREF(__pyx_tuple__106);
-  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__106, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_flatten_el, 680, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 680, __pyx_L1_error)
-  __pyx_tuple__107 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 680, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__107);
-  __Pyx_GIVEREF(__pyx_tuple__107);
+  __pyx_tuple__119 = PyTuple_Pack(8, __pyx_n_s_el, __pyx_n_s_include_hrefs, __pyx_n_s_skip_tag, __pyx_n_s_start_words, __pyx_n_s_word, __pyx_n_s_child, __pyx_n_s_item, __pyx_n_s_end_words); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 680, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__119);
+  __Pyx_GIVEREF(__pyx_tuple__119);
+  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_flatten_el, 680, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 680, __pyx_L1_error)
+  __pyx_tuple__120 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(0, 680, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__120);
+  __Pyx_GIVEREF(__pyx_tuple__120);
 
   /* "lxml/html/diff.py":710
  * split_words_re = re.compile(r'\S+(?:\s+|$)', re.U)
@@ -20472,10 +21296,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Splits some text into words. Includes trailing whitespace
  *     on each word when appropriate.  """
  */
-  __pyx_tuple__108 = PyTuple_Pack(2, __pyx_n_s_text, __pyx_n_s_words); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 710, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__108);
-  __Pyx_GIVEREF(__pyx_tuple__108);
-  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_words, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __pyx_tuple__121 = PyTuple_Pack(2, __pyx_n_s_text, __pyx_n_s_words); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__121);
+  __Pyx_GIVEREF(__pyx_tuple__121);
+  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_split_words, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 710, __pyx_L1_error)
 
   /* "lxml/html/diff.py":719
  *     return words
@@ -20484,9 +21308,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * def start_tag(el):
  */
-  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_t_n_r_2); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 719, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__110);
-  __Pyx_GIVEREF(__pyx_tuple__110);
+  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_kp_s_t_n_r_2); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(0, 719, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__122);
+  __Pyx_GIVEREF(__pyx_tuple__122);
 
   /* "lxml/html/diff.py":721
  * start_whitespace_re = re.compile(r'^[ \t\n\r]')
@@ -20495,10 +21319,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     The text representation of the start tag for a tag.
  */
-  __pyx_tuple__111 = PyTuple_Pack(3, __pyx_n_s_el, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 721, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__111);
-  __Pyx_GIVEREF(__pyx_tuple__111);
-  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_start_tag, 721, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(0, 721, __pyx_L1_error)
+  __pyx_tuple__123 = PyTuple_Pack(3, __pyx_n_s_el, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(0, 721, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__123);
+  __Pyx_GIVEREF(__pyx_tuple__123);
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_start_tag, 721, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 721, __pyx_L1_error)
 
   /* "lxml/html/diff.py":729
  *                          for name, value in el.attrib.items()]))
@@ -20507,10 +21331,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ The text representation of an end tag for a tag.  Includes
  *     trailing whitespace when appropriate.  """
  */
-  __pyx_tuple__113 = PyTuple_Pack(2, __pyx_n_s_el, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(0, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__113);
-  __Pyx_GIVEREF(__pyx_tuple__113);
-  __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__113, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_end_tag, 729, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(0, 729, __pyx_L1_error)
+  __pyx_tuple__124 = PyTuple_Pack(2, __pyx_n_s_el, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(0, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__124);
+  __Pyx_GIVEREF(__pyx_tuple__124);
+  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_end_tag, 729, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 729, __pyx_L1_error)
 
   /* "lxml/html/diff.py":738
  *     return '</%s>%s' % (el.tag, extra)
@@ -20519,10 +21343,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return not tok.startswith('<')
  * 
  */
-  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(0, 738, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__115);
-  __Pyx_GIVEREF(__pyx_tuple__115);
-  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(1, 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_html_diff_py, __pyx_n_s_is_word, 738, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(0, 738, __pyx_L1_error)
+  __pyx_tuple__125 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(0, 738, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__125);
+  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_is_word, 738, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 738, __pyx_L1_error)
 
   /* "lxml/html/diff.py":741
  *     return not tok.startswith('<')
@@ -20531,10 +21355,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return tok.startswith('</')
  * 
  */
-  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(0, 741, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__117);
-  __Pyx_GIVEREF(__pyx_tuple__117);
-  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__117, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_is_end_tag, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(0, 741, __pyx_L1_error)
+  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(0, 741, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__126);
+  __Pyx_GIVEREF(__pyx_tuple__126);
+  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_is_end_tag, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 741, __pyx_L1_error)
 
   /* "lxml/html/diff.py":744
  *     return tok.startswith('</')
@@ -20543,10 +21367,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return tok.startswith('<') and not tok.startswith('</')
  * 
  */
-  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__119);
-  __Pyx_GIVEREF(__pyx_tuple__119);
-  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_is_start_tag, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(0, 744, __pyx_L1_error)
+  __pyx_tuple__127 = PyTuple_Pack(1, __pyx_n_s_tok); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(0, 744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__127);
+  __Pyx_GIVEREF(__pyx_tuple__127);
+  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_is_start_tag, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 744, __pyx_L1_error)
 
   /* "lxml/html/diff.py":747
  *     return tok.startswith('<') and not tok.startswith('</')
@@ -20555,10 +21379,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Given an html string, move any <ins> or <del> tags inside of any
  *     block-level elements, e.g. transform <ins><p>word</p></ins> to
  */
-  __pyx_tuple__121 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(0, 747, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__121);
-  __Pyx_GIVEREF(__pyx_tuple__121);
-  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_fixup_ins_del_tags, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(0, 747, __pyx_L1_error)
+  __pyx_tuple__128 = PyTuple_Pack(2, __pyx_n_s_html, __pyx_n_s_doc); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(0, 747, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__128);
+  __Pyx_GIVEREF(__pyx_tuple__128);
+  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_fixup_ins_del_tags, 747, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 747, __pyx_L1_error)
 
   /* "lxml/html/diff.py":756
  *     return html
@@ -20567,13 +21391,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ Serialize a single lxml element as HTML.  The serialized form
  *     includes the elements tail.
  */
-  __pyx_tuple__123 = PyTuple_Pack(3, __pyx_n_s_el, __pyx_n_s_skip_outer, __pyx_n_s_html); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(0, 756, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__123);
-  __Pyx_GIVEREF(__pyx_tuple__123);
-  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_serialize_html_fragment, 756, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(0, 756, __pyx_L1_error)
-  __pyx_tuple__125 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(0, 756, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__125);
-  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_tuple__129 = PyTuple_Pack(3, __pyx_n_s_el, __pyx_n_s_skip_outer, __pyx_n_s_html); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(0, 756, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__129);
+  __Pyx_GIVEREF(__pyx_tuple__129);
+  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_serialize_html_fragment, 756, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 756, __pyx_L1_error)
+  __pyx_tuple__130 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 756, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__130);
+  __Pyx_GIVEREF(__pyx_tuple__130);
 
   /* "lxml/html/diff.py":774
  *         return html
@@ -20582,10 +21406,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """fixup_ins_del_tags that works on an lxml document in-place
  *     """
  */
-  __pyx_tuple__126 = PyTuple_Pack(3, __pyx_n_s_doc, __pyx_n_s_tag, __pyx_n_s_el); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(0, 774, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__126);
-  __Pyx_GIVEREF(__pyx_tuple__126);
-  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_fixup_ins_del_tags_2, 774, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(0, 774, __pyx_L1_error)
+  __pyx_tuple__131 = PyTuple_Pack(3, __pyx_n_s_doc, __pyx_n_s_tag, __pyx_n_s_el); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(0, 774, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__131);
+  __Pyx_GIVEREF(__pyx_tuple__131);
+  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_fixup_ins_del_tags_2, 774, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 774, __pyx_L1_error)
 
   /* "lxml/html/diff.py":785
  *             #_merge_element_contents(el)
@@ -20594,10 +21418,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """True if the element contains any block-level elements, like <p>, <td>, etc.
  *     """
  */
-  __pyx_tuple__128 = PyTuple_Pack(2, __pyx_n_s_el, __pyx_n_s_child); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(0, 785, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__128);
-  __Pyx_GIVEREF(__pyx_tuple__128);
-  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_contains_block_level_tag, 785, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(0, 785, __pyx_L1_error)
+  __pyx_tuple__132 = PyTuple_Pack(2, __pyx_n_s_el, __pyx_n_s_child); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(0, 785, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__132);
+  __Pyx_GIVEREF(__pyx_tuple__132);
+  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_contains_block_level_tag, 785, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 785, __pyx_L1_error)
 
   /* "lxml/html/diff.py":795
  *     return False
@@ -20606,10 +21430,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """ helper for _fixup_ins_del_tags; actually takes the <ins> etc tags
  *     and moves them inside any block-level tags.  """
  */
-  __pyx_tuple__130 = PyTuple_Pack(8, __pyx_n_s_el, __pyx_n_s_tag, __pyx_n_s_child, __pyx_n_s_sys, __pyx_n_s_children_tag, __pyx_n_s_tail_tag, __pyx_n_s_child_tag, __pyx_n_s_text_tag); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 795, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__130);
-  __Pyx_GIVEREF(__pyx_tuple__130);
-  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_move_el_inside_block, 795, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(0, 795, __pyx_L1_error)
+  __pyx_tuple__133 = PyTuple_Pack(8, __pyx_n_s_el, __pyx_n_s_tag, __pyx_n_s_child, __pyx_n_s_sys, __pyx_n_s_children_tag, __pyx_n_s_tail_tag, __pyx_n_s_child_tag, __pyx_n_s_text_tag); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(0, 795, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__133);
+  __Pyx_GIVEREF(__pyx_tuple__133);
+  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_move_el_inside_block, 795, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 795, __pyx_L1_error)
 
   /* "lxml/html/diff.py":828
  *         el.insert(0, text_tag)
@@ -20618,10 +21442,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     """
  *     Removes an element, but merges its contents into its place, e.g.,
  */
-  __pyx_tuple__132 = PyTuple_Pack(5, __pyx_n_s_el, __pyx_n_s_parent, __pyx_n_s_text, __pyx_n_s_index, __pyx_n_s_previous); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(0, 828, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__132);
-  __Pyx_GIVEREF(__pyx_tuple__132);
-  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_element_contents, 828, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(0, 828, __pyx_L1_error)
+  __pyx_tuple__134 = PyTuple_Pack(5, __pyx_n_s_el, __pyx_n_s_parent, __pyx_n_s_text, __pyx_n_s_index, __pyx_n_s_previous); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(0, 828, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__134);
+  __Pyx_GIVEREF(__pyx_tuple__134);
+  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_merge_element_contents, 828, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 828, __pyx_L1_error)
 
   /* "lxml/html/diff.py":870
  *     threshold = 2
@@ -20630,10 +21454,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         size = min(len(self.b), len(self.b))
  *         threshold = min(self.threshold, size / 4)
  */
-  __pyx_tuple__134 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_threshold, __pyx_n_s_actual, __pyx_n_s_item); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(0, 870, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__134);
-  __Pyx_GIVEREF(__pyx_tuple__134);
-  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_get_matching_blocks, 870, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(0, 870, __pyx_L1_error)
+  __pyx_tuple__135 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_threshold, __pyx_n_s_actual, __pyx_n_s_item); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(0, 870, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__135);
+  __Pyx_GIVEREF(__pyx_tuple__135);
+  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_html_diff_py, __pyx_n_s_get_matching_blocks, 870, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 870, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -20756,7 +21580,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -20813,6 +21637,7 @@ static int __pyx_pymod_exec_diff(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -20920,12 +21745,14 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_diff(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/html/diff.py":1
  * import difflib             # <<<<<<<<<<<<<<
  * from lxml import etree
  * from lxml.html import fragment_fromstring
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_difflib, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_difflib, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20937,6 +21764,7 @@ if (!__Pyx_RefNanny) {
  * from lxml.html import fragment_fromstring
  * import re
  */
+  __Pyx_TraceLine(2,0,__PYX_ERR(0, 2, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_etree);
@@ -20958,6 +21786,7 @@ if (!__Pyx_RefNanny) {
  * import re
  * 
  */
+  __Pyx_TraceLine(3,0,__PYX_ERR(0, 3, __pyx_L1_error))
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fragment_fromstring);
@@ -20979,6 +21808,7 @@ if (!__Pyx_RefNanny) {
  * 
  * __all__ = ['html_annotate', 'htmldiff']
  */
+  __Pyx_TraceLine(4,0,__PYX_ERR(0, 4, __pyx_L1_error))
   __pyx_t_1 = __Pyx_Import(__pyx_n_s_re, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_re, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
@@ -20991,6 +21821,7 @@ if (!__Pyx_RefNanny) {
  * 
  * try:
  */
+  __Pyx_TraceLine(6,0,__PYX_ERR(0, 6, __pyx_L1_error))
   __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_html_annotate);
@@ -21009,6 +21840,7 @@ if (!__Pyx_RefNanny) {
  *     from html import escape as html_escape
  * except ImportError:
  */
+  __Pyx_TraceLine(8,0,__PYX_ERR(0, 8, __pyx_L2_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -21025,6 +21857,7 @@ if (!__Pyx_RefNanny) {
  * except ImportError:
  *     from cgi import escape as html_escape
  */
+      __Pyx_TraceLine(9,0,__PYX_ERR(0, 9, __pyx_L2_error))
       __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L2_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_n_s_escape);
@@ -21062,6 +21895,7 @@ if (!__Pyx_RefNanny) {
  *     from cgi import escape as html_escape
  * try:
  */
+    __Pyx_TraceLine(10,0,__PYX_ERR(0, 10, __pyx_L4_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -21077,6 +21911,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     _unicode = unicode
  */
+      __Pyx_TraceLine(11,0,__PYX_ERR(0, 11, __pyx_L4_except_error))
       __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11, __pyx_L4_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_n_s_escape);
@@ -21125,6 +21960,7 @@ if (!__Pyx_RefNanny) {
  *     _unicode = unicode
  * except NameError:
  */
+  __Pyx_TraceLine(12,0,__PYX_ERR(0, 12, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -21141,6 +21977,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     # Python 3
  */
+      __Pyx_TraceLine(13,0,__PYX_ERR(0, 13, __pyx_L10_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode, ((PyObject *)(&PyUnicode_Type))) < 0) __PYX_ERR(0, 13, __pyx_L10_error)
 
       /* "lxml/html/diff.py":12
@@ -21169,6 +22006,7 @@ if (!__Pyx_RefNanny) {
  *     # Python 3
  *     _unicode = str
  */
+    __Pyx_TraceLine(14,0,__PYX_ERR(0, 14, __pyx_L12_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -21184,6 +22022,7 @@ if (!__Pyx_RefNanny) {
  * try:
  *     basestring
  */
+      __Pyx_TraceLine(16,0,__PYX_ERR(0, 16, __pyx_L12_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 16, __pyx_L12_except_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -21220,6 +22059,7 @@ if (!__Pyx_RefNanny) {
  *     basestring
  * except NameError:
  */
+  __Pyx_TraceLine(17,0,__PYX_ERR(0, 17, __pyx_L18_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -21236,6 +22076,7 @@ if (!__Pyx_RefNanny) {
  * except NameError:
  *     # Python 3
  */
+      __Pyx_TraceLine(18,0,__PYX_ERR(0, 18, __pyx_L18_error))
       __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L18_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -21266,6 +22107,7 @@ if (!__Pyx_RefNanny) {
  *     # Python 3
  *     basestring = str
  */
+    __Pyx_TraceLine(19,0,__PYX_ERR(0, 19, __pyx_L20_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.html.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -21281,6 +22123,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ############################################################
  */
+      __Pyx_TraceLine(21,0,__PYX_ERR(0, 21, __pyx_L20_except_error))
       if (PyDict_SetItem(__pyx_d, __pyx_n_s_basestring, ((PyObject *)(&PyString_Type))) < 0) __PYX_ERR(0, 21, __pyx_L20_except_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -21317,7 +22160,8 @@ if (!__Pyx_RefNanny) {
  *     return '<span title="%s">%s</span>' % (
  *         html_escape(_unicode(version), 1), text)
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_1default_markup, 0, __pyx_n_s_default_markup, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 27, __pyx_L1_error)
+  __Pyx_TraceLine(27,0,__PYX_ERR(0, 27, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_1default_markup, 0, __pyx_n_s_default_markup, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj_)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 27, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_markup, __pyx_t_7) < 0) __PYX_ERR(0, 27, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21329,7 +22173,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     doclist should be ordered from oldest to newest, like::
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_3html_annotate, 0, __pyx_n_s_html_annotate, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 31, __pyx_L1_error)
+  __Pyx_TraceLine(31,0,__PYX_ERR(0, 31, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_3html_annotate, 0, __pyx_n_s_html_annotate, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 31, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults), 1)) __PYX_ERR(0, 31, __pyx_L1_error)
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_markup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
@@ -21348,7 +22193,8 @@ if (!__Pyx_RefNanny) {
  *     """Tokenize a document and add an annotation attribute to each token
  *     """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5tokenize_annotated, 0, __pyx_n_s_tokenize_annotated, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error)
+  __Pyx_TraceLine(71,0,__PYX_ERR(0, 71, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5tokenize_annotated, 0, __pyx_n_s_tokenize_annotated, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_tokenize_annotated, __pyx_t_7) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21360,7 +22206,8 @@ if (!__Pyx_RefNanny) {
  *     """Merge the annotations from tokens_old into tokens_new, when the
  *     tokens in the new document already existed in the old document.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_7html_annotate_merge_annotations, 0, __pyx_n_s_html_annotate_merge_annotations, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_TraceLine(79,0,__PYX_ERR(0, 79, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_7html_annotate_merge_annotations, 0, __pyx_n_s_html_annotate_merge_annotations, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_html_annotate_merge_annotations, __pyx_t_7) < 0) __PYX_ERR(0, 79, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21372,7 +22219,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Copy annotations from the tokens listed in src to the tokens in dest
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9copy_annotations, 0, __pyx_n_s_copy_annotations, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 92, __pyx_L1_error)
+  __Pyx_TraceLine(92,0,__PYX_ERR(0, 92, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9copy_annotations, 0, __pyx_n_s_copy_annotations, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 92, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_copy_annotations, __pyx_t_7) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21384,7 +22232,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Combine adjacent tokens when there is no HTML between the tokens,
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_11compress_tokens, 0, __pyx_n_s_compress_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_TraceLine(100,0,__PYX_ERR(0, 100, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_11compress_tokens, 0, __pyx_n_s_compress_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_compress_tokens, __pyx_t_7) < 0) __PYX_ERR(0, 100, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21396,7 +22245,8 @@ if (!__Pyx_RefNanny) {
  *     """ Merge tok into the last element of tokens (modifying the list of
  *     tokens in-place).  """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_13compress_merge_back, 0, __pyx_n_s_compress_merge_back, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
+  __Pyx_TraceLine(115,0,__PYX_ERR(0, 115, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_13compress_merge_back, 0, __pyx_n_s_compress_merge_back, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_compress_merge_back, __pyx_t_7) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21408,7 +22258,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Serialize the list of tokens into a list of text chunks, calling
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_15markup_serialize_tokens, 0, __pyx_n_s_markup_serialize_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_TraceLine(133,0,__PYX_ERR(0, 133, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_15markup_serialize_tokens, 0, __pyx_n_s_markup_serialize_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_markup_serialize_tokens, __pyx_t_7) < 0) __PYX_ERR(0, 133, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21420,7 +22271,8 @@ if (!__Pyx_RefNanny) {
  *     ## FIXME: this should take parsed documents too, and use their body
  *     ## or other content.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_18htmldiff, 0, __pyx_n_s_htmldiff, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error)
+  __Pyx_TraceLine(154,0,__PYX_ERR(0, 154, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_18htmldiff, 0, __pyx_n_s_htmldiff, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_htmldiff, __pyx_t_7) < 0) __PYX_ERR(0, 154, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21432,7 +22284,8 @@ if (!__Pyx_RefNanny) {
  *     """ Does a diff on the tokens themselves, returning a list of text
  *     chunks (not tokens).
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_20htmldiff_tokens, 0, __pyx_n_s_htmldiff_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __Pyx_TraceLine(177,0,__PYX_ERR(0, 177, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_20htmldiff_tokens, 0, __pyx_n_s_htmldiff_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_htmldiff_tokens, __pyx_t_7) < 0) __PYX_ERR(0, 177, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21444,9 +22297,10 @@ if (!__Pyx_RefNanny) {
  *     """Given a list of tokens, return a generator of the chunks of
  *     text for the data in the tokens.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_22expand_tokens, 0, __pyx_n_s_expand_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_TraceLine(215,0,__PYX_ERR(0, 215, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_22expand_tokens, 0, __pyx_n_s_expand_tokens, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__59);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__91);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_expand_tokens, __pyx_t_7) < 0) __PYX_ERR(0, 215, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -21457,7 +22311,8 @@ if (!__Pyx_RefNanny) {
  *     """ doc is the already-handled document (as a list of text chunks);
  *     here we add <ins>ins_chunks</ins> to the end of that.  """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_25merge_insert, 0, __pyx_n_s_merge_insert, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error)
+  __Pyx_TraceLine(230,0,__PYX_ERR(0, 230, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_25merge_insert, 0, __pyx_n_s_merge_insert, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_merge_insert, __pyx_t_7) < 0) __PYX_ERR(0, 230, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21469,6 +22324,7 @@ if (!__Pyx_RefNanny) {
  *     pass
  * class DEL_END:
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(0, 253, __pyx_L1_error))
   __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DEL_START, __pyx_n_s_DEL_START, (PyObject *) NULL, __pyx_n_s_lxml_html_diff, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DEL_START, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error)
@@ -21484,6 +22340,7 @@ if (!__Pyx_RefNanny) {
  *     pass
  * 
  */
+  __Pyx_TraceLine(255,0,__PYX_ERR(0, 255, __pyx_L1_error))
   __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DEL_END, __pyx_n_s_DEL_END, (PyObject *) NULL, __pyx_n_s_lxml_html_diff, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DEL_END, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error)
@@ -21499,6 +22356,7 @@ if (!__Pyx_RefNanny) {
  *     """ Raised when the document no longer contains any pending deletes
  *     (DEL_START/DEL_END) """
  */
+  __Pyx_TraceLine(258,0,__PYX_ERR(0, 258, __pyx_L1_error))
   __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
@@ -21523,7 +22381,8 @@ if (!__Pyx_RefNanny) {
  *     """ Adds the text chunks in del_chunks to the document doc (another
  *     list of text chunks) with marker to show it is a delete.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_27merge_delete, 0, __pyx_n_s_merge_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __Pyx_TraceLine(262,0,__PYX_ERR(0, 262, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_27merge_delete, 0, __pyx_n_s_merge_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_merge_delete, __pyx_t_7) < 0) __PYX_ERR(0, 262, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21535,7 +22394,8 @@ if (!__Pyx_RefNanny) {
  *     """ Cleans up any DEL_START/DEL_END markers in the document, replacing
  *     them with <del></del>.  To do this while keeping the document
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_29cleanup_delete, 0, __pyx_n_s_cleanup_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 270, __pyx_L1_error)
+  __Pyx_TraceLine(270,0,__PYX_ERR(0, 270, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_29cleanup_delete, 0, __pyx_n_s_cleanup_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_cleanup_delete, __pyx_t_7) < 0) __PYX_ERR(0, 270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21547,7 +22407,8 @@ if (!__Pyx_RefNanny) {
  *     """Return (unbalanced_start, balanced, unbalanced_end), where each is
  *     a list of text and tag chunks.
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_31split_unbalanced, 0, __pyx_n_s_split_unbalanced, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __Pyx_TraceLine(309,0,__PYX_ERR(0, 309, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_31split_unbalanced, 0, __pyx_n_s_split_unbalanced, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_split_unbalanced, __pyx_t_7) < 0) __PYX_ERR(0, 309, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21559,7 +22420,8 @@ if (!__Pyx_RefNanny) {
  *     """ Returns (stuff_before_DEL_START, stuff_inside_DEL_START_END,
  *     stuff_after_DEL_END).  Returns the first case found (there may be
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_33split_delete, 0, __pyx_n_s_split_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 349, __pyx_L1_error)
+  __Pyx_TraceLine(349,0,__PYX_ERR(0, 349, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_33split_delete, 0, __pyx_n_s_split_delete, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 349, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_split_delete, __pyx_t_7) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21571,7 +22433,8 @@ if (!__Pyx_RefNanny) {
  *     """ pre_delete and post_delete implicitly point to a place in the
  *     document (where the two were split).  This moves that point (by
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_35locate_unbalanced_start, 0, __pyx_n_s_locate_unbalanced_start, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 361, __pyx_L1_error)
+  __Pyx_TraceLine(361,0,__PYX_ERR(0, 361, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_35locate_unbalanced_start, 0, __pyx_n_s_locate_unbalanced_start, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 361, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_locate_unbalanced_start, __pyx_t_7) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21583,7 +22446,8 @@ if (!__Pyx_RefNanny) {
  *     """ like locate_unbalanced_start, except handling end tags and
  *     possibly moving the point earlier in the document.  """
  */
-  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_37locate_unbalanced_end, 0, __pyx_n_s_locate_unbalanced_end, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __Pyx_TraceLine(411,0,__PYX_ERR(0, 411, __pyx_L1_error))
+  __pyx_t_7 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_37locate_unbalanced_end, 0, __pyx_n_s_locate_unbalanced_end, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_locate_unbalanced_end, __pyx_t_7) < 0) __PYX_ERR(0, 411, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21595,6 +22459,7 @@ if (!__Pyx_RefNanny) {
  *     """ Represents a diffable token, generally a word that is displayed to
  *     the user.  Opening tags are attached to this token when they are
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(0, 437, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error)
@@ -21614,6 +22479,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def __new__(cls, text, pre_tags=None, post_tags=None, trailing_whitespace=""):
  */
+  __Pyx_TraceLine(452,0,__PYX_ERR(0, 452, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_hide_when_equal, Py_False) < 0) __PYX_ERR(0, 452, __pyx_L1_error)
 
   /* "lxml/html/diff.py":454
@@ -21623,9 +22489,10 @@ if (!__Pyx_RefNanny) {
  *         obj = _unicode.__new__(cls, text)
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_1__new__, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_token___new, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error)
+  __Pyx_TraceLine(454,0,__PYX_ERR(0, 454, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_1__new__, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_token___new, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__76);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__100);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_new, __pyx_t_9) < 0) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
@@ -21636,7 +22503,8 @@ if (!__Pyx_RefNanny) {
  *         return 'token(%s, %r, %r, %r)' % (_unicode.__repr__(self), self.pre_tags,
  *                                           self.post_tags, self.trailing_whitespace)
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_3__repr__, 0, __pyx_n_s_token___repr, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 471, __pyx_L1_error)
+  __Pyx_TraceLine(471,0,__PYX_ERR(0, 471, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_3__repr__, 0, __pyx_n_s_token___repr, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 471, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_repr, __pyx_t_9) < 0) __PYX_ERR(0, 471, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21648,7 +22516,8 @@ if (!__Pyx_RefNanny) {
  *         return _unicode(self)
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_5html, 0, __pyx_n_s_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __Pyx_TraceLine(475,0,__PYX_ERR(0, 475, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_5token_5html, 0, __pyx_n_s_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_html, __pyx_t_9) < 0) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21660,6 +22529,7 @@ if (!__Pyx_RefNanny) {
  *     """ Represents a diffable token, generally a word that is displayed to
  *     the user.  Opening tags are attached to this token when they are
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(0, 437, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_token, __pyx_t_1, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_token, __pyx_t_9) < 0) __PYX_ERR(0, 437, __pyx_L1_error)
@@ -21675,6 +22545,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     """ Represents a token that is actually a tag.  Currently this is just
  */
+  __Pyx_TraceLine(478,0,__PYX_ERR(0, 478, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 478, __pyx_L1_error)
@@ -21694,9 +22565,10 @@ if (!__Pyx_RefNanny) {
  *                 post_tags=None, trailing_whitespace=""):
  *         obj = token.__new__(cls, "%s: %s" % (type, data),
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_1__new__, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_tag_token___new, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 484, __pyx_L1_error)
+  __Pyx_TraceLine(484,0,__PYX_ERR(0, 484, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_1__new__, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_tag_token___new, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__83);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__104);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_new, __pyx_t_9) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
@@ -21707,7 +22579,8 @@ if (!__Pyx_RefNanny) {
  *         return 'tag_token(%s, %s, html_repr=%s, post_tags=%r, pre_tags=%r, trailing_whitespace=%r)' % (
  *             self.tag,
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_3__repr__, 0, __pyx_n_s_tag_token___repr, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 495, __pyx_L1_error)
+  __Pyx_TraceLine(495,0,__PYX_ERR(0, 495, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_3__repr__, 0, __pyx_n_s_tag_token___repr, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_repr, __pyx_t_9) < 0) __PYX_ERR(0, 495, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21719,7 +22592,8 @@ if (!__Pyx_RefNanny) {
  *         return self.html_repr
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_5html, 0, __pyx_n_s_tag_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 503, __pyx_L1_error)
+  __Pyx_TraceLine(503,0,__PYX_ERR(0, 503, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_9tag_token_5html, 0, __pyx_n_s_tag_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 503, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_html, __pyx_t_9) < 0) __PYX_ERR(0, 503, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21731,6 +22605,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     """ Represents a token that is actually a tag.  Currently this is just
  */
+  __Pyx_TraceLine(478,0,__PYX_ERR(0, 478, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_tag_token, __pyx_t_7, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_tag_token, __pyx_t_9) < 0) __PYX_ERR(0, 478, __pyx_L1_error)
@@ -21746,6 +22621,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     """ Represents the href in an anchor tag.  Unlike other words, we only
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(0, 506, __pyx_L1_error))
   __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_token); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
@@ -21765,6 +22641,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def html(self):
  */
+  __Pyx_TraceLine(511,0,__PYX_ERR(0, 511, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_hide_when_equal, Py_True) < 0) __PYX_ERR(0, 511, __pyx_L1_error)
 
   /* "lxml/html/diff.py":513
@@ -21774,7 +22651,8 @@ if (!__Pyx_RefNanny) {
  *         return ' Link: %s' % self
  * 
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_10href_token_1html, 0, __pyx_n_s_href_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __Pyx_TraceLine(513,0,__PYX_ERR(0, 513, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_10href_token_1html, 0, __pyx_n_s_href_token_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 513, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_html, __pyx_t_9) < 0) __PYX_ERR(0, 513, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21786,6 +22664,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     """ Represents the href in an anchor tag.  Unlike other words, we only
  */
+  __Pyx_TraceLine(506,0,__PYX_ERR(0, 506, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_href_token, __pyx_t_1, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_href_token, __pyx_t_9) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
@@ -21801,9 +22680,10 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Parse the given HTML and returns token objects (words with attached tags).
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_39tokenize, 0, __pyx_n_s_tokenize, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L1_error)
+  __Pyx_TraceLine(516,0,__PYX_ERR(0, 516, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_39tokenize, 0, __pyx_n_s_tokenize, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__92);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__109);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_tokenize, __pyx_t_1) < 0) __PYX_ERR(0, 516, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -21814,9 +22694,10 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Parses an HTML fragment, returning an lxml element.  Note that the HTML will be
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_41parse_html, 0, __pyx_n_s_parse_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __Pyx_TraceLine(540,0,__PYX_ERR(0, 540, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_41parse_html, 0, __pyx_n_s_parse_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__95);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__111);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_html, __pyx_t_1) < 0) __PYX_ERR(0, 540, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -21827,6 +22708,7 @@ if (!__Pyx_RefNanny) {
  * _end_body_re = re.compile(r'</body.*?>', re.I|re.S)
  * _ins_del_re = re.compile(r'</?(ins|del).*?>', re.I|re.S)
  */
+  __Pyx_TraceLine(553,0,__PYX_ERR(0, 553, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error)
@@ -21868,6 +22750,7 @@ if (!__Pyx_RefNanny) {
  * _ins_del_re = re.compile(r'</?(ins|del).*?>', re.I|re.S)
  * 
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(0, 554, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 554, __pyx_L1_error)
@@ -21909,6 +22792,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def cleanup_html(html):
  */
+  __Pyx_TraceLine(555,0,__PYX_ERR(0, 555, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error)
@@ -21950,7 +22834,8 @@ if (!__Pyx_RefNanny) {
  *     """ This 'cleans' the HTML, meaning that any page structure is removed
  *     (only the contents of <body> are used, if there is any <body).
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_43cleanup_html, 0, __pyx_n_s_cleanup_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
+  __Pyx_TraceLine(557,0,__PYX_ERR(0, 557, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_43cleanup_html, 0, __pyx_n_s_cleanup_html, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_cleanup_html, __pyx_t_1) < 0) __PYX_ERR(0, 557, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -21962,12 +22847,13 @@ if (!__Pyx_RefNanny) {
  * 
  * def split_trailing_whitespace(word):
  */
+  __Pyx_TraceLine(571,0,__PYX_ERR(0, 571, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 571, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__113, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_end_whitespace_re, __pyx_t_1) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
@@ -21980,7 +22866,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     This function takes a word, such as 'test\n\n' and returns ('test','\n\n')
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_45split_trailing_whitespace, 0, __pyx_n_s_split_trailing_whitespace, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __Pyx_TraceLine(573,0,__PYX_ERR(0, 573, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_45split_trailing_whitespace, 0, __pyx_n_s_split_trailing_whitespace, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_split_trailing_whitespace, __pyx_t_1) < 0) __PYX_ERR(0, 573, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -21992,7 +22879,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     This function takes a list of chunks and produces a list of tokens.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_47fixup_chunks, 0, __pyx_n_s_fixup_chunks, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
+  __Pyx_TraceLine(581,0,__PYX_ERR(0, 581, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_47fixup_chunks, 0, __pyx_n_s_fixup_chunks, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fixup_chunks, __pyx_t_1) < 0) __PYX_ERR(0, 581, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22004,7 +22892,8 @@ if (!__Pyx_RefNanny) {
  *     'base', 'meta', 'link', 'col')
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_empty_tags, __pyx_tuple__103) < 0) __PYX_ERR(0, 635, __pyx_L1_error)
+  __Pyx_TraceLine(636,0,__PYX_ERR(0, 636, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_empty_tags, __pyx_tuple__116) < 0) __PYX_ERR(0, 635, __pyx_L1_error)
 
   /* "lxml/html/diff.py":640
  * 
@@ -22013,7 +22902,8 @@ if (!__Pyx_RefNanny) {
  *     'blockquote',
  *     'center',
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_level_tags, __pyx_tuple__104) < 0) __PYX_ERR(0, 639, __pyx_L1_error)
+  __Pyx_TraceLine(640,0,__PYX_ERR(0, 640, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_level_tags, __pyx_tuple__117) < 0) __PYX_ERR(0, 639, __pyx_L1_error)
 
   /* "lxml/html/diff.py":667
  * 
@@ -22022,7 +22912,8 @@ if (!__Pyx_RefNanny) {
  *     'dt',
  *     'frameset',
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_level_container_tags, __pyx_tuple__105) < 0) __PYX_ERR(0, 666, __pyx_L1_error)
+  __Pyx_TraceLine(667,0,__PYX_ERR(0, 667, __pyx_L1_error))
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_level_container_tags, __pyx_tuple__118) < 0) __PYX_ERR(0, 666, __pyx_L1_error)
 
   /* "lxml/html/diff.py":680
  * 
@@ -22031,9 +22922,10 @@ if (!__Pyx_RefNanny) {
  *     """ Takes an lxml element el, and generates all the text chunks for
  *     that tag.  Each start tag is a chunk, each word is a chunk, and each
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_49flatten_el, 0, __pyx_n_s_flatten_el, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
+  __Pyx_TraceLine(680,0,__PYX_ERR(0, 680, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_49flatten_el, 0, __pyx_n_s_flatten_el, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__107);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__120);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_flatten_el, __pyx_t_1) < 0) __PYX_ERR(0, 680, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -22044,6 +22936,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def split_words(text):
  */
+  __Pyx_TraceLine(708,0,__PYX_ERR(0, 708, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 708, __pyx_L1_error)
@@ -22076,7 +22969,8 @@ if (!__Pyx_RefNanny) {
  *     """ Splits some text into words. Includes trailing whitespace
  *     on each word when appropriate.  """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_52split_words, 0, __pyx_n_s_split_words, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __Pyx_TraceLine(710,0,__PYX_ERR(0, 710, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_52split_words, 0, __pyx_n_s_split_words, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 710, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_split_words, __pyx_t_2) < 0) __PYX_ERR(0, 710, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22088,12 +22982,13 @@ if (!__Pyx_RefNanny) {
  * 
  * def start_tag(el):
  */
+  __Pyx_TraceLine(719,0,__PYX_ERR(0, 719, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 719, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_start_whitespace_re, __pyx_t_2) < 0) __PYX_ERR(0, 719, __pyx_L1_error)
@@ -22106,7 +23001,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     The text representation of the start tag for a tag.
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_54start_tag, 0, __pyx_n_s_start_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error)
+  __Pyx_TraceLine(721,0,__PYX_ERR(0, 721, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_54start_tag, 0, __pyx_n_s_start_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_start_tag, __pyx_t_2) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22118,7 +23014,8 @@ if (!__Pyx_RefNanny) {
  *     """ The text representation of an end tag for a tag.  Includes
  *     trailing whitespace when appropriate.  """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_56end_tag, 0, __pyx_n_s_end_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__114)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
+  __Pyx_TraceLine(729,0,__PYX_ERR(0, 729, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_56end_tag, 0, __pyx_n_s_end_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_end_tag, __pyx_t_2) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22130,7 +23027,8 @@ if (!__Pyx_RefNanny) {
  *     return not tok.startswith('<')
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_58is_word, 0, __pyx_n_s_is_word, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 738, __pyx_L1_error)
+  __Pyx_TraceLine(738,0,__PYX_ERR(0, 738, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_58is_word, 0, __pyx_n_s_is_word, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 738, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_word, __pyx_t_2) < 0) __PYX_ERR(0, 738, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22142,7 +23040,8 @@ if (!__Pyx_RefNanny) {
  *     return tok.startswith('</')
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_60is_end_tag, 0, __pyx_n_s_is_end_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__118)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 741, __pyx_L1_error)
+  __Pyx_TraceLine(741,0,__PYX_ERR(0, 741, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_60is_end_tag, 0, __pyx_n_s_is_end_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 741, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_end_tag, __pyx_t_2) < 0) __PYX_ERR(0, 741, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22154,7 +23053,8 @@ if (!__Pyx_RefNanny) {
  *     return tok.startswith('<') and not tok.startswith('</')
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_62is_start_tag, 0, __pyx_n_s_is_start_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 744, __pyx_L1_error)
+  __Pyx_TraceLine(744,0,__PYX_ERR(0, 744, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_62is_start_tag, 0, __pyx_n_s_is_start_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_start_tag, __pyx_t_2) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22166,7 +23066,8 @@ if (!__Pyx_RefNanny) {
  *     """ Given an html string, move any <ins> or <del> tags inside of any
  *     block-level elements, e.g. transform <ins><p>word</p></ins> to
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_64fixup_ins_del_tags, 0, __pyx_n_s_fixup_ins_del_tags, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error)
+  __Pyx_TraceLine(747,0,__PYX_ERR(0, 747, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_64fixup_ins_del_tags, 0, __pyx_n_s_fixup_ins_del_tags, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fixup_ins_del_tags, __pyx_t_2) < 0) __PYX_ERR(0, 747, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22178,9 +23079,10 @@ if (!__Pyx_RefNanny) {
  *     """ Serialize a single lxml element as HTML.  The serialized form
  *     includes the elements tail.
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_66serialize_html_fragment, 0, __pyx_n_s_serialize_html_fragment, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error)
+  __Pyx_TraceLine(756,0,__PYX_ERR(0, 756, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_66serialize_html_fragment, 0, __pyx_n_s_serialize_html_fragment, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__125);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__130);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_serialize_html_fragment, __pyx_t_2) < 0) __PYX_ERR(0, 756, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -22191,7 +23093,8 @@ if (!__Pyx_RefNanny) {
  *     """fixup_ins_del_tags that works on an lxml document in-place
  *     """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_68_fixup_ins_del_tags, 0, __pyx_n_s_fixup_ins_del_tags_2, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
+  __Pyx_TraceLine(774,0,__PYX_ERR(0, 774, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_68_fixup_ins_del_tags, 0, __pyx_n_s_fixup_ins_del_tags_2, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fixup_ins_del_tags_2, __pyx_t_2) < 0) __PYX_ERR(0, 774, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22203,7 +23106,8 @@ if (!__Pyx_RefNanny) {
  *     """True if the element contains any block-level elements, like <p>, <td>, etc.
  *     """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_70_contains_block_level_tag, 0, __pyx_n_s_contains_block_level_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
+  __Pyx_TraceLine(785,0,__PYX_ERR(0, 785, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_70_contains_block_level_tag, 0, __pyx_n_s_contains_block_level_tag, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_contains_block_level_tag, __pyx_t_2) < 0) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22215,7 +23119,8 @@ if (!__Pyx_RefNanny) {
  *     """ helper for _fixup_ins_del_tags; actually takes the <ins> etc tags
  *     and moves them inside any block-level tags.  """
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_72_move_el_inside_block, 0, __pyx_n_s_move_el_inside_block, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 795, __pyx_L1_error)
+  __Pyx_TraceLine(795,0,__PYX_ERR(0, 795, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_72_move_el_inside_block, 0, __pyx_n_s_move_el_inside_block, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 795, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_move_el_inside_block, __pyx_t_2) < 0) __PYX_ERR(0, 795, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22227,7 +23132,8 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Removes an element, but merges its contents into its place, e.g.,
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_74_merge_element_contents, 0, __pyx_n_s_merge_element_contents, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error)
+  __Pyx_TraceLine(828,0,__PYX_ERR(0, 828, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_74_merge_element_contents, 0, __pyx_n_s_merge_element_contents, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_merge_element_contents, __pyx_t_2) < 0) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -22239,6 +23145,7 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Acts like SequenceMatcher, but tries not to find very small equal
  */
+  __Pyx_TraceLine(862,0,__PYX_ERR(0, 862, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_difflib); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SequenceMatcher); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
@@ -22261,6 +23168,7 @@ if (!__Pyx_RefNanny) {
  * 
  *     def get_matching_blocks(self):
  */
+  __Pyx_TraceLine(868,0,__PYX_ERR(0, 868, __pyx_L1_error))
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_threshold, __pyx_int_2) < 0) __PYX_ERR(0, 868, __pyx_L1_error)
 
   /* "lxml/html/diff.py":870
@@ -22270,7 +23178,8 @@ if (!__Pyx_RefNanny) {
  *         size = min(len(self.b), len(self.b))
  *         threshold = min(self.threshold, size / 4)
  */
-  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_26InsensitiveSequenceMatcher_1get_matching_blocks, 0, __pyx_n_s_InsensitiveSequenceMatcher_get_m, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 870, __pyx_L1_error)
+  __Pyx_TraceLine(870,0,__PYX_ERR(0, 870, __pyx_L1_error))
+  __pyx_t_9 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_4html_4diff_26InsensitiveSequenceMatcher_1get_matching_blocks, 0, __pyx_n_s_InsensitiveSequenceMatcher_get_m, NULL, __pyx_n_s_lxml_html_diff, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_matching_blocks, __pyx_t_9) < 0) __PYX_ERR(0, 870, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -22282,6 +23191,7 @@ if (!__Pyx_RefNanny) {
  *     """
  *     Acts like SequenceMatcher, but tries not to find very small equal
  */
+  __Pyx_TraceLine(862,0,__PYX_ERR(0, 862, __pyx_L1_error))
   __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_InsensitiveSequenceMatcher, __pyx_t_2, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_InsensitiveSequenceMatcher, __pyx_t_9) < 0) __PYX_ERR(0, 862, __pyx_L1_error)
@@ -22297,6 +23207,7 @@ if (!__Pyx_RefNanny) {
  *     from lxml.html import _diffcommand
  *     _diffcommand.main()
  */
+  __Pyx_TraceLine(878,0,__PYX_ERR(0, 878, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_main, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 878, __pyx_L1_error)
@@ -22310,6 +23221,7 @@ if (!__Pyx_RefNanny) {
  *     _diffcommand.main()
  * 
  */
+    __Pyx_TraceLine(879,0,__PYX_ERR(0, 879, __pyx_L1_error))
     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_n_s_diffcommand);
@@ -22330,6 +23242,7 @@ if (!__Pyx_RefNanny) {
  *     _diffcommand.main()             # <<<<<<<<<<<<<<
  * 
  */
+    __Pyx_TraceLine(880,0,__PYX_ERR(0, 880, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_diffcommand); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_main_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error)
@@ -22354,12 +23267,14 @@ if (!__Pyx_RefNanny) {
  * from lxml import etree
  * from lxml.html import fragment_fromstring
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_html_annotate_line_31, __pyx_kp_u_doclist_should_be_ordered_from) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_locate_unbalanced_start_line_361, __pyx_kp_u_pre_delete_and_post_delete_impl) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -22391,133 +23306,133 @@ if (!__Pyx_RefNanny) {
 }
 
 static void __Pyx_CleanupGlobals(void) {
-  Py_CLEAR(__pyx_slice__2);
-  Py_CLEAR(__pyx_codeobj__3);
+  Py_CLEAR(__pyx_codeobj_);
+  Py_CLEAR(__pyx_codeobj__2);
   Py_CLEAR(__pyx_codeobj__4);
-  Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_tuple__7);
+  Py_CLEAR(__pyx_codeobj__5);
+  Py_CLEAR(__pyx_codeobj__6);
+  Py_CLEAR(__pyx_codeobj__7);
   Py_CLEAR(__pyx_slice__8);
-  Py_CLEAR(__pyx_tuple__9);
-  Py_CLEAR(__pyx_tuple__10);
-  Py_CLEAR(__pyx_slice__11);
-  Py_CLEAR(__pyx_tuple__13);
+  Py_CLEAR(__pyx_codeobj__9);
+  Py_CLEAR(__pyx_codeobj__10);
+  Py_CLEAR(__pyx_codeobj__11);
+  Py_CLEAR(__pyx_codeobj__12);
+  Py_CLEAR(__pyx_codeobj__13);
+  Py_CLEAR(__pyx_codeobj__14);
   Py_CLEAR(__pyx_tuple__16);
-  Py_CLEAR(__pyx_tuple__18);
-  Py_CLEAR(__pyx_tuple__19);
-  Py_CLEAR(__pyx_tuple__20);
+  Py_CLEAR(__pyx_tuple__17);
+  Py_CLEAR(__pyx_slice__18);
+  Py_CLEAR(__pyx_codeobj__19);
+  Py_CLEAR(__pyx_codeobj__20);
   Py_CLEAR(__pyx_tuple__21);
-  Py_CLEAR(__pyx_tuple__23);
-  Py_CLEAR(__pyx_tuple__24);
-  Py_CLEAR(__pyx_tuple__25);
-  Py_CLEAR(__pyx_codeobj__26);
-  Py_CLEAR(__pyx_tuple__27);
-  Py_CLEAR(__pyx_tuple__28);
+  Py_CLEAR(__pyx_tuple__22);
+  Py_CLEAR(__pyx_slice__23);
+  Py_CLEAR(__pyx_codeobj__24);
+  Py_CLEAR(__pyx_tuple__26);
   Py_CLEAR(__pyx_tuple__29);
-  Py_CLEAR(__pyx_tuple__30);
-  Py_CLEAR(__pyx_tuple__31);
-  Py_CLEAR(__pyx_tuple__32);
+  Py_CLEAR(__pyx_codeobj__30);
+  Py_CLEAR(__pyx_codeobj__31);
   Py_CLEAR(__pyx_tuple__33);
+  Py_CLEAR(__pyx_tuple__34);
   Py_CLEAR(__pyx_tuple__35);
-  Py_CLEAR(__pyx_tuple__36);
+  Py_CLEAR(__pyx_codeobj__36);
   Py_CLEAR(__pyx_tuple__37);
-  Py_CLEAR(__pyx_slice__38);
   Py_CLEAR(__pyx_tuple__39);
-  Py_CLEAR(__pyx_codeobj__40);
-  Py_CLEAR(__pyx_tuple__41);
+  Py_CLEAR(__pyx_tuple__40);
+  Py_CLEAR(__pyx_codeobj__41);
   Py_CLEAR(__pyx_codeobj__42);
-  Py_CLEAR(__pyx_tuple__43);
+  Py_CLEAR(__pyx_codeobj__43);
   Py_CLEAR(__pyx_codeobj__44);
-  Py_CLEAR(__pyx_tuple__45);
+  Py_CLEAR(__pyx_codeobj__45);
   Py_CLEAR(__pyx_codeobj__46);
-  Py_CLEAR(__pyx_tuple__47);
+  Py_CLEAR(__pyx_codeobj__47);
   Py_CLEAR(__pyx_codeobj__48);
-  Py_CLEAR(__pyx_tuple__49);
+  Py_CLEAR(__pyx_codeobj__49);
   Py_CLEAR(__pyx_codeobj__50);
-  Py_CLEAR(__pyx_tuple__51);
+  Py_CLEAR(__pyx_codeobj__51);
   Py_CLEAR(__pyx_codeobj__52);
   Py_CLEAR(__pyx_tuple__53);
-  Py_CLEAR(__pyx_tuple__54);
-  Py_CLEAR(__pyx_codeobj__55);
+  Py_CLEAR(__pyx_codeobj__54);
+  Py_CLEAR(__pyx_tuple__55);
   Py_CLEAR(__pyx_tuple__56);
-  Py_CLEAR(__pyx_codeobj__57);
-  Py_CLEAR(__pyx_tuple__58);
-  Py_CLEAR(__pyx_tuple__59);
-  Py_CLEAR(__pyx_tuple__60);
+  Py_CLEAR(__pyx_tuple__57);
+  Py_CLEAR(__pyx_codeobj__58);
+  Py_CLEAR(__pyx_codeobj__59);
+  Py_CLEAR(__pyx_codeobj__60);
   Py_CLEAR(__pyx_codeobj__61);
   Py_CLEAR(__pyx_tuple__62);
   Py_CLEAR(__pyx_codeobj__63);
   Py_CLEAR(__pyx_tuple__64);
   Py_CLEAR(__pyx_codeobj__65);
   Py_CLEAR(__pyx_tuple__66);
-  Py_CLEAR(__pyx_codeobj__67);
-  Py_CLEAR(__pyx_tuple__68);
+  Py_CLEAR(__pyx_tuple__67);
+  Py_CLEAR(__pyx_codeobj__68);
   Py_CLEAR(__pyx_codeobj__69);
-  Py_CLEAR(__pyx_tuple__70);
-  Py_CLEAR(__pyx_codeobj__71);
+  Py_CLEAR(__pyx_tuple__71);
   Py_CLEAR(__pyx_tuple__72);
   Py_CLEAR(__pyx_codeobj__73);
   Py_CLEAR(__pyx_tuple__74);
   Py_CLEAR(__pyx_codeobj__75);
-  Py_CLEAR(__pyx_tuple__76);
-  Py_CLEAR(__pyx_tuple__77);
+  Py_CLEAR(__pyx_codeobj__76);
+  Py_CLEAR(__pyx_slice__77);
   Py_CLEAR(__pyx_codeobj__78);
-  Py_CLEAR(__pyx_tuple__79);
-  Py_CLEAR(__pyx_codeobj__80);
+  Py_CLEAR(__pyx_codeobj__79);
+  Py_CLEAR(__pyx_tuple__80);
   Py_CLEAR(__pyx_tuple__81);
-  Py_CLEAR(__pyx_codeobj__82);
+  Py_CLEAR(__pyx_tuple__82);
   Py_CLEAR(__pyx_tuple__83);
   Py_CLEAR(__pyx_tuple__84);
-  Py_CLEAR(__pyx_codeobj__85);
+  Py_CLEAR(__pyx_tuple__85);
   Py_CLEAR(__pyx_tuple__86);
-  Py_CLEAR(__pyx_codeobj__87);
+  Py_CLEAR(__pyx_tuple__87);
   Py_CLEAR(__pyx_tuple__88);
-  Py_CLEAR(__pyx_codeobj__89);
+  Py_CLEAR(__pyx_tuple__89);
   Py_CLEAR(__pyx_tuple__90);
-  Py_CLEAR(__pyx_codeobj__91);
+  Py_CLEAR(__pyx_tuple__91);
   Py_CLEAR(__pyx_tuple__92);
   Py_CLEAR(__pyx_tuple__93);
-  Py_CLEAR(__pyx_codeobj__94);
+  Py_CLEAR(__pyx_tuple__94);
   Py_CLEAR(__pyx_tuple__95);
   Py_CLEAR(__pyx_tuple__96);
-  Py_CLEAR(__pyx_codeobj__97);
+  Py_CLEAR(__pyx_tuple__97);
   Py_CLEAR(__pyx_tuple__98);
   Py_CLEAR(__pyx_tuple__99);
-  Py_CLEAR(__pyx_codeobj__100);
+  Py_CLEAR(__pyx_tuple__100);
   Py_CLEAR(__pyx_tuple__101);
-  Py_CLEAR(__pyx_codeobj__102);
+  Py_CLEAR(__pyx_tuple__102);
   Py_CLEAR(__pyx_tuple__103);
   Py_CLEAR(__pyx_tuple__104);
   Py_CLEAR(__pyx_tuple__105);
   Py_CLEAR(__pyx_tuple__106);
   Py_CLEAR(__pyx_tuple__107);
   Py_CLEAR(__pyx_tuple__108);
-  Py_CLEAR(__pyx_codeobj__109);
+  Py_CLEAR(__pyx_tuple__109);
   Py_CLEAR(__pyx_tuple__110);
   Py_CLEAR(__pyx_tuple__111);
-  Py_CLEAR(__pyx_codeobj__112);
+  Py_CLEAR(__pyx_tuple__112);
   Py_CLEAR(__pyx_tuple__113);
-  Py_CLEAR(__pyx_codeobj__114);
+  Py_CLEAR(__pyx_tuple__114);
   Py_CLEAR(__pyx_tuple__115);
-  Py_CLEAR(__pyx_codeobj__116);
+  Py_CLEAR(__pyx_tuple__116);
   Py_CLEAR(__pyx_tuple__117);
-  Py_CLEAR(__pyx_codeobj__118);
+  Py_CLEAR(__pyx_tuple__118);
   Py_CLEAR(__pyx_tuple__119);
-  Py_CLEAR(__pyx_codeobj__120);
+  Py_CLEAR(__pyx_tuple__120);
   Py_CLEAR(__pyx_tuple__121);
-  Py_CLEAR(__pyx_codeobj__122);
+  Py_CLEAR(__pyx_tuple__122);
   Py_CLEAR(__pyx_tuple__123);
-  Py_CLEAR(__pyx_codeobj__124);
+  Py_CLEAR(__pyx_tuple__124);
   Py_CLEAR(__pyx_tuple__125);
   Py_CLEAR(__pyx_tuple__126);
-  Py_CLEAR(__pyx_codeobj__127);
+  Py_CLEAR(__pyx_tuple__127);
   Py_CLEAR(__pyx_tuple__128);
-  Py_CLEAR(__pyx_codeobj__129);
+  Py_CLEAR(__pyx_tuple__129);
   Py_CLEAR(__pyx_tuple__130);
-  Py_CLEAR(__pyx_codeobj__131);
+  Py_CLEAR(__pyx_tuple__131);
   Py_CLEAR(__pyx_tuple__132);
-  Py_CLEAR(__pyx_codeobj__133);
+  Py_CLEAR(__pyx_tuple__133);
   Py_CLEAR(__pyx_tuple__134);
-  Py_CLEAR(__pyx_codeobj__135);
+  Py_CLEAR(__pyx_tuple__135);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
       __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
@@ -22750,6 +23665,123 @@ bad:
     return -1;
 }
 
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
+
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* GetModuleGlobalName */
 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
     PyObject *result;
@@ -23642,30 +24674,6 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
 }
 #endif
 
-/* PyErrFetchRestore */
-        #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-#endif
-
 /* FastTypeChecks */
         #if CYTHON_COMPILING_IN_CPYTHON
 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
@@ -25518,6 +26526,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -27335,6 +28346,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index 3fcaafc..f9f25f2 100644 (file)
@@ -1,3 +1,3 @@
 #ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "4.2.1"
+#define LXML_VERSION_STRING "4.2.2"
 #endif
index b669be3..9b45ba1 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 #ifndef __PYX_HAVE__lxml__etree
 #define __PYX_HAVE__lxml__etree
index 6dfe06f..40183ec 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 #ifndef __PYX_HAVE_API__lxml__etree
 #define __PYX_HAVE_API__lxml__etree
index 1ec6124..ee5b29a 100644 (file)
@@ -1,10 +1,14 @@
-/* Generated by Cython 0.28.1 */
+/* Generated by Cython 0.28.3 */
 
 /* BEGIN: Cython Metadata
 {
     "distutils": {
         "define_macros": [
             [
+                "CYTHON_TRACE_NOGIL", 
+                "1"
+            ], 
+            [
                 "CYTHON_CLINE_IN_TRACEBACK", 
                 "0"
             ]
@@ -43,9 +47,6 @@
             "src/lxml/includes/xslt.pxd", 
             "src/lxml/objectpath.pxi"
         ], 
-        "extra_compile_args": [
-            "-w"
-        ], 
         "include_dirs": [
             "src/lxml/includes", 
             "/usr/include/libxml2", 
@@ -56,7 +57,6 @@
             "exslt", 
             "xml2", 
             "rt", 
-            "z", 
             "m"
         ], 
         "name": "lxml.objectify", 
@@ -75,7 +75,7 @@ END: Cython Metadata */
 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
     #error Cython requires Python 2.6+ or Python 3.3+.
 #else
-#define CYTHON_ABI "0_28_1"
+#define CYTHON_ABI "0_28_3"
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -521,6 +521,7 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
   #define PyString_Type                PyUnicode_Type
   #define PyString_Check               PyUnicode_Check
   #define PyString_CheckExact          PyUnicode_CheckExact
+  #define PyObject_Unicode             PyObject_Str
 #endif
 #if PY_MAJOR_VERSION >= 3
   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
@@ -734,7 +735,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
 #define __Pyx_PySequence_Tuple(obj)\
@@ -842,7 +843,7 @@ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
 static PyObject *__pyx_m = NULL;
 static PyObject *__pyx_d;
 static PyObject *__pyx_b;
-static PyObject *__pyx_cython_runtime;
+static PyObject *__pyx_cython_runtime = NULL;
 static PyObject *__pyx_empty_tuple;
 static PyObject *__pyx_empty_bytes;
 static PyObject *__pyx_empty_unicode;
@@ -1169,6 +1170,244 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 /* GetBuiltinName.proto */
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
+/* PyThreadStateGet.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
+#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
+#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
+#else
+#define __Pyx_PyThreadState_declare
+#define __Pyx_PyThreadState_assign
+#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
+#endif
+
+/* PyErrFetchRestore.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
+#else
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#endif
+#else
+#define __Pyx_PyErr_Clear() PyErr_Clear()
+#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
+#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
+#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
+#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
+#endif
+
+/* Profile.proto */
+#ifndef CYTHON_PROFILE
+#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+  #define CYTHON_PROFILE 0
+#else
+  #define CYTHON_PROFILE 1
+#endif
+#endif
+#ifndef CYTHON_TRACE_NOGIL
+  #define CYTHON_TRACE_NOGIL 0
+#else
+  #if CYTHON_TRACE_NOGIL && !defined(CYTHON_TRACE)
+    #define CYTHON_TRACE 1
+  #endif
+#endif
+#ifndef CYTHON_TRACE
+  #define CYTHON_TRACE 0
+#endif
+#if CYTHON_TRACE
+  #undef CYTHON_PROFILE_REUSE_FRAME
+#endif
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+  #define CYTHON_PROFILE_REUSE_FRAME 0
+#endif
+#if CYTHON_PROFILE || CYTHON_TRACE
+  #include "compile.h"
+  #include "frameobject.h"
+  #include "traceback.h"
+  #if CYTHON_PROFILE_REUSE_FRAME
+    #define CYTHON_FRAME_MODIFIER static
+    #define CYTHON_FRAME_DEL(frame)
+  #else
+    #define CYTHON_FRAME_MODIFIER
+    #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+  #endif
+  #define __Pyx_TraceDeclarations\
+  static PyCodeObject *__pyx_frame_code = NULL;\
+  CYTHON_FRAME_MODIFIER PyFrameObject *__pyx_frame = NULL;\
+  int __Pyx_use_tracing = 0;
+  #define __Pyx_TraceFrameInit(codeobj)\
+  if (codeobj) __pyx_frame_code = (PyCodeObject*) codeobj;
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  if (nogil) {\
+      if (CYTHON_TRACE_NOGIL) {\
+          PyThreadState *tstate;\
+          PyGILState_STATE state = PyGILState_Ensure();\
+          tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+                  (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+              __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          }\
+          PyGILState_Release(state);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  } else {\
+      PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #else
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)\
+  {   PyThreadState* tstate = PyThreadState_GET();\
+      if (unlikely(tstate->use_tracing) && !tstate->tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&__pyx_frame_code, &__pyx_frame, tstate, funcname, srcfile, firstlineno);\
+          if (unlikely(__Pyx_use_tracing < 0)) goto_error;\
+      }\
+  }
+  #endif
+  #define __Pyx_TraceException()\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing &&\
+              (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) {\
+          tstate->tracing++;\
+          tstate->use_tracing = 0;\
+          PyObject *exc_info = __Pyx_GetExceptionTuple(tstate);\
+          if (exc_info) {\
+              if (CYTHON_TRACE && tstate->c_tracefunc)\
+                  tstate->c_tracefunc(\
+                      tstate->c_traceobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              tstate->c_profilefunc(\
+                  tstate->c_profileobj, __pyx_frame, PyTrace_EXCEPTION, exc_info);\
+              Py_DECREF(exc_info);\
+          }\
+          tstate->use_tracing = 1;\
+          tstate->tracing--;\
+      }\
+  }
+  static void __Pyx_call_return_trace_func(PyThreadState *tstate, PyFrameObject *frame, PyObject *result) {
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      if (CYTHON_TRACE && tstate->c_tracefunc)
+          tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+      if (tstate->c_profilefunc)
+          tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+      CYTHON_FRAME_DEL(frame);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (tstate->use_tracing) {\
+                  __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+              }\
+              PyGILState_Release(state);\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (tstate->use_tracing) {\
+              __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceReturn(result, nogil)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (tstate->use_tracing) {\
+          __Pyx_call_return_trace_func(tstate, __pyx_frame, (PyObject*)result);\
+      }\
+  }
+  #endif
+  static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno);
+  static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, PyThreadState* tstate, const char *funcname, const char *srcfile, int firstlineno);
+#else
+  #define __Pyx_TraceDeclarations
+  #define __Pyx_TraceFrameInit(codeobj)
+  #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error)   if ((1)); else goto_error;
+  #define __Pyx_TraceException()
+  #define __Pyx_TraceReturn(result, nogil)
+#endif
+#if CYTHON_TRACE
+  static int __Pyx_call_line_trace_func(PyThreadState *tstate, PyFrameObject *frame, int lineno) {
+      int ret;
+      PyObject *type, *value, *traceback;
+      __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+      __Pyx_PyFrame_SetLineNumber(frame, lineno);
+      tstate->tracing++;
+      tstate->use_tracing = 0;
+      ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+      tstate->use_tracing = 1;
+      tstate->tracing--;
+      if (likely(!ret)) {
+          __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+      } else {
+          Py_XDECREF(type);
+          Py_XDECREF(value);
+          Py_XDECREF(traceback);
+      }
+      return ret;
+  }
+  #ifdef WITH_THREAD
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      if (nogil) {\
+          if (CYTHON_TRACE_NOGIL) {\
+              int ret = 0;\
+              PyThreadState *tstate;\
+              PyGILState_STATE state = PyGILState_Ensure();\
+              tstate = __Pyx_PyThreadState_Current;\
+              if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+                  ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              }\
+              PyGILState_Release(state);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      } else {\
+          PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+          if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+              int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+              if (unlikely(ret)) goto_error;\
+          }\
+      }\
+  }
+  #else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)\
+  if (likely(!__Pyx_use_tracing)); else {\
+      PyThreadState* tstate = __Pyx_PyThreadState_Current;\
+      if (unlikely(tstate->use_tracing && tstate->c_tracefunc && __pyx_frame->f_trace)) {\
+          int ret = __Pyx_call_line_trace_func(tstate, __pyx_frame, lineno);\
+          if (unlikely(ret)) goto_error;\
+      }\
+  }
+  #endif
+#else
+  #define __Pyx_TraceLine(lineno, nogil, goto_error)   if ((1)); else goto_error;
+#endif
+
 /* PyObjectCall.proto */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
@@ -1324,42 +1563,6 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int
 static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                       Py_UCS4 max_char);
 
-/* PyThreadStateGet.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
-#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
-#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
-#else
-#define __Pyx_PyThreadState_declare
-#define __Pyx_PyThreadState_assign
-#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
-#endif
-
-/* PyErrFetchRestore.proto */
-#if CYTHON_FAST_THREAD_STATE
-#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
-#else
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#endif
-#else
-#define __Pyx_PyErr_Clear() PyErr_Clear()
-#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
-#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
-#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
-#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
-#endif
-
 /* RaiseException.proto */
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
 
@@ -1401,6 +1604,11 @@ static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* k
     (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj))
 #endif
 
+/* WriteUnraisableException.proto */
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename,
+                                  int full_traceback, int nogil);
+
 /* PyObjectSetAttrStr.proto */
 #if CYTHON_USE_TYPE_SLOTS
 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
@@ -1461,6 +1669,17 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long int
     (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
 #endif
 
+/* py_abs.proto */
+#if CYTHON_USE_PYLONG_INTERNALS
+static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num);
+#define __Pyx_PyNumber_Absolute(x)\
+    ((likely(PyLong_CheckExact(x))) ?\
+         (likely(Py_SIZE(x) >= 0) ? (Py_INCREF(x), (x)) : __Pyx_PyLong_AbsNeg(x)) :\
+         PyNumber_Absolute(x))
+#else
+#define __Pyx_PyNumber_Absolute(x)  PyNumber_Absolute(x)
+#endif
+
 /* StrEquals.proto */
 #if PY_MAJOR_VERSION >= 3
 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
@@ -1909,9 +2128,8 @@ static const char __pyx_k_f[] = "f";
 static const char __pyx_k_i[] = "i";
 static const char __pyx_k_s[] = "{%s}*";
 static const char __pyx_k_ID[] = "ID";
-static const char __pyx_k__2[] = "";
-static const char __pyx_k__3[] = ".";
-static const char __pyx_k__5[] = "'";
+static const char __pyx_k__3[] = "";
+static const char __pyx_k__9[] = ".";
 static const char __pyx_k_kw[] = "kw";
 static const char __pyx_k_ns[] = "ns";
 static const char __pyx_k_of[] = "' of '";
@@ -1919,18 +2137,19 @@ static const char __pyx_k_on[] = "on";
 static const char __pyx_k_py[] = "py:";
 static const char __pyx_k_re[] = "re";
 static const char __pyx_k_XML[] = "XML";
-static const char __pyx_k__10[] = "{";
-  static const char __pyx_k__11[] = "    ";
-  static const char __pyx_k__12[] = " = ";
-  static const char __pyx_k__13[] = " [";
-  static const char __pyx_k__14[] = "]\n";
-  static const char __pyx_k__15[] = "  * ";
-  static const char __pyx_k__16[] = "\n";
-  static const char __pyx_k__18[] = ":";
-  static const char __pyx_k__22[] = "{}";
-  static const char __pyx_k__23[] = "[";
-  static const char __pyx_k__24[] = "]";
-  static const char __pyx_k__26[] = "__.*__$";
+static const char __pyx_k__22[] = "'";
+static const char __pyx_k__32[] = "{";
+  static const char __pyx_k__35[] = "    ";
+  static const char __pyx_k__36[] = " = ";
+  static const char __pyx_k__37[] = " [";
+  static const char __pyx_k__38[] = "]\n";
+  static const char __pyx_k__39[] = "  * ";
+  static const char __pyx_k__40[] = "\n";
+  static const char __pyx_k__44[] = ":";
+  static const char __pyx_k__62[] = "{}";
+  static const char __pyx_k__63[] = "[";
+  static const char __pyx_k__64[] = "]";
+  static const char __pyx_k__66[] = "__.*__$";
   static const char __pyx_k_all[] = "__all__";
   static const char __pyx_k_end[] = "end";
   static const char __pyx_k_get[] = "get";
@@ -2267,23 +2486,23 @@ static PyObject *__pyx_n_s_XML;
 static PyObject *__pyx_n_u_XML;
 static PyObject *__pyx_n_s_XMLParser;
 static PyObject *__pyx_kp_u_XSD_types_require_the_XSD_namesp;
-static PyObject *__pyx_kp_u__10;
-static PyObject *__pyx_kp_u__11;
-static PyObject *__pyx_kp_u__12;
-static PyObject *__pyx_kp_u__13;
-static PyObject *__pyx_kp_u__14;
-static PyObject *__pyx_kp_u__15;
-static PyObject *__pyx_kp_u__16;
-static PyObject *__pyx_kp_b__18;
-static PyObject *__pyx_kp_u__18;
-static PyObject *__pyx_kp_s__2;
-static PyObject *__pyx_kp_u__2;
 static PyObject *__pyx_kp_u__22;
-static PyObject *__pyx_kp_u__23;
-static PyObject *__pyx_kp_u__24;
-static PyObject *__pyx_kp_u__26;
+static PyObject *__pyx_kp_s__3;
 static PyObject *__pyx_kp_u__3;
-static PyObject *__pyx_kp_u__5;
+static PyObject *__pyx_kp_u__32;
+static PyObject *__pyx_kp_u__35;
+static PyObject *__pyx_kp_u__36;
+static PyObject *__pyx_kp_u__37;
+static PyObject *__pyx_kp_u__38;
+static PyObject *__pyx_kp_u__39;
+static PyObject *__pyx_kp_u__40;
+static PyObject *__pyx_kp_b__44;
+static PyObject *__pyx_kp_u__44;
+static PyObject *__pyx_kp_u__62;
+static PyObject *__pyx_kp_u__63;
+static PyObject *__pyx_kp_u__64;
+static PyObject *__pyx_kp_u__66;
+static PyObject *__pyx_kp_u__9;
 static PyObject *__pyx_n_s_addattr;
 static PyObject *__pyx_n_s_addnext;
 static PyObject *__pyx_n_s_after;
@@ -2671,106 +2890,106 @@ static PyObject *__pyx_int_0;
 static PyObject *__pyx_int_1;
 static PyObject *__pyx_int_neg_1;
 static PyObject *__pyx_tuple_;
-static PyObject *__pyx_slice__4;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
-static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__17;
-static PyObject *__pyx_tuple__19;
-static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__21;
-static PyObject *__pyx_tuple__25;
+static PyObject *__pyx_slice__10;
+static PyObject *__pyx_slice__41;
 static PyObject *__pyx_tuple__27;
 static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__29;
 static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__43;
 static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
 static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__55;
-static PyObject *__pyx_tuple__57;
-static PyObject *__pyx_tuple__59;
-static PyObject *__pyx_tuple__61;
-static PyObject *__pyx_tuple__63;
+static PyObject *__pyx_tuple__58;
 static PyObject *__pyx_tuple__65;
 static PyObject *__pyx_tuple__67;
+static PyObject *__pyx_tuple__68;
 static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__70;
 static PyObject *__pyx_tuple__71;
+static PyObject *__pyx_tuple__72;
 static PyObject *__pyx_tuple__73;
+static PyObject *__pyx_tuple__74;
 static PyObject *__pyx_tuple__75;
 static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__77;
 static PyObject *__pyx_tuple__78;
+static PyObject *__pyx_tuple__79;
 static PyObject *__pyx_tuple__80;
+static PyObject *__pyx_tuple__81;
 static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_tuple__83;
 static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__85;
 static PyObject *__pyx_tuple__86;
+static PyObject *__pyx_tuple__87;
 static PyObject *__pyx_tuple__88;
+static PyObject *__pyx_tuple__89;
 static PyObject *__pyx_tuple__90;
+static PyObject *__pyx_tuple__91;
 static PyObject *__pyx_tuple__92;
 static PyObject *__pyx_tuple__93;
+static PyObject *__pyx_tuple__94;
 static PyObject *__pyx_tuple__95;
+static PyObject *__pyx_tuple__96;
 static PyObject *__pyx_tuple__97;
 static PyObject *__pyx_tuple__98;
+static PyObject *__pyx_tuple__99;
+static PyObject *__pyx_codeobj__2;
+static PyObject *__pyx_codeobj__4;
+static PyObject *__pyx_codeobj__5;
+static PyObject *__pyx_codeobj__6;
+static PyObject *__pyx_codeobj__7;
+static PyObject *__pyx_codeobj__8;
 static PyObject *__pyx_tuple__100;
 static PyObject *__pyx_tuple__101;
+static PyObject *__pyx_tuple__102;
 static PyObject *__pyx_tuple__103;
 static PyObject *__pyx_tuple__104;
+static PyObject *__pyx_tuple__105;
 static PyObject *__pyx_tuple__106;
 static PyObject *__pyx_tuple__107;
+static PyObject *__pyx_tuple__108;
 static PyObject *__pyx_tuple__109;
 static PyObject *__pyx_tuple__110;
+static PyObject *__pyx_tuple__111;
 static PyObject *__pyx_tuple__112;
+static PyObject *__pyx_tuple__113;
 static PyObject *__pyx_tuple__114;
+static PyObject *__pyx_tuple__115;
 static PyObject *__pyx_tuple__116;
-static PyObject *__pyx_codeobj__29;
-static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__11;
+static PyObject *__pyx_codeobj__12;
+static PyObject *__pyx_codeobj__13;
+static PyObject *__pyx_codeobj__14;
+static PyObject *__pyx_codeobj__15;
+static PyObject *__pyx_codeobj__16;
+static PyObject *__pyx_codeobj__17;
+static PyObject *__pyx_codeobj__18;
+static PyObject *__pyx_codeobj__19;
+static PyObject *__pyx_codeobj__20;
+static PyObject *__pyx_codeobj__21;
+static PyObject *__pyx_codeobj__23;
+static PyObject *__pyx_codeobj__24;
+static PyObject *__pyx_codeobj__25;
+static PyObject *__pyx_codeobj__26;
+static PyObject *__pyx_codeobj__31;
+static PyObject *__pyx_codeobj__33;
 static PyObject *__pyx_codeobj__34;
-static PyObject *__pyx_codeobj__36;
-static PyObject *__pyx_codeobj__38;
-static PyObject *__pyx_codeobj__40;
 static PyObject *__pyx_codeobj__42;
-static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__43;
 static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__47;
 static PyObject *__pyx_codeobj__48;
 static PyObject *__pyx_codeobj__50;
+static PyObject *__pyx_codeobj__51;
 static PyObject *__pyx_codeobj__52;
+static PyObject *__pyx_codeobj__53;
 static PyObject *__pyx_codeobj__54;
+static PyObject *__pyx_codeobj__55;
 static PyObject *__pyx_codeobj__56;
-static PyObject *__pyx_codeobj__58;
+static PyObject *__pyx_codeobj__57;
+static PyObject *__pyx_codeobj__59;
 static PyObject *__pyx_codeobj__60;
-static PyObject *__pyx_codeobj__62;
-static PyObject *__pyx_codeobj__64;
-static PyObject *__pyx_codeobj__66;
-static PyObject *__pyx_codeobj__68;
-static PyObject *__pyx_codeobj__70;
-static PyObject *__pyx_codeobj__72;
-static PyObject *__pyx_codeobj__74;
-static PyObject *__pyx_codeobj__77;
-static PyObject *__pyx_codeobj__79;
-static PyObject *__pyx_codeobj__81;
-static PyObject *__pyx_codeobj__83;
-static PyObject *__pyx_codeobj__85;
-static PyObject *__pyx_codeobj__87;
-static PyObject *__pyx_codeobj__89;
-static PyObject *__pyx_codeobj__91;
-static PyObject *__pyx_codeobj__94;
-static PyObject *__pyx_codeobj__96;
-static PyObject *__pyx_codeobj__99;
-static PyObject *__pyx_codeobj__102;
-static PyObject *__pyx_codeobj__105;
-static PyObject *__pyx_codeobj__108;
-static PyObject *__pyx_codeobj__111;
-static PyObject *__pyx_codeobj__113;
-static PyObject *__pyx_codeobj__115;
+static PyObject *__pyx_codeobj__61;
 /* Late includes */
 
 /* "lxml/objectify.pyx":49
@@ -2783,11 +3002,13 @@ static PyObject *__pyx_codeobj__115;
 
 static PyObject *__pyx_f_4lxml_9objectify_strrepr(PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("strrepr", 0);
+  __Pyx_TraceCall("strrepr", __pyx_f[0], 49, 0, __PYX_ERR(0, 49, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":53
  *     methods, e.g. _Element.__repr__().
@@ -2796,6 +3017,7 @@ static PyObject *__pyx_f_4lxml_9objectify_strrepr(PyObject *__pyx_v_s) {
  * 
  * 
  */
+  __Pyx_TraceLine(53,0,__PYX_ERR(0, 53, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if ((IS_PYTHON2 != 0)) {
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error)
@@ -2830,6 +3052,7 @@ static PyObject *__pyx_f_4lxml_9objectify_strrepr(PyObject *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2846,10 +3069,12 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
   const char *__pyx_v_c_name;
   char *__pyx_v_s;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_typename", 0);
+  __Pyx_TraceCall("_typename", __pyx_f[0], 56, 0, __PYX_ERR(0, 56, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":58
  * cdef object _typename(object t):
@@ -2858,6 +3083,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
  *     s = cstring_h.strrchr(c_name, c'.')
  *     if s is not NULL:
  */
+  __Pyx_TraceLine(58,0,__PYX_ERR(0, 58, __pyx_L1_error))
   __pyx_v_c_name = _fqtypename(__pyx_v_t);
 
   /* "lxml/objectify.pyx":59
@@ -2867,6 +3093,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
  *     if s is not NULL:
  *         c_name = s + 1
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(0, 59, __pyx_L1_error))
   __pyx_v_s = strrchr(__pyx_v_c_name, '.');
 
   /* "lxml/objectify.pyx":60
@@ -2876,6 +3103,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
  *         c_name = s + 1
  *     return pyunicode(<const_xmlChar*>c_name)
  */
+  __Pyx_TraceLine(60,0,__PYX_ERR(0, 60, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_s != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -2886,6 +3114,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
  *     return pyunicode(<const_xmlChar*>c_name)
  * 
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(0, 61, __pyx_L1_error))
     __pyx_v_c_name = (__pyx_v_s + 1);
 
     /* "lxml/objectify.pyx":60
@@ -2904,6 +3133,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
  * 
  * 
  */
+  __Pyx_TraceLine(62,0,__PYX_ERR(0, 62, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = pyunicode(((const xmlChar *)__pyx_v_c_name)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -2926,6 +3156,7 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -2940,10 +3171,12 @@ static PyObject *__pyx_f_4lxml_9objectify__typename(PyObject *__pyx_v_t) {
 
 static PyObject *__pyx_f_4lxml_9objectify__unicodeAndUtf8(PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_unicodeAndUtf8", 0);
+  __Pyx_TraceCall("_unicodeAndUtf8", __pyx_f[0], 78, 0, __PYX_ERR(0, 78, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":79
  * 
@@ -2952,6 +3185,7 @@ static PyObject *__pyx_f_4lxml_9objectify__unicodeAndUtf8(PyObject *__pyx_v_s) {
  * 
  * def set_pytype_attribute_tag(attribute_tag=None):
  */
+  __Pyx_TraceLine(79,0,__PYX_ERR(0, 79, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -2983,6 +3217,7 @@ static PyObject *__pyx_f_4lxml_9objectify__unicodeAndUtf8(PyObject *__pyx_v_s) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3055,6 +3290,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_1set_pytype_attribute_tag(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_attribute_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -3062,7 +3298,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   const xmlChar *__pyx_t_6;
+  __Pyx_TraceFrameInit(__pyx_codeobj__2)
   __Pyx_RefNannySetupContext("set_pytype_attribute_tag", 0);
+  __Pyx_TraceCall("set_pytype_attribute_tag", __pyx_f[0], 81, 0, __PYX_ERR(0, 81, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":95
  *     global PYTYPE_NAMESPACE, PYTYPE_NAMESPACE_UTF8
@@ -3071,6 +3309,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *         PYTYPE_NAMESPACE, PYTYPE_NAMESPACE_UTF8 = \
  *             _unicodeAndUtf8(u"http://codespeak.net/lxml/objectify/pytype")
  */
+  __Pyx_TraceLine(95,0,__PYX_ERR(0, 95, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attribute_tag == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -3082,6 +3321,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *         PYTYPE_ATTRIBUTE_NAME, PYTYPE_ATTRIBUTE_NAME_UTF8 = \
  *             _unicodeAndUtf8(u"pytype")
  */
+    __Pyx_TraceLine(97,0,__PYX_ERR(0, 97, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_9objectify__unicodeAndUtf8(__pyx_kp_u_http_codespeak_net_lxml_objectif); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (likely(__pyx_t_3 != Py_None)) {
@@ -3115,6 +3355,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *             _unicodeAndUtf8(u"http://codespeak.net/lxml/objectify/pytype")
  *         PYTYPE_ATTRIBUTE_NAME, PYTYPE_ATTRIBUTE_NAME_UTF8 = \
  */
+    __Pyx_TraceLine(96,0,__PYX_ERR(0, 96, __pyx_L1_error))
     if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 96, __pyx_L1_error)
     __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE);
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE, __pyx_t_4);
@@ -3132,6 +3373,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *     else:
  *         PYTYPE_NAMESPACE_UTF8, PYTYPE_ATTRIBUTE_NAME_UTF8 = \
  */
+    __Pyx_TraceLine(99,0,__PYX_ERR(0, 99, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_9objectify__unicodeAndUtf8(__pyx_n_u_pytype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (likely(__pyx_t_3 != Py_None)) {
@@ -3165,6 +3407,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *             _unicodeAndUtf8(u"pytype")
  *     else:
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(0, 98, __pyx_L1_error))
     if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 98, __pyx_L1_error)
     __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_PYTYPE_ATTRIBUTE_NAME);
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_PYTYPE_ATTRIBUTE_NAME, __pyx_t_5);
@@ -3192,6 +3435,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *             cetree.getNsTag(attribute_tag)
  *         PYTYPE_NAMESPACE = PYTYPE_NAMESPACE_UTF8.decode('utf8')
  */
+  __Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error))
   /*else*/ {
 
     /* "lxml/objectify.pyx":102
@@ -3201,6 +3445,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *         PYTYPE_NAMESPACE = PYTYPE_NAMESPACE_UTF8.decode('utf8')
  *         PYTYPE_ATTRIBUTE_NAME = PYTYPE_ATTRIBUTE_NAME_UTF8.decode('utf8')
  */
+    __Pyx_TraceLine(102,0,__PYX_ERR(0, 102, __pyx_L1_error))
     __pyx_t_3 = getNsTag(__pyx_v_attribute_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     if (likely(__pyx_t_3 != Py_None)) {
@@ -3234,6 +3479,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *             cetree.getNsTag(attribute_tag)
  *         PYTYPE_NAMESPACE = PYTYPE_NAMESPACE_UTF8.decode('utf8')
  */
+    __Pyx_TraceLine(101,0,__PYX_ERR(0, 101, __pyx_L1_error))
     if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 101, __pyx_L1_error)
     if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 101, __pyx_L1_error)
     __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE_UTF8);
@@ -3252,6 +3498,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *         PYTYPE_ATTRIBUTE_NAME = PYTYPE_ATTRIBUTE_NAME_UTF8.decode('utf8')
  * 
  */
+    __Pyx_TraceLine(103,0,__PYX_ERR(0, 103, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE_UTF8 == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(0, 103, __pyx_L1_error)
@@ -3270,6 +3517,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  * 
  *     _PYTYPE_NAMESPACE      = PYTYPE_NAMESPACE_UTF8
  */
+    __Pyx_TraceLine(104,0,__PYX_ERR(0, 104, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify_PYTYPE_ATTRIBUTE_NAME_UTF8 == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(0, 104, __pyx_L1_error)
@@ -3290,6 +3538,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *     _PYTYPE_ATTRIBUTE_NAME = PYTYPE_ATTRIBUTE_NAME_UTF8
  *     PYTYPE_ATTRIBUTE = cetree.namespacedNameFromNsName(
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(0, 106, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE_UTF8 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
     __PYX_ERR(0, 106, __pyx_L1_error)
@@ -3304,6 +3553,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *     PYTYPE_ATTRIBUTE = cetree.namespacedNameFromNsName(
  *         _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(0, 107, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify_PYTYPE_ATTRIBUTE_NAME_UTF8 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
     __PYX_ERR(0, 107, __pyx_L1_error)
@@ -3318,6 +3568,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
  *         _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  * 
  */
+  __Pyx_TraceLine(108,0,__PYX_ERR(0, 108, __pyx_L1_error))
   __pyx_t_3 = namespacedNameFromNsName(__pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYTYPE_ATTRIBUTE, __pyx_t_3) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
@@ -3342,6 +3593,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_set_pytype_attribute_tag(CYTHON_UNUSE
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3374,6 +3626,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_1__iter__(PyObje
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self) {
   PyObject *__pyx_v_parent = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -3382,6 +3635,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
   int __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
+  __Pyx_TraceCall("__iter__", __pyx_f[0], 146, 0, __PYX_ERR(0, 146, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":149
  *         u"""Iterate over self and all siblings with the same tag.
@@ -3390,6 +3644,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
  *         if parent is None:
  *             return iter([self])
  */
+  __Pyx_TraceLine(149,0,__PYX_ERR(0, 149, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getparent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -3420,6 +3675,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
  *             return iter([self])
  *         return etree.ElementChildIterator(parent, tag=self.tag)
  */
+  __Pyx_TraceLine(150,0,__PYX_ERR(0, 150, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_parent == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
@@ -3431,6 +3687,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
  *         return etree.ElementChildIterator(parent, tag=self.tag)
  * 
  */
+    __Pyx_TraceLine(151,0,__PYX_ERR(0, 151, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -3460,6 +3717,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
  * 
  *     def __str__(self):
  */
+  __Pyx_TraceLine(152,0,__PYX_ERR(0, 152, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementChildIterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -3502,6 +3760,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement___iter__(struct
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_parent);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3529,11 +3788,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_3__str__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 154, 0, __PYX_ERR(0, 154, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":155
  * 
@@ -3542,6 +3803,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct
  *             return _dump(self, 0)
  *         else:
  */
+  __Pyx_TraceLine(155,0,__PYX_ERR(0, 155, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_4lxml_9objectify___RECURSIVE_STR != 0);
   if (__pyx_t_1) {
 
@@ -3552,6 +3814,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct
  *         else:
  *             return textOf(self._c_node) or u''
  */
+    __Pyx_TraceLine(156,0,__PYX_ERR(0, 156, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_self), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 156, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -3575,6 +3838,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct
  * 
  *     # pickle support for objectified Element
  */
+  __Pyx_TraceLine(158,0,__PYX_ERR(0, 158, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = textOf(__pyx_v_self->__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
@@ -3588,8 +3852,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       goto __pyx_L4_bool_binop_done;
     }
-    __Pyx_INCREF(__pyx_kp_u__2);
-    __pyx_t_2 = __pyx_kp_u__2;
+    __Pyx_INCREF(__pyx_kp_u__3);
+    __pyx_t_2 = __pyx_kp_u__3;
     __pyx_L4_bool_binop_done:;
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -3612,6 +3876,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_2__str__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3640,13 +3905,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_5__reduce__(PyOb
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4__reduce__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__4)
   __Pyx_RefNannySetupContext("__reduce__", 0);
+  __Pyx_TraceCall("__reduce__", __pyx_f[0], 161, 0, __PYX_ERR(0, 161, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":162
  *     # pickle support for objectified Element
@@ -3655,6 +3923,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4__reduce__(stru
  * 
  *     property text:
  */
+  __Pyx_TraceLine(162,0,__PYX_ERR(0, 162, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -3739,6 +4008,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4__reduce__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3766,9 +4036,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_4text_1__get__(P
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 165, 0, __PYX_ERR(0, 165, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":166
  *     property text:
@@ -3777,6 +4049,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(st
  * 
  *     property __dict__:
  */
+  __Pyx_TraceLine(166,0,__PYX_ERR(0, 166, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -3799,6 +4072,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -3831,6 +4105,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -3841,6 +4116,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   int __pyx_t_7;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 173, 0, __PYX_ERR(0, 173, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":176
  *             cdef _Element child
@@ -3849,6 +4125,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
  *             children = {}
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(0, 176, __pyx_L1_error))
   __pyx_v_c_ns = _getNs(__pyx_v_self->__pyx_base.__pyx_base._c_node);
 
   /* "lxml/objectify.pyx":177
@@ -3858,6 +4135,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *             children = {}
  *             for child in etree.ElementChildIterator(self, tag=tag):
  */
+  __Pyx_TraceLine(177,0,__PYX_ERR(0, 177, __pyx_L1_error))
   if (((__pyx_v_c_ns != NULL) != 0)) {
     __pyx_t_2 = pyunicode(__pyx_v_c_ns); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -3880,6 +4158,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *             for child in etree.ElementChildIterator(self, tag=tag):
  *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
  */
+  __Pyx_TraceLine(178,0,__PYX_ERR(0, 178, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_children = ((PyObject*)__pyx_t_1);
@@ -3892,6 +4171,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
  *                     continue
  */
+  __Pyx_TraceLine(179,0,__PYX_ERR(0, 179, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementChildIterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
@@ -3958,6 +4238,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                     continue
  *                 name = pyunicode(child._c_node.name)
  */
+    __Pyx_TraceLine(180,0,__PYX_ERR(0, 180, __pyx_L1_error))
     __pyx_t_8 = ((__pyx_v_c_ns == NULL) != 0);
     if (__pyx_t_8) {
     } else {
@@ -3976,6 +4257,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                 name = pyunicode(child._c_node.name)
  *                 if name not in children:
  */
+      __Pyx_TraceLine(181,0,__PYX_ERR(0, 181, __pyx_L1_error))
       goto __pyx_L3_continue;
 
       /* "lxml/objectify.pyx":180
@@ -3994,6 +4276,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                 if name not in children:
  *                     children[name] = child
  */
+    __Pyx_TraceLine(182,0,__PYX_ERR(0, 182, __pyx_L1_error))
     __pyx_t_4 = pyunicode(__pyx_v_child->_c_node->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -4006,6 +4289,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                     children[name] = child
  *             return children
  */
+    __Pyx_TraceLine(183,0,__PYX_ERR(0, 183, __pyx_L1_error))
     __pyx_t_7 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_children, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 183, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
@@ -4017,6 +4301,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *             return children
  * 
  */
+      __Pyx_TraceLine(184,0,__PYX_ERR(0, 184, __pyx_L1_error))
       if (unlikely(PyDict_SetItem(__pyx_v_children, __pyx_v_name, ((PyObject *)__pyx_v_child)) < 0)) __PYX_ERR(0, 184, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":183
@@ -4035,6 +4320,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
  *                     continue
  */
+    __Pyx_TraceLine(179,0,__PYX_ERR(0, 179, __pyx_L1_error))
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -4046,6 +4332,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
  * 
  *     def __len__(self):
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(0, 185, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_children);
   __pyx_r = __pyx_v_children;
@@ -4073,6 +4360,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4104,8 +4392,10 @@ static Py_ssize_t __pyx_pw_4lxml_9objectify_18ObjectifiedElement_7__len__(PyObje
 
 static Py_ssize_t __pyx_pf_4lxml_9objectify_18ObjectifiedElement_6__len__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self) {
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__len__", 0);
+  __Pyx_TraceCall("__len__", __pyx_f[0], 187, 0, __PYX_ERR(0, 187, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":190
  *         u"""Count self and siblings with the same tag.
@@ -4114,6 +4404,7 @@ static Py_ssize_t __pyx_pf_4lxml_9objectify_18ObjectifiedElement_6__len__(struct
  * 
  *     def countchildren(self):
  */
+  __Pyx_TraceLine(190,0,__PYX_ERR(0, 190, __pyx_L1_error))
   __pyx_r = __pyx_f_4lxml_9objectify__countSiblings(__pyx_v_self->__pyx_base.__pyx_base._c_node);
   goto __pyx_L0;
 
@@ -4126,7 +4417,11 @@ static Py_ssize_t __pyx_pf_4lxml_9objectify_18ObjectifiedElement_6__len__(struct
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.ObjectifiedElement.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4158,11 +4453,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
   Py_ssize_t __pyx_v_c;
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__5)
   __Pyx_RefNannySetupContext("countchildren", 0);
+  __Pyx_TraceCall("countchildren", __pyx_f[0], 192, 0, __PYX_ERR(0, 192, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":201
  *         cdef Py_ssize_t c
@@ -4171,6 +4469,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *         c_node = self._c_node.children
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(201,0,__PYX_ERR(0, 201, __pyx_L1_error))
   __pyx_v_c = 0;
 
   /* "lxml/objectify.pyx":202
@@ -4180,6 +4479,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *         while c_node is not NULL:
  *             if tree._isElement(c_node):
  */
+  __Pyx_TraceLine(202,0,__PYX_ERR(0, 202, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base._c_node->children;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -4190,6 +4490,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *             if tree._isElement(c_node):
  *                 c += 1
  */
+  __Pyx_TraceLine(203,0,__PYX_ERR(0, 203, __pyx_L1_error))
   while (1) {
     __pyx_t_2 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_2) break;
@@ -4201,6 +4502,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *                 c += 1
  *             c_node = c_node.next
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(0, 204, __pyx_L1_error))
     __pyx_t_2 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_2) {
 
@@ -4211,6 +4513,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *             c_node = c_node.next
  *         return c
  */
+      __Pyx_TraceLine(205,0,__PYX_ERR(0, 205, __pyx_L1_error))
       __pyx_v_c = (__pyx_v_c + 1);
 
       /* "lxml/objectify.pyx":204
@@ -4229,6 +4532,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  *         return c
  * 
  */
+    __Pyx_TraceLine(206,0,__PYX_ERR(0, 206, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_1;
   }
@@ -4240,6 +4544,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
  * 
  *     def getchildren(self):
  */
+  __Pyx_TraceLine(207,0,__PYX_ERR(0, 207, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -4262,6 +4567,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8countchildren(s
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4293,13 +4599,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
   xmlNode *__pyx_v_c_node;
   PyObject *__pyx_v_result = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__6)
   __Pyx_RefNannySetupContext("getchildren", 0);
+  __Pyx_TraceCall("getchildren", __pyx_f[0], 209, 0, __PYX_ERR(0, 209, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":216
  *         """
@@ -4308,6 +4617,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *         c_node = self._c_node.children
  *         while c_node is not NULL:
  */
+  __Pyx_TraceLine(216,0,__PYX_ERR(0, 216, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((PyObject*)__pyx_t_1);
@@ -4320,6 +4630,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *         while c_node is not NULL:
  *             if tree._isElement(c_node):
  */
+  __Pyx_TraceLine(217,0,__PYX_ERR(0, 217, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base._c_node->children;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -4330,6 +4641,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *             if tree._isElement(c_node):
  *                 result.append(cetree.elementFactory(self._doc, c_node))
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(0, 218, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -4341,6 +4653,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *                 result.append(cetree.elementFactory(self._doc, c_node))
  *             c_node = c_node.next
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(0, 219, __pyx_L1_error))
     __pyx_t_3 = (_isElement(__pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
@@ -4351,6 +4664,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *             c_node = c_node.next
  *         return result
  */
+      __Pyx_TraceLine(220,0,__PYX_ERR(0, 220, __pyx_L1_error))
       __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._doc);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_4 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error)
@@ -4375,6 +4689,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  *         return result
  * 
  */
+    __Pyx_TraceLine(221,0,__PYX_ERR(0, 221, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -4386,6 +4701,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
  * 
  *     def __getattr__(self, tag):
  */
+  __Pyx_TraceLine(222,0,__PYX_ERR(0, 222, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
   __pyx_r = __pyx_v_result;
@@ -4408,6 +4724,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_10getchildren(st
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_result);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4439,6 +4756,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_13__getattr__(Py
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -4447,6 +4765,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(st
   int __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("__getattr__", 0);
+  __Pyx_TraceCall("__getattr__", __pyx_f[0], 224, 0, __PYX_ERR(0, 224, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":228
  *         is provided, the child will be looked up in the same one as self.
@@ -4455,6 +4774,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(st
  *             return object.__getattr__(self, tag)
  *         return _lookupChildOrRaise(self, tag)
  */
+  __Pyx_TraceLine(228,0,__PYX_ERR(0, 228, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_9objectify_is_special_method);
   __pyx_t_2 = __pyx_v_4lxml_9objectify_is_special_method; __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -4510,6 +4830,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(st
  *         return _lookupChildOrRaise(self, tag)
  * 
  */
+    __Pyx_TraceLine(229,0,__PYX_ERR(0, 229, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -4578,6 +4899,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(st
  * 
  *     def __setattr__(self, tag, value):
  */
+  __Pyx_TraceLine(230,0,__PYX_ERR(0, 230, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__lookupChildOrRaise(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -4603,6 +4925,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_12__getattr__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -4635,6 +4958,7 @@ static int __pyx_pw_4lxml_9objectify_18ObjectifiedElement_15__setattr__(PyObject
 static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_value) {
   struct LxmlElement *__pyx_v_element = 0;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -4646,6 +4970,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
   int __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__setattr__", 0);
+  __Pyx_TraceCall("__setattr__", __pyx_f[0], 232, 0, __PYX_ERR(0, 232, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tag);
 
   /* "lxml/objectify.pyx":239
@@ -4655,6 +4980,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             # read-only !
  *             raise TypeError, f"attribute '{tag}' of '{_typename(self)}' objects is not writable"
  */
+  __Pyx_TraceLine(239,0,__PYX_ERR(0, 239, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_tag, __pyx_n_u_text, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 239, __pyx_L1_error)
   if (!__pyx_t_2) {
   } else {
@@ -4673,6 +4999,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         elif tag == u'tail':
  *             cetree.setTailText(self._c_node, value)
  */
+    __Pyx_TraceLine(241,0,__PYX_ERR(0, 241, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = 0;
@@ -4729,6 +5056,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             cetree.setTailText(self._c_node, value)
  *             return
  */
+  __Pyx_TraceLine(242,0,__PYX_ERR(0, 242, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_tag, __pyx_n_u_tail, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -4739,6 +5067,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             return
  *         elif tag == u'tag':
  */
+    __Pyx_TraceLine(243,0,__PYX_ERR(0, 243, __pyx_L1_error))
     __pyx_t_8 = setTailText(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_value); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 243, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":244
@@ -4748,6 +5077,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         elif tag == u'tag':
  *             ElementBase.tag.__set__(self, value)
  */
+    __Pyx_TraceLine(244,0,__PYX_ERR(0, 244, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -4767,6 +5097,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             ElementBase.tag.__set__(self, value)
  *             return
  */
+  __Pyx_TraceLine(245,0,__PYX_ERR(0, 245, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_tag, __pyx_n_u_tag, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 245, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -4777,6 +5108,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             return
  *         elif tag == u'base':
  */
+    __Pyx_TraceLine(246,0,__PYX_ERR(0, 246, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_8includes_11etreepublic_ElementBase), __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 246, __pyx_L1_error)
@@ -4836,6 +5168,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         elif tag == u'base':
  *             ElementBase.base.__set__(self, value)
  */
+    __Pyx_TraceLine(247,0,__PYX_ERR(0, 247, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -4855,6 +5188,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             ElementBase.base.__set__(self, value)
  *             return
  */
+  __Pyx_TraceLine(248,0,__PYX_ERR(0, 248, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_tag, __pyx_n_u_base, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 248, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -4865,6 +5199,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             return
  *         tag = _buildChildTag(self, tag)
  */
+    __Pyx_TraceLine(249,0,__PYX_ERR(0, 249, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_8includes_11etreepublic_ElementBase), __pyx_n_s_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 249, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_set); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 249, __pyx_L1_error)
@@ -4924,6 +5259,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         tag = _buildChildTag(self, tag)
  *         element = _lookupChild(self, tag)
  */
+    __Pyx_TraceLine(250,0,__PYX_ERR(0, 250, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -4943,6 +5279,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         element = _lookupChild(self, tag)
  *         if element is None:
  */
+  __Pyx_TraceLine(251,0,__PYX_ERR(0, 251, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_9objectify__buildChildTag(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 251, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_7);
@@ -4955,6 +5292,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         if element is None:
  *             _appendValue(self, tag, value)
  */
+  __Pyx_TraceLine(252,0,__PYX_ERR(0, 252, __pyx_L1_error))
   __pyx_t_7 = __pyx_f_4lxml_9objectify__lookupChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 252, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 252, __pyx_L1_error)
@@ -4968,6 +5306,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *             _appendValue(self, tag, value)
  *         else:
  */
+  __Pyx_TraceLine(253,0,__PYX_ERR(0, 253, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_element) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -4979,6 +5318,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  *         else:
  *             _replaceElement(element, value)
  */
+    __Pyx_TraceLine(254,0,__PYX_ERR(0, 254, __pyx_L1_error))
     __pyx_t_7 = __pyx_f_4lxml_9objectify__appendValue(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag, __pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 254, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -5000,6 +5340,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
  * 
  *     def __delattr__(self, tag):
  */
+  __Pyx_TraceLine(256,0,__PYX_ERR(0, 256, __pyx_L1_error))
   /*else*/ {
     __pyx_t_7 = __pyx_f_4lxml_9objectify__replaceElement(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 256, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
@@ -5028,6 +5369,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_14__setattr__(struct _
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5056,12 +5398,14 @@ static int __pyx_pw_4lxml_9objectify_18ObjectifiedElement_17__delattr__(PyObject
 static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_16__delattr__(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_v_child = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__delattr__", 0);
+  __Pyx_TraceCall("__delattr__", __pyx_f[0], 258, 0, __PYX_ERR(0, 258, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":259
  * 
@@ -5070,6 +5414,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_16__delattr__(struct _
  *         self.remove(child)
  * 
  */
+  __Pyx_TraceLine(259,0,__PYX_ERR(0, 259, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__lookupChildOrRaise(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_child = __pyx_t_1;
@@ -5082,6 +5427,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_16__delattr__(struct _
  * 
  *     def addattr(self, tag, value):
  */
+  __Pyx_TraceLine(260,0,__PYX_ERR(0, 260, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -5149,6 +5495,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_16__delattr__(struct _
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_child);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5226,10 +5573,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_19addattr(PyObje
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_18addattr(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__7)
   __Pyx_RefNannySetupContext("addattr", 0);
+  __Pyx_TraceCall("addattr", __pyx_f[0], 262, 0, __PYX_ERR(0, 262, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":269
  *         As opposed to append(), it sets a data value, not an element.
@@ -5238,6 +5588,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_18addattr(struct
  * 
  *     def __getitem__(self, key):
  */
+  __Pyx_TraceLine(269,0,__PYX_ERR(0, 269, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__buildChildTag(((struct LxmlElement *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_9objectify__appendValue(((struct LxmlElement *)__pyx_v_self), __pyx_t_1, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
@@ -5263,6 +5614,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_18addattr(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5298,6 +5650,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
   xmlNode *__pyx_v_c_node;
   Py_ssize_t __pyx_v_c_index;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -5306,6 +5659,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
   Py_ssize_t __pyx_t_5;
   xmlNode *__pyx_t_6;
   __Pyx_RefNannySetupContext("__getitem__", 0);
+  __Pyx_TraceCall("__getitem__", __pyx_f[0], 271, 0, __PYX_ERR(0, 271, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":287
  *         cdef tree.xmlNode* c_node
@@ -5314,6 +5668,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             return _lookupChildOrRaise(self, key)
  *         elif isinstance(key, slice):
  */
+  __Pyx_TraceLine(287,0,__PYX_ERR(0, 287, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_key) != 0);
   if (__pyx_t_1) {
 
@@ -5324,6 +5679,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         elif isinstance(key, slice):
  *             return list(self)[key]
  */
+    __Pyx_TraceLine(288,0,__PYX_ERR(0, 288, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = __pyx_f_4lxml_9objectify__lookupChildOrRaise(((struct LxmlElement *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -5347,6 +5703,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             return list(self)[key]
  *         # normal item access
  */
+  __Pyx_TraceLine(289,0,__PYX_ERR(0, 289, __pyx_L1_error))
   __pyx_t_1 = PySlice_Check(__pyx_v_key); 
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -5358,6 +5715,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         # normal item access
  *         c_index = key   # raises TypeError if necessary
  */
+    __Pyx_TraceLine(290,0,__PYX_ERR(0, 290, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 290, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -5384,6 +5742,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         c_self_node = self._c_node
  *         c_parent = c_self_node.parent
  */
+  __Pyx_TraceLine(292,0,__PYX_ERR(0, 292, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L1_error)
   __pyx_v_c_index = __pyx_t_5;
 
@@ -5394,6 +5753,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         c_parent = c_self_node.parent
  *         if c_parent is NULL:
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(0, 293, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_self->__pyx_base.__pyx_base._c_node;
   __pyx_v_c_self_node = __pyx_t_6;
 
@@ -5404,6 +5764,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         if c_parent is NULL:
  *             if c_index == 0:
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(0, 294, __pyx_L1_error))
   __pyx_t_6 = __pyx_v_c_self_node->parent;
   __pyx_v_c_parent = __pyx_t_6;
 
@@ -5414,6 +5775,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             if c_index == 0:
  *                 return self
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(0, 295, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_parent == NULL) != 0);
   if (__pyx_t_3) {
 
@@ -5424,6 +5786,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *                 return self
  *             else:
  */
+    __Pyx_TraceLine(296,0,__PYX_ERR(0, 296, __pyx_L1_error))
     __pyx_t_3 = ((__pyx_v_c_index == 0) != 0);
     if (likely(__pyx_t_3)) {
 
@@ -5434,6 +5797,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             else:
  *                 raise IndexError, unicode(key)
  */
+      __Pyx_TraceLine(297,0,__PYX_ERR(0, 297, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(((PyObject *)__pyx_v_self));
       __pyx_r = ((PyObject *)__pyx_v_self);
@@ -5455,6 +5819,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         if c_index < 0:
  *             c_node = c_parent.last
  */
+    __Pyx_TraceLine(299,0,__PYX_ERR(0, 299, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -5479,6 +5844,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             c_node = c_parent.last
  *         else:
  */
+  __Pyx_TraceLine(300,0,__PYX_ERR(0, 300, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_index < 0) != 0);
   if (__pyx_t_3) {
 
@@ -5489,6 +5855,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         else:
  *             c_node = c_parent.children
  */
+    __Pyx_TraceLine(301,0,__PYX_ERR(0, 301, __pyx_L1_error))
     __pyx_t_6 = __pyx_v_c_parent->last;
     __pyx_v_c_node = __pyx_t_6;
 
@@ -5509,6 +5876,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         c_node = _findFollowingSibling(
  *             c_node, tree._getNs(c_self_node), c_self_node.name, c_index)
  */
+  __Pyx_TraceLine(303,0,__PYX_ERR(0, 303, __pyx_L1_error))
   /*else*/ {
     __pyx_t_6 = __pyx_v_c_parent->children;
     __pyx_v_c_node = __pyx_t_6;
@@ -5522,6 +5890,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             c_node, tree._getNs(c_self_node), c_self_node.name, c_index)
  *         if c_node is NULL:
  */
+  __Pyx_TraceLine(304,0,__PYX_ERR(0, 304, __pyx_L1_error))
   __pyx_v_c_node = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_node, _getNs(__pyx_v_c_self_node), __pyx_v_c_self_node->name, __pyx_v_c_index);
 
   /* "lxml/objectify.pyx":306
@@ -5531,6 +5900,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *             raise IndexError, unicode(key)
  *         return elementFactory(self._doc, c_node)
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(0, 306, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -5541,6 +5911,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  *         return elementFactory(self._doc, c_node)
  * 
  */
+    __Pyx_TraceLine(307,0,__PYX_ERR(0, 307, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_4, 0, 0);
@@ -5563,6 +5934,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
  * 
  *     def __setitem__(self, key, value):
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(0, 308, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._doc);
   __Pyx_INCREF(__pyx_t_4);
@@ -5589,6 +5961,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_20__getitem__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5622,6 +5995,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
   struct LxmlElement *__pyx_v_element = 0;
   xmlNode *__pyx_v_c_node;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -5630,6 +6004,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
   Py_ssize_t __pyx_t_5;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
+  __Pyx_TraceCall("__setitem__", __pyx_f[0], 310, 0, __PYX_ERR(0, 310, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_key);
 
   /* "lxml/objectify.pyx":325
@@ -5639,6 +6014,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             key = _buildChildTag(self, key)
  *             element = _lookupChild(self, key)
  */
+  __Pyx_TraceLine(325,0,__PYX_ERR(0, 325, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_key) != 0);
   if (__pyx_t_1) {
 
@@ -5649,6 +6025,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             element = _lookupChild(self, key)
  *             if element is None:
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(0, 326, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_9objectify__buildChildTag(((struct LxmlElement *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_2);
@@ -5661,6 +6038,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             if element is None:
  *                 _appendValue(self, key, value)
  */
+    __Pyx_TraceLine(327,0,__PYX_ERR(0, 327, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_9objectify__lookupChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 327, __pyx_L1_error)
@@ -5674,6 +6052,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *                 _appendValue(self, key, value)
  *             else:
  */
+    __Pyx_TraceLine(328,0,__PYX_ERR(0, 328, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_element) == Py_None);
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
@@ -5685,6 +6064,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             else:
  *                 _replaceElement(element, value)
  */
+      __Pyx_TraceLine(329,0,__PYX_ERR(0, 329, __pyx_L1_error))
       __pyx_t_2 = __pyx_f_4lxml_9objectify__appendValue(((struct LxmlElement *)__pyx_v_self), __pyx_v_key, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -5706,6 +6086,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             return
  * 
  */
+    __Pyx_TraceLine(331,0,__PYX_ERR(0, 331, __pyx_L1_error))
     /*else*/ {
       __pyx_t_2 = __pyx_f_4lxml_9objectify__replaceElement(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -5720,6 +6101,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  * 
  *         if self._c_node.parent is NULL:
  */
+    __Pyx_TraceLine(332,0,__PYX_ERR(0, 332, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -5739,6 +6121,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             # the 'root[i] = ...' case
  *             raise TypeError, u"assignment to root element is invalid"
  */
+  __Pyx_TraceLine(334,0,__PYX_ERR(0, 334, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_self->__pyx_base.__pyx_base._c_node->parent == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
@@ -5749,6 +6132,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  * 
  *         if isinstance(key, slice):
  */
+    __Pyx_TraceLine(336,0,__PYX_ERR(0, 336, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_assignment_to_root_element_is_in, 0, 0);
     __PYX_ERR(0, 336, __pyx_L1_error)
 
@@ -5768,6 +6152,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             # slice assignment
  *             _setSlice(key, self, value)
  */
+  __Pyx_TraceLine(338,0,__PYX_ERR(0, 338, __pyx_L1_error))
   __pyx_t_3 = PySlice_Check(__pyx_v_key); 
   __pyx_t_1 = (__pyx_t_3 != 0);
   if (__pyx_t_1) {
@@ -5779,6 +6164,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *         else:
  *             # normal index assignment
  */
+    __Pyx_TraceLine(340,0,__PYX_ERR(0, 340, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_9objectify__setSlice(__pyx_v_key, ((struct LxmlElement *)__pyx_v_self), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -5800,6 +6186,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *                 c_node = self._c_node.parent.last
  *             else:
  */
+  __Pyx_TraceLine(343,0,__PYX_ERR(0, 343, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = PyObject_RichCompare(__pyx_v_key, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error)
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 343, __pyx_L1_error)
@@ -5813,6 +6200,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             else:
  *                 c_node = self._c_node.parent.children
  */
+      __Pyx_TraceLine(344,0,__PYX_ERR(0, 344, __pyx_L1_error))
       __pyx_t_4 = __pyx_v_self->__pyx_base.__pyx_base._c_node->parent->last;
       __pyx_v_c_node = __pyx_t_4;
 
@@ -5833,6 +6221,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             c_node = _findFollowingSibling(
  *                 c_node, tree._getNs(self._c_node), self._c_node.name, key)
  */
+    __Pyx_TraceLine(346,0,__PYX_ERR(0, 346, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = __pyx_v_self->__pyx_base.__pyx_base._c_node->parent->children;
       __pyx_v_c_node = __pyx_t_4;
@@ -5846,6 +6235,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             if c_node is NULL:
  *                 raise IndexError, unicode(key)
  */
+    __Pyx_TraceLine(348,0,__PYX_ERR(0, 348, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 348, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":347
@@ -5855,6 +6245,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *                 c_node, tree._getNs(self._c_node), self._c_node.name, key)
  *             if c_node is NULL:
  */
+    __Pyx_TraceLine(347,0,__PYX_ERR(0, 347, __pyx_L1_error))
     __pyx_v_c_node = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_node, _getNs(__pyx_v_self->__pyx_base.__pyx_base._c_node), __pyx_v_self->__pyx_base.__pyx_base._c_node->name, __pyx_t_5);
 
     /* "lxml/objectify.pyx":349
@@ -5864,6 +6255,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *                 raise IndexError, unicode(key)
  *             element = elementFactory(self._doc, c_node)
  */
+    __Pyx_TraceLine(349,0,__PYX_ERR(0, 349, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -5874,6 +6266,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             element = elementFactory(self._doc, c_node)
  *             _replaceElement(element, value)
  */
+      __Pyx_TraceLine(350,0,__PYX_ERR(0, 350, __pyx_L1_error))
       __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_2, 0, 0);
@@ -5896,6 +6289,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  *             _replaceElement(element, value)
  * 
  */
+    __Pyx_TraceLine(351,0,__PYX_ERR(0, 351, __pyx_L1_error))
     __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._doc);
     __Pyx_INCREF(__pyx_t_2);
     __pyx_t_6 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_2), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 351, __pyx_L1_error)
@@ -5911,6 +6305,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
  * 
  *     def __delitem__(self, key):
  */
+    __Pyx_TraceLine(352,0,__PYX_ERR(0, 352, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_9objectify__replaceElement(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -5936,6 +6331,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_22__setitem__(struct _
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -5968,6 +6364,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
   PyObject *__pyx_v_el = NULL;
   PyObject *__pyx_v_sibling = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -5979,6 +6376,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__delitem__", 0);
+  __Pyx_TraceCall("__delitem__", __pyx_f[0], 354, 0, __PYX_ERR(0, 354, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":355
  * 
@@ -5987,6 +6385,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *         if parent is None:
  *             raise TypeError, u"deleting items not supported by root element"
  */
+  __Pyx_TraceLine(355,0,__PYX_ERR(0, 355, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getparent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -6017,6 +6416,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *             raise TypeError, u"deleting items not supported by root element"
  *         if isinstance(key, slice):
  */
+  __Pyx_TraceLine(356,0,__PYX_ERR(0, 356, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_parent == Py_None);
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (unlikely(__pyx_t_5)) {
@@ -6028,6 +6428,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *         if isinstance(key, slice):
  *             # slice deletion
  */
+    __Pyx_TraceLine(357,0,__PYX_ERR(0, 357, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_deleting_items_not_supported_by, 0, 0);
     __PYX_ERR(0, 357, __pyx_L1_error)
 
@@ -6047,6 +6448,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *             # slice deletion
  *             del_items = list(self)[key]
  */
+  __Pyx_TraceLine(358,0,__PYX_ERR(0, 358, __pyx_L1_error))
   __pyx_t_5 = PySlice_Check(__pyx_v_key); 
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
@@ -6058,6 +6460,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *             remove = parent.remove
  *             for el in del_items:
  */
+    __Pyx_TraceLine(360,0,__PYX_ERR(0, 360, __pyx_L1_error))
     __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error)
@@ -6073,6 +6476,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *             for el in del_items:
  *                 remove(el)
  */
+    __Pyx_TraceLine(361,0,__PYX_ERR(0, 361, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 361, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_remove = __pyx_t_2;
@@ -6085,6 +6489,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *                 remove(el)
  *         else:
  */
+    __Pyx_TraceLine(362,0,__PYX_ERR(0, 362, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_del_items)) || PyTuple_CheckExact(__pyx_v_del_items)) {
       __pyx_t_2 = __pyx_v_del_items; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
@@ -6134,6 +6539,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *         else:
  *             # normal index deletion
  */
+      __Pyx_TraceLine(363,0,__PYX_ERR(0, 363, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_remove);
       __pyx_t_3 = __pyx_v_remove; __pyx_t_8 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -6187,6 +6593,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *                 remove(el)
  *         else:
  */
+      __Pyx_TraceLine(362,0,__PYX_ERR(0, 362, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -6207,6 +6614,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  *             parent.remove(sibling)
  * 
  */
+  __Pyx_TraceLine(366,0,__PYX_ERR(0, 366, __pyx_L1_error))
   /*else*/ {
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -6263,6 +6671,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
  * 
  *     def descendantpaths(self, prefix=None):
  */
+    __Pyx_TraceLine(367,0,__PYX_ERR(0, 367, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_9 = NULL;
@@ -6337,6 +6746,7 @@ static int __pyx_pf_4lxml_9objectify_18ObjectifiedElement_24__delitem__(struct _
   __Pyx_XDECREF(__pyx_v_remove);
   __Pyx_XDECREF(__pyx_v_el);
   __Pyx_XDECREF(__pyx_v_sibling);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6409,12 +6819,15 @@ static PyObject *__pyx_pw_4lxml_9objectify_18ObjectifiedElement_27descendantpath
 
 static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpaths(struct __pyx_obj_4lxml_9objectify_ObjectifiedElement *__pyx_v_self, PyObject *__pyx_v_prefix) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__8)
   __Pyx_RefNannySetupContext("descendantpaths", 0);
+  __Pyx_TraceCall("descendantpaths", __pyx_f[0], 369, 0, __PYX_ERR(0, 369, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_prefix);
 
   /* "lxml/objectify.pyx":374
@@ -6424,6 +6837,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpath
  *             prefix = u'.'.join(prefix)
  *         return _build_descendant_paths(self._c_node, prefix)
  */
+  __Pyx_TraceLine(374,0,__PYX_ERR(0, 374, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_prefix != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -6443,7 +6857,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpath
  *         return _build_descendant_paths(self._c_node, prefix)
  * 
  */
-    __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__3, __pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 375, __pyx_L1_error)
+    __Pyx_TraceLine(375,0,__PYX_ERR(0, 375, __pyx_L1_error))
+    __pyx_t_4 = PyUnicode_Join(__pyx_kp_u__9, __pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 375, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_prefix, __pyx_t_4);
     __pyx_t_4 = 0;
@@ -6464,6 +6879,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpath
  * 
  * 
  */
+  __Pyx_TraceLine(376,0,__PYX_ERR(0, 376, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = __pyx_f_4lxml_9objectify__build_descendant_paths(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_prefix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
@@ -6487,6 +6903,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpath
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6502,9 +6919,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_26descendantpath
 static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_c_href, const xmlChar *__pyx_v_c_name) {
   const xmlChar *__pyx_v_c_node_href;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_tagMatches", 0);
+  __Pyx_TraceCall("_tagMatches", __pyx_f[0], 379, 0, __PYX_ERR(0, 379, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":380
  * 
@@ -6513,6 +6932,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *         return 0
  *     if c_href == NULL:
  */
+  __Pyx_TraceLine(380,0,__PYX_ERR(0, 380, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->name != __pyx_v_c_name) != 0);
   if (__pyx_t_1) {
 
@@ -6523,6 +6943,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *     if c_href == NULL:
  *         return 1
  */
+    __Pyx_TraceLine(381,0,__PYX_ERR(0, 381, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -6542,6 +6963,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *         return 1
  *     c_node_href = tree._getNs(c_node)
  */
+  __Pyx_TraceLine(382,0,__PYX_ERR(0, 382, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -6552,6 +6974,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *     c_node_href = tree._getNs(c_node)
  *     if c_node_href == NULL:
  */
+    __Pyx_TraceLine(383,0,__PYX_ERR(0, 383, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -6571,6 +6994,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *     if c_node_href == NULL:
  *         return c_href[0] == c'\0'
  */
+  __Pyx_TraceLine(384,0,__PYX_ERR(0, 384, __pyx_L1_error))
   __pyx_v_c_node_href = _getNs(__pyx_v_c_node);
 
   /* "lxml/objectify.pyx":385
@@ -6580,6 +7004,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *         return c_href[0] == c'\0'
  *     return tree.xmlStrcmp(c_node_href, c_href) == 0
  */
+  __Pyx_TraceLine(385,0,__PYX_ERR(0, 385, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node_href == NULL) != 0);
   if (__pyx_t_1) {
 
@@ -6590,6 +7015,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  *     return tree.xmlStrcmp(c_node_href, c_href) == 0
  * 
  */
+    __Pyx_TraceLine(386,0,__PYX_ERR(0, 386, __pyx_L1_error))
     __pyx_r = ((__pyx_v_c_href[0]) == '\x00');
     goto __pyx_L0;
 
@@ -6609,6 +7035,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  * 
  * 
  */
+  __Pyx_TraceLine(387,0,__PYX_ERR(0, 387, __pyx_L1_error))
   __pyx_r = (xmlStrcmp(__pyx_v_c_node_href, __pyx_v_c_href) == 0);
   goto __pyx_L0;
 
@@ -6621,7 +7048,11 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify__tagMatches(xmlNode *__pyx_v_c
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.objectify._tagMatches", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6640,12 +7071,14 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
   const xmlChar *__pyx_v_c_tag;
   const xmlChar *__pyx_v_c_href;
   Py_ssize_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   const xmlChar *__pyx_t_1;
   xmlNode *__pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_countSiblings", 0);
+  __Pyx_TraceCall("_countSiblings", __pyx_f[0], 390, 0, __PYX_ERR(0, 390, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":393
  *     cdef tree.xmlNode* c_node
@@ -6654,6 +7087,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     c_href = tree._getNs(c_start_node)
  *     count = 1
  */
+  __Pyx_TraceLine(393,0,__PYX_ERR(0, 393, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_c_start_node->name;
   __pyx_v_c_tag = __pyx_t_1;
 
@@ -6664,6 +7098,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     count = 1
  *     c_node = c_start_node.next
  */
+  __Pyx_TraceLine(394,0,__PYX_ERR(0, 394, __pyx_L1_error))
   __pyx_v_c_href = _getNs(__pyx_v_c_start_node);
 
   /* "lxml/objectify.pyx":395
@@ -6673,6 +7108,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     c_node = c_start_node.next
  *     while c_node is not NULL:
  */
+  __Pyx_TraceLine(395,0,__PYX_ERR(0, 395, __pyx_L1_error))
   __pyx_v_count = 1;
 
   /* "lxml/objectify.pyx":396
@@ -6682,6 +7118,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     while c_node is not NULL:
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  */
+  __Pyx_TraceLine(396,0,__PYX_ERR(0, 396, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_start_node->next;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -6692,6 +7129,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  *                _tagMatches(c_node, c_href, c_tag):
  */
+  __Pyx_TraceLine(397,0,__PYX_ERR(0, 397, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -6703,6 +7141,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *                _tagMatches(c_node, c_href, c_tag):
  *             count += 1
  */
+    __Pyx_TraceLine(398,0,__PYX_ERR(0, 398, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
     if (__pyx_t_4) {
     } else {
@@ -6717,6 +7156,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *             count += 1
  *         c_node = c_node.next
  */
+    __Pyx_TraceLine(399,0,__PYX_ERR(0, 399, __pyx_L1_error))
     __pyx_t_4 = (__pyx_f_4lxml_9objectify__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_tag) != 0);
     __pyx_t_3 = __pyx_t_4;
     __pyx_L6_bool_binop_done:;
@@ -6728,6 +7168,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *                _tagMatches(c_node, c_href, c_tag):
  *             count += 1
  */
+    __Pyx_TraceLine(398,0,__PYX_ERR(0, 398, __pyx_L1_error))
     if (__pyx_t_3) {
 
       /* "lxml/objectify.pyx":400
@@ -6737,6 +7178,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *         c_node = c_node.next
  *     c_node = c_start_node.prev
  */
+      __Pyx_TraceLine(400,0,__PYX_ERR(0, 400, __pyx_L1_error))
       __pyx_v_count = (__pyx_v_count + 1);
 
       /* "lxml/objectify.pyx":398
@@ -6755,6 +7197,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     c_node = c_start_node.prev
  *     while c_node is not NULL:
  */
+    __Pyx_TraceLine(401,0,__PYX_ERR(0, 401, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->next;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -6766,6 +7209,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     while c_node is not NULL:
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  */
+  __Pyx_TraceLine(402,0,__PYX_ERR(0, 402, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_c_start_node->prev;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -6776,6 +7220,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  *                _tagMatches(c_node, c_href, c_tag):
  */
+  __Pyx_TraceLine(403,0,__PYX_ERR(0, 403, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_3) break;
@@ -6787,6 +7232,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *                _tagMatches(c_node, c_href, c_tag):
  *             count += 1
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(0, 404, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
     if (__pyx_t_4) {
     } else {
@@ -6801,6 +7247,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *             count += 1
  *         c_node = c_node.prev
  */
+    __Pyx_TraceLine(405,0,__PYX_ERR(0, 405, __pyx_L1_error))
     __pyx_t_4 = (__pyx_f_4lxml_9objectify__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_tag) != 0);
     __pyx_t_3 = __pyx_t_4;
     __pyx_L11_bool_binop_done:;
@@ -6812,6 +7259,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *                _tagMatches(c_node, c_href, c_tag):
  *             count += 1
  */
+    __Pyx_TraceLine(404,0,__PYX_ERR(0, 404, __pyx_L1_error))
     if (__pyx_t_3) {
 
       /* "lxml/objectify.pyx":406
@@ -6821,6 +7269,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *         c_node = c_node.prev
  *     return count
  */
+      __Pyx_TraceLine(406,0,__PYX_ERR(0, 406, __pyx_L1_error))
       __pyx_v_count = (__pyx_v_count + 1);
 
       /* "lxml/objectify.pyx":404
@@ -6839,6 +7288,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  *     return count
  * 
  */
+    __Pyx_TraceLine(407,0,__PYX_ERR(0, 407, __pyx_L1_error))
     __pyx_t_2 = __pyx_v_c_node->prev;
     __pyx_v_c_node = __pyx_t_2;
   }
@@ -6850,6 +7300,7 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  * 
  * cdef tree.xmlNode* _findFollowingSibling(tree.xmlNode* c_node,
  */
+  __Pyx_TraceLine(408,0,__PYX_ERR(0, 408, __pyx_L1_error))
   __pyx_r = __pyx_v_count;
   goto __pyx_L0;
 
@@ -6862,7 +7313,11 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.objectify._countSiblings", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -6878,10 +7333,12 @@ static Py_ssize_t __pyx_f_4lxml_9objectify__countSiblings(xmlNode *__pyx_v_c_sta
 static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_c_node, const xmlChar *__pyx_v_href, const xmlChar *__pyx_v_name, Py_ssize_t __pyx_v_index) {
   xmlNode *(*__pyx_v_next)(xmlNode *);
   xmlNode *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_findFollowingSibling", 0);
+  __Pyx_TraceCall("_findFollowingSibling", __pyx_f[0], 410, 0, __PYX_ERR(0, 410, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":414
  *                                          Py_ssize_t index):
@@ -6890,6 +7347,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *         next = cetree.nextElement
  *     else:
  */
+  __Pyx_TraceLine(414,0,__PYX_ERR(0, 414, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_index >= 0) != 0);
   if (__pyx_t_1) {
 
@@ -6900,6 +7358,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *     else:
  *         index = -1 - index
  */
+    __Pyx_TraceLine(415,0,__PYX_ERR(0, 415, __pyx_L1_error))
     __pyx_v_next = nextElement;
 
     /* "lxml/objectify.pyx":414
@@ -6919,6 +7378,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *         next = cetree.previousElement
  *     while c_node is not NULL:
  */
+  __Pyx_TraceLine(417,0,__PYX_ERR(0, 417, __pyx_L1_error))
   /*else*/ {
     __pyx_v_index = (-1L - __pyx_v_index);
 
@@ -6929,6 +7389,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *     while c_node is not NULL:
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  */
+    __Pyx_TraceLine(418,0,__PYX_ERR(0, 418, __pyx_L1_error))
     __pyx_v_next = previousElement;
   }
   __pyx_L3:;
@@ -6940,6 +7401,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *         if c_node.type == tree.XML_ELEMENT_NODE and \
  *                _tagMatches(c_node, href, name):
  */
+  __Pyx_TraceLine(419,0,__PYX_ERR(0, 419, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
@@ -6951,6 +7413,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *                _tagMatches(c_node, href, name):
  *             index = index - 1
  */
+    __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
     __pyx_t_2 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
     if (__pyx_t_2) {
     } else {
@@ -6965,6 +7428,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *             index = index - 1
  *             if index < 0:
  */
+    __Pyx_TraceLine(421,0,__PYX_ERR(0, 421, __pyx_L1_error))
     __pyx_t_2 = (__pyx_f_4lxml_9objectify__tagMatches(__pyx_v_c_node, __pyx_v_href, __pyx_v_name) != 0);
     __pyx_t_1 = __pyx_t_2;
     __pyx_L7_bool_binop_done:;
@@ -6976,6 +7440,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *                _tagMatches(c_node, href, name):
  *             index = index - 1
  */
+    __Pyx_TraceLine(420,0,__PYX_ERR(0, 420, __pyx_L1_error))
     if (__pyx_t_1) {
 
       /* "lxml/objectify.pyx":422
@@ -6985,6 +7450,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *             if index < 0:
  *                 return c_node
  */
+      __Pyx_TraceLine(422,0,__PYX_ERR(0, 422, __pyx_L1_error))
       __pyx_v_index = (__pyx_v_index - 1);
 
       /* "lxml/objectify.pyx":423
@@ -6994,6 +7460,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *                 return c_node
  *         c_node = next(c_node)
  */
+      __Pyx_TraceLine(423,0,__PYX_ERR(0, 423, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_index < 0) != 0);
       if (__pyx_t_1) {
 
@@ -7004,6 +7471,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *         c_node = next(c_node)
  *     return NULL
  */
+        __Pyx_TraceLine(424,0,__PYX_ERR(0, 424, __pyx_L1_error))
         __pyx_r = __pyx_v_c_node;
         goto __pyx_L0;
 
@@ -7032,6 +7500,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  *     return NULL
  * 
  */
+    __Pyx_TraceLine(425,0,__PYX_ERR(0, 425, __pyx_L1_error))
     __pyx_v_c_node = __pyx_v_next(__pyx_v_c_node);
   }
 
@@ -7042,6 +7511,7 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  * 
  * cdef object _lookupChild(_Element parent, tag):
  */
+  __Pyx_TraceLine(426,0,__PYX_ERR(0, 426, __pyx_L1_error))
   __pyx_r = NULL;
   goto __pyx_L0;
 
@@ -7054,7 +7524,11 @@ static xmlNode *__pyx_f_4lxml_9objectify__findFollowingSibling(xmlNode *__pyx_v_
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.objectify._findFollowingSibling", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7074,6 +7548,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
   const xmlChar *__pyx_v_c_tag;
   const xmlChar *__pyx_v_c_href;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -7084,6 +7559,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
   const xmlChar *__pyx_t_7;
   const xmlChar *__pyx_t_8;
   __Pyx_RefNannySetupContext("_lookupChild", 0);
+  __Pyx_TraceCall("_lookupChild", __pyx_f[0], 428, 0, __PYX_ERR(0, 428, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tag);
 
   /* "lxml/objectify.pyx":431
@@ -7093,6 +7569,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     ns, tag = cetree.getNsTagWithEmptyNs(tag)
  *     c_tag = tree.xmlDictExists(
  */
+  __Pyx_TraceLine(431,0,__PYX_ERR(0, 431, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_parent->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -7103,6 +7580,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     c_tag = tree.xmlDictExists(
  *         c_node.doc.dict, _xcstr(tag), python.PyBytes_GET_SIZE(tag))
  */
+  __Pyx_TraceLine(432,0,__PYX_ERR(0, 432, __pyx_L1_error))
   __pyx_t_2 = getNsTagWithEmptyNs(__pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (likely(__pyx_t_2 != Py_None)) {
@@ -7140,6 +7618,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *         c_node.doc.dict, _xcstr(tag), python.PyBytes_GET_SIZE(tag))
  *     if c_tag is NULL:
  */
+  __Pyx_TraceLine(433,0,__PYX_ERR(0, 433, __pyx_L1_error))
   __pyx_v_c_tag = xmlDictExists(__pyx_v_c_node->doc->dict, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag), PyBytes_GET_SIZE(__pyx_v_tag));
 
   /* "lxml/objectify.pyx":435
@@ -7149,6 +7628,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *         return None # not in the hash map => not in the tree
  *     if ns is None:
  */
+  __Pyx_TraceLine(435,0,__PYX_ERR(0, 435, __pyx_L1_error))
   __pyx_t_5 = ((__pyx_v_c_tag == NULL) != 0);
   if (__pyx_t_5) {
 
@@ -7159,6 +7639,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     if ns is None:
  *         # either inherit ns from parent or use empty (i.e. no) namespace
  */
+    __Pyx_TraceLine(436,0,__PYX_ERR(0, 436, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -7179,6 +7660,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *         # either inherit ns from parent or use empty (i.e. no) namespace
  *         c_href = tree._getNs(c_node) or <const_xmlChar*>''
  */
+  __Pyx_TraceLine(437,0,__PYX_ERR(0, 437, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns == Py_None);
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
@@ -7190,6 +7672,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     else:
  *         c_href = _xcstr(ns)
  */
+    __Pyx_TraceLine(439,0,__PYX_ERR(0, 439, __pyx_L1_error))
     __pyx_t_8 = _getNs(__pyx_v_c_node);
     if (!__pyx_t_8) {
     } else {
@@ -7218,6 +7701,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     c_result = _findFollowingSibling(c_node.children, c_href, c_tag, 0)
  *     if c_result is NULL:
  */
+  __Pyx_TraceLine(441,0,__PYX_ERR(0, 441, __pyx_L1_error))
   /*else*/ {
     __pyx_v_c_href = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns);
   }
@@ -7230,6 +7714,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     if c_result is NULL:
  *         return None
  */
+  __Pyx_TraceLine(442,0,__PYX_ERR(0, 442, __pyx_L1_error))
   __pyx_v_c_result = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_node->children, __pyx_v_c_href, __pyx_v_c_tag, 0);
 
   /* "lxml/objectify.pyx":443
@@ -7239,6 +7724,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *         return None
  *     return elementFactory(parent._doc, c_result)
  */
+  __Pyx_TraceLine(443,0,__PYX_ERR(0, 443, __pyx_L1_error))
   __pyx_t_6 = ((__pyx_v_c_result == NULL) != 0);
   if (__pyx_t_6) {
 
@@ -7249,6 +7735,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  *     return elementFactory(parent._doc, c_result)
  * 
  */
+    __Pyx_TraceLine(444,0,__PYX_ERR(0, 444, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -7269,6 +7756,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
  * 
  * cdef object _lookupChildOrRaise(_Element parent, tag):
  */
+  __Pyx_TraceLine(445,0,__PYX_ERR(0, 445, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = ((PyObject *)__pyx_v_parent->_doc);
   __Pyx_INCREF(__pyx_t_2);
@@ -7298,6 +7786,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7313,12 +7802,14 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChild(struct LxmlElement *__pyx
 static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement *__pyx_v_parent, PyObject *__pyx_v_tag) {
   PyObject *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_lookupChildOrRaise", 0);
+  __Pyx_TraceCall("_lookupChildOrRaise", __pyx_f[0], 447, 0, __PYX_ERR(0, 447, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":448
  * 
@@ -7327,6 +7818,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement
  *     if element is None:
  *         raise AttributeError, u"no such child: " + _buildChildTag(parent, tag)
  */
+  __Pyx_TraceLine(448,0,__PYX_ERR(0, 448, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__lookupChild(__pyx_v_parent, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = __pyx_t_1;
@@ -7339,6 +7831,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement
  *         raise AttributeError, u"no such child: " + _buildChildTag(parent, tag)
  *     return element
  */
+  __Pyx_TraceLine(449,0,__PYX_ERR(0, 449, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_element == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
@@ -7350,6 +7843,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement
  *     return element
  * 
  */
+    __Pyx_TraceLine(450,0,__PYX_ERR(0, 450, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_9objectify__buildChildTag(__pyx_v_parent, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = PyNumber_Add(__pyx_kp_u_no_such_child, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error)
@@ -7375,6 +7869,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement
  * 
  * cdef object _buildChildTag(_Element parent, tag):
  */
+  __Pyx_TraceLine(451,0,__PYX_ERR(0, 451, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_element);
   __pyx_r = __pyx_v_element;
@@ -7397,6 +7892,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupChildOrRaise(struct LxmlElement
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7414,6 +7910,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
   const xmlChar *__pyx_v_c_tag;
   const xmlChar *__pyx_v_c_href;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -7421,6 +7918,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
   const xmlChar *__pyx_t_4;
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_buildChildTag", 0);
+  __Pyx_TraceCall("_buildChildTag", __pyx_f[0], 453, 0, __PYX_ERR(0, 453, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tag);
 
   /* "lxml/objectify.pyx":454
@@ -7430,6 +7928,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
  *     c_tag = _xcstr(tag)
  *     c_href = tree._getNs(parent._c_node) if ns is None else _xcstr(ns)
  */
+  __Pyx_TraceLine(454,0,__PYX_ERR(0, 454, __pyx_L1_error))
   __pyx_t_1 = getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -7467,6 +7966,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
  *     c_href = tree._getNs(parent._c_node) if ns is None else _xcstr(ns)
  *     return cetree.namespacedNameFromNsName(c_href, c_tag)
  */
+  __Pyx_TraceLine(455,0,__PYX_ERR(0, 455, __pyx_L1_error))
   __pyx_v_c_tag = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_tag);
 
   /* "lxml/objectify.pyx":456
@@ -7476,6 +7976,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
  *     return cetree.namespacedNameFromNsName(c_href, c_tag)
  * 
  */
+  __Pyx_TraceLine(456,0,__PYX_ERR(0, 456, __pyx_L1_error))
   __pyx_t_5 = (__pyx_v_ns == Py_None);
   if ((__pyx_t_5 != 0)) {
     __pyx_t_4 = _getNs(__pyx_v_parent->_c_node);
@@ -7491,6 +7992,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
  * 
  * cdef _replaceElement(_Element element, value):
  */
+  __Pyx_TraceLine(457,0,__PYX_ERR(0, 457, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -7517,6 +8019,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
   __Pyx_XDECREF(__pyx_v_ns);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7532,6 +8035,7 @@ static PyObject *__pyx_f_4lxml_9objectify__buildChildTag(struct LxmlElement *__p
 static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_value) {
   struct LxmlElement *__pyx_v_new_element = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -7543,6 +8047,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
   PyObject *__pyx_t_8 = NULL;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_replaceElement", 0);
+  __Pyx_TraceCall("_replaceElement", __pyx_f[0], 459, 0, __PYX_ERR(0, 459, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":461
  * cdef _replaceElement(_Element element, value):
@@ -7551,6 +8056,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *         # deep copy the new element
  *         new_element = cetree.deepcopyNodeToDocument(
  */
+  __Pyx_TraceLine(461,0,__PYX_ERR(0, 461, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -7562,6 +8068,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *         new_element.tag = element.tag
  *     elif isinstance(value, (list, tuple)):
  */
+    __Pyx_TraceLine(464,0,__PYX_ERR(0, 464, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_element->_doc);
     __Pyx_INCREF(__pyx_t_3);
 
@@ -7572,6 +8079,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *             element._doc, (<_Element>value)._c_node)
  *         new_element.tag = element.tag
  */
+    __Pyx_TraceLine(463,0,__PYX_ERR(0, 463, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)deepcopyNodeToDocument(((struct LxmlDocument *)__pyx_t_3), ((struct LxmlElement *)__pyx_v_value)->_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 463, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7585,6 +8093,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *     elif isinstance(value, (list, tuple)):
  *         element[:] = value
  */
+    __Pyx_TraceLine(465,0,__PYX_ERR(0, 465, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 465, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_new_element), __pyx_n_s_tag, __pyx_t_4) < 0) __PYX_ERR(0, 465, __pyx_L1_error)
@@ -7607,6 +8116,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *         element[:] = value
  *         return
  */
+  __Pyx_TraceLine(466,0,__PYX_ERR(0, 466, __pyx_L1_error))
   __pyx_t_1 = PyList_Check(__pyx_v_value); 
   __pyx_t_5 = (__pyx_t_1 != 0);
   if (!__pyx_t_5) {
@@ -7628,7 +8138,8 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *         return
  *     else:
  */
-    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_element), __pyx_v_value, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1) < 0) __PYX_ERR(0, 467, __pyx_L1_error)
+    __Pyx_TraceLine(467,0,__PYX_ERR(0, 467, __pyx_L1_error))
+    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_element), __pyx_v_value, 0, 0, NULL, NULL, &__pyx_slice__10, 0, 0, 1) < 0) __PYX_ERR(0, 467, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":468
  *     elif isinstance(value, (list, tuple)):
@@ -7637,6 +8148,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *     else:
  *         new_element = element.makeelement(element.tag)
  */
+    __Pyx_TraceLine(468,0,__PYX_ERR(0, 468, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -7657,6 +8169,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *         _setElementValue(new_element, value)
  *     element.getparent().replace(element, new_element)
  */
+  __Pyx_TraceLine(470,0,__PYX_ERR(0, 470, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_makeelement); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 470, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -7719,6 +8232,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  *     element.getparent().replace(element, new_element)
  * 
  */
+    __Pyx_TraceLine(471,0,__PYX_ERR(0, 471, __pyx_L1_error))
     __pyx_t_4 = __pyx_f_4lxml_9objectify__setElementValue(__pyx_v_new_element, __pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7732,6 +8246,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
  * 
  * cdef _appendValue(_Element parent, tag, value):
  */
+  __Pyx_TraceLine(472,0,__PYX_ERR(0, 472, __pyx_L1_error))
   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_getparent); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_6 = NULL;
@@ -7824,6 +8339,7 @@ static PyObject *__pyx_f_4lxml_9objectify__replaceElement(struct LxmlElement *__
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_new_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -7840,6 +8356,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
   struct LxmlElement *__pyx_v_new_element = 0;
   PyObject *__pyx_v_item = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -7850,6 +8367,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
   Py_ssize_t __pyx_t_7;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_appendValue", 0);
+  __Pyx_TraceCall("_appendValue", __pyx_f[0], 474, 0, __PYX_ERR(0, 474, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":476
  * cdef _appendValue(_Element parent, tag, value):
@@ -7858,6 +8376,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         # deep copy the new element
  *         new_element = cetree.deepcopyNodeToDocument(
  */
+  __Pyx_TraceLine(476,0,__PYX_ERR(0, 476, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -7869,6 +8388,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         new_element.tag = tag
  *         cetree.appendChildToElement(parent, new_element)
  */
+    __Pyx_TraceLine(479,0,__PYX_ERR(0, 479, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)__pyx_v_parent->_doc);
     __Pyx_INCREF(__pyx_t_3);
 
@@ -7879,6 +8399,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *             parent._doc, (<_Element>value)._c_node)
  *         new_element.tag = tag
  */
+    __Pyx_TraceLine(478,0,__PYX_ERR(0, 478, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)deepcopyNodeToDocument(((struct LxmlDocument *)__pyx_t_3), ((struct LxmlElement *)__pyx_v_value)->_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 478, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7892,6 +8413,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         cetree.appendChildToElement(parent, new_element)
  *     elif isinstance(value, (list, tuple)):
  */
+    __Pyx_TraceLine(480,0,__PYX_ERR(0, 480, __pyx_L1_error))
     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_new_element), __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(0, 480, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":481
@@ -7901,6 +8423,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *     elif isinstance(value, (list, tuple)):
  *         for item in value:
  */
+    __Pyx_TraceLine(481,0,__PYX_ERR(0, 481, __pyx_L1_error))
     __pyx_t_5 = appendChildToElement(__pyx_v_parent, __pyx_v_new_element); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 481, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":476
@@ -7920,6 +8443,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         for item in value:
  *             _appendValue(parent, tag, item)
  */
+  __Pyx_TraceLine(482,0,__PYX_ERR(0, 482, __pyx_L1_error))
   __pyx_t_1 = PyList_Check(__pyx_v_value); 
   __pyx_t_6 = (__pyx_t_1 != 0);
   if (!__pyx_t_6) {
@@ -7941,6 +8465,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *             _appendValue(parent, tag, item)
  *     else:
  */
+    __Pyx_TraceLine(483,0,__PYX_ERR(0, 483, __pyx_L1_error))
     if (likely(PyList_CheckExact(__pyx_v_value)) || PyTuple_CheckExact(__pyx_v_value)) {
       __pyx_t_4 = __pyx_v_value; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
@@ -7990,6 +8515,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *     else:
  *         new_element = cetree.makeElement(
  */
+      __Pyx_TraceLine(484,0,__PYX_ERR(0, 484, __pyx_L1_error))
       __pyx_t_3 = __pyx_f_4lxml_9objectify__appendValue(__pyx_v_parent, __pyx_v_tag, __pyx_v_item); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8001,6 +8527,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *             _appendValue(parent, tag, item)
  *     else:
  */
+      __Pyx_TraceLine(483,0,__PYX_ERR(0, 483, __pyx_L1_error))
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -8021,6 +8548,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *             tag, parent._doc, None, None, None, None, None)
  *         _setElementValue(new_element, value)
  */
+  __Pyx_TraceLine(486,0,__PYX_ERR(0, 486, __pyx_L1_error))
   /*else*/ {
 
     /* "lxml/objectify.pyx":487
@@ -8030,6 +8558,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         _setElementValue(new_element, value)
  *         cetree.appendChildToElement(parent, new_element)
  */
+    __Pyx_TraceLine(487,0,__PYX_ERR(0, 487, __pyx_L1_error))
     __pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
     __Pyx_INCREF(__pyx_t_4);
 
@@ -8040,6 +8569,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *             tag, parent._doc, None, None, None, None, None)
  *         _setElementValue(new_element, value)
  */
+    __Pyx_TraceLine(486,0,__PYX_ERR(0, 486, __pyx_L1_error))
     __pyx_t_3 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)__pyx_t_4), Py_None, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 486, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -8053,6 +8583,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  *         cetree.appendChildToElement(parent, new_element)
  * 
  */
+    __Pyx_TraceLine(488,0,__PYX_ERR(0, 488, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_9objectify__setElementValue(__pyx_v_new_element, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8064,6 +8595,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
  * 
  * cdef _setElementValue(_Element element, value):
  */
+    __Pyx_TraceLine(489,0,__PYX_ERR(0, 489, __pyx_L1_error))
     __pyx_t_5 = appendChildToElement(__pyx_v_parent, __pyx_v_new_element); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 489, __pyx_L1_error)
   }
   __pyx_L3:;
@@ -8088,6 +8620,7 @@ static PyObject *__pyx_f_4lxml_9objectify__appendValue(struct LxmlElement *__pyx
   __Pyx_XDECREF((PyObject *)__pyx_v_new_element);
   __Pyx_XDECREF(__pyx_v_item);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8104,6 +8637,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
   PyObject *__pyx_v_pytype_name = NULL;
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_py_type = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -8113,6 +8647,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("_setElementValue", 0);
+  __Pyx_TraceCall("_setElementValue", __pyx_f[0], 491, 0, __PYX_ERR(0, 491, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_value);
 
   /* "lxml/objectify.pyx":492
@@ -8122,6 +8657,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         cetree.setAttributeValue(
  *             element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  */
+  __Pyx_TraceLine(492,0,__PYX_ERR(0, 492, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -8133,6 +8669,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *     elif isinstance(value, _Element):
  *         _replaceElement(element, value)
  */
+    __Pyx_TraceLine(494,0,__PYX_ERR(0, 494, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
     __Pyx_INCREF(__pyx_t_3);
 
@@ -8143,6 +8680,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *     elif isinstance(value, _Element):
  */
+    __Pyx_TraceLine(493,0,__PYX_ERR(0, 493, __pyx_L1_error))
     __pyx_t_4 = setAttributeValue(__pyx_v_element, __pyx_t_3, __pyx_n_u_true); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -8163,6 +8701,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         _replaceElement(element, value)
  *         return
  */
+  __Pyx_TraceLine(495,0,__PYX_ERR(0, 495, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -8174,6 +8713,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         return
  *     else:
  */
+    __Pyx_TraceLine(496,0,__PYX_ERR(0, 496, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_9objectify__replaceElement(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8185,6 +8725,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *     else:
  *         cetree.delAttributeFromNsName(
  */
+    __Pyx_TraceLine(497,0,__PYX_ERR(0, 497, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -8205,6 +8746,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             element._c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil")
  *         if python._isString(value):
  */
+  __Pyx_TraceLine(499,0,__PYX_ERR(0, 499, __pyx_L1_error))
   /*else*/ {
 
     /* "lxml/objectify.pyx":500
@@ -8214,6 +8756,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         if python._isString(value):
  *             pytype_name = u"str"
  */
+    __Pyx_TraceLine(500,0,__PYX_ERR(0, 500, __pyx_L1_error))
     (void)(delAttributeFromNsName(__pyx_v_element->_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))));
 
     /* "lxml/objectify.pyx":501
@@ -8223,6 +8766,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             pytype_name = u"str"
  *             py_type = <PyType>_PYTYPE_DICT.get(pytype_name)
  */
+    __Pyx_TraceLine(501,0,__PYX_ERR(0, 501, __pyx_L1_error))
     __pyx_t_1 = (_isString(__pyx_v_value) != 0);
     if (__pyx_t_1) {
 
@@ -8233,6 +8777,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             py_type = <PyType>_PYTYPE_DICT.get(pytype_name)
  *         else:
  */
+      __Pyx_TraceLine(502,0,__PYX_ERR(0, 502, __pyx_L1_error))
       __Pyx_INCREF(__pyx_n_u_str);
       __pyx_v_pytype_name = __pyx_n_u_str;
 
@@ -8243,6 +8788,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         else:
  *             pytype_name = _typename(value)
  */
+      __Pyx_TraceLine(503,0,__PYX_ERR(0, 503, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 503, __pyx_L1_error)
@@ -8272,6 +8818,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             py_type = <PyType>_PYTYPE_DICT.get(pytype_name)
  *             if py_type is not None:
  */
+    __Pyx_TraceLine(505,0,__PYX_ERR(0, 505, __pyx_L1_error))
     /*else*/ {
       __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
@@ -8285,6 +8832,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             if py_type is not None:
  *                 value = py_type.stringify(value)
  */
+      __Pyx_TraceLine(506,0,__PYX_ERR(0, 506, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 506, __pyx_L1_error)
@@ -8304,6 +8852,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *                 value = py_type.stringify(value)
  *             else:
  */
+      __Pyx_TraceLine(507,0,__PYX_ERR(0, 507, __pyx_L1_error))
       __pyx_t_1 = (((PyObject *)__pyx_v_py_type) != Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
@@ -8315,6 +8864,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             else:
  *                 value = unicode(value)
  */
+        __Pyx_TraceLine(508,0,__PYX_ERR(0, 508, __pyx_L1_error))
         __Pyx_INCREF(__pyx_v_py_type->stringify);
         __pyx_t_5 = __pyx_v_py_type->stringify; __pyx_t_6 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -8379,6 +8929,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         if py_type is not None:
  *             cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  */
+      __Pyx_TraceLine(510,0,__PYX_ERR(0, 510, __pyx_L1_error))
       /*else*/ {
         __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
@@ -8396,6 +8947,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *             cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  *         else:
  */
+    __Pyx_TraceLine(511,0,__PYX_ERR(0, 511, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_py_type) != Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -8407,6 +8959,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *         else:
  *             cetree.delAttributeFromNsName(
  */
+      __Pyx_TraceLine(512,0,__PYX_ERR(0, 512, __pyx_L1_error))
       __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 512, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 = setAttributeValue(__pyx_v_element, __pyx_t_3, __pyx_v_pytype_name); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 512, __pyx_L1_error)
@@ -8429,6 +8982,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *                 element._c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     cetree.setNodeText(element._c_node, value)
  */
+    __Pyx_TraceLine(514,0,__PYX_ERR(0, 514, __pyx_L1_error))
     /*else*/ {
 
       /* "lxml/objectify.pyx":515
@@ -8438,6 +8992,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  *     cetree.setNodeText(element._c_node, value)
  * 
  */
+      __Pyx_TraceLine(515,0,__PYX_ERR(0, 515, __pyx_L1_error))
       (void)(delAttributeFromNsName(__pyx_v_element->_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME));
     }
     __pyx_L6:;
@@ -8451,6 +9006,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
  * 
  * cdef _setSlice(sliceobject, _Element target, items):
  */
+  __Pyx_TraceLine(516,0,__PYX_ERR(0, 516, __pyx_L1_error))
   __pyx_t_4 = setNodeText(__pyx_v_element->_c_node, __pyx_v_value); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 516, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":491
@@ -8476,6 +9032,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setElementValue(struct LxmlElement *_
   __Pyx_XDECREF((PyObject *)__pyx_v_py_type);
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -8502,6 +9059,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
   PyObject *__pyx_v_remove = NULL;
   PyObject *__pyx_v_add = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -8519,6 +9077,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
   PyObject *__pyx_t_14 = NULL;
   xmlNode *__pyx_t_15;
   __Pyx_RefNannySetupContext("_setSlice", 0);
+  __Pyx_TraceCall("_setSlice", __pyx_f[0], 518, 0, __PYX_ERR(0, 518, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":523
  *     cdef Py_ssize_t c_step, c_start, pos
@@ -8527,6 +9086,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         c_step = 1
  *     else:
  */
+  __Pyx_TraceLine(523,0,__PYX_ERR(0, 523, __pyx_L1_error))
   __pyx_t_1 = (((PySliceObject*)((PyObject*)__pyx_v_sliceobject))->step == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -8538,6 +9098,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     else:
  *         c_step = (<slice>sliceobject).step
  */
+    __Pyx_TraceLine(524,0,__PYX_ERR(0, 524, __pyx_L1_error))
     __pyx_v_c_step = 1;
 
     /* "lxml/objectify.pyx":523
@@ -8557,6 +9118,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     if c_step == 0:
  *         raise ValueError, u"Invalid slice"
  */
+  __Pyx_TraceLine(526,0,__PYX_ERR(0, 526, __pyx_L1_error))
   /*else*/ {
     __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(((PySliceObject*)((PyObject*)__pyx_v_sliceobject))->step); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 526, __pyx_L1_error)
     __pyx_v_c_step = __pyx_t_3;
@@ -8570,6 +9132,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         raise ValueError, u"Invalid slice"
  *     cdef list del_items = target[sliceobject]
  */
+  __Pyx_TraceLine(527,0,__PYX_ERR(0, 527, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_step == 0) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -8580,6 +9143,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     cdef list del_items = target[sliceobject]
  * 
  */
+    __Pyx_TraceLine(528,0,__PYX_ERR(0, 528, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Invalid_slice, 0, 0);
     __PYX_ERR(0, 528, __pyx_L1_error)
 
@@ -8599,6 +9163,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  * 
  *     # collect new values
  */
+  __Pyx_TraceLine(529,0,__PYX_ERR(0, 529, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_target), __pyx_v_sliceobject); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 529, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 529, __pyx_L1_error)
@@ -8612,6 +9177,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     tag = target.tag
  *     for item in items:
  */
+  __Pyx_TraceLine(532,0,__PYX_ERR(0, 532, __pyx_L1_error))
   __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 532, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_new_items = ((PyObject*)__pyx_t_4);
@@ -8624,6 +9190,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     for item in items:
  *         if isinstance(item, _Element):
  */
+  __Pyx_TraceLine(533,0,__PYX_ERR(0, 533, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_target), __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_tag = __pyx_t_4;
@@ -8636,6 +9203,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         if isinstance(item, _Element):
  *             # deep copy the new element
  */
+  __Pyx_TraceLine(534,0,__PYX_ERR(0, 534, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_items)) || PyTuple_CheckExact(__pyx_v_items)) {
     __pyx_t_4 = __pyx_v_items; __Pyx_INCREF(__pyx_t_4); __pyx_t_3 = 0;
     __pyx_t_5 = NULL;
@@ -8685,6 +9253,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             # deep copy the new element
  *             new_element = cetree.deepcopyNodeToDocument(
  */
+    __Pyx_TraceLine(535,0,__PYX_ERR(0, 535, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_item, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -8696,6 +9265,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             new_element.tag = tag
  *         else:
  */
+      __Pyx_TraceLine(538,0,__PYX_ERR(0, 538, __pyx_L1_error))
       __pyx_t_6 = ((PyObject *)__pyx_v_target->_doc);
       __Pyx_INCREF(__pyx_t_6);
 
@@ -8706,6 +9276,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 target._doc, (<_Element>item)._c_node)
  *             new_element.tag = tag
  */
+      __Pyx_TraceLine(537,0,__PYX_ERR(0, 537, __pyx_L1_error))
       __pyx_t_7 = ((PyObject *)deepcopyNodeToDocument(((struct LxmlDocument *)__pyx_t_6), ((struct LxmlElement *)__pyx_v_item)->_c_node)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 537, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8719,6 +9290,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         else:
  *             new_element = cetree.makeElement(
  */
+      __Pyx_TraceLine(539,0,__PYX_ERR(0, 539, __pyx_L1_error))
       if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_new_element), __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(0, 539, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":535
@@ -8738,6 +9310,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 tag, target._doc, None, None, None, None, None)
  *             _setElementValue(new_element, item)
  */
+    __Pyx_TraceLine(541,0,__PYX_ERR(0, 541, __pyx_L1_error))
     /*else*/ {
 
       /* "lxml/objectify.pyx":542
@@ -8747,6 +9320,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             _setElementValue(new_element, item)
  *         new_items.append(new_element)
  */
+      __Pyx_TraceLine(542,0,__PYX_ERR(0, 542, __pyx_L1_error))
       __pyx_t_7 = ((PyObject *)__pyx_v_target->_doc);
       __Pyx_INCREF(__pyx_t_7);
 
@@ -8757,6 +9331,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 tag, target._doc, None, None, None, None, None)
  *             _setElementValue(new_element, item)
  */
+      __Pyx_TraceLine(541,0,__PYX_ERR(0, 541, __pyx_L1_error))
       __pyx_t_6 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)__pyx_t_7), Py_None, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 541, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -8770,6 +9345,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         new_items.append(new_element)
  * 
  */
+      __Pyx_TraceLine(543,0,__PYX_ERR(0, 543, __pyx_L1_error))
       __pyx_t_6 = __pyx_f_4lxml_9objectify__setElementValue(__pyx_v_new_element, __pyx_v_item); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 543, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8783,6 +9359,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  * 
  *     # sanity check - raise what a list would raise
  */
+    __Pyx_TraceLine(544,0,__PYX_ERR(0, 544, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_new_items, ((PyObject *)__pyx_v_new_element)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 544, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":534
@@ -8792,6 +9369,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         if isinstance(item, _Element):
  *             # deep copy the new element
  */
+    __Pyx_TraceLine(534,0,__PYX_ERR(0, 534, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -8802,6 +9380,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         raise ValueError, \
  *             f"attempt to assign sequence of size {len(new_items)} to extended slice of size {len(del_items)}"
  */
+  __Pyx_TraceLine(547,0,__PYX_ERR(0, 547, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_step != 1) != 0);
   if (__pyx_t_2) {
   } else {
@@ -8826,6 +9405,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  * 
  *     # replace existing items
  */
+    __Pyx_TraceLine(549,0,__PYX_ERR(0, 549, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_9 = 0;
@@ -8879,6 +9459,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     parent = target.getparent()
  *     replace = parent.replace
  */
+  __Pyx_TraceLine(552,0,__PYX_ERR(0, 552, __pyx_L1_error))
   __pyx_v_pos = 0;
 
   /* "lxml/objectify.pyx":553
@@ -8888,6 +9469,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     replace = parent.replace
  *     while pos < len(new_items) and pos < len(del_items):
  */
+  __Pyx_TraceLine(553,0,__PYX_ERR(0, 553, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_target), __pyx_n_s_getparent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_7 = NULL;
@@ -8919,6 +9501,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     while pos < len(new_items) and pos < len(del_items):
  *         replace(del_items[pos], new_items[pos])
  */
+  __Pyx_TraceLine(554,0,__PYX_ERR(0, 554, __pyx_L1_error))
   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parent), __pyx_n_s_replace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_replace = __pyx_t_6;
@@ -8931,6 +9514,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         replace(del_items[pos], new_items[pos])
  *         pos += 1
  */
+  __Pyx_TraceLine(555,0,__PYX_ERR(0, 555, __pyx_L1_error))
   while (1) {
     __pyx_t_9 = PyList_GET_SIZE(__pyx_v_new_items); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 555, __pyx_L1_error)
     __pyx_t_2 = ((__pyx_v_pos < __pyx_t_9) != 0);
@@ -8956,6 +9540,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         pos += 1
  *     # remove leftover items
  */
+    __Pyx_TraceLine(556,0,__PYX_ERR(0, 556, __pyx_L1_error))
     if (unlikely(__pyx_v_del_items == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 556, __pyx_L1_error)
@@ -9023,6 +9608,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     # remove leftover items
  *     if pos < len(del_items):
  */
+    __Pyx_TraceLine(557,0,__PYX_ERR(0, 557, __pyx_L1_error))
     __pyx_v_pos = (__pyx_v_pos + 1);
   }
 
@@ -9033,6 +9619,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         remove = parent.remove
  *         while pos < len(del_items):
  */
+  __Pyx_TraceLine(559,0,__PYX_ERR(0, 559, __pyx_L1_error))
   if (unlikely(__pyx_v_del_items == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
     __PYX_ERR(0, 559, __pyx_L1_error)
@@ -9048,6 +9635,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         while pos < len(del_items):
  *             remove(del_items[pos])
  */
+    __Pyx_TraceLine(560,0,__PYX_ERR(0, 560, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parent), __pyx_n_s_remove); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 560, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_remove = __pyx_t_6;
@@ -9060,6 +9648,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             remove(del_items[pos])
  *             pos += 1
  */
+    __Pyx_TraceLine(561,0,__PYX_ERR(0, 561, __pyx_L1_error))
     while (1) {
       if (unlikely(__pyx_v_del_items == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
@@ -9076,6 +9665,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             pos += 1
  *     # append remaining new items
  */
+      __Pyx_TraceLine(562,0,__PYX_ERR(0, 562, __pyx_L1_error))
       if (unlikely(__pyx_v_del_items == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(0, 562, __pyx_L1_error)
@@ -9138,6 +9728,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *     # append remaining new items
  *     if pos < len(new_items):
  */
+      __Pyx_TraceLine(563,0,__PYX_ERR(0, 563, __pyx_L1_error))
       __pyx_v_pos = (__pyx_v_pos + 1);
     }
 
@@ -9157,6 +9748,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         # the sanity check above guarantees (step == 1)
  *         if pos > 0:
  */
+  __Pyx_TraceLine(565,0,__PYX_ERR(0, 565, __pyx_L1_error))
   __pyx_t_9 = PyList_GET_SIZE(__pyx_v_new_items); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 565, __pyx_L1_error)
   __pyx_t_1 = ((__pyx_v_pos < __pyx_t_9) != 0);
   if (__pyx_t_1) {
@@ -9168,6 +9760,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             item = new_items[pos-1]
  *         else:
  */
+    __Pyx_TraceLine(567,0,__PYX_ERR(0, 567, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_pos > 0) != 0);
     if (__pyx_t_1) {
 
@@ -9178,6 +9771,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         else:
  *             if (<slice>sliceobject).start > 0:
  */
+      __Pyx_TraceLine(568,0,__PYX_ERR(0, 568, __pyx_L1_error))
       __pyx_t_9 = (__pyx_v_pos - 1);
       __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_new_items, __pyx_t_9, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -9201,6 +9795,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 c_node = parent._c_node.children
  *             else:
  */
+    __Pyx_TraceLine(570,0,__PYX_ERR(0, 570, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = PyObject_RichCompare(((PySliceObject*)((PyObject*)__pyx_v_sliceobject))->start, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 570, __pyx_L1_error)
       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 570, __pyx_L1_error)
@@ -9214,6 +9809,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             else:
  *                 c_node = parent._c_node.last
  */
+        __Pyx_TraceLine(571,0,__PYX_ERR(0, 571, __pyx_L1_error))
         __pyx_t_15 = __pyx_v_parent->_c_node->children;
         __pyx_v_c_node = __pyx_t_15;
 
@@ -9234,6 +9830,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             c_node = _findFollowingSibling(
  *                 c_node, tree._getNs(target._c_node), target._c_node.name,
  */
+      __Pyx_TraceLine(573,0,__PYX_ERR(0, 573, __pyx_L1_error))
       /*else*/ {
         __pyx_t_15 = __pyx_v_parent->_c_node->last;
         __pyx_v_c_node = __pyx_t_15;
@@ -9247,6 +9844,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             if c_node is NULL:
  *                 while pos < len(new_items):
  */
+      __Pyx_TraceLine(576,0,__PYX_ERR(0, 576, __pyx_L1_error))
       __pyx_t_6 = __Pyx_PyInt_SubtractObjC(((PySliceObject*)((PyObject*)__pyx_v_sliceobject))->start, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 576, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error)
@@ -9259,6 +9857,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 c_node, tree._getNs(target._c_node), target._c_node.name,
  *                 (<slice>sliceobject).start - 1)
  */
+      __Pyx_TraceLine(574,0,__PYX_ERR(0, 574, __pyx_L1_error))
       __pyx_v_c_node = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_node, _getNs(__pyx_v_target->_c_node), __pyx_v_target->_c_node->name, __pyx_t_9);
 
       /* "lxml/objectify.pyx":577
@@ -9268,6 +9867,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 while pos < len(new_items):
  *                     cetree.appendChildToElement(parent, new_items[pos])
  */
+      __Pyx_TraceLine(577,0,__PYX_ERR(0, 577, __pyx_L1_error))
       __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
       if (__pyx_t_1) {
 
@@ -9278,6 +9878,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                     cetree.appendChildToElement(parent, new_items[pos])
  *                     pos += 1
  */
+        __Pyx_TraceLine(578,0,__PYX_ERR(0, 578, __pyx_L1_error))
         while (1) {
           __pyx_t_9 = PyList_GET_SIZE(__pyx_v_new_items); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 578, __pyx_L1_error)
           __pyx_t_1 = ((__pyx_v_pos < __pyx_t_9) != 0);
@@ -9290,6 +9891,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                     pos += 1
  *                 return
  */
+          __Pyx_TraceLine(579,0,__PYX_ERR(0, 579, __pyx_L1_error))
           __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_new_items, __pyx_v_pos, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 579, __pyx_L1_error)
@@ -9303,6 +9905,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *                 return
  *             item = cetree.elementFactory(parent._doc, c_node)
  */
+          __Pyx_TraceLine(580,0,__PYX_ERR(0, 580, __pyx_L1_error))
           __pyx_v_pos = (__pyx_v_pos + 1);
         }
 
@@ -9313,6 +9916,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             item = cetree.elementFactory(parent._doc, c_node)
  *         while pos < len(new_items):
  */
+        __Pyx_TraceLine(581,0,__PYX_ERR(0, 581, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_r = Py_None; __Pyx_INCREF(Py_None);
         goto __pyx_L0;
@@ -9333,6 +9937,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *         while pos < len(new_items):
  *             add = item.addnext
  */
+      __Pyx_TraceLine(582,0,__PYX_ERR(0, 582, __pyx_L1_error))
       __pyx_t_6 = ((PyObject *)__pyx_v_parent->_doc);
       __Pyx_INCREF(__pyx_t_6);
       __pyx_t_14 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_6), __pyx_v_c_node)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 582, __pyx_L1_error)
@@ -9350,6 +9955,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             add = item.addnext
  *             item = new_items[pos]
  */
+    __Pyx_TraceLine(583,0,__PYX_ERR(0, 583, __pyx_L1_error))
     while (1) {
       __pyx_t_9 = PyList_GET_SIZE(__pyx_v_new_items); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 583, __pyx_L1_error)
       __pyx_t_1 = ((__pyx_v_pos < __pyx_t_9) != 0);
@@ -9362,6 +9968,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             item = new_items[pos]
  *             add(item)
  */
+      __Pyx_TraceLine(584,0,__PYX_ERR(0, 584, __pyx_L1_error))
       __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_addnext); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 584, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_XDECREF_SET(__pyx_v_add, __pyx_t_14);
@@ -9374,6 +9981,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             add(item)
  *             pos += 1
  */
+      __Pyx_TraceLine(585,0,__PYX_ERR(0, 585, __pyx_L1_error))
       __pyx_t_14 = __Pyx_GetItemInt_List(__pyx_v_new_items, __pyx_v_pos, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 585, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF_SET(__pyx_v_item, __pyx_t_14);
@@ -9386,6 +9994,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  *             pos += 1
  * 
  */
+      __Pyx_TraceLine(586,0,__PYX_ERR(0, 586, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_add);
       __pyx_t_6 = __pyx_v_add; __pyx_t_4 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -9439,6 +10048,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
  * 
  * ################################################################################
  */
+      __Pyx_TraceLine(587,0,__PYX_ERR(0, 587, __pyx_L1_error))
       __pyx_v_pos = (__pyx_v_pos + 1);
     }
 
@@ -9482,6 +10092,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
   __Pyx_XDECREF(__pyx_v_remove);
   __Pyx_XDECREF(__pyx_v_add);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9509,9 +10120,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_22ObjectifiedDataElement_5pyval_1__ge
 
 static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_ObjectifiedDataElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 597, 0, __PYX_ERR(0, 597, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":598
  *     property pyval:
@@ -9520,6 +10133,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get
  * 
  *     def __str__(self):
  */
+  __Pyx_TraceLine(598,0,__PYX_ERR(0, 598, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -9542,6 +10156,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9569,11 +10184,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_22ObjectifiedDataElement_1__str__(PyO
 
 static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement___str__(struct __pyx_obj_4lxml_9objectify_ObjectifiedDataElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 600, 0, __PYX_ERR(0, 600, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":601
  * 
@@ -9582,6 +10199,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement___str__(stru
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(601,0,__PYX_ERR(0, 601, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -9594,8 +10212,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement___str__(stru
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_s__2);
-  __pyx_t_1 = __pyx_kp_s__2;
+  __Pyx_INCREF(__pyx_kp_s__3);
+  __pyx_t_1 = __pyx_kp_s__3;
   __pyx_L3_bool_binop_done:;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -9617,6 +10235,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement___str__(stru
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9644,11 +10263,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_22ObjectifiedDataElement_3__repr__(Py
 
 static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_2__repr__(struct __pyx_obj_4lxml_9objectify_ObjectifiedDataElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 603, 0, __PYX_ERR(0, 603, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":604
  * 
@@ -9657,6 +10278,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_2__repr__(st
  * 
  *     def _setText(self, s):
  */
+  __Pyx_TraceLine(604,0,__PYX_ERR(0, 604, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -9669,8 +10291,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_2__repr__(st
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_s__2);
-  __pyx_t_1 = __pyx_kp_s__2;
+  __Pyx_INCREF(__pyx_kp_s__3);
+  __pyx_t_1 = __pyx_kp_s__3;
   __pyx_L3_bool_binop_done:;
   __pyx_t_2 = __pyx_f_4lxml_9objectify_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -9695,6 +10317,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_2__repr__(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9724,9 +10347,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_22ObjectifiedDataElement_5_setText(Py
 
 static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_4_setText(struct __pyx_obj_4lxml_9objectify_ObjectifiedDataElement *__pyx_v_self, PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__11)
   __Pyx_RefNannySetupContext("_setText", 0);
+  __Pyx_TraceCall("_setText", __pyx_f[0], 606, 0, __PYX_ERR(0, 606, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":610
  *         doing.
@@ -9735,6 +10361,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_4_setText(st
  * 
  * cdef class NumberElement(ObjectifiedDataElement):
  */
+  __Pyx_TraceLine(610,0,__PYX_ERR(0, 610, __pyx_L1_error))
   __pyx_t_1 = setNodeText(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._c_node, __pyx_v_s); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 610, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":606
@@ -9753,6 +10380,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_4_setText(st
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9782,8 +10410,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_1_setValueParser(PyOb
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement__setValueParser(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_function) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__12)
   __Pyx_RefNannySetupContext("_setValueParser", 0);
+  __Pyx_TraceCall("_setValueParser", __pyx_f[0], 614, 0, __PYX_ERR(0, 614, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":619
  *         Do not use this unless you know what you are doing.
@@ -9792,6 +10423,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement__setValueParser(struc
  * 
  *     property pyval:
  */
+  __Pyx_TraceLine(619,0,__PYX_ERR(0, 619, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_function);
   __Pyx_GIVEREF(__pyx_v_function);
   __Pyx_GOTREF(__pyx_v_self->_parse_value);
@@ -9808,7 +10440,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement__setValueParser(struc
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.NumberElement._setValueParser", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9836,9 +10474,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_5pyval_1__get__(PyObj
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 622, 0, __PYX_ERR(0, 622, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":623
  *     property pyval:
@@ -9847,6 +10487,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct
  * 
  *     def __int__(self):
  */
+  __Pyx_TraceLine(623,0,__PYX_ERR(0, 623, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -9869,6 +10510,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9896,10 +10538,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_3__int__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_2__int__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__int__", 0);
+  __Pyx_TraceCall("__int__", __pyx_f[0], 625, 0, __PYX_ERR(0, 625, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":626
  * 
@@ -9908,6 +10552,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_2__int__(struct __pyx
  * 
  *     def __long__(self):
  */
+  __Pyx_TraceLine(626,0,__PYX_ERR(0, 626, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -9934,6 +10579,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_2__int__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -9964,10 +10610,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_5__long__(PyObject *_
 #if PY_MAJOR_VERSION < 3
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_4__long__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__long__", 0);
+  __Pyx_TraceCall("__long__", __pyx_f[0], 628, 0, __PYX_ERR(0, 628, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":629
  * 
@@ -9976,6 +10624,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_4__long__(struct __py
  * 
  *     def __float__(self):
  */
+  __Pyx_TraceLine(629,0,__PYX_ERR(0, 629, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10002,6 +10651,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_4__long__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10030,10 +10680,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_7__float__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_6__float__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__float__", 0);
+  __Pyx_TraceCall("__float__", __pyx_f[0], 631, 0, __PYX_ERR(0, 631, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":632
  * 
@@ -10042,6 +10694,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_6__float__(struct __p
  * 
  *     def __complex__(self):
  */
+  __Pyx_TraceLine(632,0,__PYX_ERR(0, 632, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10068,6 +10721,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_6__float__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10096,10 +10750,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_9__complex__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_8__complex__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__13)
   __Pyx_RefNannySetupContext("__complex__", 0);
+  __Pyx_TraceCall("__complex__", __pyx_f[0], 634, 0, __PYX_ERR(0, 634, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":635
  * 
@@ -10108,6 +10765,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_8__complex__(struct _
  * 
  *     def __str__(self):
  */
+  __Pyx_TraceLine(635,0,__PYX_ERR(0, 635, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10134,6 +10792,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_8__complex__(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10161,10 +10820,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_11__str__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_10__str__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 637, 0, __PYX_ERR(0, 637, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":638
  * 
@@ -10173,6 +10834,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_10__str__(struct __py
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(638,0,__PYX_ERR(0, 638, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10199,6 +10861,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_10__str__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10226,10 +10889,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_13__repr__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_12__repr__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 640, 0, __PYX_ERR(0, 640, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":641
  * 
@@ -10238,6 +10903,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_12__repr__(struct __p
  * 
  *     def __oct__(self):
  */
+  __Pyx_TraceLine(641,0,__PYX_ERR(0, 641, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10264,6 +10930,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_12__repr__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10294,10 +10961,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_15__oct__(PyObject *_
 #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_14__oct__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__oct__", 0);
+  __Pyx_TraceCall("__oct__", __pyx_f[0], 643, 0, __PYX_ERR(0, 643, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":644
  * 
@@ -10306,6 +10975,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_14__oct__(struct __py
  * 
  *     def __hex__(self):
  */
+  __Pyx_TraceLine(644,0,__PYX_ERR(0, 644, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10332,6 +11002,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_14__oct__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10363,10 +11034,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_17__hex__(PyObject *_
 #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_16__hex__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__hex__", 0);
+  __Pyx_TraceCall("__hex__", __pyx_f[0], 646, 0, __PYX_ERR(0, 646, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":647
  * 
@@ -10375,6 +11048,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_16__hex__(struct __py
  * 
  *     def __richcmp__(self, other, int op):
  */
+  __Pyx_TraceLine(647,0,__PYX_ERR(0, 647, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10401,6 +11075,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_16__hex__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10429,9 +11104,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_19__richcmp__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_18__richcmp__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 649, 0, __PYX_ERR(0, 649, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":650
  * 
@@ -10440,6 +11117,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_18__richcmp__(struct
  * 
  *     def __hash__(self):
  */
+  __Pyx_TraceLine(650,0,__PYX_ERR(0, 650, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10462,6 +11140,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_18__richcmp__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10489,10 +11168,12 @@ static Py_hash_t __pyx_pw_4lxml_9objectify_13NumberElement_21__hash__(PyObject *
 
 static Py_hash_t __pyx_pf_4lxml_9objectify_13NumberElement_20__hash__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   Py_hash_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_hash_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__hash__", 0);
+  __Pyx_TraceCall("__hash__", __pyx_f[0], 652, 0, __PYX_ERR(0, 652, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":653
  * 
@@ -10501,6 +11182,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_13NumberElement_20__hash__(struct __p
  * 
  *     def __add__(self, other):
  */
+  __Pyx_TraceLine(653,0,__PYX_ERR(0, 653, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__parseNumber(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 653, __pyx_L1_error)
@@ -10523,6 +11205,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_13NumberElement_20__hash__(struct __p
   __pyx_r = -1;
   __pyx_L0:;
   if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10550,11 +11233,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_23__add__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_22__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__add__", 0);
+  __Pyx_TraceCall("__add__", __pyx_f[0], 655, 0, __PYX_ERR(0, 655, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":656
  * 
@@ -10563,6 +11248,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_22__add__(PyObject *_
  * 
  *     def __sub__(self, other):
  */
+  __Pyx_TraceLine(656,0,__PYX_ERR(0, 656, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10593,6 +11279,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_22__add__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10620,11 +11307,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_25__sub__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__sub__", 0);
+  __Pyx_TraceCall("__sub__", __pyx_f[0], 658, 0, __PYX_ERR(0, 658, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":659
  * 
@@ -10633,6 +11322,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(PyObject *_
  * 
  *     def __mul__(self, other):
  */
+  __Pyx_TraceLine(659,0,__PYX_ERR(0, 659, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10663,6 +11353,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_24__sub__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10690,11 +11381,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_27__mul__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__mul__", 0);
+  __Pyx_TraceCall("__mul__", __pyx_f[0], 661, 0, __PYX_ERR(0, 661, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":662
  * 
@@ -10703,6 +11396,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(PyObject *_
  * 
  *     def __div__(self, other):
  */
+  __Pyx_TraceLine(662,0,__PYX_ERR(0, 662, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10733,6 +11427,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_26__mul__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10763,11 +11458,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_29__div__(PyObject *_
 #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__div__", 0);
+  __Pyx_TraceCall("__div__", __pyx_f[0], 664, 0, __PYX_ERR(0, 664, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":665
  * 
@@ -10776,6 +11473,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__div__(PyObject *_
  * 
  *     def __truediv__(self, other):
  */
+  __Pyx_TraceLine(665,0,__PYX_ERR(0, 665, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10806,6 +11504,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_28__div__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10834,11 +11533,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_31__truediv__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__truediv__", 0);
+  __Pyx_TraceCall("__truediv__", __pyx_f[0], 667, 0, __PYX_ERR(0, 667, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":668
  * 
@@ -10847,6 +11548,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(PyObjec
  * 
  *     def __mod__(self, other):
  */
+  __Pyx_TraceLine(668,0,__PYX_ERR(0, 668, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10877,6 +11579,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_30__truediv__(PyObjec
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10904,11 +11607,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_33__mod__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__mod__", 0);
+  __Pyx_TraceCall("__mod__", __pyx_f[0], 670, 0, __PYX_ERR(0, 670, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":671
  * 
@@ -10917,6 +11622,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(PyObject *_
  * 
  *     def __pow__(self, other, modulo):
  */
+  __Pyx_TraceLine(671,0,__PYX_ERR(0, 671, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -10947,6 +11653,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_32__mod__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -10974,6 +11681,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_35__pow__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, PyObject *__pyx_v_modulo) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -10981,6 +11689,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *_
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__pow__", 0);
+  __Pyx_TraceCall("__pow__", __pyx_f[0], 673, 0, __PYX_ERR(0, 673, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":674
  * 
@@ -10989,6 +11698,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *_
  *             return _numericValueOf(self) ** _numericValueOf(other)
  *         else:
  */
+  __Pyx_TraceLine(674,0,__PYX_ERR(0, 674, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_modulo == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -11000,6 +11710,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *_
  *         else:
  *             return pow(_numericValueOf(self), _numericValueOf(other), modulo)
  */
+    __Pyx_TraceLine(675,0,__PYX_ERR(0, 675, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 675, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -11029,6 +11740,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *_
  * 
  *     def __neg__(self):
  */
+  __Pyx_TraceLine(677,0,__PYX_ERR(0, 677, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error)
@@ -11061,6 +11773,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_34__pow__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11088,10 +11801,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_37__neg__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__neg__", 0);
+  __Pyx_TraceCall("__neg__", __pyx_f[0], 679, 0, __PYX_ERR(0, 679, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":680
  * 
@@ -11100,6 +11815,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(struct __py
  * 
  *     def __pos__(self):
  */
+  __Pyx_TraceLine(680,0,__PYX_ERR(0, 680, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11126,6 +11842,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_36__neg__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11153,10 +11870,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_39__pos__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__pos__", 0);
+  __Pyx_TraceCall("__pos__", __pyx_f[0], 682, 0, __PYX_ERR(0, 682, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":683
  * 
@@ -11165,6 +11884,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(struct __py
  * 
  *     def __abs__(self):
  */
+  __Pyx_TraceLine(683,0,__PYX_ERR(0, 683, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11191,6 +11911,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_38__pos__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11218,10 +11939,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_41__abs__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__abs__", 0);
+  __Pyx_TraceCall("__abs__", __pyx_f[0], 685, 0, __PYX_ERR(0, 685, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":686
  * 
@@ -11230,10 +11953,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(struct __py
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(686,0,__PYX_ERR(0, 686, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
@@ -11256,6 +11980,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_40__abs__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11283,10 +12008,12 @@ static int __pyx_pw_4lxml_9objectify_13NumberElement_43__nonzero__(PyObject *__p
 
 static int __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[0], 688, 0, __PYX_ERR(0, 688, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":689
  * 
@@ -11295,6 +12022,7 @@ static int __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(struct __pyx_
  * 
  *     def __invert__(self):
  */
+  __Pyx_TraceLine(689,0,__PYX_ERR(0, 689, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 689, __pyx_L1_error)
@@ -11316,6 +12044,7 @@ static int __pyx_pf_4lxml_9objectify_13NumberElement_42__nonzero__(struct __pyx_
   __Pyx_AddTraceback("lxml.objectify.NumberElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11343,10 +12072,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_45__invert__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__invert__", 0);
+  __Pyx_TraceCall("__invert__", __pyx_f[0], 691, 0, __PYX_ERR(0, 691, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":692
  * 
@@ -11355,6 +12086,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(struct _
  * 
  *     def __lshift__(self, other):
  */
+  __Pyx_TraceLine(692,0,__PYX_ERR(0, 692, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11381,6 +12113,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_44__invert__(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11408,11 +12141,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_47__lshift__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__lshift__", 0);
+  __Pyx_TraceCall("__lshift__", __pyx_f[0], 694, 0, __PYX_ERR(0, 694, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":695
  * 
@@ -11421,6 +12156,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(PyObject
  * 
  *     def __rshift__(self, other):
  */
+  __Pyx_TraceLine(695,0,__PYX_ERR(0, 695, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11451,6 +12187,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_46__lshift__(PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11478,11 +12215,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_49__rshift__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__rshift__", 0);
+  __Pyx_TraceCall("__rshift__", __pyx_f[0], 697, 0, __PYX_ERR(0, 697, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":698
  * 
@@ -11491,6 +12230,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(PyObject
  * 
  *     def __and__(self, other):
  */
+  __Pyx_TraceLine(698,0,__PYX_ERR(0, 698, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11521,6 +12261,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_48__rshift__(PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11548,11 +12289,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_51__and__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__and__", 0);
+  __Pyx_TraceCall("__and__", __pyx_f[0], 700, 0, __PYX_ERR(0, 700, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":701
  * 
@@ -11561,6 +12304,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__and__(PyObject *_
  * 
  *     def __or__(self, other):
  */
+  __Pyx_TraceLine(701,0,__PYX_ERR(0, 701, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11591,6 +12335,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_50__and__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11618,11 +12363,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_53__or__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__or__", 0);
+  __Pyx_TraceCall("__or__", __pyx_f[0], 703, 0, __PYX_ERR(0, 703, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":704
  * 
@@ -11631,6 +12378,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__or__(PyObject *__
  * 
  *     def __xor__(self, other):
  */
+  __Pyx_TraceLine(704,0,__PYX_ERR(0, 704, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11661,6 +12409,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_52__or__(PyObject *__
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11688,11 +12437,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13NumberElement_55__xor__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__xor__", 0);
+  __Pyx_TraceCall("__xor__", __pyx_f[0], 706, 0, __PYX_ERR(0, 706, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":707
  * 
@@ -11701,6 +12452,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(PyObject *_
  * 
  * cdef class IntElement(NumberElement):
  */
+  __Pyx_TraceLine(707,0,__PYX_ERR(0, 707, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -11731,6 +12483,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_54__xor__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11759,8 +12512,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_10IntElement_1_init(PyObject *__pyx_v
 
 static PyObject *__pyx_pf_4lxml_9objectify_10IntElement__init(struct __pyx_obj_4lxml_9objectify_IntElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__14)
   __Pyx_RefNannySetupContext("_init", 0);
+  __Pyx_TraceCall("_init", __pyx_f[0], 710, 0, __PYX_ERR(0, 710, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":711
  * cdef class IntElement(NumberElement):
@@ -11769,6 +12525,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10IntElement__init(struct __pyx_obj_4
  * 
  * cdef class LongElement(NumberElement):
  */
+  __Pyx_TraceLine(711,0,__PYX_ERR(0, 711, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)(&PyInt_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyInt_Type)));
   __Pyx_GOTREF(__pyx_v_self->__pyx_base._parse_value);
@@ -11785,7 +12542,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_10IntElement__init(struct __pyx_obj_4
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.IntElement._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11814,8 +12577,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_11LongElement_1_init(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_9objectify_11LongElement__init(struct __pyx_obj_4lxml_9objectify_LongElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__15)
   __Pyx_RefNannySetupContext("_init", 0);
+  __Pyx_TraceCall("_init", __pyx_f[0], 714, 0, __PYX_ERR(0, 714, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":715
  * cdef class LongElement(NumberElement):
@@ -11824,6 +12590,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11LongElement__init(struct __pyx_obj_
  * 
  * cdef class FloatElement(NumberElement):
  */
+  __Pyx_TraceLine(715,0,__PYX_ERR(0, 715, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)(&PyLong_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyLong_Type)));
   __Pyx_GOTREF(__pyx_v_self->__pyx_base._parse_value);
@@ -11840,7 +12607,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_11LongElement__init(struct __pyx_obj_
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.LongElement._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11869,8 +12642,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_12FloatElement_1_init(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_9objectify_12FloatElement__init(struct __pyx_obj_4lxml_9objectify_FloatElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
+  __Pyx_TraceFrameInit(__pyx_codeobj__16)
   __Pyx_RefNannySetupContext("_init", 0);
+  __Pyx_TraceCall("_init", __pyx_f[0], 718, 0, __PYX_ERR(0, 718, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":719
  * cdef class FloatElement(NumberElement):
@@ -11879,6 +12655,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12FloatElement__init(struct __pyx_obj
  * 
  * cdef class StringElement(ObjectifiedDataElement):
  */
+  __Pyx_TraceLine(719,0,__PYX_ERR(0, 719, __pyx_L1_error))
   __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
   __Pyx_GOTREF(__pyx_v_self->__pyx_base._parse_value);
@@ -11895,7 +12672,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12FloatElement__init(struct __pyx_obj
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.FloatElement._init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11923,11 +12706,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_5pyval_1__get__(PyObj
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 729, 0, __PYX_ERR(0, 729, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":730
  *     property pyval:
@@ -11936,6 +12721,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(730,0,__PYX_ERR(0, 730, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -11948,8 +12734,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_u__2);
-  __pyx_t_1 = __pyx_kp_u__2;
+  __Pyx_INCREF(__pyx_kp_u__3);
+  __pyx_t_1 = __pyx_kp_u__3;
   __pyx_L3_bool_binop_done:;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -11971,6 +12757,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -11998,11 +12785,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_1__repr__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 732, 0, __PYX_ERR(0, 732, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":733
  * 
@@ -12011,6 +12800,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx
  * 
  *     def strlen(self):
  */
+  __Pyx_TraceLine(733,0,__PYX_ERR(0, 733, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -12023,8 +12813,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_u__2);
-  __pyx_t_1 = __pyx_kp_u__2;
+  __Pyx_INCREF(__pyx_kp_u__3);
+  __pyx_t_1 = __pyx_kp_u__3;
   __pyx_L3_bool_binop_done:;
   __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -12049,6 +12839,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12078,12 +12869,15 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_3strlen(PyObject *__p
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   Py_ssize_t __pyx_t_4;
+  __Pyx_TraceFrameInit(__pyx_codeobj__17)
   __Pyx_RefNannySetupContext("strlen", 0);
+  __Pyx_TraceCall("strlen", __pyx_f[0], 735, 0, __PYX_ERR(0, 735, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":736
  * 
@@ -12092,6 +12886,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_
  *         if text is None:
  *             return 0
  */
+  __Pyx_TraceLine(736,0,__PYX_ERR(0, 736, __pyx_L1_error))
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_text = __pyx_t_1;
@@ -12104,6 +12899,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_
  *             return 0
  *         else:
  */
+  __Pyx_TraceLine(737,0,__PYX_ERR(0, 737, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_text == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -12115,6 +12911,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_
  *         else:
  *             return len(text)
  */
+    __Pyx_TraceLine(738,0,__PYX_ERR(0, 738, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_int_0);
     __pyx_r = __pyx_int_0;
@@ -12136,6 +12933,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(740,0,__PYX_ERR(0, 740, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyObject_Length(__pyx_v_text); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 740, __pyx_L1_error)
@@ -12162,6 +12960,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_2strlen(struct __pyx_
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12189,10 +12988,12 @@ static int __pyx_pw_4lxml_9objectify_13StringElement_5__nonzero__(PyObject *__py
 
 static int __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[0], 742, 0, __PYX_ERR(0, 742, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":743
  * 
@@ -12201,6 +13002,7 @@ static int __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(struct __pyx_o
  * 
  *     def __richcmp__(self, other, int op):
  */
+  __Pyx_TraceLine(743,0,__PYX_ERR(0, 743, __pyx_L1_error))
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 743, __pyx_L1_error)
@@ -12222,6 +13024,7 @@ static int __pyx_pf_4lxml_9objectify_13StringElement_4__nonzero__(struct __pyx_o
   __Pyx_AddTraceback("lxml.objectify.StringElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12249,9 +13052,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_7__richcmp__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_6__richcmp__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 745, 0, __PYX_ERR(0, 745, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":746
  * 
@@ -12260,6 +13065,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_6__richcmp__(struct _
  * 
  *     def __hash__(self):
  */
+  __Pyx_TraceLine(746,0,__PYX_ERR(0, 746, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12282,6 +13088,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_6__richcmp__(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12309,12 +13116,14 @@ static Py_hash_t __pyx_pw_4lxml_9objectify_13StringElement_9__hash__(PyObject *_
 
 static Py_hash_t __pyx_pf_4lxml_9objectify_13StringElement_8__hash__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   Py_hash_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   Py_hash_t __pyx_t_4;
   __Pyx_RefNannySetupContext("__hash__", 0);
+  __Pyx_TraceCall("__hash__", __pyx_f[0], 748, 0, __PYX_ERR(0, 748, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":749
  * 
@@ -12323,6 +13132,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_13StringElement_8__hash__(struct __py
  * 
  *     def __add__(self, other):
  */
+  __Pyx_TraceLine(749,0,__PYX_ERR(0, 749, __pyx_L1_error))
   __pyx_t_2 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 749, __pyx_L1_error)
@@ -12334,8 +13144,8 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_13StringElement_8__hash__(struct __py
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __Pyx_INCREF(__pyx_kp_u__2);
-  __pyx_t_1 = __pyx_kp_u__2;
+  __Pyx_INCREF(__pyx_kp_u__3);
+  __pyx_t_1 = __pyx_kp_u__3;
   __pyx_L3_bool_binop_done:;
   __pyx_t_4 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 749, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12358,6 +13168,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_13StringElement_8__hash__(struct __py
   __pyx_r = -1;
   __pyx_L0:;
   if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12386,11 +13197,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_11__add__(PyObject *_
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_v_text = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__add__", 0);
+  __Pyx_TraceCall("__add__", __pyx_f[0], 751, 0, __PYX_ERR(0, 751, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_other);
 
   /* "lxml/objectify.pyx":752
@@ -12400,6 +13213,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *         other = _strValueOf(other)
  *         if text is None:
  */
+  __Pyx_TraceLine(752,0,__PYX_ERR(0, 752, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_text = __pyx_t_1;
@@ -12412,6 +13226,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *         if text is None:
  *             return other
  */
+  __Pyx_TraceLine(753,0,__PYX_ERR(0, 753, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_1);
@@ -12424,6 +13239,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *             return other
  *         if other is None:
  */
+  __Pyx_TraceLine(754,0,__PYX_ERR(0, 754, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_text == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -12435,6 +13251,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *         if other is None:
  *             return text
  */
+    __Pyx_TraceLine(755,0,__PYX_ERR(0, 755, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_other);
     __pyx_r = __pyx_v_other;
@@ -12456,6 +13273,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *             return text
  *         return text + other
  */
+  __Pyx_TraceLine(756,0,__PYX_ERR(0, 756, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_other == Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -12467,6 +13285,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  *         return text + other
  * 
  */
+    __Pyx_TraceLine(757,0,__PYX_ERR(0, 757, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_text);
     __pyx_r = __pyx_v_text;
@@ -12488,6 +13307,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
  * 
  *     def __mul__(self, other):
  */
+  __Pyx_TraceLine(758,0,__PYX_ERR(0, 758, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyNumber_Add(__pyx_v_text, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12512,6 +13332,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_10__add__(PyObject *_
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XDECREF(__pyx_v_other);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12539,6 +13360,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_13__mul__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -12546,6 +13368,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__mul__", 0);
+  __Pyx_TraceCall("__mul__", __pyx_f[0], 760, 0, __PYX_ERR(0, 760, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":761
  * 
@@ -12554,6 +13377,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
  *             return textOf((<StringElement>self)._c_node) * _numericValueOf(other)
  *         elif isinstance(other, StringElement):
  */
+  __Pyx_TraceLine(761,0,__PYX_ERR(0, 761, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_self, __pyx_ptype_4lxml_9objectify_StringElement); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -12565,6 +13389,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
  *         elif isinstance(other, StringElement):
  *             return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
  */
+    __Pyx_TraceLine(762,0,__PYX_ERR(0, 762, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = textOf(((struct __pyx_obj_4lxml_9objectify_StringElement *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -12594,6 +13419,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
  *             return _numericValueOf(self) * textOf((<StringElement>other)._c_node)
  *         else:
  */
+  __Pyx_TraceLine(763,0,__PYX_ERR(0, 763, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_4lxml_9objectify_StringElement); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
@@ -12605,6 +13431,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
  *         else:
  *             raise TypeError, u"invalid types for * operator"
  */
+    __Pyx_TraceLine(764,0,__PYX_ERR(0, 764, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = __pyx_f_4lxml_9objectify__numericValueOf(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
@@ -12634,6 +13461,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
  * 
  *     def __mod__(self, other):
  */
+  __Pyx_TraceLine(766,0,__PYX_ERR(0, 766, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_invalid_types_for_operator, 0, 0);
     __PYX_ERR(0, 766, __pyx_L1_error)
@@ -12656,6 +13484,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_12__mul__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12683,10 +13512,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_15__mod__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mod__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__mod__", 0);
+  __Pyx_TraceCall("__mod__", __pyx_f[0], 768, 0, __PYX_ERR(0, 768, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":769
  * 
@@ -12695,6 +13526,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mod__(PyObject *_
  * 
  *     def __int__(self):
  */
+  __Pyx_TraceLine(769,0,__PYX_ERR(0, 769, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__strValueOf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12721,6 +13553,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_14__mod__(PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12748,10 +13581,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_17__int__(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__int__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__int__", 0);
+  __Pyx_TraceCall("__int__", __pyx_f[0], 771, 0, __PYX_ERR(0, 771, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":772
  * 
@@ -12760,6 +13595,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__int__(struct __py
  * 
  *     def __long__(self):
  */
+  __Pyx_TraceLine(772,0,__PYX_ERR(0, 772, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12786,6 +13622,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_16__int__(struct __py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12816,10 +13653,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_19__long__(PyObject *
 #if PY_MAJOR_VERSION < 3
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__long__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__long__", 0);
+  __Pyx_TraceCall("__long__", __pyx_f[0], 774, 0, __PYX_ERR(0, 774, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":775
  * 
@@ -12828,6 +13667,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__long__(struct __p
  * 
  *     def __float__(self):
  */
+  __Pyx_TraceLine(775,0,__PYX_ERR(0, 775, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12854,6 +13694,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_18__long__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12882,10 +13723,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_21__float__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__float__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__float__", 0);
+  __Pyx_TraceCall("__float__", __pyx_f[0], 777, 0, __PYX_ERR(0, 777, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":778
  * 
@@ -12894,6 +13737,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__float__(struct __
  * 
  *     def __complex__(self):
  */
+  __Pyx_TraceLine(778,0,__PYX_ERR(0, 778, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 778, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12920,6 +13764,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_20__float__(struct __
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -12948,10 +13793,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_13StringElement_23__complex__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__complex__(struct __pyx_obj_4lxml_9objectify_StringElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__18)
   __Pyx_RefNannySetupContext("__complex__", 0);
+  __Pyx_TraceCall("__complex__", __pyx_f[0], 780, 0, __PYX_ERR(0, 780, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":781
  * 
@@ -12960,6 +13808,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__complex__(struct
  * 
  * cdef class NoneElement(ObjectifiedDataElement):
  */
+  __Pyx_TraceLine(781,0,__PYX_ERR(0, 781, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -12986,6 +13835,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_22__complex__(struct
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13013,8 +13863,10 @@ static PyObject *__pyx_pw_4lxml_9objectify_11NoneElement_1__str__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement___str__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 784, 0, __PYX_ERR(0, 784, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":785
  * cdef class NoneElement(ObjectifiedDataElement):
@@ -13023,6 +13875,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement___str__(CYTHON_UNUSED s
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(785,0,__PYX_ERR(0, 785, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_n_u_None);
   __pyx_r = __pyx_n_u_None;
@@ -13037,8 +13890,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement___str__(CYTHON_UNUSED s
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.NoneElement.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13066,8 +13923,10 @@ static PyObject *__pyx_pw_4lxml_9objectify_11NoneElement_3__repr__(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_2__repr__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 787, 0, __PYX_ERR(0, 787, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":788
  * 
@@ -13076,6 +13935,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_2__repr__(CYTHON_UNUSED
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(788,0,__PYX_ERR(0, 788, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_n_s_None);
   __pyx_r = __pyx_n_s_None;
@@ -13090,8 +13950,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_2__repr__(CYTHON_UNUSED
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.NoneElement.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13119,8 +13983,10 @@ static int __pyx_pw_4lxml_9objectify_11NoneElement_5__nonzero__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[0], 790, 0, __PYX_ERR(0, 790, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":791
  * 
@@ -13129,6 +13995,7 @@ static int __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(CYTHON_UNUSED st
  * 
  *     def __richcmp__(self, other, int op):
  */
+  __Pyx_TraceLine(791,0,__PYX_ERR(0, 791, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -13141,7 +14008,11 @@ static int __pyx_pf_4lxml_9objectify_11NoneElement_4__nonzero__(CYTHON_UNUSED st
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.NoneElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13169,12 +14040,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_11NoneElement_7__richcmp__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 793, 0, __PYX_ERR(0, 793, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":794
  * 
@@ -13183,6 +14056,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
  *             return python.PyObject_RichCompare(None, None, op)
  *         if isinstance(self, NoneElement):
  */
+  __Pyx_TraceLine(794,0,__PYX_ERR(0, 794, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_other == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (!__pyx_t_3) {
@@ -13203,6 +14077,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
  *         if isinstance(self, NoneElement):
  *             return python.PyObject_RichCompare(None, other, op)
  */
+    __Pyx_TraceLine(795,0,__PYX_ERR(0, 795, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyObject_RichCompare(Py_None, Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 795, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -13226,6 +14101,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
  *             return python.PyObject_RichCompare(None, other, op)
  *         else:
  */
+  __Pyx_TraceLine(796,0,__PYX_ERR(0, 796, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_4lxml_9objectify_NoneElement); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -13237,6 +14113,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
  *         else:
  *             return python.PyObject_RichCompare(self, None, op)
  */
+    __Pyx_TraceLine(797,0,__PYX_ERR(0, 797, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyObject_RichCompare(Py_None, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 797, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -13260,6 +14137,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
  * 
  *     def __hash__(self):
  */
+  __Pyx_TraceLine(799,0,__PYX_ERR(0, 799, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_self), Py_None, __pyx_v_op); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 799, __pyx_L1_error)
@@ -13284,6 +14162,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_6__richcmp__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13311,9 +14190,11 @@ static Py_hash_t __pyx_pw_4lxml_9objectify_11NoneElement_9__hash__(PyObject *__p
 
 static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
   Py_hash_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_hash_t __pyx_t_1;
   __Pyx_RefNannySetupContext("__hash__", 0);
+  __Pyx_TraceCall("__hash__", __pyx_f[0], 801, 0, __PYX_ERR(0, 801, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":802
  * 
@@ -13322,6 +14203,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED
  * 
  *     property pyval:
  */
+  __Pyx_TraceLine(802,0,__PYX_ERR(0, 802, __pyx_L1_error))
   __pyx_t_1 = PyObject_Hash(Py_None); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 802, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
@@ -13340,6 +14222,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED
   __pyx_r = -1;
   __pyx_L0:;
   if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13367,8 +14250,10 @@ static PyObject *__pyx_pw_4lxml_9objectify_11NoneElement_5pyval_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_UNUSED struct __pyx_obj_4lxml_9objectify_NoneElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 805, 0, __PYX_ERR(0, 805, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":806
  *     property pyval:
@@ -13377,6 +14262,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_U
  * 
  * cdef class BoolElement(IntElement):
  */
+  __Pyx_TraceLine(806,0,__PYX_ERR(0, 806, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -13390,8 +14276,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_U
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.NoneElement.pyval.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13420,9 +14310,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_1_init(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__19)
   __Pyx_RefNannySetupContext("_init", 0);
+  __Pyx_TraceCall("_init", __pyx_f[0], 814, 0, __PYX_ERR(0, 814, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":815
  *     """
@@ -13431,6 +14324,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_
  * 
  *     def __nonzero__(self):
  */
+  __Pyx_TraceLine(815,0,__PYX_ERR(0, 815, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_parseBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -13456,6 +14350,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13483,10 +14378,12 @@ static int __pyx_pw_4lxml_9objectify_11BoolElement_3__nonzero__(PyObject *__pyx_
 
 static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
+  __Pyx_TraceCall("__nonzero__", __pyx_f[0], 817, 0, __PYX_ERR(0, 817, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":818
  * 
@@ -13495,6 +14392,7 @@ static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj
  * 
  *     def __richcmp__(self, other, int op):
  */
+  __Pyx_TraceLine(818,0,__PYX_ERR(0, 818, __pyx_L1_error))
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 818, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 818, __pyx_L1_error)
@@ -13516,6 +14414,7 @@ static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj
   __Pyx_AddTraceback("lxml.objectify.BoolElement.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13543,9 +14442,11 @@ static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5__richcmp__(PyObject *
 
 static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
+  __Pyx_TraceCall("__richcmp__", __pyx_f[0], 820, 0, __PYX_ERR(0, 820, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":821
  * 
@@ -13554,6 +14455,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __p
  * 
  *     def __hash__(self):
  */
+  __Pyx_TraceLine(821,0,__PYX_ERR(0, 821, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__richcmpPyvals(((PyObject *)__pyx_v_self), __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -13576,6 +14478,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __p
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13603,11 +14506,13 @@ static Py_hash_t __pyx_pw_4lxml_9objectify_11BoolElement_7__hash__(PyObject *__p
 
 static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   Py_hash_t __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   Py_hash_t __pyx_t_3;
   __Pyx_RefNannySetupContext("__hash__", 0);
+  __Pyx_TraceCall("__hash__", __pyx_f[0], 823, 0, __PYX_ERR(0, 823, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":824
  * 
@@ -13616,6 +14521,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_
  * 
  *     def __str__(self):
  */
+  __Pyx_TraceLine(824,0,__PYX_ERR(0, 824, __pyx_L1_error))
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 824, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 824, __pyx_L1_error)
@@ -13642,6 +14548,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_
   __pyx_r = -1;
   __pyx_L0:;
   if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13669,11 +14576,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_9__str__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[0], 826, 0, __PYX_ERR(0, 826, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":827
  * 
@@ -13682,6 +14591,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_o
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(827,0,__PYX_ERR(0, 827, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -13712,6 +14622,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13739,11 +14650,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_11__repr__(PyObject *__
 
 static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 829, 0, __PYX_ERR(0, 829, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":830
  * 
@@ -13752,6 +14665,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx
  * 
  *     property pyval:
  */
+  __Pyx_TraceLine(830,0,__PYX_ERR(0, 830, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -13782,6 +14696,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13809,10 +14724,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_11BoolElement_5pyval_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct __pyx_obj_4lxml_9objectify_BoolElement *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 833, 0, __PYX_ERR(0, 833, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":834
  *     property pyval:
@@ -13821,6 +14738,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct _
  * 
  * def __checkBool(s):
  */
+  __Pyx_TraceLine(834,0,__PYX_ERR(0, 834, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = textOf(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -13847,6 +14765,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct _
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13876,11 +14795,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_3__checkBool(PyObject *__pyx_self, Py
 static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s) {
   int __pyx_v_value;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__20)
   __Pyx_RefNannySetupContext("__checkBool", 0);
+  __Pyx_TraceCall("__checkBool", __pyx_f[0], 836, 0, __PYX_ERR(0, 836, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":837
  * 
@@ -13889,6 +14811,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  *     if s is not None:
  *         value = __parseBoolAsInt(s)
  */
+  __Pyx_TraceLine(837,0,__PYX_ERR(0, 837, __pyx_L1_error))
   __pyx_v_value = -1;
 
   /* "lxml/objectify.pyx":838
@@ -13898,6 +14821,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  *         value = __parseBoolAsInt(s)
  *     if value == -1:
  */
+  __Pyx_TraceLine(838,0,__PYX_ERR(0, 838, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_s != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -13909,6 +14833,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  *     if value == -1:
  *         raise ValueError
  */
+    __Pyx_TraceLine(839,0,__PYX_ERR(0, 839, __pyx_L1_error))
     __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 839, __pyx_L1_error)
     __pyx_v_value = __pyx_t_3;
 
@@ -13928,6 +14853,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  *         raise ValueError
  * 
  */
+  __Pyx_TraceLine(840,0,__PYX_ERR(0, 840, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_value == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -13938,6 +14864,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  * 
  * cpdef bint __parseBool(s) except -1:
  */
+    __Pyx_TraceLine(841,0,__PYX_ERR(0, 841, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, 0, 0, 0);
     __PYX_ERR(0, 841, __pyx_L1_error)
 
@@ -13966,6 +14893,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -13982,6 +14910,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_5__parseBool(PyObject *__pyx_self, Py
 static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_v_value;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -13990,7 +14919,9 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   Py_ssize_t __pyx_t_5;
   Py_UCS4 __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__21)
   __Pyx_RefNannySetupContext("__parseBool", 0);
+  __Pyx_TraceCall("__parseBool", __pyx_f[0], 843, 0, __PYX_ERR(0, 843, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":845
  * cpdef bint __parseBool(s) except -1:
@@ -13999,6 +14930,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  *         return False
  *     value = __parseBoolAsInt(s)
  */
+  __Pyx_TraceLine(845,0,__PYX_ERR(0, 845, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_s == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -14010,6 +14942,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  *     value = __parseBoolAsInt(s)
  *     if value == -1:
  */
+    __Pyx_TraceLine(846,0,__PYX_ERR(0, 846, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -14029,6 +14962,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  *     if value == -1:
  *         raise ValueError, f"Invalid boolean value: '{s}'"
  */
+  __Pyx_TraceLine(847,0,__PYX_ERR(0, 847, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 847, __pyx_L1_error)
   __pyx_v_value = __pyx_t_3;
 
@@ -14039,6 +14973,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  *         raise ValueError, f"Invalid boolean value: '{s}'"
  *     return value
  */
+  __Pyx_TraceLine(848,0,__PYX_ERR(0, 848, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_value == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -14049,6 +14984,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  *     return value
  * 
  */
+    __Pyx_TraceLine(849,0,__PYX_ERR(0, 849, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 849, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = 0;
@@ -14064,10 +15000,10 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
     __Pyx_GIVEREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7);
     __pyx_t_7 = 0;
-    __Pyx_INCREF(__pyx_kp_u__5);
+    __Pyx_INCREF(__pyx_kp_u__22);
     __pyx_t_5 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__5);
-    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__5);
+    __Pyx_GIVEREF(__pyx_kp_u__22);
+    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__22);
     __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 849, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -14091,6 +15027,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  * 
  * cdef inline int __parseBoolAsInt(text) except -2:
  */
+  __Pyx_TraceLine(850,0,__PYX_ERR(0, 850, __pyx_L1_error))
   __pyx_r = __pyx_v_value;
   goto __pyx_L0;
 
@@ -14109,6 +15046,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   __Pyx_AddTraceback("lxml.objectify.__parseBool", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14129,10 +15067,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_5__parseBool(PyObject *__pyx_self, Py
 
 static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__21)
   __Pyx_RefNannySetupContext("__parseBool", 0);
+  __Pyx_TraceCall("__parseBool (wrapper)", __pyx_f[0], 843, 0, __PYX_ERR(0, 843, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify___parseBool(__pyx_v_s, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 843, __pyx_L1_error)
   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error)
@@ -14148,6 +15089,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14162,9 +15104,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *
 
 static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__pyx_v_text) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__parseBoolAsInt", 0);
+  __Pyx_TraceCall("__parseBoolAsInt", __pyx_f[0], 852, 0, __PYX_ERR(0, 852, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":853
  * 
@@ -14173,6 +15117,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *         return 0
  *     elif text == 'true':
  */
+  __Pyx_TraceLine(853,0,__PYX_ERR(0, 853, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_false, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 853, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -14183,6 +15128,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *     elif text == 'true':
  *         return 1
  */
+    __Pyx_TraceLine(854,0,__PYX_ERR(0, 854, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -14202,6 +15148,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *         return 1
  *     elif text == '0':
  */
+  __Pyx_TraceLine(855,0,__PYX_ERR(0, 855, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 855, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -14212,6 +15159,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *     elif text == '0':
  *         return 0
  */
+    __Pyx_TraceLine(856,0,__PYX_ERR(0, 856, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -14231,6 +15179,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *         return 0
  *     elif text == '1':
  */
+  __Pyx_TraceLine(857,0,__PYX_ERR(0, 857, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_0, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 857, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -14241,6 +15190,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *     elif text == '1':
  *         return 1
  */
+    __Pyx_TraceLine(858,0,__PYX_ERR(0, 858, __pyx_L1_error))
     __pyx_r = 0;
     goto __pyx_L0;
 
@@ -14260,6 +15210,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *         return 1
  *     return -1
  */
+  __Pyx_TraceLine(859,0,__PYX_ERR(0, 859, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_1, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 859, __pyx_L1_error)
   if (__pyx_t_1) {
 
@@ -14270,6 +15221,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  *     return -1
  * 
  */
+    __Pyx_TraceLine(860,0,__PYX_ERR(0, 860, __pyx_L1_error))
     __pyx_r = 1;
     goto __pyx_L0;
 
@@ -14289,6 +15241,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  * 
  * cdef object _parseNumber(NumberElement element):
  */
+  __Pyx_TraceLine(861,0,__PYX_ERR(0, 861, __pyx_L1_error))
   __pyx_r = -1;
   goto __pyx_L0;
 
@@ -14305,6 +15258,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
   __Pyx_AddTraceback("lxml.objectify.__parseBoolAsInt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -2;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14319,6 +15273,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
 
 static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9objectify_NumberElement *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -14326,6 +15281,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_parseNumber", 0);
+  __Pyx_TraceCall("_parseNumber", __pyx_f[0], 863, 0, __PYX_ERR(0, 863, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":864
  * 
@@ -14334,6 +15290,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
  * 
  * cdef object _strValueOf(obj):
  */
+  __Pyx_TraceLine(864,0,__PYX_ERR(0, 864, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = textOf(__pyx_v_element->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -14407,6 +15364,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14421,12 +15379,14 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
 
 static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_strValueOf", 0);
+  __Pyx_TraceCall("_strValueOf", __pyx_f[0], 866, 0, __PYX_ERR(0, 866, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":867
  * 
@@ -14435,6 +15395,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *         return obj
  *     if isinstance(obj, _Element):
  */
+  __Pyx_TraceLine(867,0,__PYX_ERR(0, 867, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_obj) != 0);
   if (__pyx_t_1) {
 
@@ -14445,6 +15406,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *     if isinstance(obj, _Element):
  *         return textOf((<_Element>obj)._c_node) or u''
  */
+    __Pyx_TraceLine(868,0,__PYX_ERR(0, 868, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_obj);
     __pyx_r = __pyx_v_obj;
@@ -14466,6 +15428,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *         return textOf((<_Element>obj)._c_node) or u''
  *     if obj is None:
  */
+  __Pyx_TraceLine(869,0,__PYX_ERR(0, 869, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -14477,6 +15440,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *     if obj is None:
  *         return u''
  */
+    __Pyx_TraceLine(870,0,__PYX_ERR(0, 870, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = textOf(((struct LxmlElement *)__pyx_v_obj)->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 870, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -14489,8 +15453,8 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       goto __pyx_L5_bool_binop_done;
     }
-    __Pyx_INCREF(__pyx_kp_u__2);
-    __pyx_t_3 = __pyx_kp_u__2;
+    __Pyx_INCREF(__pyx_kp_u__3);
+    __pyx_t_3 = __pyx_kp_u__3;
     __pyx_L5_bool_binop_done:;
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
@@ -14512,6 +15476,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *         return u''
  *     return unicode(obj)
  */
+  __Pyx_TraceLine(871,0,__PYX_ERR(0, 871, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_obj == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -14523,9 +15488,10 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *     return unicode(obj)
  * 
  */
+    __Pyx_TraceLine(872,0,__PYX_ERR(0, 872, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(__pyx_kp_u__2);
-    __pyx_r = __pyx_kp_u__2;
+    __Pyx_INCREF(__pyx_kp_u__3);
+    __pyx_r = __pyx_kp_u__3;
     goto __pyx_L0;
 
     /* "lxml/objectify.pyx":871
@@ -14544,6 +15510,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  * 
  * cdef object _numericValueOf(obj):
  */
+  __Pyx_TraceLine(873,0,__PYX_ERR(0, 873, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -14567,6 +15534,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14581,6 +15549,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
 
 static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -14590,6 +15559,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_numericValueOf", 0);
+  __Pyx_TraceCall("_numericValueOf", __pyx_f[0], 875, 0, __PYX_ERR(0, 875, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":876
  * 
@@ -14598,6 +15568,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *         return _parseNumber(<NumberElement>obj)
  *     try:
  */
+  __Pyx_TraceLine(876,0,__PYX_ERR(0, 876, __pyx_L1_error))
   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_ptype_4lxml_9objectify_NumberElement); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -14609,6 +15580,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *     try:
  *         # not always numeric, but Python will raise the right exception
  */
+    __Pyx_TraceLine(877,0,__PYX_ERR(0, 877, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_3 = __pyx_f_4lxml_9objectify__parseNumber(((struct __pyx_obj_4lxml_9objectify_NumberElement *)__pyx_v_obj)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
@@ -14632,6 +15604,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *         # not always numeric, but Python will raise the right exception
  *         return obj.pyval
  */
+  __Pyx_TraceLine(878,0,__PYX_ERR(0, 878, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -14648,6 +15621,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *     except AttributeError:
  *         pass
  */
+      __Pyx_TraceLine(880,0,__PYX_ERR(0, 880, __pyx_L4_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 880, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_3);
@@ -14673,6 +15647,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *         pass
  *     return obj
  */
+    __Pyx_TraceLine(881,0,__PYX_ERR(0, 881, __pyx_L6_except_error))
     __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_7) {
       __Pyx_ErrRestore(0,0,0);
@@ -14713,6 +15688,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  * 
  * cdef _richcmpPyvals(left, right, int op):
  */
+  __Pyx_TraceLine(883,0,__PYX_ERR(0, 883, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_obj);
   __pyx_r = __pyx_v_obj;
@@ -14733,6 +15709,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14747,9 +15724,11 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
 
 static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left, PyObject *__pyx_v_right, int __pyx_v_op) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_richcmpPyvals", 0);
+  __Pyx_TraceCall("_richcmpPyvals", __pyx_f[0], 885, 0, __PYX_ERR(0, 885, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_left);
   __Pyx_INCREF(__pyx_v_right);
 
@@ -14760,6 +15739,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
  *     right = getattr(right, 'pyval', right)
  *     return python.PyObject_RichCompare(left, right, op)
  */
+  __Pyx_TraceLine(886,0,__PYX_ERR(0, 886, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_left, __pyx_n_s_pyval, __pyx_v_left); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_left, __pyx_t_1);
@@ -14772,6 +15752,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
  *     return python.PyObject_RichCompare(left, right, op)
  * 
  */
+  __Pyx_TraceLine(887,0,__PYX_ERR(0, 887, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_right, __pyx_n_s_pyval, __pyx_v_right); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_right, __pyx_t_1);
@@ -14784,6 +15765,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
  * 
  * 
  */
+  __Pyx_TraceLine(888,0,__PYX_ERR(0, 888, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = PyObject_RichCompare(__pyx_v_left, __pyx_v_right, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -14808,6 +15790,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
   __Pyx_XDECREF(__pyx_v_left);
   __Pyx_XDECREF(__pyx_v_right);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -14909,12 +15892,14 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
 
 static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_type_check, PyObject *__pyx_v_type_class, PyObject *__pyx_v_stringify) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 919, 0, __PYX_ERR(0, 919, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_name);
   __Pyx_INCREF(__pyx_v_stringify);
 
@@ -14925,6 +15910,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):
  */
+  __Pyx_TraceLine(920,0,__PYX_ERR(0, 920, __pyx_L1_error))
   __pyx_t_1 = PyBytes_Check(__pyx_v_name); 
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -14936,6 +15922,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"
  */
+    __Pyx_TraceLine(921,0,__PYX_ERR(0, 921, __pyx_L1_error))
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(0, 921, __pyx_L1_error)
@@ -14962,6 +15949,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):
  */
+  __Pyx_TraceLine(922,0,__PYX_ERR(0, 922, __pyx_L1_error))
   __pyx_t_2 = PyUnicode_Check(__pyx_v_name); 
   __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
@@ -14973,6 +15961,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  */
+    __Pyx_TraceLine(923,0,__PYX_ERR(0, 923, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_name_must_be_a_string, 0, 0);
     __PYX_ERR(0, 923, __pyx_L1_error)
 
@@ -14993,6 +15982,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \
  */
+  __Pyx_TraceLine(924,0,__PYX_ERR(0, 924, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_type_check != Py_None);
   __pyx_t_4 = (__pyx_t_2 != 0);
   if (__pyx_t_4) {
@@ -15013,6 +16003,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         if name != TREE_PYTYPE_NAME and \
  *                not issubclass(type_class, ObjectifiedDataElement):
  */
+    __Pyx_TraceLine(925,0,__PYX_ERR(0, 925, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_check_function_must_be_call, 0, 0);
     __PYX_ERR(0, 925, __pyx_L1_error)
 
@@ -15032,6 +16023,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \
  */
+  __Pyx_TraceLine(926,0,__PYX_ERR(0, 926, __pyx_L1_error))
   __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 926, __pyx_L1_error)
   if (__pyx_t_2) {
   } else {
@@ -15046,6 +16038,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             raise TypeError, \
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  */
+  __Pyx_TraceLine(927,0,__PYX_ERR(0, 927, __pyx_L1_error))
   __pyx_t_2 = PyObject_IsSubclass(__pyx_v_type_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 927, __pyx_L1_error)
   __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
   __pyx_t_1 = __pyx_t_4;
@@ -15058,6 +16051,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \
  */
+  __Pyx_TraceLine(926,0,__PYX_ERR(0, 926, __pyx_L1_error))
   if (unlikely(__pyx_t_1)) {
 
     /* "lxml/objectify.pyx":928
@@ -15067,6 +16061,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  *         self.name  = name
  */
+    __Pyx_TraceLine(928,0,__PYX_ERR(0, 928, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Data_classes_must_inherit_from_O, 0, 0);
     __PYX_ERR(0, 928, __pyx_L1_error)
 
@@ -15086,6 +16081,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self._type = type_class
  *         self.type_check = type_check
  */
+  __Pyx_TraceLine(930,0,__PYX_ERR(0, 930, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_name);
   __Pyx_GIVEREF(__pyx_v_name);
   __Pyx_GOTREF(__pyx_v_self->name);
@@ -15099,6 +16095,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self.type_check = type_check
  *         if stringify is None:
  */
+  __Pyx_TraceLine(931,0,__PYX_ERR(0, 931, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_type_class);
   __Pyx_GIVEREF(__pyx_v_type_class);
   __Pyx_GOTREF(__pyx_v_self->_type);
@@ -15112,6 +16109,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         if stringify is None:
  *             stringify = unicode
  */
+  __Pyx_TraceLine(932,0,__PYX_ERR(0, 932, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_type_check);
   __Pyx_GIVEREF(__pyx_v_type_check);
   __Pyx_GOTREF(__pyx_v_self->type_check);
@@ -15125,6 +16123,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             stringify = unicode
  *         self.stringify = stringify
  */
+  __Pyx_TraceLine(933,0,__PYX_ERR(0, 933, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_stringify == Py_None);
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
@@ -15136,6 +16135,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self.stringify = stringify
  *         self._schema_types = []
  */
+    __Pyx_TraceLine(934,0,__PYX_ERR(0, 934, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
     __Pyx_DECREF_SET(__pyx_v_stringify, ((PyObject *)(&PyUnicode_Type)));
 
@@ -15155,6 +16155,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self._schema_types = []
  * 
  */
+  __Pyx_TraceLine(935,0,__PYX_ERR(0, 935, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_stringify);
   __Pyx_GIVEREF(__pyx_v_stringify);
   __Pyx_GOTREF(__pyx_v_self->stringify);
@@ -15168,6 +16169,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  * 
  *     def __repr__(self):
  */
+  __Pyx_TraceLine(936,0,__PYX_ERR(0, 936, __pyx_L1_error))
   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 936, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -15194,6 +16196,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_stringify);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15221,10 +16224,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_3__repr__(PyObject *__pyx_v_s
 
 static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
+  __Pyx_TraceCall("__repr__", __pyx_f[0], 938, 0, __PYX_ERR(0, 938, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":939
  * 
@@ -15233,6 +16238,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
  * 
  *     def register(self, before=None, after=None):
  */
+  __Pyx_TraceLine(939,0,__PYX_ERR(0, 939, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 939, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -15267,6 +16273,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -15360,6 +16367,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   PyObject *__pyx_v_pytype = NULL;
   PyObject *__pyx_v_xs_type = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -15373,7 +16381,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   PyObject *(*__pyx_t_10)(PyObject *);
   int __pyx_t_11;
   int __pyx_t_12;
+  __Pyx_TraceFrameInit(__pyx_codeobj__23)
   __Pyx_RefNannySetupContext("register", 0);
+  __Pyx_TraceCall("register", __pyx_f[0], 941, 0, __PYX_ERR(0, 941, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_before);
   __Pyx_INCREF(__pyx_v_after);
 
@@ -15384,6 +16394,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  */
+  __Pyx_TraceLine(951,0,__PYX_ERR(0, 951, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->name, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 951, __pyx_L1_error)
   if (unlikely(__pyx_t_1)) {
 
@@ -15394,6 +16405,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:
  */
+    __Pyx_TraceLine(952,0,__PYX_ERR(0, 952, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Cannot_register_tree_type, 0, 0);
     __PYX_ERR(0, 952, __pyx_L1_error)
 
@@ -15413,6 +16425,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:
  */
+  __Pyx_TraceLine(953,0,__PYX_ERR(0, 953, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->type_check != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -15424,6 +16437,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)
  */
+    __Pyx_TraceLine(954,0,__PYX_ERR(0, 954, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(0, 954, __pyx_L1_error)
@@ -15447,6 +16461,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     _TYPE_CHECKS.remove(item)
  *                     break
  */
+      __Pyx_TraceLine(955,0,__PYX_ERR(0, 955, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 955, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_2 = (__pyx_t_5 == __pyx_v_self->type_check);
@@ -15461,6 +16476,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     break
  *             entry = (self.type_check, self)
  */
+        __Pyx_TraceLine(956,0,__PYX_ERR(0, 956, __pyx_L1_error))
         __pyx_t_5 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_item); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -15472,6 +16488,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             entry = (self.type_check, self)
  *             first_pos = 0
  */
+        __Pyx_TraceLine(957,0,__PYX_ERR(0, 957, __pyx_L1_error))
         goto __pyx_L6_break;
 
         /* "lxml/objectify.pyx":955
@@ -15490,6 +16507,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)
  */
+      __Pyx_TraceLine(954,0,__PYX_ERR(0, 954, __pyx_L1_error))
     }
     __pyx_L6_break:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15501,6 +16519,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             first_pos = 0
  *             last_pos = -1
  */
+    __Pyx_TraceLine(958,0,__PYX_ERR(0, 958, __pyx_L1_error))
     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 958, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_self->type_check);
@@ -15519,6 +16538,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             last_pos = -1
  *             if before or after:
  */
+    __Pyx_TraceLine(959,0,__PYX_ERR(0, 959, __pyx_L1_error))
     __Pyx_INCREF(__pyx_int_0);
     __pyx_v_first_pos = __pyx_int_0;
 
@@ -15529,6 +16549,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             if before or after:
  *                 if before is None:
  */
+    __Pyx_TraceLine(960,0,__PYX_ERR(0, 960, __pyx_L1_error))
     __Pyx_INCREF(__pyx_int_neg_1);
     __pyx_v_last_pos = __pyx_int_neg_1;
 
@@ -15539,6 +16560,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 if before is None:
  *                     before = ()
  */
+    __Pyx_TraceLine(961,0,__PYX_ERR(0, 961, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 961, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
@@ -15557,6 +16579,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     before = ()
  *                 elif after is None:
  */
+      __Pyx_TraceLine(962,0,__PYX_ERR(0, 962, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_before == Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
@@ -15568,6 +16591,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 elif after is None:
  *                     after = ()
  */
+        __Pyx_TraceLine(963,0,__PYX_ERR(0, 963, __pyx_L1_error))
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_before, __pyx_empty_tuple);
 
@@ -15588,6 +16612,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  */
+      __Pyx_TraceLine(964,0,__PYX_ERR(0, 964, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_after == Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -15599,6 +16624,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:
  */
+        __Pyx_TraceLine(965,0,__PYX_ERR(0, 965, __pyx_L1_error))
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_after, __pyx_empty_tuple);
 
@@ -15619,6 +16645,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  */
+      __Pyx_TraceLine(966,0,__PYX_ERR(0, 966, __pyx_L1_error))
       __Pyx_INCREF(__pyx_int_0);
       __pyx_t_3 = __pyx_int_0;
       __pyx_t_5 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
@@ -15695,6 +16722,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                         last_pos = i
  *                     if pytype.name in after:
  */
+        __Pyx_TraceLine(967,0,__PYX_ERR(0, 967, __pyx_L1_error))
         __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 967, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 967, __pyx_L1_error)
@@ -15720,6 +16748,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     if pytype.name in after:
  *                         first_pos = i+1
  */
+          __Pyx_TraceLine(968,0,__PYX_ERR(0, 968, __pyx_L1_error))
           __Pyx_INCREF(__pyx_v_i);
           __Pyx_DECREF_SET(__pyx_v_last_pos, __pyx_v_i);
 
@@ -15739,6 +16768,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                         first_pos = i+1
  *             if last_pos == -1:
  */
+        __Pyx_TraceLine(969,0,__PYX_ERR(0, 969, __pyx_L1_error))
         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 969, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 969, __pyx_L1_error)
@@ -15753,6 +16783,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  */
+          __Pyx_TraceLine(970,0,__PYX_ERR(0, 970, __pyx_L1_error))
           __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 970, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_first_pos, __pyx_t_6);
@@ -15774,6 +16805,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  */
+        __Pyx_TraceLine(966,0,__PYX_ERR(0, 966, __pyx_L1_error))
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15794,6 +16826,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:
  */
+    __Pyx_TraceLine(971,0,__PYX_ERR(0, 971, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 971, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 971, __pyx_L1_error)
@@ -15807,6 +16840,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             elif first_pos > last_pos:
  *                 raise ValueError, u"inconsistent before/after dependencies"
  */
+      __Pyx_TraceLine(972,0,__PYX_ERR(0, 972, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
         __PYX_ERR(0, 972, __pyx_L1_error)
@@ -15830,6 +16864,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 raise ValueError, u"inconsistent before/after dependencies"
  *             else:
  */
+    __Pyx_TraceLine(973,0,__PYX_ERR(0, 973, __pyx_L1_error))
     __pyx_t_3 = PyObject_RichCompare(__pyx_v_first_pos, __pyx_v_last_pos, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 973, __pyx_L1_error)
     __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 973, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15842,6 +16877,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             else:
  *                 _TYPE_CHECKS.insert(last_pos, entry)
  */
+      __Pyx_TraceLine(974,0,__PYX_ERR(0, 974, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_inconsistent_before_after_depend, 0, 0);
       __PYX_ERR(0, 974, __pyx_L1_error)
 
@@ -15861,6 +16897,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  * 
  *         _PYTYPE_DICT[self.name] = self
  */
+    __Pyx_TraceLine(976,0,__PYX_ERR(0, 976, __pyx_L1_error))
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "insert");
@@ -15887,6 +16924,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *         for xs_type in self._schema_types:
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  */
+  __Pyx_TraceLine(978,0,__PYX_ERR(0, 978, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
     __PYX_ERR(0, 978, __pyx_L1_error)
@@ -15900,6 +16938,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  */
+  __Pyx_TraceLine(979,0,__PYX_ERR(0, 979, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_schema_types == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(0, 979, __pyx_L1_error)
@@ -15923,6 +16962,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  * 
  *     def unregister(self):
  */
+    __Pyx_TraceLine(980,0,__PYX_ERR(0, 980, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 980, __pyx_L1_error)
@@ -15936,6 +16976,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  */
+    __Pyx_TraceLine(979,0,__PYX_ERR(0, 979, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -15971,6 +17012,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   __Pyx_XDECREF(__pyx_v_before);
   __Pyx_XDECREF(__pyx_v_after);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16002,6 +17044,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   PyObject *__pyx_v_xs_type = NULL;
   PyObject *__pyx_v_pytype = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -16016,7 +17059,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   PyObject *__pyx_t_11 = NULL;
   PyObject *__pyx_t_12 = NULL;
   int __pyx_t_13;
+  __Pyx_TraceFrameInit(__pyx_codeobj__24)
   __Pyx_RefNannySetupContext("unregister", 0);
+  __Pyx_TraceCall("unregister", __pyx_f[0], 982, 0, __PYX_ERR(0, 982, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":984
  *     def unregister(self):
@@ -16025,6 +17070,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  */
+  __Pyx_TraceLine(984,0,__PYX_ERR(0, 984, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
     __PYX_ERR(0, 984, __pyx_L1_error)
@@ -16043,6 +17089,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:
  */
+    __Pyx_TraceLine(985,0,__PYX_ERR(0, 985, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 985, __pyx_L1_error)
@@ -16065,6 +17112,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  */
+  __Pyx_TraceLine(986,0,__PYX_ERR(0, 986, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
     __PYX_ERR(0, 986, __pyx_L1_error)
@@ -16142,6 +17190,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:
  */
+    __Pyx_TraceLine(987,0,__PYX_ERR(0, 987, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_pytype == ((PyObject *)__pyx_v_self));
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -16153,6 +17202,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *         if self.type_check is None:
  *             return
  */
+      __Pyx_TraceLine(988,0,__PYX_ERR(0, 988, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(0, 988, __pyx_L1_error)
@@ -16175,6 +17225,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  */
+    __Pyx_TraceLine(986,0,__PYX_ERR(0, 986, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -16185,6 +17236,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             return
  *         try:
  */
+  __Pyx_TraceLine(989,0,__PYX_ERR(0, 989, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->type_check == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -16196,6 +17248,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *         try:
  *             _TYPE_CHECKS.remove( (self.type_check, self) )
  */
+    __Pyx_TraceLine(990,0,__PYX_ERR(0, 990, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -16216,6 +17269,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             _TYPE_CHECKS.remove( (self.type_check, self) )
  *         except ValueError:
  */
+  __Pyx_TraceLine(991,0,__PYX_ERR(0, 991, __pyx_L10_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -16232,6 +17286,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *         except ValueError:
  *             pass
  */
+      __Pyx_TraceLine(992,0,__PYX_ERR(0, 992, __pyx_L10_error))
       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_self->type_check);
@@ -16271,6 +17326,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  *             pass
  * 
  */
+    __Pyx_TraceLine(993,0,__PYX_ERR(0, 993, __pyx_L12_except_error))
     __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
     if (__pyx_t_13) {
       __Pyx_ErrRestore(0,0,0);
@@ -16322,6 +17378,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   __Pyx_XDECREF(__pyx_v_xs_type);
   __Pyx_XDECREF(__pyx_v_pytype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16349,8 +17406,10 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_14xmlSchemaTypes_1__get__(PyO
 
 static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 1001, 0, __PYX_ERR(0, 1001, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1002
  *         """
@@ -16359,6 +17418,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
  *         def __set__(self, types):
  *             self._schema_types = list(map(unicode, types))
  */
+  __Pyx_TraceLine(1002,0,__PYX_ERR(0, 1002, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_schema_types);
   __pyx_r = __pyx_v_self->_schema_types;
@@ -16373,8 +17433,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.PyType.xmlSchemaTypes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16402,10 +17466,12 @@ static int __pyx_pw_4lxml_9objectify_6PyType_14xmlSchemaTypes_3__set__(PyObject
 
 static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self, PyObject *__pyx_v_types) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
+  __Pyx_TraceCall("__set__", __pyx_f[0], 1003, 0, __PYX_ERR(0, 1003, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1004
  *             return self._schema_types
@@ -16414,6 +17480,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
  * 
  * 
  */
+  __Pyx_TraceLine(1004,0,__PYX_ERR(0, 1004, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
@@ -16451,6 +17518,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   __Pyx_AddTraceback("lxml.objectify.PyType.xmlSchemaTypes.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16478,16 +17546,22 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_4name_1__get__(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4name___get__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 914, 0, __PYX_ERR(0, 914, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->name);
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.PyType.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16515,16 +17589,22 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_10type_check_1__get__(PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_6PyType_10type_check___get__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 915, 0, __PYX_ERR(0, 915, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->type_check);
   __pyx_r = __pyx_v_self->type_check;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.PyType.type_check.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16552,16 +17632,22 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_9stringify_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_6PyType_9stringify___get__(struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[0], 916, 0, __PYX_ERR(0, 916, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->stringify);
   __pyx_r = __pyx_v_self->stringify;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.PyType.stringify.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16590,10 +17676,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_7__lower_bool(PyObject *__pyx_self, P
 
 static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_b) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
+  __Pyx_TraceFrameInit(__pyx_codeobj__25)
   __Pyx_RefNannySetupContext("__lower_bool", 0);
+  __Pyx_TraceCall("__lower_bool", __pyx_f[0], 1011, 0, __PYX_ERR(0, 1011, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1012
  * 
@@ -16602,6 +17691,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
  * 
  * cdef _pytypename(obj):
  */
+  __Pyx_TraceLine(1012,0,__PYX_ERR(0, 1012, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1012, __pyx_L1_error)
   if (__pyx_t_2) {
@@ -16630,6 +17720,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16644,10 +17735,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
 
 static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_pytypename", 0);
+  __Pyx_TraceCall("_pytypename", __pyx_f[0], 1014, 0, __PYX_ERR(0, 1014, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1015
  * 
@@ -16656,6 +17749,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
  * 
  * def pytypename(obj):
  */
+  __Pyx_TraceLine(1015,0,__PYX_ERR(0, 1015, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   if ((_isString(__pyx_v_obj) != 0)) {
     __Pyx_INCREF(__pyx_n_u_str);
@@ -16686,6 +17780,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16715,9 +17810,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_9pytypename(PyObject *__pyx_self, PyO
 
 static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__26)
   __Pyx_RefNannySetupContext("pytypename", 0);
+  __Pyx_TraceCall("pytypename", __pyx_f[0], 1017, 0, __PYX_ERR(0, 1017, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1022
  *     Find the name of the corresponding PyType for a Python object.
@@ -16726,6 +17824,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
  * 
  * cdef _registerPyTypes():
  */
+  __Pyx_TraceLine(1022,0,__PYX_ERR(0, 1022, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1022, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -16748,6 +17847,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -16763,11 +17863,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
 static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_pytype = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_registerPyTypes", 0);
+  __Pyx_TraceCall("_registerPyTypes", __pyx_f[0], 1024, 0, __PYX_ERR(0, 1024, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1025
  * 
@@ -16776,6 +17878,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",
  *                              u"unsignedByte", u"nonPositiveInteger",
  */
+  __Pyx_TraceLine(1025,0,__PYX_ERR(0, 1025, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_u_int);
@@ -16800,7 +17903,8 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) __PYX_ERR(0, 1026, __pyx_L1_error)
+  __Pyx_TraceLine(1026,0,__PYX_ERR(0, 1026, __pyx_L1_error))
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__27) < 0) __PYX_ERR(0, 1026, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1030
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
@@ -16809,6 +17913,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     # 'long' type just for backwards compatibility
  */
+  __Pyx_TraceLine(1030,0,__PYX_ERR(0, 1030, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
@@ -16838,6 +17943,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.register()
  * 
  */
+  __Pyx_TraceLine(1033,0,__PYX_ERR(0, 1033, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1033, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_long);
@@ -16862,6 +17968,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     pytype = PyType(u'float', float, FloatElement, repr)
  */
+  __Pyx_TraceLine(1034,0,__PYX_ERR(0, 1034, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1034, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -16891,6 +17998,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.xmlSchemaTypes = (u"double", u"float")
  *     pytype.register()
  */
+  __Pyx_TraceLine(1036,0,__PYX_ERR(0, 1036, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1036, __pyx_L1_error)
@@ -16920,7 +18028,8 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
+  __Pyx_TraceLine(1037,0,__PYX_ERR(0, 1037, __pyx_L1_error))
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__28) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1038
  *     pytype = PyType(u'float', float, FloatElement, repr)
@@ -16929,6 +18038,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  */
+  __Pyx_TraceLine(1038,0,__PYX_ERR(0, 1038, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
@@ -16958,6 +18068,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.xmlSchemaTypes = (u"boolean",)
  *     pytype.register()
  */
+  __Pyx_TraceLine(1040,0,__PYX_ERR(0, 1040, __pyx_L1_error))
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1040, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1040, __pyx_L1_error)
@@ -16989,7 +18100,8 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __Pyx_TraceLine(1041,0,__PYX_ERR(0, 1041, __pyx_L1_error))
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__29) < 0) __PYX_ERR(0, 1041, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1042
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
@@ -16998,6 +18110,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     pytype = PyType(u'str', None, StringElement)
  */
+  __Pyx_TraceLine(1042,0,__PYX_ERR(0, 1042, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = NULL;
@@ -17027,6 +18140,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  */
+  __Pyx_TraceLine(1044,0,__PYX_ERR(0, 1044, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_str);
@@ -17051,7 +18165,8 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__9) < 0) __PYX_ERR(0, 1045, __pyx_L1_error)
+  __Pyx_TraceLine(1045,0,__PYX_ERR(0, 1045, __pyx_L1_error))
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__30) < 0) __PYX_ERR(0, 1045, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1048
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
@@ -17060,6 +18175,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     # since lxml 2.0
  */
+  __Pyx_TraceLine(1048,0,__PYX_ERR(0, 1048, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1048, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
@@ -17089,6 +18205,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.register()
  * 
  */
+  __Pyx_TraceLine(1051,0,__PYX_ERR(0, 1051, __pyx_L1_error))
   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_n_u_NoneType);
@@ -17113,6 +18230,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  *     # backwards compatibility
  */
+  __Pyx_TraceLine(1052,0,__PYX_ERR(0, 1052, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = NULL;
@@ -17142,6 +18260,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  *     pytype.register()
  * 
  */
+  __Pyx_TraceLine(1055,0,__PYX_ERR(0, 1055, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_none);
@@ -17166,6 +18285,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
  * 
  * # non-registered PyType for inner tree elements
  */
+  __Pyx_TraceLine(1056,0,__PYX_ERR(0, 1056, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1056, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
@@ -17208,6 +18328,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_pytype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -17242,6 +18363,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   PyObject *__pyx_v_pytype = NULL;
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -17254,7 +18376,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   int __pyx_t_9;
   int __pyx_t_10;
   PyObject *(*__pyx_t_11)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__31)
   __Pyx_RefNannySetupContext("getRegisteredTypes", 0);
+  __Pyx_TraceCall("getRegisteredTypes", __pyx_f[0], 1063, 0, __PYX_ERR(0, 1063, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1078
  *     end of the type list.
@@ -17263,6 +18387,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:
  */
+  __Pyx_TraceLine(1078,0,__PYX_ERR(0, 1078, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_types = ((PyObject*)__pyx_t_1);
@@ -17275,6 +18400,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  */
+  __Pyx_TraceLine(1079,0,__PYX_ERR(0, 1079, __pyx_L1_error))
   __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_known = ((PyObject*)__pyx_t_1);
@@ -17287,6 +18413,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         name = pytype.name
  *         if name not in known:
  */
+  __Pyx_TraceLine(1080,0,__PYX_ERR(0, 1080, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(0, 1080, __pyx_L1_error)
@@ -17358,6 +18485,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         if name not in known:
  *             known.add(name)
  */
+    __Pyx_TraceLine(1081,0,__PYX_ERR(0, 1081, __pyx_L1_error))
     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1081, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
@@ -17370,6 +18498,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *             known.add(name)
  *             types.append(pytype)
  */
+    __Pyx_TraceLine(1082,0,__PYX_ERR(0, 1082, __pyx_L1_error))
     __pyx_t_8 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1082, __pyx_L1_error)
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
@@ -17381,6 +18510,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():
  */
+      __Pyx_TraceLine(1083,0,__PYX_ERR(0, 1083, __pyx_L1_error))
       __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1083, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1084
@@ -17390,6 +18520,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  */
+      __Pyx_TraceLine(1084,0,__PYX_ERR(0, 1084, __pyx_L1_error))
       __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1084, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1082
@@ -17408,6 +18539,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         name = pytype.name
  *         if name not in known:
  */
+    __Pyx_TraceLine(1080,0,__PYX_ERR(0, 1080, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -17418,6 +18550,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         name = pytype.name
  *         if name not in known:
  */
+  __Pyx_TraceLine(1085,0,__PYX_ERR(0, 1085, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
     __PYX_ERR(0, 1085, __pyx_L1_error)
@@ -17474,6 +18607,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         if name not in known:
  *             known.add(name)
  */
+    __Pyx_TraceLine(1086,0,__PYX_ERR(0, 1086, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
@@ -17486,6 +18620,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *             known.add(name)
  *             types.append(pytype)
  */
+    __Pyx_TraceLine(1087,0,__PYX_ERR(0, 1087, __pyx_L1_error))
     __pyx_t_9 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1087, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
@@ -17497,6 +18632,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *             types.append(pytype)
  *     return types
  */
+      __Pyx_TraceLine(1088,0,__PYX_ERR(0, 1088, __pyx_L1_error))
       __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1088, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1089
@@ -17506,6 +18642,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *     return types
  * 
  */
+      __Pyx_TraceLine(1089,0,__PYX_ERR(0, 1089, __pyx_L1_error))
       __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1089, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1087
@@ -17524,6 +18661,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  *         name = pytype.name
  *         if name not in known:
  */
+    __Pyx_TraceLine(1085,0,__PYX_ERR(0, 1085, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -17534,6 +18672,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):
  */
+  __Pyx_TraceLine(1090,0,__PYX_ERR(0, 1090, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_types);
   __pyx_r = __pyx_v_types;
@@ -17563,6 +18702,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   __Pyx_XDECREF(__pyx_v_pytype);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -17579,6 +18719,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   PyObject *__pyx_v_type_check = NULL;
   PyObject *__pyx_v_tested_pytype = NULL;
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -17594,6 +18735,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   PyObject *__pyx_t_12 = NULL;
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("_guessPyType", 0);
+  __Pyx_TraceCall("_guessPyType", __pyx_f[0], 1092, 0, __PYX_ERR(0, 1092, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1093
  * 
@@ -17602,6 +18744,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  */
+  __Pyx_TraceLine(1093,0,__PYX_ERR(0, 1093, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_value == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -17613,6 +18756,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:
  */
+    __Pyx_TraceLine(1094,0,__PYX_ERR(0, 1094, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -17633,6 +18777,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *         try:
  *             type_check(value)
  */
+  __Pyx_TraceLine(1095,0,__PYX_ERR(0, 1095, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(0, 1095, __pyx_L1_error)
@@ -17704,6 +18849,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *             type_check(value)
  *             return <PyType>tested_pytype
  */
+    __Pyx_TraceLine(1096,0,__PYX_ERR(0, 1096, __pyx_L8_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -17720,6 +18866,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *             return <PyType>tested_pytype
  *         except IGNORABLE_ERRORS:
  */
+        __Pyx_TraceLine(1097,0,__PYX_ERR(0, 1097, __pyx_L8_error))
         __Pyx_INCREF(__pyx_v_type_check);
         __pyx_t_7 = __pyx_v_type_check; __pyx_t_6 = NULL;
         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
@@ -17773,6 +18920,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *         except IGNORABLE_ERRORS:
  *             # could not be parsed as the specified type => ignore
  */
+        __Pyx_TraceLine(1098,0,__PYX_ERR(0, 1098, __pyx_L8_error))
         __Pyx_XDECREF(((PyObject *)__pyx_r));
         __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_tested_pytype)));
         __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_tested_pytype);
@@ -17800,6 +18948,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *             # could not be parsed as the specified type => ignore
  *             pass
  */
+      __Pyx_TraceLine(1099,0,__PYX_ERR(0, 1099, __pyx_L10_except_error))
       __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS);
       if (__pyx_t_13) {
         __Pyx_ErrRestore(0,0,0);
@@ -17840,6 +18989,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  *         try:
  *             type_check(value)
  */
+    __Pyx_TraceLine(1095,0,__PYX_ERR(0, 1095, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -17850,6 +19000,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  */
+  __Pyx_TraceLine(1102,0,__PYX_ERR(0, 1102, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __Pyx_INCREF(((PyObject *)__pyx_v_defaulttype));
   __pyx_r = __pyx_v_defaulttype;
@@ -17876,6 +19027,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   __Pyx_XDECREF(__pyx_v_type_check);
   __Pyx_XDECREF(__pyx_v_tested_pytype);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -17893,6 +19045,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   PyObject *__pyx_v_type_check = NULL;
   PyObject *__pyx_v_pytype = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -17908,6 +19061,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   PyObject *__pyx_t_12 = NULL;
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("_guessElementClass", 0);
+  __Pyx_TraceCall("_guessElementClass", __pyx_f[0], 1104, 0, __PYX_ERR(0, 1104, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1105
  * 
@@ -17916,6 +19070,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *     if value is None:
  *         return None
  */
+  __Pyx_TraceLine(1105,0,__PYX_ERR(0, 1105, __pyx_L1_error))
   __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1105, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
@@ -17928,6 +19083,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *         return None
  *     if value == '':
  */
+  __Pyx_TraceLine(1106,0,__PYX_ERR(0, 1106, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -17939,6 +19095,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *     if value == '':
  *         return StringElement
  */
+    __Pyx_TraceLine(1107,0,__PYX_ERR(0, 1107, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -17959,7 +19116,8 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *         return StringElement
  * 
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s__2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1108, __pyx_L1_error)
+  __Pyx_TraceLine(1108,0,__PYX_ERR(0, 1108, __pyx_L1_error))
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s__3, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1108, __pyx_L1_error)
   if (__pyx_t_3) {
 
     /* "lxml/objectify.pyx":1109
@@ -17969,6 +19127,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  */
+    __Pyx_TraceLine(1109,0,__PYX_ERR(0, 1109, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement);
@@ -17990,6 +19149,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *         try:
  *             type_check(value)
  */
+  __Pyx_TraceLine(1111,0,__PYX_ERR(0, 1111, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(0, 1111, __pyx_L1_error)
@@ -18061,6 +19221,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *             type_check(value)
  *             return (<PyType>pytype)._type
  */
+    __Pyx_TraceLine(1112,0,__PYX_ERR(0, 1112, __pyx_L9_error))
     {
       __Pyx_PyThreadState_declare
       __Pyx_PyThreadState_assign
@@ -18077,6 +19238,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *             return (<PyType>pytype)._type
  *         except IGNORABLE_ERRORS:
  */
+        __Pyx_TraceLine(1113,0,__PYX_ERR(0, 1113, __pyx_L9_error))
         __Pyx_INCREF(__pyx_v_type_check);
         __pyx_t_7 = __pyx_v_type_check; __pyx_t_6 = NULL;
         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
@@ -18130,6 +19292,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *         except IGNORABLE_ERRORS:
  *             pass
  */
+        __Pyx_TraceLine(1114,0,__PYX_ERR(0, 1114, __pyx_L9_error))
         __Pyx_XDECREF(__pyx_r);
         __Pyx_INCREF(((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->_type);
         __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->_type;
@@ -18157,6 +19320,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *             pass
  *     return None
  */
+      __Pyx_TraceLine(1115,0,__PYX_ERR(0, 1115, __pyx_L11_except_error))
       __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS);
       if (__pyx_t_13) {
         __Pyx_ErrRestore(0,0,0);
@@ -18197,6 +19361,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  *         try:
  *             type_check(value)
  */
+    __Pyx_TraceLine(1111,0,__PYX_ERR(0, 1111, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -18207,6 +19372,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(1117,0,__PYX_ERR(0, 1117, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -18233,6 +19399,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   __Pyx_XDECREF(__pyx_v_type_check);
   __Pyx_XDECREF(__pyx_v_pytype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -18283,6 +19450,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   PyObject *__pyx_v_value = NULL;
   PyObject *__pyx_v_pytype = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -18298,6 +19466,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   PyObject *__pyx_t_12 = NULL;
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[0], 1130, 0, __PYX_ERR(0, 1130, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1137
  *         cdef bint has_children
@@ -18306,6 +19475,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             element = _makeElement(self._tag, None, attrib, self._nsmap)
  *         else:
  */
+  __Pyx_TraceLine(1137,0,__PYX_ERR(0, 1137, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_self->_element_factory == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -18317,6 +19487,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *         else:
  *             element = self._element_factory(self._tag, attrib, self._nsmap)
  */
+    __Pyx_TraceLine(1138,0,__PYX_ERR(0, 1138, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_self->_tag;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = __pyx_v_self->_nsmap;
@@ -18345,6 +19516,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  * 
  *         pytype_name = None
  */
+  __Pyx_TraceLine(1140,0,__PYX_ERR(0, 1140, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_self->_element_factory);
     __pyx_t_4 = __pyx_v_self->_element_factory; __pyx_t_3 = NULL;
@@ -18408,6 +19580,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *         has_children = False
  *         has_string_value = False
  */
+  __Pyx_TraceLine(1142,0,__PYX_ERR(0, 1142, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype_name = Py_None;
 
@@ -18418,6 +19591,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *         has_string_value = False
  *         for child in children:
  */
+  __Pyx_TraceLine(1143,0,__PYX_ERR(0, 1143, __pyx_L1_error))
   __pyx_v_has_children = 0;
 
   /* "lxml/objectify.pyx":1144
@@ -18427,6 +19601,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *         for child in children:
  *             if child is None:
  */
+  __Pyx_TraceLine(1144,0,__PYX_ERR(0, 1144, __pyx_L1_error))
   __pyx_v_has_string_value = 0;
 
   /* "lxml/objectify.pyx":1145
@@ -18436,6 +19611,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             if child is None:
  *                 if len(children) == 1:
  */
+  __Pyx_TraceLine(1145,0,__PYX_ERR(0, 1145, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_children; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
   for (;;) {
     if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
@@ -18455,6 +19631,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 if len(children) == 1:
  *                     cetree.setAttributeValue(
  */
+    __Pyx_TraceLine(1146,0,__PYX_ERR(0, 1146, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_child == Py_None);
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -18466,6 +19643,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  */
+      __Pyx_TraceLine(1147,0,__PYX_ERR(0, 1147, __pyx_L1_error))
       __pyx_t_9 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1147, __pyx_L1_error)
       __pyx_t_1 = ((__pyx_t_9 == 1) != 0);
       if (__pyx_t_1) {
@@ -18477,6 +19655,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             elif python._isString(child):
  *                 _add_text(element, child)
  */
+        __Pyx_TraceLine(1149,0,__PYX_ERR(0, 1149, __pyx_L1_error))
         __pyx_t_4 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
         __Pyx_INCREF(__pyx_t_4);
 
@@ -18487,6 +19666,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):
  */
+        __Pyx_TraceLine(1148,0,__PYX_ERR(0, 1148, __pyx_L1_error))
         __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1148, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -18516,6 +19696,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 _add_text(element, child)
  *                 has_string_value = True
  */
+    __Pyx_TraceLine(1150,0,__PYX_ERR(0, 1150, __pyx_L1_error))
     __pyx_t_1 = (_isString(__pyx_v_child) != 0);
     if (__pyx_t_1) {
 
@@ -18526,6 +19707,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 has_string_value = True
  *             elif isinstance(child, _Element):
  */
+      __Pyx_TraceLine(1151,0,__PYX_ERR(0, 1151, __pyx_L1_error))
       __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -18537,6 +19719,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             elif isinstance(child, _Element):
  *                 cetree.appendChildToElement(element, <_Element>child)
  */
+      __Pyx_TraceLine(1152,0,__PYX_ERR(0, 1152, __pyx_L1_error))
       __pyx_v_has_string_value = 1;
 
       /* "lxml/objectify.pyx":1150
@@ -18556,6 +19739,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True
  */
+    __Pyx_TraceLine(1153,0,__PYX_ERR(0, 1153, __pyx_L1_error))
     __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element); 
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -18567,6 +19751,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  */
+      __Pyx_TraceLine(1154,0,__PYX_ERR(0, 1154, __pyx_L1_error))
       __pyx_t_6 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1154, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1155
@@ -18576,6 +19761,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  */
+      __Pyx_TraceLine(1155,0,__PYX_ERR(0, 1155, __pyx_L1_error))
       __pyx_v_has_children = 1;
 
       /* "lxml/objectify.pyx":1153
@@ -18595,6 +19781,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:
  */
+    __Pyx_TraceLine(1156,0,__PYX_ERR(0, 1156, __pyx_L1_error))
     __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_child, __pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -18606,6 +19793,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 if elementMaker._element_factory is None:
  *                     cetree.makeSubElement(element, elementMaker._tag,
  */
+      __Pyx_TraceLine(1157,0,__PYX_ERR(0, 1157, __pyx_L1_error))
       __pyx_t_4 = __pyx_v_child;
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_XDECREF_SET(__pyx_v_elementMaker, ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_4));
@@ -18618,6 +19806,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     cetree.makeSubElement(element, elementMaker._tag,
  *                                           None, None, None, None)
  */
+      __Pyx_TraceLine(1158,0,__PYX_ERR(0, 1158, __pyx_L1_error))
       __pyx_t_1 = (__pyx_v_elementMaker->_element_factory == Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
@@ -18629,6 +19818,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                                           None, None, None, None)
  *                 else:
  */
+        __Pyx_TraceLine(1159,0,__PYX_ERR(0, 1159, __pyx_L1_error))
         __pyx_t_4 = __pyx_v_elementMaker->_tag;
         __Pyx_INCREF(__pyx_t_4);
 
@@ -18639,6 +19829,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 else:
  *                     childElement = elementMaker._element_factory(
  */
+        __Pyx_TraceLine(1160,0,__PYX_ERR(0, 1160, __pyx_L1_error))
         __pyx_t_7 = ((PyObject *)makeSubElement(__pyx_v_element, __pyx_t_4, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1159, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -18661,6 +19852,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  */
+      __Pyx_TraceLine(1162,0,__PYX_ERR(0, 1162, __pyx_L1_error))
       /*else*/ {
 
         /* "lxml/objectify.pyx":1163
@@ -18670,6 +19862,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True
  */
+        __Pyx_TraceLine(1163,0,__PYX_ERR(0, 1163, __pyx_L1_error))
         __Pyx_INCREF(__pyx_v_elementMaker->_element_factory);
         __pyx_t_4 = __pyx_v_elementMaker->_element_factory; __pyx_t_3 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -18722,6 +19915,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  */
+        __Pyx_TraceLine(1162,0,__PYX_ERR(0, 1162, __pyx_L1_error))
         if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1162, __pyx_L1_error)
         __Pyx_XDECREF_SET(__pyx_v_childElement, ((struct LxmlElement *)__pyx_t_7));
         __pyx_t_7 = 0;
@@ -18733,6 +19927,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 has_children = True
  *             elif isinstance(child, dict):
  */
+        __Pyx_TraceLine(1164,0,__PYX_ERR(0, 1164, __pyx_L1_error))
         __pyx_t_6 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1164, __pyx_L1_error)
       }
       __pyx_L8:;
@@ -18744,6 +19939,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             elif isinstance(child, dict):
  *                 for name, value in child.items():
  */
+      __Pyx_TraceLine(1165,0,__PYX_ERR(0, 1165, __pyx_L1_error))
       __pyx_v_has_children = 1;
 
       /* "lxml/objectify.pyx":1156
@@ -18763,6 +19959,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 for name, value in child.items():
  *                     # keyword arguments in attrib take precedence
  */
+    __Pyx_TraceLine(1166,0,__PYX_ERR(0, 1166, __pyx_L1_error))
     __pyx_t_2 = PyDict_Check(__pyx_v_child); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -18774,6 +19971,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  */
+      __Pyx_TraceLine(1167,0,__PYX_ERR(0, 1167, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1167, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_10 = NULL;
@@ -18892,6 +20090,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  */
+        __Pyx_TraceLine(1169,0,__PYX_ERR(0, 1169, __pyx_L1_error))
         __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1169, __pyx_L1_error)
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
@@ -18903,6 +20102,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:
  */
+          __Pyx_TraceLine(1170,0,__PYX_ERR(0, 1170, __pyx_L1_error))
           goto __pyx_L9_continue;
 
           /* "lxml/objectify.pyx":1169
@@ -18921,6 +20121,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)
  */
+        __Pyx_TraceLine(1171,0,__PYX_ERR(0, 1171, __pyx_L1_error))
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
           __PYX_ERR(0, 1171, __pyx_L1_error)
@@ -18940,6 +20141,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):
  */
+        __Pyx_TraceLine(1172,0,__PYX_ERR(0, 1172, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_pytype != Py_None);
         __pyx_t_1 = (__pyx_t_2 != 0);
         if (__pyx_t_1) {
@@ -18951,6 +20153,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     elif not python._isString(value):
  *                         value = unicode(value)
  */
+          __Pyx_TraceLine(1173,0,__PYX_ERR(0, 1173, __pyx_L1_error))
           __Pyx_INCREF(((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->stringify);
           __pyx_t_7 = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->stringify; __pyx_t_10 = NULL;
           if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -19015,6 +20218,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                         value = unicode(value)
  *                     cetree.setAttributeValue(element, name, value)
  */
+        __Pyx_TraceLine(1174,0,__PYX_ERR(0, 1174, __pyx_L1_error))
         __pyx_t_1 = ((!(_isString(__pyx_v_value) != 0)) != 0);
         if (__pyx_t_1) {
 
@@ -19025,6 +20229,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  */
+          __Pyx_TraceLine(1175,0,__PYX_ERR(0, 1175, __pyx_L1_error))
           __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
@@ -19047,6 +20252,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             else:
  *                 if pytype_name is not None:
  */
+        __Pyx_TraceLine(1176,0,__PYX_ERR(0, 1176, __pyx_L1_error))
         __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1176, __pyx_L1_error)
 
         /* "lxml/objectify.pyx":1167
@@ -19056,6 +20262,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  */
+        __Pyx_TraceLine(1167,0,__PYX_ERR(0, 1167, __pyx_L1_error))
         __pyx_L9_continue:;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19077,6 +20284,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     # concatenation always makes the result a string
  *                     has_string_value = True
  */
+    __Pyx_TraceLine(1178,0,__PYX_ERR(0, 1178, __pyx_L1_error))
     /*else*/ {
       __pyx_t_1 = (__pyx_v_pytype_name != Py_None);
       __pyx_t_2 = (__pyx_t_1 != 0);
@@ -19089,6 +20297,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  */
+        __Pyx_TraceLine(1180,0,__PYX_ERR(0, 1180, __pyx_L1_error))
         __pyx_v_has_string_value = 1;
 
         /* "lxml/objectify.pyx":1178
@@ -19107,6 +20316,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:
  */
+      __Pyx_TraceLine(1181,0,__PYX_ERR(0, 1181, __pyx_L1_error))
       __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1181, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_pytype_name, __pyx_t_4);
@@ -19119,6 +20329,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 if pytype is not None:
  *                     _add_text(element, (<PyType>pytype).stringify(child))
  */
+      __Pyx_TraceLine(1182,0,__PYX_ERR(0, 1182, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 1182, __pyx_L1_error)
@@ -19138,6 +20349,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     _add_text(element, (<PyType>pytype).stringify(child))
  *                 else:
  */
+      __Pyx_TraceLine(1183,0,__PYX_ERR(0, 1183, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_pytype != Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -19149,6 +20361,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 else:
  *                     has_string_value = True
  */
+        __Pyx_TraceLine(1184,0,__PYX_ERR(0, 1184, __pyx_L1_error))
         __Pyx_INCREF(((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->stringify);
         __pyx_t_4 = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_v_pytype)->stringify; __pyx_t_7 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -19215,6 +20428,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     child = unicode(child)
  *                     _add_text(element, child)
  */
+      __Pyx_TraceLine(1186,0,__PYX_ERR(0, 1186, __pyx_L1_error))
       /*else*/ {
         __pyx_v_has_string_value = 1;
 
@@ -19225,6 +20439,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                     _add_text(element, child)
  * 
  */
+        __Pyx_TraceLine(1187,0,__PYX_ERR(0, 1187, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1187, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_child, __pyx_t_4);
@@ -19237,6 +20452,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  * 
  *         if self._annotate and not has_children:
  */
+        __Pyx_TraceLine(1188,0,__PYX_ERR(0, 1188, __pyx_L1_error))
         __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19252,6 +20468,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             if child is None:
  *                 if len(children) == 1:
  */
+    __Pyx_TraceLine(1145,0,__PYX_ERR(0, 1145, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
@@ -19262,6 +20479,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  */
+  __Pyx_TraceLine(1190,0,__PYX_ERR(0, 1190, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_self->_annotate != 0);
   if (__pyx_t_2) {
   } else {
@@ -19280,6 +20498,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:
  */
+    __Pyx_TraceLine(1191,0,__PYX_ERR(0, 1191, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_has_string_value != 0);
     if (__pyx_t_1) {
 
@@ -19290,6 +20509,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *             elif pytype_name is not None:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  */
+      __Pyx_TraceLine(1192,0,__PYX_ERR(0, 1192, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1192, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1192, __pyx_L1_error)
@@ -19312,6 +20532,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  * 
  */
+    __Pyx_TraceLine(1193,0,__PYX_ERR(0, 1193, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_pytype_name != Py_None);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -19323,6 +20544,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  * 
  *         return element
  */
+      __Pyx_TraceLine(1194,0,__PYX_ERR(0, 1194, __pyx_L1_error))
       __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1194, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1194, __pyx_L1_error)
@@ -19354,6 +20576,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  * 
  * cdef _add_text(_Element elem, text):
  */
+  __Pyx_TraceLine(1196,0,__PYX_ERR(0, 1196, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __pyx_r = ((PyObject *)__pyx_v_element);
@@ -19387,6 +20610,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XDECREF(__pyx_v_pytype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19403,12 +20627,14 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   xmlNode *__pyx_v_c_child;
   PyObject *__pyx_v_old = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("_add_text", 0);
+  __Pyx_TraceCall("_add_text", __pyx_f[0], 1198, 0, __PYX_ERR(0, 1198, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_text);
 
   /* "lxml/objectify.pyx":1202
@@ -19418,6 +20644,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)
  */
+  __Pyx_TraceLine(1202,0,__PYX_ERR(0, 1202, __pyx_L1_error))
   __pyx_v_c_child = findChildBackwards(__pyx_v_elem->_c_node, 0);
 
   /* "lxml/objectify.pyx":1203
@@ -19427,6 +20654,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *         old = cetree.tailOf(c_child)
  *         if old is not None:
  */
+  __Pyx_TraceLine(1203,0,__PYX_ERR(0, 1203, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -19437,6 +20665,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *         if old is not None:
  *             text = old + text
  */
+    __Pyx_TraceLine(1204,0,__PYX_ERR(0, 1204, __pyx_L1_error))
     __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1204, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_old = __pyx_t_2;
@@ -19449,6 +20678,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *             text = old + text
  *         cetree.setTailText(c_child, text)
  */
+    __Pyx_TraceLine(1205,0,__PYX_ERR(0, 1205, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_old != Py_None);
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
@@ -19460,6 +20690,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *         cetree.setTailText(c_child, text)
  *     else:
  */
+      __Pyx_TraceLine(1206,0,__PYX_ERR(0, 1206, __pyx_L1_error))
       __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1206, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
@@ -19481,6 +20712,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *     else:
  *         old = cetree.textOf(elem._c_node)
  */
+    __Pyx_TraceLine(1207,0,__PYX_ERR(0, 1207, __pyx_L1_error))
     __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1207, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":1203
@@ -19500,6 +20732,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *         if old is not None:
  *             text = old + text
  */
+  __Pyx_TraceLine(1209,0,__PYX_ERR(0, 1209, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1209, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -19513,6 +20746,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *             text = old + text
  *         cetree.setNodeText(elem._c_node, text)
  */
+    __Pyx_TraceLine(1210,0,__PYX_ERR(0, 1210, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_old != Py_None);
     __pyx_t_1 = (__pyx_t_3 != 0);
     if (__pyx_t_1) {
@@ -19524,6 +20758,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *         cetree.setNodeText(elem._c_node, text)
  * 
  */
+      __Pyx_TraceLine(1211,0,__PYX_ERR(0, 1211, __pyx_L1_error))
       __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1211, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
@@ -19545,6 +20780,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  * 
  * cdef class ElementMaker:
  */
+    __Pyx_TraceLine(1212,0,__PYX_ERR(0, 1212, __pyx_L1_error))
     __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1212, __pyx_L1_error)
   }
   __pyx_L3:;
@@ -19568,6 +20804,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   __Pyx_XDECREF(__pyx_v_old);
   __Pyx_XDECREF(__pyx_v_text);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19657,12 +20894,14 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
 
 static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4lxml_9objectify_ElementMaker *__pyx_v_self, PyObject *__pyx_v_namespace, PyObject *__pyx_v_nsmap, PyObject *__pyx_v_annotate, PyObject *__pyx_v_makeelement) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 1245, 0, __PYX_ERR(0, 1245, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_nsmap);
 
   /* "lxml/objectify.pyx":1247
@@ -19672,6 +20911,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *             nsmap = _DEFAULT_NSMAP if annotate else {}
  *         self._nsmap = nsmap
  */
+  __Pyx_TraceLine(1247,0,__PYX_ERR(0, 1247, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_nsmap == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -19683,6 +20923,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  */
+    __Pyx_TraceLine(1248,0,__PYX_ERR(0, 1248, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1248, __pyx_L1_error)
     if (__pyx_t_2) {
       __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
@@ -19712,6 +20953,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate
  */
+  __Pyx_TraceLine(1249,0,__PYX_ERR(0, 1249, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_nsmap);
   __Pyx_GIVEREF(__pyx_v_nsmap);
   __Pyx_GOTREF(__pyx_v_self->_nsmap);
@@ -19725,6 +20967,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         self._annotate = annotate
  *         if makeelement is not None:
  */
+  __Pyx_TraceLine(1250,0,__PYX_ERR(0, 1250, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_namespace == Py_None);
   if ((__pyx_t_2 != 0)) {
     __Pyx_INCREF(Py_None);
@@ -19748,6 +20991,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         if makeelement is not None:
  *             if not callable(makeelement):
  */
+  __Pyx_TraceLine(1251,0,__PYX_ERR(0, 1251, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1251, __pyx_L1_error)
   __pyx_v_self->_annotate = __pyx_t_2;
 
@@ -19758,6 +21002,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *             if not callable(makeelement):
  *                 raise TypeError(
  */
+  __Pyx_TraceLine(1252,0,__PYX_ERR(0, 1252, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_makeelement != Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -19769,6 +21014,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *                 raise TypeError(
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
  */
+    __Pyx_TraceLine(1253,0,__PYX_ERR(0, 1253, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1253, __pyx_L1_error)
     __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
@@ -19780,6 +21026,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *             self._makeelement = makeelement
  *         else:
  */
+      __Pyx_TraceLine(1255,0,__PYX_ERR(0, 1255, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_makeelement)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_argument_of_makeelement_paramete, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
@@ -19793,6 +21040,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
  *             self._makeelement = makeelement
  */
+      __Pyx_TraceLine(1254,0,__PYX_ERR(0, 1254, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1254, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19816,6 +21064,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         else:
  *             self._makeelement = None
  */
+    __Pyx_TraceLine(1256,0,__PYX_ERR(0, 1256, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_makeelement);
     __Pyx_GIVEREF(__pyx_v_makeelement);
     __Pyx_GOTREF(__pyx_v_self->_makeelement);
@@ -19839,6 +21088,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  *         self._cache = {}
  * 
  */
+  __Pyx_TraceLine(1258,0,__PYX_ERR(0, 1258, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
@@ -19855,6 +21105,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  * 
  *     @cython.final
  */
+  __Pyx_TraceLine(1259,0,__PYX_ERR(0, 1259, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -19881,6 +21132,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_r = -1;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_nsmap);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -19896,6 +21148,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
 static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(struct __pyx_obj_4lxml_9objectify_ElementMaker *__pyx_v_self, PyObject *__pyx_v_tag, int __pyx_v_caching) {
   struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *__pyx_v_element_maker = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -19904,6 +21157,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   Py_ssize_t __pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_build_element_maker", 0);
+  __Pyx_TraceCall("_build_element_maker", __pyx_f[0], 1262, 0, __PYX_ERR(0, 1262, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1264
  *     cdef _build_element_maker(self, tag, bint caching):
@@ -19912,6 +21166,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         if self._namespace is not None and tag[0] != u"{":
  *             element_maker._tag = self._namespace + tag
  */
+  __Pyx_TraceLine(1264,0,__PYX_ERR(0, 1264, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)__pyx_tp_new_4lxml_9objectify__ObjectifyElementMakerCaller(((PyTypeObject *)__pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_element_maker = ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_1);
@@ -19924,6 +21179,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *             element_maker._tag = self._namespace + tag
  *         else:
  */
+  __Pyx_TraceLine(1265,0,__PYX_ERR(0, 1265, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_self->_namespace != Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -19933,7 +21189,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   }
   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tag, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__10, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1265, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__32, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1265, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
@@ -19946,6 +21202,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         else:
  *             element_maker._tag = tag
  */
+    __Pyx_TraceLine(1266,0,__PYX_ERR(0, 1266, __pyx_L1_error))
     __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -19971,6 +21228,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         element_maker._nsmap = self._nsmap
  *         element_maker._annotate = self._annotate
  */
+  __Pyx_TraceLine(1268,0,__PYX_ERR(0, 1268, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
@@ -19987,6 +21245,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement
  */
+  __Pyx_TraceLine(1269,0,__PYX_ERR(0, 1269, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_nsmap;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -20002,6 +21261,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         element_maker._element_factory = self._makeelement
  *         if caching:
  */
+  __Pyx_TraceLine(1270,0,__PYX_ERR(0, 1270, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_annotate;
   __pyx_v_element_maker->_annotate = __pyx_t_2;
 
@@ -20012,6 +21272,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         if caching:
  *             if len(self._cache) > 200:
  */
+  __Pyx_TraceLine(1271,0,__PYX_ERR(0, 1271, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_self->_makeelement;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -20027,6 +21288,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *             if len(self._cache) > 200:
  *                 self._cache.clear()
  */
+  __Pyx_TraceLine(1272,0,__PYX_ERR(0, 1272, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_caching != 0);
   if (__pyx_t_2) {
 
@@ -20037,6 +21299,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *                 self._cache.clear()
  *             self._cache[tag] = element_maker
  */
+    __Pyx_TraceLine(1273,0,__PYX_ERR(0, 1273, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_self->_cache;
     __Pyx_INCREF(__pyx_t_1);
     if (unlikely(__pyx_t_1 == Py_None)) {
@@ -20055,6 +21318,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *             self._cache[tag] = element_maker
  *         return element_maker
  */
+      __Pyx_TraceLine(1274,0,__PYX_ERR(0, 1274, __pyx_L1_error))
       if (unlikely(__pyx_v_self->_cache == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
         __PYX_ERR(0, 1274, __pyx_L1_error)
@@ -20077,6 +21341,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  *         return element_maker
  * 
  */
+    __Pyx_TraceLine(1275,0,__PYX_ERR(0, 1275, __pyx_L1_error))
     if (unlikely(__pyx_v_self->_cache == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(0, 1275, __pyx_L1_error)
@@ -20099,6 +21364,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  * 
  *     def __getattr__(self, tag):
  */
+  __Pyx_TraceLine(1276,0,__PYX_ERR(0, 1276, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(((PyObject *)__pyx_v_element_maker));
   __pyx_r = ((PyObject *)__pyx_v_element_maker);
@@ -20120,6 +21386,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element_maker);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20148,6 +21415,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_3__getattr__(PyObject
 static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __pyx_obj_4lxml_9objectify_ElementMaker *__pyx_v_self, PyObject *__pyx_v_tag) {
   PyObject *__pyx_v_element_maker = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -20157,6 +21425,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   PyObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__getattr__", 0);
+  __Pyx_TraceCall("__getattr__", __pyx_f[0], 1278, 0, __PYX_ERR(0, 1278, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1279
  * 
@@ -20165,6 +21434,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *         if element_maker is None:
  *             if is_special_method(tag):
  */
+  __Pyx_TraceLine(1279,0,__PYX_ERR(0, 1279, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
     __PYX_ERR(0, 1279, __pyx_L1_error)
@@ -20181,6 +21451,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *             if is_special_method(tag):
  *                 return object.__getattr__(self, tag)
  */
+  __Pyx_TraceLine(1280,0,__PYX_ERR(0, 1280, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_element_maker == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -20192,6 +21463,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *                 return object.__getattr__(self, tag)
  *             return self._build_element_maker(tag, caching=True)
  */
+    __Pyx_TraceLine(1281,0,__PYX_ERR(0, 1281, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_is_special_method);
     __pyx_t_4 = __pyx_v_4lxml_9objectify_is_special_method; __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -20247,6 +21519,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *             return self._build_element_maker(tag, caching=True)
  *         return element_maker
  */
+      __Pyx_TraceLine(1282,0,__PYX_ERR(0, 1282, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1282, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -20315,6 +21588,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *         return element_maker
  * 
  */
+    __Pyx_TraceLine(1283,0,__PYX_ERR(0, 1283, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -20338,6 +21612,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  * 
  *     def __call__(self, tag, *args, **kwargs):
  */
+  __Pyx_TraceLine(1284,0,__PYX_ERR(0, 1284, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_element_maker);
   __pyx_r = __pyx_v_element_maker;
@@ -20362,6 +21637,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element_maker);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20447,6 +21723,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_5__call__(PyObject *__
 static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx_obj_4lxml_9objectify_ElementMaker *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
   PyObject *__pyx_v_element_maker = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -20455,6 +21732,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[0], 1286, 0, __PYX_ERR(0, 1286, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1287
  * 
@@ -20463,6 +21741,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  *         if element_maker is None:
  *             element_maker = self._build_element_maker(
  */
+  __Pyx_TraceLine(1287,0,__PYX_ERR(0, 1287, __pyx_L1_error))
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
     __PYX_ERR(0, 1287, __pyx_L1_error)
@@ -20479,6 +21758,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  *             element_maker = self._build_element_maker(
  *                 tag, caching=not is_special_method(tag))
  */
+  __Pyx_TraceLine(1288,0,__PYX_ERR(0, 1288, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_element_maker == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -20490,6 +21770,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  *         return element_maker(*args, **kwargs)
  * 
  */
+    __Pyx_TraceLine(1290,0,__PYX_ERR(0, 1290, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_is_special_method);
     __pyx_t_4 = __pyx_v_4lxml_9objectify_is_special_method; __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -20544,6 +21825,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  *                 tag, caching=not is_special_method(tag))
  *         return element_maker(*args, **kwargs)
  */
+    __Pyx_TraceLine(1289,0,__PYX_ERR(0, 1289, __pyx_L1_error))
     __pyx_t_1 = __pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(__pyx_v_self, __pyx_v_tag, (!__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_element_maker, __pyx_t_1);
@@ -20565,6 +21847,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(1291,0,__PYX_ERR(0, 1291, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1291, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -20591,6 +21874,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_element_maker);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20663,9 +21947,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_13enable_recursive_str(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_on) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
+  __Pyx_TraceFrameInit(__pyx_codeobj__33)
   __Pyx_RefNannySetupContext("enable_recursive_str", 0);
+  __Pyx_TraceCall("enable_recursive_str", __pyx_f[0], 1298, 0, __PYX_ERR(0, 1298, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1305
  *     """
@@ -20674,6 +21961,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
  * 
  * def dump(_Element element not None):
  */
+  __Pyx_TraceLine(1305,0,__PYX_ERR(0, 1305, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1305, __pyx_L1_error)
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = __pyx_t_1;
 
@@ -20693,6 +21981,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20727,9 +22016,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_15dump(PyObject *__pyx_self, PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_self, struct LxmlElement *__pyx_v_element) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__34)
   __Pyx_RefNannySetupContext("dump", 0);
+  __Pyx_TraceCall("dump", __pyx_f[0], 1307, 0, __PYX_ERR(0, 1307, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1312
  *     Return a recursively generated string representation of an element.
@@ -20738,6 +22030,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
  * 
  * cdef object _dump(_Element element, int indent):
  */
+  __Pyx_TraceLine(1312,0,__PYX_ERR(0, 1312, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1312, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -20760,6 +22053,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -20781,6 +22075,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_child = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -20796,6 +22091,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   int __pyx_t_12;
   Py_ssize_t __pyx_t_13;
   __Pyx_RefNannySetupContext("_dump", 0);
+  __Pyx_TraceCall("_dump", __pyx_f[0], 1314, 0, __PYX_ERR(0, 1314, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1315
  * 
@@ -20804,9 +22100,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     if isinstance(element, ObjectifiedDataElement):
  *         value = repr(element)
  */
+  __Pyx_TraceLine(1315,0,__PYX_ERR(0, 1315, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__11, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1315, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__35, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1315, __pyx_L1_error)
@@ -20820,6 +22117,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         value = repr(element)
  *     else:
  */
+  __Pyx_TraceLine(1316,0,__PYX_ERR(0, 1316, __pyx_L1_error))
   __pyx_t_3 = __Pyx_TypeCheck(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_9objectify_ObjectifiedDataElement); 
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -20831,6 +22129,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     else:
  *         value = textOf(element._c_node)
  */
+    __Pyx_TraceLine(1317,0,__PYX_ERR(0, 1317, __pyx_L1_error))
     __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1317, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_value = __pyx_t_2;
@@ -20853,6 +22152,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         if value is not None:
  *             if not value.strip():
  */
+  __Pyx_TraceLine(1319,0,__PYX_ERR(0, 1319, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1319, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -20866,6 +22166,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             if not value.strip():
  *                 value = None
  */
+    __Pyx_TraceLine(1320,0,__PYX_ERR(0, 1320, __pyx_L1_error))
     __pyx_t_4 = (__pyx_v_value != Py_None);
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
@@ -20877,6 +22178,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *                 value = None
  *             else:
  */
+      __Pyx_TraceLine(1321,0,__PYX_ERR(0, 1321, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = NULL;
@@ -20909,6 +22211,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             else:
  *                 value = repr(value)
  */
+        __Pyx_TraceLine(1322,0,__PYX_ERR(0, 1322, __pyx_L1_error))
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_value, Py_None);
 
@@ -20929,6 +22232,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  */
+      __Pyx_TraceLine(1324,0,__PYX_ERR(0, 1324, __pyx_L1_error))
       /*else*/ {
         __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
@@ -20955,6 +22259,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  */
+  __Pyx_TraceLine(1325,0,__PYX_ERR(0, 1325, __pyx_L1_error))
   __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_6 = 0;
@@ -20976,10 +22281,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__12);
+  __Pyx_INCREF(__pyx_kp_u__36);
   __pyx_t_6 += 3;
-  __Pyx_GIVEREF(__pyx_kp_u__12);
-  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__12);
+  __Pyx_GIVEREF(__pyx_kp_u__36);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__36);
   __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_7;
@@ -20987,10 +22292,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __Pyx_GIVEREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
   __pyx_t_5 = 0;
-  __Pyx_INCREF(__pyx_kp_u__13);
+  __Pyx_INCREF(__pyx_kp_u__37);
   __pyx_t_6 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__13);
-  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__13);
+  __Pyx_GIVEREF(__pyx_kp_u__37);
+  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__37);
   __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1325, __pyx_L1_error)
@@ -21001,10 +22306,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_1);
   __pyx_t_1 = 0;
-  __Pyx_INCREF(__pyx_kp_u__14);
+  __Pyx_INCREF(__pyx_kp_u__38);
   __pyx_t_6 += 2;
-  __Pyx_GIVEREF(__pyx_kp_u__14);
-  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__14);
+  __Pyx_GIVEREF(__pyx_kp_u__38);
+  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__38);
   __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -21018,6 +22323,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  */
+  __Pyx_TraceLine(1326,0,__PYX_ERR(0, 1326, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_xsi_ns = ((PyObject*)__pyx_t_1);
@@ -21030,6 +22336,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  */
+  __Pyx_TraceLine(1327,0,__PYX_ERR(0, 1327, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_pytype_ns = ((PyObject*)__pyx_t_1);
@@ -21042,6 +22349,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  */
+  __Pyx_TraceLine(1328,0,__PYX_ERR(0, 1328, __pyx_L1_error))
   __pyx_t_1 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
@@ -21142,7 +22450,8 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:
  */
-    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__10, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1329, __pyx_L1_error)
+    __Pyx_TraceLine(1329,0,__PYX_ERR(0, 1329, __pyx_L1_error))
+    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__32, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1329, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
@@ -21153,6 +22462,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *                 if value == TREE_PYTYPE_NAME:
  *                     continue
  */
+      __Pyx_TraceLine(1330,0,__PYX_ERR(0, 1330, __pyx_L1_error))
       __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_9 = PyObject_RichCompare(__pyx_v_name, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1330, __pyx_L1_error)
@@ -21168,6 +22478,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *                     continue
  *                 else:
  */
+        __Pyx_TraceLine(1331,0,__PYX_ERR(0, 1331, __pyx_L1_error))
         __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1331, __pyx_L1_error)
         if (__pyx_t_3) {
 
@@ -21178,6 +22489,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *                 else:
  *                     name = name.replace(pytype_ns, u'py:')
  */
+          __Pyx_TraceLine(1332,0,__PYX_ERR(0, 1332, __pyx_L1_error))
           goto __pyx_L6_continue;
 
           /* "lxml/objectify.pyx":1331
@@ -21196,6 +22508,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             name = name.replace(xsi_ns, u'xsi:')
  *         result += f"{indentstr}  * {name} = {value!r}\n"
  */
+        __Pyx_TraceLine(1334,0,__PYX_ERR(0, 1334, __pyx_L1_error))
         /*else*/ {
           __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
@@ -21264,6 +22577,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         result += f"{indentstr}  * {name} = {value!r}\n"
  * 
  */
+      __Pyx_TraceLine(1335,0,__PYX_ERR(0, 1335, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_10 = NULL;
@@ -21330,6 +22644,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  * 
  *     indent += 1
  */
+    __Pyx_TraceLine(1336,0,__PYX_ERR(0, 1336, __pyx_L1_error))
     __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_13 = 0;
@@ -21341,10 +22656,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__15);
+    __Pyx_INCREF(__pyx_kp_u__39);
     __pyx_t_13 += 4;
-    __Pyx_GIVEREF(__pyx_kp_u__15);
-    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_kp_u__15);
+    __Pyx_GIVEREF(__pyx_kp_u__39);
+    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_kp_u__39);
     __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
@@ -21352,10 +22667,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__12);
+    __Pyx_INCREF(__pyx_kp_u__36);
     __pyx_t_13 += 3;
-    __Pyx_GIVEREF(__pyx_kp_u__12);
-    PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_kp_u__12);
+    __Pyx_GIVEREF(__pyx_kp_u__36);
+    PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_kp_u__36);
     __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_7;
@@ -21363,10 +22678,10 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_1);
     __pyx_t_1 = 0;
-    __Pyx_INCREF(__pyx_kp_u__16);
+    __Pyx_INCREF(__pyx_kp_u__40);
     __pyx_t_13 += 1;
-    __Pyx_GIVEREF(__pyx_kp_u__16);
-    PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_kp_u__16);
+    __Pyx_GIVEREF(__pyx_kp_u__40);
+    PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_kp_u__40);
     __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 6, __pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -21383,6 +22698,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  */
+    __Pyx_TraceLine(1328,0,__PYX_ERR(0, 1328, __pyx_L1_error))
     __pyx_L6_continue:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -21394,6 +22710,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)
  */
+  __Pyx_TraceLine(1338,0,__PYX_ERR(0, 1338, __pyx_L1_error))
   __pyx_v_indent = (__pyx_v_indent + 1);
 
   /* "lxml/objectify.pyx":1339
@@ -21403,6 +22720,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         result += _dump(child, indent)
  *     if indent == 1:
  */
+  __Pyx_TraceLine(1339,0,__PYX_ERR(0, 1339, __pyx_L1_error))
   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1339, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_1 = NULL;
@@ -21473,6 +22791,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'
  */
+    __Pyx_TraceLine(1340,0,__PYX_ERR(0, 1340, __pyx_L1_error))
     if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1340, __pyx_L1_error)
     __pyx_t_2 = __pyx_f_4lxml_9objectify__dump(((struct LxmlElement *)__pyx_v_child), __pyx_v_indent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -21489,6 +22808,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         result += _dump(child, indent)
  *     if indent == 1:
  */
+    __Pyx_TraceLine(1339,0,__PYX_ERR(0, 1339, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
@@ -21499,6 +22819,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         return result[:-1] # strip last '\n'
  *     else:
  */
+  __Pyx_TraceLine(1341,0,__PYX_ERR(0, 1341, __pyx_L1_error))
   __pyx_t_3 = ((__pyx_v_indent == 1) != 0);
   if (__pyx_t_3) {
 
@@ -21509,8 +22830,9 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     else:
  *         return result
  */
+    __Pyx_TraceLine(1342,0,__PYX_ERR(0, 1342, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__17, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1342, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__41, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_r = __pyx_t_9;
     __pyx_t_9 = 0;
@@ -21532,6 +22854,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  * 
  * 
  */
+  __Pyx_TraceLine(1344,0,__PYX_ERR(0, 1344, __pyx_L1_error))
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_result);
@@ -21565,6 +22888,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_child);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21593,6 +22917,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_17__unpickleElementTree(PyObject *__p
 
 static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -21600,7 +22925,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__42)
   __Pyx_RefNannySetupContext("__unpickleElementTree", 0);
+  __Pyx_TraceCall("__unpickleElementTree", __pyx_f[0], 1350, 0, __PYX_ERR(0, 1350, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1351
  * 
@@ -21609,6 +22936,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
  * 
  * cdef _setupPickle(elementTreeReduceFunction):
  */
+  __Pyx_TraceLine(1351,0,__PYX_ERR(0, 1351, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1351, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -21727,6 +23055,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21742,6 +23071,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
 static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_elementTreeReduceFunction) {
   PyObject *__pyx_v_copyreg = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
@@ -21752,6 +23082,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_setupPickle", 0);
+  __Pyx_TraceCall("_setupPickle", __pyx_f[0], 1353, 0, __PYX_ERR(0, 1353, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1354
  * 
@@ -21760,6 +23091,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *         import copy_reg as copyreg
  *     else:
  */
+  __Pyx_TraceLine(1354,0,__PYX_ERR(0, 1354, __pyx_L1_error))
   __pyx_t_1 = (IS_PYTHON2 != 0);
   if (__pyx_t_1) {
 
@@ -21770,6 +23102,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *     else:
  *         import copyreg
  */
+    __Pyx_TraceLine(1355,0,__PYX_ERR(0, 1355, __pyx_L1_error))
     __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1355, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_copyreg = __pyx_t_2;
@@ -21792,6 +23125,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *     copyreg.pickle(etree._ElementTree,
  *                    elementTreeReduceFunction, __unpickleElementTree)
  */
+  __Pyx_TraceLine(1357,0,__PYX_ERR(0, 1357, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -21807,6 +23141,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  */
+  __Pyx_TraceLine(1358,0,__PYX_ERR(0, 1358, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1358, __pyx_L1_error)
@@ -21819,6 +23154,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  * 
  * def pickleReduceElementTree(obj):
  */
+  __Pyx_TraceLine(1359,0,__PYX_ERR(0, 1359, __pyx_L1_error))
   __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1359, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
@@ -21898,6 +23234,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_copyreg);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -21926,13 +23263,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_19pickleReduceElementTree(PyObject *_
 
 static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__43)
   __Pyx_RefNannySetupContext("pickleReduceElementTree", 0);
+  __Pyx_TraceCall("pickleReduceElementTree", __pyx_f[0], 1361, 0, __PYX_ERR(0, 1361, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1362
  * 
@@ -21941,6 +23281,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
  * 
  * _setupPickle(pickleReduceElementTree)
  */
+  __Pyx_TraceLine(1362,0,__PYX_ERR(0, 1362, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1362, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -22025,6 +23366,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22112,10 +23454,12 @@ static int __pyx_pw_4lxml_9objectify_27ObjectifyElementClassLookup_1__init__(PyO
 
 static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(struct __pyx_obj_4lxml_9objectify_ObjectifyElementClassLookup *__pyx_v_self, PyObject *__pyx_v_tree_class, PyObject *__pyx_v_empty_data_class) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[0], 1376, 0, __PYX_ERR(0, 1376, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_tree_class);
   __Pyx_INCREF(__pyx_v_empty_data_class);
 
@@ -22126,6 +23470,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *         if tree_class is None:
  *             tree_class = ObjectifiedElement
  */
+  __Pyx_TraceLine(1385,0,__PYX_ERR(0, 1385, __pyx_L1_error))
   __pyx_v_self->__pyx_base._lookup_function = __pyx_f_4lxml_9objectify__lookupElementClass;
 
   /* "lxml/objectify.pyx":1386
@@ -22135,6 +23480,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class
  */
+  __Pyx_TraceLine(1386,0,__PYX_ERR(0, 1386, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_tree_class == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -22146,6 +23492,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *         self.tree_class = tree_class
  *         if empty_data_class is None:
  */
+    __Pyx_TraceLine(1387,0,__PYX_ERR(0, 1387, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
     __Pyx_DECREF_SET(__pyx_v_tree_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
 
@@ -22165,6 +23512,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *         if empty_data_class is None:
  *             empty_data_class = StringElement
  */
+  __Pyx_TraceLine(1388,0,__PYX_ERR(0, 1388, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_tree_class);
   __Pyx_GIVEREF(__pyx_v_tree_class);
   __Pyx_GOTREF(__pyx_v_self->tree_class);
@@ -22178,6 +23526,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *             empty_data_class = StringElement
  *         self.empty_data_class = empty_data_class
  */
+  __Pyx_TraceLine(1389,0,__PYX_ERR(0, 1389, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_empty_data_class == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -22189,6 +23538,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  *         self.empty_data_class = empty_data_class
  * 
  */
+    __Pyx_TraceLine(1390,0,__PYX_ERR(0, 1390, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
     __Pyx_DECREF_SET(__pyx_v_empty_data_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
 
@@ -22208,6 +23558,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  * 
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):
  */
+  __Pyx_TraceLine(1391,0,__PYX_ERR(0, 1391, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_empty_data_class);
   __Pyx_GIVEREF(__pyx_v_empty_data_class);
   __Pyx_GOTREF(__pyx_v_self->empty_data_class);
@@ -22224,8 +23575,14 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.ObjectifyElementClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tree_class);
   __Pyx_XDECREF(__pyx_v_empty_data_class);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22246,6 +23603,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   CYTHON_UNUSED PyObject *__pyx_v_prefix = NULL;
   PyObject *__pyx_v_el_class = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -22256,6 +23614,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_lookupElementClass", 0);
+  __Pyx_TraceCall("_lookupElementClass", __pyx_f[0], 1393, 0, __PYX_ERR(0, 1393, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1395
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):
@@ -22264,6 +23623,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):
  */
+  __Pyx_TraceLine(1395,0,__PYX_ERR(0, 1395, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_state;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_9objectify_ObjectifyElementClassLookup *)__pyx_t_1);
@@ -22276,6 +23636,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         return lookup.tree_class
  * 
  */
+  __Pyx_TraceLine(1397,0,__PYX_ERR(0, 1397, __pyx_L1_error))
   __pyx_t_2 = (hasChild(__pyx_v_c_node) != 0);
   if (__pyx_t_2) {
 
@@ -22286,6 +23647,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  *     # if element is defined as xsi:nil, return NoneElement class
  */
+    __Pyx_TraceLine(1398,0,__PYX_ERR(0, 1398, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_lookup->tree_class);
     __pyx_r = __pyx_v_lookup->tree_class;
@@ -22307,6 +23669,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
  *         return NoneElement
  */
+  __Pyx_TraceLine(1401,0,__PYX_ERR(0, 1401, __pyx_L1_error))
   __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1401, __pyx_L1_error)
@@ -22320,6 +23683,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  *     # check for Python type hint
  */
+    __Pyx_TraceLine(1403,0,__PYX_ERR(0, 1403, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement);
@@ -22341,6 +23705,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  */
+  __Pyx_TraceLine(1406,0,__PYX_ERR(0, 1406, __pyx_L1_error))
   __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
@@ -22353,6 +23718,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         if value == TREE_PYTYPE_NAME:
  *             return lookup.tree_class
  */
+  __Pyx_TraceLine(1408,0,__PYX_ERR(0, 1408, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -22364,6 +23730,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  */
+    __Pyx_TraceLine(1409,0,__PYX_ERR(0, 1409, __pyx_L1_error))
     __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_value, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1409, __pyx_L1_error)
     if (__pyx_t_3) {
 
@@ -22374,6 +23741,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:
  */
+      __Pyx_TraceLine(1410,0,__PYX_ERR(0, 1410, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_lookup->tree_class);
       __pyx_r = __pyx_v_lookup->tree_class;
@@ -22395,6 +23763,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         if py_type is not None:
  *             return py_type._type
  */
+    __Pyx_TraceLine(1411,0,__PYX_ERR(0, 1411, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
       __PYX_ERR(0, 1411, __pyx_L1_error)
@@ -22414,6 +23783,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *             return py_type._type
  *         # unknown 'pyval' => try to figure it out ourself, just go on
  */
+    __Pyx_TraceLine(1412,0,__PYX_ERR(0, 1412, __pyx_L1_error))
     __pyx_t_3 = (((PyObject *)__pyx_v_py_type) != Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -22425,6 +23795,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         # unknown 'pyval' => try to figure it out ourself, just go on
  * 
  */
+      __Pyx_TraceLine(1413,0,__PYX_ERR(0, 1413, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_py_type->_type);
       __pyx_r = __pyx_v_py_type->_type;
@@ -22455,6 +23826,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  */
+  __Pyx_TraceLine(1417,0,__PYX_ERR(0, 1417, __pyx_L1_error))
   __pyx_t_4 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1417, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
@@ -22467,6 +23839,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:
  */
+  __Pyx_TraceLine(1420,0,__PYX_ERR(0, 1420, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_value != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -22478,6 +23851,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)
  */
+    __Pyx_TraceLine(1421,0,__PYX_ERR(0, 1421, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
       __PYX_ERR(0, 1421, __pyx_L1_error)
@@ -22497,6 +23871,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  */
+    __Pyx_TraceLine(1422,0,__PYX_ERR(0, 1422, __pyx_L1_error))
     __pyx_t_2 = (((PyObject *)__pyx_v_schema_type) == Py_None);
     __pyx_t_5 = (__pyx_t_2 != 0);
     if (__pyx_t_5) {
@@ -22504,7 +23879,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_t_3 = __pyx_t_5;
       goto __pyx_L10_bool_binop_done;
     }
-    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__18, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1422, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__44, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1422, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_5 != 0);
     __pyx_t_3 = __pyx_t_2;
     __pyx_L10_bool_binop_done:;
@@ -22517,9 +23892,10 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
+      __Pyx_TraceLine(1423,0,__PYX_ERR(0, 1423, __pyx_L1_error))
       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -22580,6 +23956,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         if schema_type is not None:
  *             return schema_type._type
  */
+      __Pyx_TraceLine(1424,0,__PYX_ERR(0, 1424, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 1424, __pyx_L1_error)
@@ -22608,6 +23985,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *             return schema_type._type
  * 
  */
+    __Pyx_TraceLine(1425,0,__PYX_ERR(0, 1425, __pyx_L1_error))
     __pyx_t_3 = (((PyObject *)__pyx_v_schema_type) != Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -22619,6 +23997,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  *     # otherwise determine class based on text content type
  */
+      __Pyx_TraceLine(1426,0,__PYX_ERR(0, 1426, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_schema_type->_type);
       __pyx_r = __pyx_v_schema_type->_type;
@@ -22649,6 +24028,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *     if el_class is not None:
  *         return el_class
  */
+  __Pyx_TraceLine(1429,0,__PYX_ERR(0, 1429, __pyx_L1_error))
   __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1429, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_el_class = __pyx_t_6;
@@ -22661,6 +24041,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         return el_class
  * 
  */
+  __Pyx_TraceLine(1430,0,__PYX_ERR(0, 1430, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_el_class != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -22672,6 +24053,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  *     # if element is a root node => default to tree node
  */
+    __Pyx_TraceLine(1431,0,__PYX_ERR(0, 1431, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_el_class);
     __pyx_r = __pyx_v_el_class;
@@ -22693,6 +24075,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  *         return lookup.tree_class
  * 
  */
+  __Pyx_TraceLine(1434,0,__PYX_ERR(0, 1434, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_node->parent == NULL) != 0);
   if (!__pyx_t_2) {
   } else {
@@ -22711,6 +24094,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  *     return lookup.empty_data_class
  */
+    __Pyx_TraceLine(1435,0,__PYX_ERR(0, 1435, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_lookup->tree_class);
     __pyx_r = __pyx_v_lookup->tree_class;
@@ -22732,6 +24116,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  * 
  * 
  */
+  __Pyx_TraceLine(1437,0,__PYX_ERR(0, 1437, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_lookup->empty_data_class);
   __pyx_r = __pyx_v_lookup->empty_data_class;
@@ -22761,6 +24146,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __Pyx_XDECREF(__pyx_v_prefix);
   __Pyx_XDECREF(__pyx_v_el_class);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -22776,6 +24162,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
 static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check_type(xmlNode *__pyx_v_c_node, struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_pytype) {
   PyObject *__pyx_v_value = NULL;
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -22788,6 +24175,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   PyObject *__pyx_t_9 = NULL;
   int __pyx_t_10;
   __Pyx_RefNannySetupContext("_check_type", 0);
+  __Pyx_TraceCall("_check_type", __pyx_f[0], 1443, 0, __PYX_ERR(0, 1443, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1444
  * 
@@ -22796,6 +24184,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *         return None
  *     value = textOf(c_node)
  */
+  __Pyx_TraceLine(1444,0,__PYX_ERR(0, 1444, __pyx_L1_error))
   __pyx_t_1 = (((PyObject *)__pyx_v_pytype) == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -22807,6 +24196,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *     value = textOf(c_node)
  *     try:
  */
+    __Pyx_TraceLine(1445,0,__PYX_ERR(0, 1445, __pyx_L1_error))
     __Pyx_XDECREF(((PyObject *)__pyx_r));
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -22827,6 +24217,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *     try:
  *         pytype.type_check(value)
  */
+  __Pyx_TraceLine(1446,0,__PYX_ERR(0, 1446, __pyx_L1_error))
   __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_value = __pyx_t_3;
@@ -22839,6 +24230,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *         pytype.type_check(value)
  *         return pytype
  */
+  __Pyx_TraceLine(1447,0,__PYX_ERR(0, 1447, __pyx_L4_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -22855,6 +24247,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *         return pytype
  *     except IGNORABLE_ERRORS:
  */
+      __Pyx_TraceLine(1448,0,__PYX_ERR(0, 1448, __pyx_L4_error))
       __Pyx_INCREF(__pyx_v_pytype->type_check);
       __pyx_t_7 = __pyx_v_pytype->type_check; __pyx_t_8 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -22908,6 +24301,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *     except IGNORABLE_ERRORS:
  *         # could not be parsed as the specified type => ignore
  */
+      __Pyx_TraceLine(1449,0,__PYX_ERR(0, 1449, __pyx_L4_error))
       __Pyx_XDECREF(((PyObject *)__pyx_r));
       __Pyx_INCREF(((PyObject *)__pyx_v_pytype));
       __pyx_r = __pyx_v_pytype;
@@ -22934,6 +24328,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  *         # could not be parsed as the specified type => ignore
  *         pass
  */
+    __Pyx_TraceLine(1450,0,__PYX_ERR(0, 1450, __pyx_L6_except_error))
     __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS);
     if (__pyx_t_10) {
       __Pyx_ErrRestore(0,0,0);
@@ -22974,6 +24369,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,
  */
+  __Pyx_TraceLine(1453,0,__PYX_ERR(0, 1453, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
   goto __pyx_L0;
@@ -22997,6 +24393,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_value);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23096,11 +24493,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
 static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, PyObject *__pyx_v_ignore_old, PyObject *__pyx_v_ignore_xsi, PyObject *__pyx_v_empty_pytype) {
   struct LxmlElement *__pyx_v_element = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__46)
   __Pyx_RefNannySetupContext("pyannotate", 0);
+  __Pyx_TraceCall("pyannotate", __pyx_f[0], 1455, 0, __PYX_ERR(0, 1455, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1475
  *     """
@@ -23109,6 +24509,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  */
+  __Pyx_TraceLine(1475,0,__PYX_ERR(0, 1475, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -23121,6 +24522,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
  */
+  __Pyx_TraceLine(1476,0,__PYX_ERR(0, 1476, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1476, __pyx_L1_error)
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1476, __pyx_L1_error)
   __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 0, 1, __pyx_t_2, __pyx_t_3, Py_None, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1476, __pyx_L1_error)
@@ -23145,6 +24547,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23244,11 +24647,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
 static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, PyObject *__pyx_v_ignore_old, PyObject *__pyx_v_ignore_pytype, PyObject *__pyx_v_empty_type) {
   struct LxmlElement *__pyx_v_element = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
+  __Pyx_TraceFrameInit(__pyx_codeobj__47)
   __Pyx_RefNannySetupContext("xsiannotate", 0);
+  __Pyx_TraceCall("xsiannotate", __pyx_f[0], 1478, 0, __PYX_ERR(0, 1478, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1503
  *     """
@@ -23257,6 +24663,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  */
+  __Pyx_TraceLine(1503,0,__PYX_ERR(0, 1503, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1503, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -23269,6 +24676,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
  */
+  __Pyx_TraceLine(1504,0,__PYX_ERR(0, 1504, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L1_error)
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L1_error)
   __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, 1, 0, __pyx_t_2, __pyx_t_3, __pyx_v_empty_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1504, __pyx_L1_error)
@@ -23293,6 +24701,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23401,13 +24810,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
 static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, PyObject *__pyx_v_ignore_old, PyObject *__pyx_v_ignore_xsi, PyObject *__pyx_v_empty_pytype, PyObject *__pyx_v_empty_type, PyObject *__pyx_v_annotate_xsi, PyObject *__pyx_v_annotate_pytype) {
   struct LxmlElement *__pyx_v_element = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
+  __Pyx_TraceFrameInit(__pyx_codeobj__48)
   __Pyx_RefNannySetupContext("annotate", 0);
+  __Pyx_TraceCall("annotate", __pyx_f[0], 1506, 0, __PYX_ERR(0, 1506, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1540
  *     """
@@ -23416,6 +24828,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
  *               ignore_old, empty_type, empty_pytype)
  */
+  __Pyx_TraceLine(1540,0,__PYX_ERR(0, 1540, __pyx_L1_error))
   __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
@@ -23428,6 +24841,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
+  __Pyx_TraceLine(1541,0,__PYX_ERR(0, 1541, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_pytype); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
@@ -23439,6 +24853,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
  * 
  * 
  */
+  __Pyx_TraceLine(1542,0,__PYX_ERR(0, 1542, __pyx_L1_error))
   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1542, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1541
@@ -23448,6 +24863,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
+  __Pyx_TraceLine(1541,0,__PYX_ERR(0, 1541, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__annotate(__pyx_v_element, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_empty_type, __pyx_v_empty_pytype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -23470,6 +24886,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
   __pyx_L0:;
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23489,6 +24906,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_StrType = 0;
   struct __pyx_obj_4lxml_9objectify_PyType *__pyx_v_NoneType = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -23497,6 +24915,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   xmlNode *__pyx_t_5;
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_annotate", 0);
+  __Pyx_TraceCall("_annotate", __pyx_f[0], 1545, 0, __PYX_ERR(0, 1545, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_empty_type_name);
   __Pyx_INCREF(__pyx_v_empty_pytype_name);
 
@@ -23507,6 +24926,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         return
  * 
  */
+  __Pyx_TraceLine(1552,0,__PYX_ERR(0, 1552, __pyx_L1_error))
   __pyx_t_2 = ((!(__pyx_v_annotate_xsi != 0)) != 0);
   if (__pyx_t_2) {
   } else {
@@ -23525,6 +24945,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  * 
  *     if empty_type_name is not None:
  */
+    __Pyx_TraceLine(1553,0,__PYX_ERR(0, 1553, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -23545,6 +24966,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         if isinstance(empty_type_name, bytes):
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  */
+  __Pyx_TraceLine(1555,0,__PYX_ERR(0, 1555, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_empty_type_name != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -23556,6 +24978,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  */
+    __Pyx_TraceLine(1556,0,__PYX_ERR(0, 1556, __pyx_L1_error))
     __pyx_t_2 = PyBytes_Check(__pyx_v_empty_type_name); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -23567,6 +24990,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:
  */
+      __Pyx_TraceLine(1557,0,__PYX_ERR(0, 1557, __pyx_L1_error))
       if (unlikely(__pyx_v_empty_type_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
         __PYX_ERR(0, 1557, __pyx_L1_error)
@@ -23592,6 +25016,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):
  */
+    __Pyx_TraceLine(1558,0,__PYX_ERR(0, 1558, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
       __PYX_ERR(0, 1558, __pyx_L1_error)
@@ -23621,6 +25046,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         if isinstance(empty_pytype_name, bytes):
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")
  */
+  __Pyx_TraceLine(1559,0,__PYX_ERR(0, 1559, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_empty_pytype_name != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -23632,6 +25058,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)
  */
+    __Pyx_TraceLine(1560,0,__PYX_ERR(0, 1560, __pyx_L1_error))
     __pyx_t_2 = PyBytes_Check(__pyx_v_empty_pytype_name); 
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
@@ -23643,6 +25070,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)
  *     else:
  */
+      __Pyx_TraceLine(1561,0,__PYX_ERR(0, 1561, __pyx_L1_error))
       if (unlikely(__pyx_v_empty_pytype_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
         __PYX_ERR(0, 1561, __pyx_L1_error)
@@ -23668,6 +25096,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     else:
  *         empty_pytype = None
  */
+    __Pyx_TraceLine(1562,0,__PYX_ERR(0, 1562, __pyx_L1_error))
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
       __PYX_ERR(0, 1562, __pyx_L1_error)
@@ -23697,6 +25126,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  * 
  *     StrType  = <PyType>_PYTYPE_DICT.get(u'str')
  */
+  __Pyx_TraceLine(1564,0,__PYX_ERR(0, 1564, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(Py_None);
     __pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
@@ -23710,6 +25140,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')
  * 
  */
+  __Pyx_TraceLine(1566,0,__PYX_ERR(0, 1566, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
     __PYX_ERR(0, 1566, __pyx_L1_error)
@@ -23729,6 +25160,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  * 
  *     doc = element._doc
  */
+  __Pyx_TraceLine(1567,0,__PYX_ERR(0, 1567, __pyx_L1_error))
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
     __PYX_ERR(0, 1567, __pyx_L1_error)
@@ -23748,6 +25180,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  */
+  __Pyx_TraceLine(1569,0,__PYX_ERR(0, 1569, __pyx_L1_error))
   __pyx_t_3 = ((PyObject *)__pyx_v_element->_doc);
   __Pyx_INCREF(__pyx_t_3);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
@@ -23760,6 +25193,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(1570,0,__PYX_ERR(0, 1570, __pyx_L1_error))
   __pyx_t_5 = __pyx_v_element->_c_node;
   __pyx_v_c_node = __pyx_t_5;
 
@@ -23770,6 +25204,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         _annotate_element(c_node, doc, annotate_xsi, annotate_pytype,
  */
+  __Pyx_TraceLine(1571,0,__PYX_ERR(0, 1571, __pyx_L1_error))
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
   /* "lxml/objectify.pyx":1572
@@ -23779,6 +25214,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *         _annotate_element(c_node, doc, annotate_xsi, annotate_pytype,
  *                           ignore_xsi, ignore_pytype,
  */
+  __Pyx_TraceLine(1572,0,__PYX_ERR(0, 1572, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
@@ -23789,6 +25225,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  *                           ignore_xsi, ignore_pytype,
  *                           empty_type_name, empty_pytype, StrType, NoneType)
  */
+    __Pyx_TraceLine(1573,0,__PYX_ERR(0, 1573, __pyx_L1_error))
     __pyx_t_6 = __pyx_f_4lxml_9objectify__annotate_element(__pyx_v_c_node, __pyx_v_doc, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype, __pyx_v_ignore_xsi, __pyx_v_ignore_pytype, __pyx_v_empty_type_name, __pyx_v_empty_pytype, __pyx_v_StrType, __pyx_v_NoneType); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1573, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":1572
@@ -23807,6 +25244,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  * 
  * cdef int _annotate_element(tree.xmlNode* c_node, _Document doc,
  */
+  __Pyx_TraceLine(1576,0,__PYX_ERR(0, 1576, __pyx_L1_error))
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
   /* "lxml/objectify.pyx":1545
@@ -23833,6 +25271,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __Pyx_XDECREF(__pyx_v_empty_type_name);
   __Pyx_XDECREF(__pyx_v_empty_pytype_name);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -23856,6 +25295,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_pytype_name = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -23866,6 +25306,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   PyObject *__pyx_t_7 = NULL;
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_annotate_element", 0);
+  __Pyx_TraceCall("_annotate_element", __pyx_f[0], 1578, 0, __PYX_ERR(0, 1578, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1584
  *                            PyType StrType, PyType NoneType) except -1:
@@ -23874,6 +25315,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *     typename = None
  *     istree = 0
  */
+  __Pyx_TraceLine(1584,0,__PYX_ERR(0, 1584, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
 
@@ -23884,6 +25326,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *     istree = 0
  * 
  */
+  __Pyx_TraceLine(1585,0,__PYX_ERR(0, 1585, __pyx_L1_error))
   __Pyx_INCREF(Py_None);
   __pyx_v_typename = Py_None;
 
@@ -23894,6 +25337,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     # if element is defined as xsi:nil, represent it as None
  */
+  __Pyx_TraceLine(1586,0,__PYX_ERR(0, 1586, __pyx_L1_error))
   __pyx_v_istree = 0;
 
   /* "lxml/objectify.pyx":1589
@@ -23903,6 +25347,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
  *         pytype = NoneType
  */
+  __Pyx_TraceLine(1589,0,__PYX_ERR(0, 1589, __pyx_L1_error))
   __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"nil")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1589, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1590, __pyx_L1_error)
@@ -23916,6 +25361,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if pytype is None and not ignore_xsi:
  */
+    __Pyx_TraceLine(1591,0,__PYX_ERR(0, 1591, __pyx_L1_error))
     __Pyx_INCREF(((PyObject *)__pyx_v_NoneType));
     __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_NoneType);
 
@@ -23935,6 +25381,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         # check that old xsi type value is valid
  *         typename = cetree.attributeValueFromNsName(
  */
+  __Pyx_TraceLine(1593,0,__PYX_ERR(0, 1593, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_pytype) == Py_None);
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
@@ -23954,6 +25401,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:
  */
+    __Pyx_TraceLine(1595,0,__PYX_ERR(0, 1595, __pyx_L1_error))
     __pyx_t_1 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1595, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_1);
@@ -23966,6 +25414,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:
  */
+    __Pyx_TraceLine(1597,0,__PYX_ERR(0, 1597, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_typename != Py_None);
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
@@ -23977,6 +25426,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)
  */
+      __Pyx_TraceLine(1598,0,__PYX_ERR(0, 1598, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 1598, __pyx_L1_error)
@@ -23996,6 +25446,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  */
+      __Pyx_TraceLine(1599,0,__PYX_ERR(0, 1599, __pyx_L1_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_pytype) == Py_None);
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
@@ -24003,7 +25454,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_4 = __pyx_t_3;
         goto __pyx_L9_bool_binop_done;
       }
-      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__18, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
+      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__44, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
       __pyx_t_2 = (__pyx_t_3 != 0);
       __pyx_t_4 = __pyx_t_2;
       __pyx_L9_bool_binop_done:;
@@ -24016,9 +25467,10 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:
  */
+        __Pyx_TraceLine(1600,0,__PYX_ERR(0, 1600, __pyx_L1_error))
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1600, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1600, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1600, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
@@ -24079,6 +25531,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             if pytype is not None and pytype is not StrType:
  *                 # StrType does not have a typecheck but is the default
  */
+        __Pyx_TraceLine(1601,0,__PYX_ERR(0, 1601, __pyx_L1_error))
         if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
           __PYX_ERR(0, 1601, __pyx_L1_error)
@@ -24107,6 +25560,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 # StrType does not have a typecheck but is the default
  *                 # anyway, so just accept it if given as type
  */
+      __Pyx_TraceLine(1602,0,__PYX_ERR(0, 1602, __pyx_L1_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_pytype) != Py_None);
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
@@ -24127,6 +25581,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 if pytype is None:
  *                     typename = None
  */
+        __Pyx_TraceLine(1606,0,__PYX_ERR(0, 1606, __pyx_L1_error))
         __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1606, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
@@ -24139,6 +25594,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     typename = None
  * 
  */
+        __Pyx_TraceLine(1607,0,__PYX_ERR(0, 1607, __pyx_L1_error))
         __pyx_t_4 = (((PyObject *)__pyx_v_pytype) == Py_None);
         __pyx_t_2 = (__pyx_t_4 != 0);
         if (__pyx_t_2) {
@@ -24150,6 +25606,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if pytype is None and not ignore_pytype:
  */
+          __Pyx_TraceLine(1608,0,__PYX_ERR(0, 1608, __pyx_L1_error))
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_typename, Py_None);
 
@@ -24196,6 +25653,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         # check that old pytype value is valid
  *         old_pytypename = cetree.attributeValueFromNsName(
  */
+  __Pyx_TraceLine(1610,0,__PYX_ERR(0, 1610, __pyx_L1_error))
   __pyx_t_4 = (((PyObject *)__pyx_v_pytype) == Py_None);
   __pyx_t_3 = (__pyx_t_4 != 0);
   if (__pyx_t_3) {
@@ -24215,6 +25673,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  */
+    __Pyx_TraceLine(1612,0,__PYX_ERR(0, 1612, __pyx_L1_error))
     __pyx_t_6 = attributeValueFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1612, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_old_pytypename = __pyx_t_6;
@@ -24227,6 +25686,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             if old_pytypename == TREE_PYTYPE_NAME:
  *                 if not cetree.hasChild(c_node):
  */
+    __Pyx_TraceLine(1614,0,__PYX_ERR(0, 1614, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_old_pytypename != Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -24238,6 +25698,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 if not cetree.hasChild(c_node):
  *                     # only case where we should keep it,
  */
+      __Pyx_TraceLine(1615,0,__PYX_ERR(0, 1615, __pyx_L1_error))
       __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_old_pytypename, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1615, __pyx_L1_error)
       if (__pyx_t_3) {
 
@@ -24248,6 +25709,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     # only case where we should keep it,
  *                     # everything else is clear enough
  */
+        __Pyx_TraceLine(1616,0,__PYX_ERR(0, 1616, __pyx_L1_error))
         __pyx_t_3 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
         if (__pyx_t_3) {
 
@@ -24258,6 +25720,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             else:
  *                 if old_pytypename == 'none':
  */
+          __Pyx_TraceLine(1619,0,__PYX_ERR(0, 1619, __pyx_L1_error))
           __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
           __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE);
 
@@ -24287,6 +25750,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     # transition from lxml 1.x
  *                     old_pytypename = "NoneType"
  */
+      __Pyx_TraceLine(1621,0,__PYX_ERR(0, 1621, __pyx_L1_error))
       /*else*/ {
         __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_old_pytypename, __pyx_n_s_none, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1621, __pyx_L1_error)
         if (__pyx_t_3) {
@@ -24298,6 +25762,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
  *                 if pytype is not None and pytype is not StrType:
  */
+          __Pyx_TraceLine(1623,0,__PYX_ERR(0, 1623, __pyx_L1_error))
           __Pyx_INCREF(__pyx_n_s_NoneType);
           __Pyx_DECREF_SET(__pyx_v_old_pytypename, __pyx_n_s_NoneType);
 
@@ -24317,6 +25782,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 if pytype is not None and pytype is not StrType:
  *                     # StrType does not have a typecheck but is the
  */
+        __Pyx_TraceLine(1624,0,__PYX_ERR(0, 1624, __pyx_L1_error))
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
           __PYX_ERR(0, 1624, __pyx_L1_error)
@@ -24336,6 +25802,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     # StrType does not have a typecheck but is the
  *                     # default anyway, so just accept it if given as
  */
+        __Pyx_TraceLine(1625,0,__PYX_ERR(0, 1625, __pyx_L1_error))
         __pyx_t_2 = (((PyObject *)__pyx_v_pytype) != Py_None);
         __pyx_t_4 = (__pyx_t_2 != 0);
         if (__pyx_t_4) {
@@ -24356,6 +25823,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if pytype is None:
  */
+          __Pyx_TraceLine(1629,0,__PYX_ERR(0, 1629, __pyx_L1_error))
           __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_9objectify__check_type(__pyx_v_c_node, __pyx_v_pytype)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
@@ -24397,6 +25865,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         # try to guess type
  *         if not cetree.hasChild(c_node):
  */
+  __Pyx_TraceLine(1631,0,__PYX_ERR(0, 1631, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)__pyx_v_pytype) == Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -24408,6 +25877,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             # element has no children => data class
  *             pytype = _guessPyType(textOf(c_node), StrType)
  */
+    __Pyx_TraceLine(1633,0,__PYX_ERR(0, 1633, __pyx_L1_error))
     __pyx_t_2 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_2) {
 
@@ -24418,6 +25888,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         else:
  *             istree = 1
  */
+      __Pyx_TraceLine(1635,0,__PYX_ERR(0, 1635, __pyx_L1_error))
       __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1635, __pyx_L1_error)
@@ -24443,6 +25914,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if pytype is None:
  */
+    __Pyx_TraceLine(1637,0,__PYX_ERR(0, 1637, __pyx_L1_error))
     /*else*/ {
       __pyx_v_istree = 1;
     }
@@ -24464,6 +25936,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):
  */
+  __Pyx_TraceLine(1639,0,__PYX_ERR(0, 1639, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_pytype) == Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -24475,6 +25948,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             pytype = StrType
  *         else:
  */
+    __Pyx_TraceLine(1641,0,__PYX_ERR(0, 1641, __pyx_L1_error))
     __pyx_t_3 = (hasText(__pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
@@ -24485,6 +25959,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         else:
  *             pytype = empty_pytype
  */
+      __Pyx_TraceLine(1642,0,__PYX_ERR(0, 1642, __pyx_L1_error))
       __Pyx_INCREF(((PyObject *)__pyx_v_StrType));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_StrType);
 
@@ -24505,6 +25980,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             if typename is None:
  *                 typename = empty_type_name
  */
+    __Pyx_TraceLine(1644,0,__PYX_ERR(0, 1644, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(((PyObject *)__pyx_v_empty_pytype));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_empty_pytype);
@@ -24516,6 +25992,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 typename = empty_type_name
  * 
  */
+      __Pyx_TraceLine(1645,0,__PYX_ERR(0, 1645, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_typename == Py_None);
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
@@ -24527,6 +26004,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if pytype is not None:
  */
+        __Pyx_TraceLine(1646,0,__PYX_ERR(0, 1646, __pyx_L1_error))
         __Pyx_INCREF(__pyx_v_empty_type_name);
         __Pyx_DECREF_SET(__pyx_v_typename, __pyx_v_empty_type_name);
 
@@ -24557,6 +26035,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         if typename is None:
  *             if not istree:
  */
+  __Pyx_TraceLine(1648,0,__PYX_ERR(0, 1648, __pyx_L1_error))
   __pyx_t_2 = (((PyObject *)__pyx_v_pytype) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -24568,6 +26047,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             if not istree:
  *                 if pytype._schema_types:
  */
+    __Pyx_TraceLine(1649,0,__PYX_ERR(0, 1649, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_typename == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -24579,6 +26059,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 if pytype._schema_types:
  *                     # pytype->xsi:type is a 1:n mapping
  */
+      __Pyx_TraceLine(1650,0,__PYX_ERR(0, 1650, __pyx_L1_error))
       __pyx_t_2 = ((!(__pyx_v_istree != 0)) != 0);
       if (__pyx_t_2) {
 
@@ -24589,6 +26070,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     # pytype->xsi:type is a 1:n mapping
  *                     # simply take the first
  */
+        __Pyx_TraceLine(1651,0,__PYX_ERR(0, 1651, __pyx_L1_error))
         __pyx_t_2 = (__pyx_v_pytype->_schema_types != Py_None)&&(PyList_GET_SIZE(__pyx_v_pytype->_schema_types) != 0);
         if (__pyx_t_2) {
 
@@ -24599,6 +26081,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         elif typename not in pytype._schema_types:
  *             typename = pytype._schema_types[0]
  */
+          __Pyx_TraceLine(1654,0,__PYX_ERR(0, 1654, __pyx_L1_error))
           if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
             PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
             __PYX_ERR(0, 1654, __pyx_L1_error)
@@ -24643,6 +26126,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             typename = pytype._schema_types[0]
  * 
  */
+    __Pyx_TraceLine(1655,0,__PYX_ERR(0, 1655, __pyx_L1_error))
     __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_typename, __pyx_v_pytype->_schema_types, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1655, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -24654,6 +26138,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if annotate_xsi:
  */
+      __Pyx_TraceLine(1656,0,__PYX_ERR(0, 1656, __pyx_L1_error))
       if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
         __PYX_ERR(0, 1656, __pyx_L1_error)
@@ -24689,6 +26174,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         if typename is None or istree:
  *             cetree.delAttributeFromNsName(
  */
+  __Pyx_TraceLine(1658,0,__PYX_ERR(0, 1658, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_annotate_xsi != 0);
   if (__pyx_t_3) {
 
@@ -24699,6 +26185,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             cetree.delAttributeFromNsName(
  *                 c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  */
+    __Pyx_TraceLine(1659,0,__PYX_ERR(0, 1659, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_typename == Py_None);
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (!__pyx_t_4) {
@@ -24718,6 +26205,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         else:
  */
+      __Pyx_TraceLine(1660,0,__PYX_ERR(0, 1660, __pyx_L1_error))
       (void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))));
 
       /* "lxml/objectify.pyx":1659
@@ -24737,6 +26225,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  */
+    __Pyx_TraceLine(1664,0,__PYX_ERR(0, 1664, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1664, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -24750,6 +26239,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:
  */
+      __Pyx_TraceLine(1665,0,__PYX_ERR(0, 1665, __pyx_L1_error))
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_NS, ((unsigned char *)((unsigned char *)((char const *)"xsd"))));
 
       /* "lxml/objectify.pyx":1667
@@ -24759,6 +26249,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)
  */
+      __Pyx_TraceLine(1667,0,__PYX_ERR(0, 1667, __pyx_L1_error))
       __pyx_t_3 = ((__pyx_v_c_ns != NULL) != 0);
       if (__pyx_t_3) {
 
@@ -24769,7 +26260,8 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  */
-        __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__18, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1668, __pyx_L1_error)
+        __Pyx_TraceLine(1668,0,__PYX_ERR(0, 1668, __pyx_L1_error))
+        __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__44, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1668, __pyx_L1_error)
         __pyx_t_4 = (__pyx_t_3 != 0);
         if (__pyx_t_4) {
 
@@ -24780,7 +26272,8 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  */
-          __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_split, __pyx_v_typename_utf8, __pyx_kp_b__18, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1669, __pyx_L1_error)
+          __Pyx_TraceLine(1669,0,__PYX_ERR(0, 1669, __pyx_L1_error))
+          __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_split, __pyx_v_typename_utf8, __pyx_kp_b__44, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1669, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
             PyObject* sequence = __pyx_t_6;
@@ -24840,6 +26333,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  */
+          __Pyx_TraceLine(1670,0,__PYX_ERR(0, 1670, __pyx_L1_error))
           __pyx_t_3 = ((__pyx_v_c_ns->prefix == NULL) != 0);
           if (!__pyx_t_3) {
           } else {
@@ -24858,6 +26352,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  */
+            __Pyx_TraceLine(1671,0,__PYX_ERR(0, 1671, __pyx_L1_error))
             __Pyx_INCREF(__pyx_v_name);
             __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_v_name);
 
@@ -24878,6 +26373,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  */
+          __Pyx_TraceLine(1672,0,__PYX_ERR(0, 1672, __pyx_L1_error))
           __pyx_t_4 = ((xmlStrcmp((const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix), __pyx_v_c_ns->prefix) != 0) != 0);
           if (__pyx_t_4) {
 
@@ -24888,9 +26384,10 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
  */
+            __Pyx_TraceLine(1673,0,__PYX_ERR(0, 1673, __pyx_L1_error))
             __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1673, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_6);
-            __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__18); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __pyx_L1_error)
+            __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__44); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
             __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1673, __pyx_L1_error)
@@ -24926,6 +26423,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  */
+        __Pyx_TraceLine(1674,0,__PYX_ERR(0, 1674, __pyx_L1_error))
         __pyx_t_3 = ((__pyx_v_c_ns->prefix != NULL) != 0);
         if (__pyx_t_3) {
         } else {
@@ -24944,9 +26442,10 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  */
+          __Pyx_TraceLine(1675,0,__PYX_ERR(0, 1675, __pyx_L1_error))
           __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1675, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__18); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1675, __pyx_L1_error)
+          __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__44); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1675, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1675, __pyx_L1_error)
@@ -24981,6 +26480,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
  */
+      __Pyx_TraceLine(1676,0,__PYX_ERR(0, 1676, __pyx_L1_error))
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"xsi"))));
 
       /* "lxml/objectify.pyx":1678
@@ -24990,6 +26490,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     if annotate_pytype:
  */
+      __Pyx_TraceLine(1678,0,__PYX_ERR(0, 1678, __pyx_L1_error))
       (void)(xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, ((unsigned char *)((unsigned char *)((char const *)"type"))), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_typename_utf8)));
     }
     __pyx_L37:;
@@ -25010,6 +26511,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *         if pytype is None:
  *             # delete attribute if it exists
  */
+  __Pyx_TraceLine(1680,0,__PYX_ERR(0, 1680, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_annotate_pytype != 0);
   if (__pyx_t_4) {
 
@@ -25020,6 +26522,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             # delete attribute if it exists
  *             cetree.delAttributeFromNsName(
  */
+    __Pyx_TraceLine(1681,0,__PYX_ERR(0, 1681, __pyx_L1_error))
     __pyx_t_4 = (((PyObject *)__pyx_v_pytype) == Py_None);
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
@@ -25031,6 +26534,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         else:
  */
+      __Pyx_TraceLine(1683,0,__PYX_ERR(0, 1683, __pyx_L1_error))
       (void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME));
 
       /* "lxml/objectify.pyx":1681
@@ -25050,6 +26554,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
  *             pytype_name = cetree.utf8(pytype.name)
  */
+    __Pyx_TraceLine(1687,0,__PYX_ERR(0, 1687, __pyx_L1_error))
     /*else*/ {
 
       /* "lxml/objectify.pyx":1688
@@ -25059,6 +26564,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             pytype_name = cetree.utf8(pytype.name)
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  */
+      __Pyx_TraceLine(1688,0,__PYX_ERR(0, 1688, __pyx_L1_error))
       __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, ((unsigned char *)((unsigned char *)((char const *)"py"))));
 
       /* "lxml/objectify.pyx":1689
@@ -25068,6 +26574,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  *                               _xcstr(pytype_name))
  */
+      __Pyx_TraceLine(1689,0,__PYX_ERR(0, 1689, __pyx_L1_error))
       __pyx_t_6 = __pyx_v_pytype->name;
       __Pyx_INCREF(__pyx_t_6);
       __pyx_t_5 = utf8(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1689, __pyx_L1_error)
@@ -25083,6 +26590,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:
  */
+      __Pyx_TraceLine(1690,0,__PYX_ERR(0, 1690, __pyx_L1_error))
       (void)(xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_pytype_name)));
 
       /* "lxml/objectify.pyx":1692
@@ -25092,6 +26600,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 c_ns = cetree.findOrBuildNodeNsPrefix(
  *                     doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  */
+      __Pyx_TraceLine(1692,0,__PYX_ERR(0, 1692, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_pytype == __pyx_v_NoneType);
       __pyx_t_4 = (__pyx_t_3 != 0);
       if (__pyx_t_4) {
@@ -25103,6 +26612,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *                 tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")
  */
+        __Pyx_TraceLine(1693,0,__PYX_ERR(0, 1693, __pyx_L1_error))
         __pyx_v_c_ns = findOrBuildNodeNsPrefix(__pyx_v_doc, __pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"xsi"))));
 
         /* "lxml/objectify.pyx":1695
@@ -25112,6 +26622,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  *     return 0
  */
+        __Pyx_TraceLine(1695,0,__PYX_ERR(0, 1695, __pyx_L1_error))
         (void)(xmlSetNsProp(__pyx_v_c_node, __pyx_v_c_ns, ((unsigned char *)((unsigned char *)((char const *)"nil"))), ((unsigned char *)((unsigned char *)((char const *)"true")))));
 
         /* "lxml/objectify.pyx":1692
@@ -25141,6 +26652,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  * 
  * cdef object _strip_attributes = etree.strip_attributes
  */
+  __Pyx_TraceLine(1697,0,__PYX_ERR(0, 1697, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -25168,6 +26680,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __Pyx_XDECREF(__pyx_v_typename_utf8);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_pytype_name);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25282,6 +26795,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
 static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_element_or_tree, int __pyx_v_pytype, int __pyx_v_xsi, int __pyx_v_xsi_nil, int __pyx_v_cleanup_namespaces) {
   PyObject *__pyx_v_attribute_names = 0;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -25289,7 +26803,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__50)
   __Pyx_RefNannySetupContext("deannotate", 0);
+  __Pyx_TraceCall("deannotate", __pyx_f[0], 1702, 0, __PYX_ERR(0, 1702, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1719
  *     the tree, pass the option ``cleanup_namespaces=True``.
@@ -25298,6 +26814,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  * 
  *     if pytype:
  */
+  __Pyx_TraceLine(1719,0,__PYX_ERR(0, 1719, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_attribute_names = ((PyObject*)__pyx_t_1);
@@ -25310,6 +26827,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:
  */
+  __Pyx_TraceLine(1721,0,__PYX_ERR(0, 1721, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_pytype != 0);
   if (__pyx_t_2) {
 
@@ -25320,6 +26838,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  */
+    __Pyx_TraceLine(1722,0,__PYX_ERR(0, 1722, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1722, __pyx_L1_error)
@@ -25341,6 +26860,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:
  */
+  __Pyx_TraceLine(1723,0,__PYX_ERR(0, 1723, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_xsi != 0);
   if (__pyx_t_2) {
 
@@ -25351,6 +26871,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *     if xsi_nil:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)
  */
+    __Pyx_TraceLine(1724,0,__PYX_ERR(0, 1724, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR;
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1724, __pyx_L1_error)
@@ -25372,6 +26893,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)
  * 
  */
+  __Pyx_TraceLine(1725,0,__PYX_ERR(0, 1725, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_xsi_nil != 0);
   if (__pyx_t_2) {
 
@@ -25382,6 +26904,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)
  */
+    __Pyx_TraceLine(1726,0,__PYX_ERR(0, 1726, __pyx_L1_error))
     __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
     __Pyx_INCREF(__pyx_t_1);
     __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1726, __pyx_L1_error)
@@ -25403,6 +26926,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *     if cleanup_namespaces:
  *         _cleanup_namespaces(element_or_tree)
  */
+  __Pyx_TraceLine(1728,0,__PYX_ERR(0, 1728, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1728, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_element_or_tree);
@@ -25426,6 +26950,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  *         _cleanup_namespaces(element_or_tree)
  * 
  */
+  __Pyx_TraceLine(1729,0,__PYX_ERR(0, 1729, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_cleanup_namespaces != 0);
   if (__pyx_t_2) {
 
@@ -25436,6 +26961,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  * 
  * ################################################################################
  */
+    __Pyx_TraceLine(1730,0,__PYX_ERR(0, 1730, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__cleanup_namespaces);
     __pyx_t_5 = __pyx_v_4lxml_9objectify__cleanup_namespaces; __pyx_t_1 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -25512,6 +27038,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_attribute_names);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25584,11 +27111,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_29set_default_parser(PyObject *__pyx_
 
 static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_new_parser) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__51)
   __Pyx_RefNannySetupContext("set_default_parser", 0);
+  __Pyx_TraceCall("set_default_parser", __pyx_f[0], 1742, 0, __PYX_ERR(0, 1742, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1753
  *     """
@@ -25597,6 +27127,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):
  */
+  __Pyx_TraceLine(1753,0,__PYX_ERR(0, 1753, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_new_parser == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -25608,6 +27139,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  *     elif isinstance(new_parser, etree.XMLParser):
  *         objectify_parser = new_parser
  */
+    __Pyx_TraceLine(1754,0,__PYX_ERR(0, 1754, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
     __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
@@ -25630,6 +27162,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  *         objectify_parser = new_parser
  *     else:
  */
+  __Pyx_TraceLine(1755,0,__PYX_ERR(0, 1755, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1755, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1755, __pyx_L1_error)
@@ -25644,6 +27177,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  *     else:
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  */
+    __Pyx_TraceLine(1756,0,__PYX_ERR(0, 1756, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_new_parser);
     __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_new_parser);
@@ -25666,6 +27200,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  * 
  * def makeparser(**kw):
  */
+  __Pyx_TraceLine(1758,0,__PYX_ERR(0, 1758, __pyx_L1_error))
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_parser_must_inherit_from_lxml_et, 0, 0);
     __PYX_ERR(0, 1758, __pyx_L1_error)
@@ -25689,6 +27224,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25726,6 +27262,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_31makeparser(PyObject *__pyx_self, Py
 static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kw) {
   PyObject *__pyx_v_parser = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -25734,7 +27271,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__52)
   __Pyx_RefNannySetupContext("makeparser", 0);
+  __Pyx_TraceCall("makeparser", __pyx_f[0], 1760, 0, __PYX_ERR(0, 1760, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1770
  *     ``remove_blank_text`` boolean keyword option yourself.
@@ -25743,6 +27282,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)
  */
+  __Pyx_TraceLine(1770,0,__PYX_ERR(0, 1770, __pyx_L1_error))
   __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_remove_blank_text, __pyx_v_kw, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1770, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -25754,6 +27294,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  */
+    __Pyx_TraceLine(1771,0,__PYX_ERR(0, 1771, __pyx_L1_error))
     if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) __PYX_ERR(0, 1771, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":1770
@@ -25772,6 +27313,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  *     return parser
  */
+  __Pyx_TraceLine(1772,0,__PYX_ERR(0, 1772, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1772, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_v_kw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1772, __pyx_L1_error)
@@ -25787,6 +27329,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  *     return parser
  * 
  */
+  __Pyx_TraceLine(1773,0,__PYX_ERR(0, 1773, __pyx_L1_error))
   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1773, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1773, __pyx_L1_error)
@@ -25846,6 +27389,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):
  */
+  __Pyx_TraceLine(1774,0,__PYX_ERR(0, 1774, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_parser);
   __pyx_r = __pyx_v_parser;
@@ -25871,6 +27415,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -25885,10 +27430,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
 
 static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx_v_tag, PyObject *__pyx_v_text, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
   struct LxmlElement *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_makeElement", 0);
+  __Pyx_TraceCall("_makeElement", __pyx_f[0], 1776, 0, __PYX_ERR(0, 1776, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":1777
  * 
@@ -25897,6 +27444,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(1777,0,__PYX_ERR(0, 1777, __pyx_L1_error))
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = __pyx_v_4lxml_9objectify_objectify_parser;
   __Pyx_INCREF(__pyx_t_1);
@@ -25923,6 +27471,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26012,13 +27561,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_33fromstring(PyObject *__pyx_self, Py
 
 static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xml, PyObject *__pyx_v_parser, PyObject *__pyx_v_base_url) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__53)
   __Pyx_RefNannySetupContext("fromstring", 0);
+  __Pyx_TraceCall("fromstring", __pyx_f[0], 1787, 0, __PYX_ERR(0, 1787, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_parser);
 
   /* "lxml/objectify.pyx":1799
@@ -26028,6 +27580,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)
  */
+  __Pyx_TraceLine(1799,0,__PYX_ERR(0, 1799, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_parser == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26039,6 +27592,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  */
+    __Pyx_TraceLine(1800,0,__PYX_ERR(0, 1800, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
@@ -26058,6 +27612,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  * 
  * def XML(xml, parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(1801,0,__PYX_ERR(0, 1801, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -26096,6 +27651,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26185,13 +27741,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_35XML(PyObject *__pyx_self, PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xml, PyObject *__pyx_v_parser, PyObject *__pyx_v_base_url) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__54)
   __Pyx_RefNannySetupContext("XML", 0);
+  __Pyx_TraceCall("XML", __pyx_f[0], 1803, 0, __PYX_ERR(0, 1803, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_parser);
 
   /* "lxml/objectify.pyx":1815
@@ -26201,6 +27760,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)
  */
+  __Pyx_TraceLine(1815,0,__PYX_ERR(0, 1815, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_parser == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26212,6 +27772,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  */
+    __Pyx_TraceLine(1816,0,__PYX_ERR(0, 1816, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
@@ -26231,6 +27792,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  * 
  * cdef object _parse
  */
+  __Pyx_TraceLine(1817,0,__PYX_ERR(0, 1817, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -26269,6 +27831,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26358,13 +27921,16 @@ static PyObject *__pyx_pw_4lxml_9objectify_37parse(PyObject *__pyx_self, PyObjec
 
 static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_parser, PyObject *__pyx_v_base_url) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__55)
   __Pyx_RefNannySetupContext("parse", 0);
+  __Pyx_TraceCall("parse", __pyx_f[0], 1822, 0, __PYX_ERR(0, 1822, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_parser);
 
   /* "lxml/objectify.pyx":1833
@@ -26374,6 +27940,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  *         parser = objectify_parser
  *     return _parse(f, parser, base_url=base_url)
  */
+  __Pyx_TraceLine(1833,0,__PYX_ERR(0, 1833, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_parser == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26385,6 +27952,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  *     return _parse(f, parser, base_url=base_url)
  * 
  */
+    __Pyx_TraceLine(1834,0,__PYX_ERR(0, 1834, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
@@ -26404,6 +27972,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  * 
  * cdef dict _DEFAULT_NSMAP = {
  */
+  __Pyx_TraceLine(1835,0,__PYX_ERR(0, 1835, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -26442,6 +28011,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_parser);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26549,6 +28119,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_39Element(PyObject *__pyx_self, PyObj
 
 static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v__tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v__pytype, PyObject *__pyx_v__attributes) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -26556,7 +28127,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyObject *__pyx_t_6 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__56)
   __Pyx_RefNannySetupContext("Element", 0);
+  __Pyx_TraceCall("Element", __pyx_f[0], 1845, 0, __PYX_ERR(0, 1845, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_attrib);
   __Pyx_INCREF(__pyx_v_nsmap);
   __Pyx_INCREF(__pyx_v__pytype);
@@ -26569,6 +28142,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *         if _attributes:
  *             attrib = dict(attrib)
  */
+  __Pyx_TraceLine(1853,0,__PYX_ERR(0, 1853, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attrib != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26580,6 +28154,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
+    __Pyx_TraceLine(1854,0,__PYX_ERR(0, 1854, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1854, __pyx_L1_error)
     if (__pyx_t_2) {
 
@@ -26590,6 +28165,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
+      __Pyx_TraceLine(1855,0,__PYX_ERR(0, 1855, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_3);
@@ -26602,6 +28178,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *         _attributes = attrib
  *     if _pytype is None:
  */
+      __Pyx_TraceLine(1856,0,__PYX_ERR(0, 1856, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = NULL;
@@ -26665,6 +28242,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME
  */
+    __Pyx_TraceLine(1857,0,__PYX_ERR(0, 1857, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
@@ -26684,6 +28262,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:
  */
+  __Pyx_TraceLine(1858,0,__PYX_ERR(0, 1858, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v__pytype == Py_None);
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -26695,6 +28274,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  */
+    __Pyx_TraceLine(1859,0,__PYX_ERR(0, 1859, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
 
@@ -26714,6 +28294,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *         nsmap = _DEFAULT_NSMAP
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype
  */
+  __Pyx_TraceLine(1860,0,__PYX_ERR(0, 1860, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_nsmap == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26725,6 +28306,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype
  *     return _makeElement(_tag, None, _attributes, nsmap)
  */
+    __Pyx_TraceLine(1861,0,__PYX_ERR(0, 1861, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
@@ -26744,6 +28326,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  */
+  __Pyx_TraceLine(1862,0,__PYX_ERR(0, 1862, __pyx_L1_error))
   __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_3, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1862, __pyx_L1_error)
@@ -26756,6 +28339,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,
  */
+  __Pyx_TraceLine(1863,0,__PYX_ERR(0, 1863, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_v__tag, Py_None, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -26785,6 +28369,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __Pyx_XDECREF(__pyx_v_nsmap);
   __Pyx_XDECREF(__pyx_v__pytype);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -26904,6 +28489,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   PyObject *__pyx_v_strval = NULL;
   PyObject *__pyx_v_stringify = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
@@ -26916,7 +28502,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   PyObject *(*__pyx_t_9)(PyObject *);
   Py_ssize_t __pyx_t_10;
   PyObject *(*__pyx_t_11)(PyObject *);
+  __Pyx_TraceFrameInit(__pyx_codeobj__57)
   __Pyx_RefNannySetupContext("DataElement", 0);
+  __Pyx_TraceCall("DataElement", __pyx_f[0], 1865, 0, __PYX_ERR(0, 1865, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_attrib);
   __Pyx_INCREF(__pyx_v_nsmap);
   __Pyx_INCREF(__pyx_v__pytype);
@@ -26930,6 +28518,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:
  */
+  __Pyx_TraceLine(1880,0,__PYX_ERR(0, 1880, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_nsmap == Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -26941,6 +28530,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     if attrib is not None and attrib:
  *         if _attributes:
  */
+    __Pyx_TraceLine(1881,0,__PYX_ERR(0, 1881, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
@@ -26960,6 +28550,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _attributes:
  *             attrib = dict(attrib)
  */
+  __Pyx_TraceLine(1882,0,__PYX_ERR(0, 1882, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_attrib != Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
@@ -26979,6 +28570,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
+    __Pyx_TraceLine(1883,0,__PYX_ERR(0, 1883, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1883, __pyx_L1_error)
     if (__pyx_t_2) {
 
@@ -26989,6 +28581,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
+      __Pyx_TraceLine(1884,0,__PYX_ERR(0, 1884, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1884, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_4);
@@ -27001,6 +28594,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  */
+      __Pyx_TraceLine(1885,0,__PYX_ERR(0, 1885, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1885, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
@@ -27064,6 +28658,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:
  */
+    __Pyx_TraceLine(1886,0,__PYX_ERR(0, 1886, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
@@ -27083,6 +28678,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _pytype is None:
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:
  */
+  __Pyx_TraceLine(1887,0,__PYX_ERR(0, 1887, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v__value, __pyx_ptype_4lxml_9objectify_ObjectifiedElement); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -27094,6 +28690,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:
  *                 # special case: no change!
  */
+    __Pyx_TraceLine(1888,0,__PYX_ERR(0, 1888, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v__pytype == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -27105,6 +28702,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 # special case: no change!
  *                 return _value.__copy__()
  */
+      __Pyx_TraceLine(1889,0,__PYX_ERR(0, 1889, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v__xsi == Py_None);
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
@@ -27132,6 +28730,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     if isinstance(_value, ObjectifiedDataElement):
  *         # reuse existing nsmap unless redefined in nsmap parameter
  */
+        __Pyx_TraceLine(1891,0,__PYX_ERR(0, 1891, __pyx_L1_error))
         __Pyx_XDECREF(__pyx_r);
         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1891, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
@@ -27191,6 +28790,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap
  */
+  __Pyx_TraceLine(1892,0,__PYX_ERR(0, 1892, __pyx_L1_error))
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v__value, __pyx_ptype_4lxml_9objectify_ObjectifiedDataElement); 
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
@@ -27202,6 +28802,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
+    __Pyx_TraceLine(1894,0,__PYX_ERR(0, 1894, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1894, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_temp = __pyx_t_4;
@@ -27214,6 +28815,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             temp = dict(temp)
  *             temp.update(nsmap)
  */
+    __Pyx_TraceLine(1895,0,__PYX_ERR(0, 1895, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_temp != Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -27233,6 +28835,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             temp.update(nsmap)
  *             nsmap = temp
  */
+      __Pyx_TraceLine(1896,0,__PYX_ERR(0, 1896, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1896, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
@@ -27245,6 +28848,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             nsmap = temp
  *         # reuse existing attributes unless redefined in attrib/_attributes
  */
+      __Pyx_TraceLine(1897,0,__PYX_ERR(0, 1897, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_7 = NULL;
@@ -27299,6 +28903,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib
  */
+      __Pyx_TraceLine(1898,0,__PYX_ERR(0, 1898, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_temp);
 
@@ -27318,6 +28923,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
+    __Pyx_TraceLine(1900,0,__PYX_ERR(0, 1900, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1900, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
@@ -27330,6 +28936,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             temp = dict(temp)
  *             temp.update(_attributes)
  */
+    __Pyx_TraceLine(1901,0,__PYX_ERR(0, 1901, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_temp != Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -27349,6 +28956,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             temp.update(_attributes)
  *             _attributes = temp
  */
+      __Pyx_TraceLine(1902,0,__PYX_ERR(0, 1902, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1902, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
@@ -27361,6 +28969,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             _attributes = temp
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  */
+      __Pyx_TraceLine(1903,0,__PYX_ERR(0, 1903, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1903, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
@@ -27415,6 +29024,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  *         # arguments
  */
+      __Pyx_TraceLine(1904,0,__PYX_ERR(0, 1904, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_temp);
 
@@ -27434,6 +29044,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  */
+    __Pyx_TraceLine(1907,0,__PYX_ERR(0, 1907, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v__xsi == Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -27454,6 +29065,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  */
+      __Pyx_TraceLine(1908,0,__PYX_ERR(0, 1908, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1908, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_7 = NULL;
@@ -27509,6 +29121,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  *     if _xsi is not None:
  */
+      __Pyx_TraceLine(1909,0,__PYX_ERR(0, 1909, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1909, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1909, __pyx_L1_error)
@@ -27587,6 +29200,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)
  */
+  __Pyx_TraceLine(1911,0,__PYX_ERR(0, 1911, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v__xsi != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -27598,7 +29212,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  */
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__18, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1912, __pyx_L1_error)
+    __Pyx_TraceLine(1912,0,__PYX_ERR(0, 1912, __pyx_L1_error))
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__44, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1912, __pyx_L1_error)
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
@@ -27609,9 +29224,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  */
+      __Pyx_TraceLine(1913,0,__PYX_ERR(0, 1913, __pyx_L1_error))
       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1913, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1913, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1913, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -27672,6 +29288,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  */
+      __Pyx_TraceLine(1914,0,__PYX_ERR(0, 1914, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1914, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_4 = NULL;
@@ -27727,6 +29344,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:
  */
+      __Pyx_TraceLine(1915,0,__PYX_ERR(0, 1915, __pyx_L1_error))
       __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1915, __pyx_L1_error)
       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1915, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -27739,6 +29357,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         elif nsmap is _DEFAULT_NSMAP:
  *             name = _xsi
  */
+        __Pyx_TraceLine(1916,0,__PYX_ERR(0, 1916, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
         __PYX_ERR(0, 1916, __pyx_L1_error)
 
@@ -27768,6 +29387,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             name = _xsi
  *             _xsi = u'xsd:' + _xsi
  */
+    __Pyx_TraceLine(1917,0,__PYX_ERR(0, 1917, __pyx_L1_error))
     __pyx_t_1 = (__pyx_v_nsmap == __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
@@ -27779,6 +29399,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             _xsi = u'xsd:' + _xsi
  *         else:
  */
+      __Pyx_TraceLine(1918,0,__PYX_ERR(0, 1918, __pyx_L1_error))
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
 
@@ -27789,6 +29410,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         else:
  *             name = _xsi
  */
+      __Pyx_TraceLine(1919,0,__PYX_ERR(0, 1919, __pyx_L1_error))
       __pyx_t_5 = PyNumber_Add(__pyx_kp_u_xsd, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1919, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_5);
@@ -27811,6 +29433,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:
  */
+    __Pyx_TraceLine(1921,0,__PYX_ERR(0, 1921, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
@@ -27822,6 +29445,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  */
+      __Pyx_TraceLine(1922,0,__PYX_ERR(0, 1922, __pyx_L1_error))
       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1922, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_6 = NULL;
@@ -27940,6 +29564,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi
  */
+        __Pyx_TraceLine(1923,0,__PYX_ERR(0, 1923, __pyx_L1_error))
         __pyx_t_5 = PyObject_RichCompare(__pyx_v_ns, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1923, __pyx_L1_error)
         __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1923, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -27952,6 +29577,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                         _xsi = prefix + u':' + _xsi
  *                     break
  */
+          __Pyx_TraceLine(1924,0,__PYX_ERR(0, 1924, __pyx_L1_error))
           __pyx_t_1 = (__pyx_v_prefix != Py_None);
           __pyx_t_3 = (__pyx_t_1 != 0);
           if (__pyx_t_3) {
@@ -27971,7 +29597,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                     break
  *             else:
  */
-            __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__18); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1925, __pyx_L1_error)
+            __Pyx_TraceLine(1925,0,__PYX_ERR(0, 1925, __pyx_L1_error))
+            __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__44); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1925, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_v__xsi); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1925, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_4);
@@ -27995,6 +29622,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             else:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  */
+          __Pyx_TraceLine(1926,0,__PYX_ERR(0, 1926, __pyx_L1_error))
           goto __pyx_L30_break;
 
           /* "lxml/objectify.pyx":1923
@@ -28013,6 +29641,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  */
+        __Pyx_TraceLine(1922,0,__PYX_ERR(0, 1922, __pyx_L1_error))
       }
       /*else*/ {
 
@@ -28023,6 +29652,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
  *         if _pytype is None:
  */
+        __Pyx_TraceLine(1928,0,__PYX_ERR(0, 1928, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
         __PYX_ERR(0, 1928, __pyx_L1_error)
       }
@@ -28034,6 +29664,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  */
+      __Pyx_TraceLine(1922,0,__PYX_ERR(0, 1922, __pyx_L1_error))
       __pyx_L30_break:;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
@@ -28046,6 +29677,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _pytype is None:
  *             # allow using unregistered or even wrong xsi:type names
  */
+    __Pyx_TraceLine(1929,0,__PYX_ERR(0, 1929, __pyx_L1_error))
     if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) __PYX_ERR(0, 1929, __pyx_L1_error)
 
     /* "lxml/objectify.pyx":1930
@@ -28055,6 +29687,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  */
+    __Pyx_TraceLine(1930,0,__PYX_ERR(0, 1930, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v__pytype == Py_None);
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
@@ -28066,6 +29699,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  */
+      __Pyx_TraceLine(1932,0,__PYX_ERR(0, 1932, __pyx_L1_error))
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
         __PYX_ERR(0, 1932, __pyx_L1_error)
@@ -28085,6 +29719,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:
  */
+      __Pyx_TraceLine(1933,0,__PYX_ERR(0, 1933, __pyx_L1_error))
       __pyx_t_3 = (((PyObject *)__pyx_v_py_type) == Py_None);
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
@@ -28096,6 +29731,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             if py_type is not None:
  *                 _pytype = py_type.name
  */
+        __Pyx_TraceLine(1934,0,__PYX_ERR(0, 1934, __pyx_L1_error))
         if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
           __PYX_ERR(0, 1934, __pyx_L1_error)
@@ -28124,6 +29760,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 _pytype = py_type.name
  * 
  */
+      __Pyx_TraceLine(1935,0,__PYX_ERR(0, 1935, __pyx_L1_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_py_type) != Py_None);
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
@@ -28135,6 +29772,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  *     if _pytype is None:
  */
+        __Pyx_TraceLine(1936,0,__PYX_ERR(0, 1936, __pyx_L1_error))
         __pyx_t_8 = __pyx_v_py_type->name;
         __Pyx_INCREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_8);
@@ -28174,6 +29812,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         _pytype = _pytypename(_value)
  * 
  */
+  __Pyx_TraceLine(1938,0,__PYX_ERR(0, 1938, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v__pytype == Py_None);
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -28185,6 +29824,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  *     if _value is None and _pytype != u"str":
  */
+    __Pyx_TraceLine(1939,0,__PYX_ERR(0, 1939, __pyx_L1_error))
     __pyx_t_8 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1939, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_8);
@@ -28206,6 +29846,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         _pytype = _pytype or u"NoneType"
  *         strval = None
  */
+  __Pyx_TraceLine(1941,0,__PYX_ERR(0, 1941, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v__value == Py_None);
   __pyx_t_1 = (__pyx_t_3 != 0);
   if (__pyx_t_1) {
@@ -28225,6 +29866,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         strval = None
  *     elif python._isString(_value):
  */
+    __Pyx_TraceLine(1942,0,__PYX_ERR(0, 1942, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1942, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
@@ -28245,6 +29887,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     elif python._isString(_value):
  *         strval = _value
  */
+    __Pyx_TraceLine(1943,0,__PYX_ERR(0, 1943, __pyx_L1_error))
     __Pyx_INCREF(Py_None);
     __pyx_v_strval = Py_None;
 
@@ -28265,6 +29908,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         strval = _value
  *     elif isinstance(_value, bool):
  */
+  __Pyx_TraceLine(1944,0,__PYX_ERR(0, 1944, __pyx_L1_error))
   __pyx_t_2 = (_isString(__pyx_v__value) != 0);
   if (__pyx_t_2) {
 
@@ -28275,6 +29919,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     elif isinstance(_value, bool):
  *         if _value:
  */
+    __Pyx_TraceLine(1945,0,__PYX_ERR(0, 1945, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v__value);
     __pyx_v_strval = __pyx_v__value;
 
@@ -28295,6 +29940,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _value:
  *             strval = u"true"
  */
+  __Pyx_TraceLine(1946,0,__PYX_ERR(0, 1946, __pyx_L1_error))
   __pyx_t_8 = ((PyObject*)&PyBool_Type);
   __Pyx_INCREF(__pyx_t_8);
   __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1946, __pyx_L1_error)
@@ -28309,6 +29955,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             strval = u"true"
  *         else:
  */
+    __Pyx_TraceLine(1947,0,__PYX_ERR(0, 1947, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1947, __pyx_L1_error)
     if (__pyx_t_1) {
 
@@ -28319,6 +29966,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         else:
  *             strval = u"false"
  */
+      __Pyx_TraceLine(1948,0,__PYX_ERR(0, 1948, __pyx_L1_error))
       __Pyx_INCREF(__pyx_n_u_true);
       __pyx_v_strval = __pyx_n_u_true;
 
@@ -28339,6 +29987,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *     else:
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  */
+    __Pyx_TraceLine(1950,0,__PYX_ERR(0, 1950, __pyx_L1_error))
     /*else*/ {
       __Pyx_INCREF(__pyx_n_u_false);
       __pyx_v_strval = __pyx_n_u_false;
@@ -28362,6 +30011,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         stringify = unicode if py_type is None else py_type.stringify
  *         strval = stringify(_value)
  */
+  __Pyx_TraceLine(1952,0,__PYX_ERR(0, 1952, __pyx_L1_error))
   /*else*/ {
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
@@ -28382,6 +30032,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         strval = stringify(_value)
  * 
  */
+    __Pyx_TraceLine(1953,0,__PYX_ERR(0, 1953, __pyx_L1_error))
     __pyx_t_1 = (((PyObject *)__pyx_v_py_type) == Py_None);
     if ((__pyx_t_1 != 0)) {
       __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
@@ -28400,6 +30051,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  *     if _pytype is not None:
  */
+    __Pyx_TraceLine(1954,0,__PYX_ERR(0, 1954, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_stringify);
     __pyx_t_8 = __pyx_v_stringify; __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
@@ -28456,6 +30108,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _pytype == u"NoneType" or _pytype == u"none":
  *             strval = None
  */
+  __Pyx_TraceLine(1956,0,__PYX_ERR(0, 1956, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v__pytype != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
@@ -28467,6 +30120,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             strval = None
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"
  */
+    __Pyx_TraceLine(1957,0,__PYX_ERR(0, 1957, __pyx_L1_error))
     __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1957, __pyx_L1_error)
     if (!__pyx_t_1) {
     } else {
@@ -28485,6 +30139,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"
  *         else:
  */
+      __Pyx_TraceLine(1958,0,__PYX_ERR(0, 1958, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __Pyx_DECREF_SET(__pyx_v_strval, Py_None);
 
@@ -28495,6 +30150,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         else:
  *             # check if type information from arguments is valid
  */
+      __Pyx_TraceLine(1959,0,__PYX_ERR(0, 1959, __pyx_L1_error))
       if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) __PYX_ERR(0, 1959, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":1957
@@ -28514,6 +30170,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             if py_type is not None:
  *                 if py_type.type_check is not None:
  */
+    __Pyx_TraceLine(1962,0,__PYX_ERR(0, 1962, __pyx_L1_error))
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
@@ -28534,6 +30191,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 if py_type.type_check is not None:
  *                     py_type.type_check(strval)
  */
+      __Pyx_TraceLine(1963,0,__PYX_ERR(0, 1963, __pyx_L1_error))
       __pyx_t_2 = (((PyObject *)__pyx_v_py_type) != Py_None);
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
@@ -28545,6 +30203,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                     py_type.type_check(strval)
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype
  */
+        __Pyx_TraceLine(1964,0,__PYX_ERR(0, 1964, __pyx_L1_error))
         __pyx_t_1 = (__pyx_v_py_type->type_check != Py_None);
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
@@ -28556,6 +30215,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype
  * 
  */
+          __Pyx_TraceLine(1965,0,__PYX_ERR(0, 1965, __pyx_L1_error))
           __Pyx_INCREF(__pyx_v_py_type->type_check);
           __pyx_t_4 = __pyx_v_py_type->type_check; __pyx_t_6 = NULL;
           if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -28618,6 +30278,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  *     return _makeElement(u"value", strval, _attributes, nsmap)
  */
+        __Pyx_TraceLine(1966,0,__PYX_ERR(0, 1966, __pyx_L1_error))
         __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1966, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_8, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1966, __pyx_L1_error)
@@ -28650,6 +30311,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  * 
  */
+  __Pyx_TraceLine(1968,0,__PYX_ERR(0, 1968, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
@@ -28688,6 +30350,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __Pyx_XDECREF(__pyx_v__pytype);
   __Pyx_XDECREF(__pyx_v__xsi);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28752,12 +30415,14 @@ static int __pyx_pw_4lxml_9objectify_10ObjectPath_1__init__(PyObject *__pyx_v_se
 
 static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self, PyObject *__pyx_v_path) {
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   Py_ssize_t __pyx_t_3;
   __pyx_t_4lxml_9objectify__ObjectPath *__pyx_t_4;
   __Pyx_RefNannySetupContext("__init__", 0);
+  __Pyx_TraceCall("__init__", __pyx_f[1], 24, 0, __PYX_ERR(1, 24, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":25
  *     cdef Py_ssize_t _path_len
@@ -28766,6 +30431,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *             self._path = _parse_object_path_string(path)
  *             self._path_str = path
  */
+  __Pyx_TraceLine(25,0,__PYX_ERR(1, 25, __pyx_L1_error))
   __pyx_t_1 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_1) {
 
@@ -28776,6 +30442,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *             self._path_str = path
  *         else:
  */
+    __Pyx_TraceLine(26,0,__PYX_ERR(1, 26, __pyx_L1_error))
     __pyx_t_2 = __pyx_f_4lxml_9objectify__parse_object_path_string(__pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 26, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
@@ -28791,6 +30458,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *         else:
  *             self._path = _parse_object_path_list(path)
  */
+    __Pyx_TraceLine(27,0,__PYX_ERR(1, 27, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_path);
     __Pyx_GIVEREF(__pyx_v_path);
     __Pyx_GOTREF(__pyx_v_self->_path_str);
@@ -28814,6 +30482,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *             self._path_str = u'.'.join(path)
  *         self._path_len = len(self._path)
  */
+  __Pyx_TraceLine(29,0,__PYX_ERR(1, 29, __pyx_L1_error))
   /*else*/ {
     __pyx_t_2 = __pyx_f_4lxml_9objectify__parse_object_path_list(__pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 29, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -28830,7 +30499,8 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *         self._path_len = len(self._path)
  *         self._c_path = _build_object_path_segments(self._path)
  */
-    __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 30, __pyx_L1_error)
+    __Pyx_TraceLine(30,0,__PYX_ERR(1, 30, __pyx_L1_error))
+    __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__9, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 30, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __Pyx_GOTREF(__pyx_v_self->_path_str);
@@ -28847,6 +30517,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *         self._c_path = _build_object_path_segments(self._path)
  *         self.find = self.__call__
  */
+  __Pyx_TraceLine(31,0,__PYX_ERR(1, 31, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_path;
   __Pyx_INCREF(__pyx_t_2);
   if (unlikely(__pyx_t_2 == Py_None)) {
@@ -28864,6 +30535,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  *         self.find = self.__call__
  * 
  */
+  __Pyx_TraceLine(32,0,__PYX_ERR(1, 32, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_self->_path;
   __Pyx_INCREF(__pyx_t_2);
   __pyx_t_4 = __pyx_f_4lxml_9objectify__build_object_path_segments(((PyObject*)__pyx_t_2)); if (unlikely(__pyx_t_4 == ((__pyx_t_4lxml_9objectify__ObjectPath *)NULL))) __PYX_ERR(1, 32, __pyx_L1_error)
@@ -28877,6 +30549,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
  * 
  *     def __dealloc__(self):
  */
+  __Pyx_TraceLine(33,0,__PYX_ERR(1, 33, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 33, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -28901,6 +30574,7 @@ static int __pyx_pf_4lxml_9objectify_10ObjectPath___init__(struct __pyx_obj_4lxm
   __Pyx_AddTraceback("lxml.objectify.ObjectPath.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -28925,9 +30599,11 @@ static void __pyx_pw_4lxml_9objectify_10ObjectPath_3__dealloc__(PyObject *__pyx_
 }
 
 static void __pyx_pf_4lxml_9objectify_10ObjectPath_2__dealloc__(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self) {
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
+  __Pyx_TraceCall("__dealloc__", __pyx_f[1], 35, 0, __PYX_ERR(1, 35, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":36
  * 
@@ -28936,6 +30612,7 @@ static void __pyx_pf_4lxml_9objectify_10ObjectPath_2__dealloc__(struct __pyx_obj
  *             python.lxml_free(self._c_path)
  * 
  */
+  __Pyx_TraceLine(36,0,__PYX_ERR(1, 36, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_self->_c_path != NULL) != 0);
   if (__pyx_t_1) {
 
@@ -28946,6 +30623,7 @@ static void __pyx_pf_4lxml_9objectify_10ObjectPath_2__dealloc__(struct __pyx_obj
  * 
  *     def __str__(self):
  */
+    __Pyx_TraceLine(37,0,__PYX_ERR(1, 37, __pyx_L1_error))
     lxml_free(__pyx_v_self->_c_path);
 
     /* "src/lxml/objectpath.pxi":36
@@ -28966,6 +30644,11 @@ static void __pyx_pf_4lxml_9objectify_10ObjectPath_2__dealloc__(struct __pyx_obj
  */
 
   /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("lxml.objectify.ObjectPath.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
 }
 
@@ -28992,8 +30675,10 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_5__str__(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_4__str__(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__str__", 0);
+  __Pyx_TraceCall("__str__", __pyx_f[1], 39, 0, __PYX_ERR(1, 39, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":40
  * 
@@ -29002,6 +30687,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_4__str__(struct __pyx_ob
  * 
  *     def __call__(self, _Element root not None, *_default):
  */
+  __Pyx_TraceLine(40,0,__PYX_ERR(1, 40, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_path_str);
   __pyx_r = __pyx_v_self->_path_str;
@@ -29016,8 +30702,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_4__str__(struct __pyx_ob
  */
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.ObjectPath.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29106,11 +30796,13 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_7__call__(PyObject *__py
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self, struct LxmlElement *__pyx_v_root, PyObject *__pyx_v__default) {
   PyObject *__pyx_v_default = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   Py_ssize_t __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
+  __Pyx_TraceCall("__call__", __pyx_f[1], 42, 0, __PYX_ERR(1, 42, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":49
  *         as second argument) or raises AttributeError.
@@ -29119,6 +30811,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  *             if len(_default) > 1:
  *                 raise TypeError, u"invalid number of arguments: needs one or two"
  */
+  __Pyx_TraceLine(49,0,__PYX_ERR(1, 49, __pyx_L1_error))
   __pyx_t_1 = (PyTuple_GET_SIZE(__pyx_v__default) != 0);
   if (__pyx_t_1) {
 
@@ -29129,6 +30822,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  *                 raise TypeError, u"invalid number of arguments: needs one or two"
  *             default = _default[0]
  */
+    __Pyx_TraceLine(50,0,__PYX_ERR(1, 50, __pyx_L1_error))
     __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v__default); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 50, __pyx_L1_error)
     __pyx_t_1 = ((__pyx_t_2 > 1) != 0);
     if (unlikely(__pyx_t_1)) {
@@ -29140,6 +30834,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  *             default = _default[0]
  *         else:
  */
+      __Pyx_TraceLine(51,0,__PYX_ERR(1, 51, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_invalid_number_of_arguments_need, 0, 0);
       __PYX_ERR(1, 51, __pyx_L1_error)
 
@@ -29159,6 +30854,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  *         else:
  *             default = _NO_DEFAULT
  */
+    __Pyx_TraceLine(52,0,__PYX_ERR(1, 52, __pyx_L1_error))
     __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v__default, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 52, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_default = __pyx_t_3;
@@ -29181,6 +30877,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  *         return _find_object_path(root, self._c_path, self._path_len, default)
  * 
  */
+  __Pyx_TraceLine(54,0,__PYX_ERR(1, 54, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__NO_DEFAULT);
     __pyx_v_default = __pyx_v_4lxml_9objectify__NO_DEFAULT;
@@ -29194,6 +30891,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
  * 
  *     def hasattr(self, _Element root not None):
  */
+  __Pyx_TraceLine(55,0,__PYX_ERR(1, 55, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_3 = __pyx_f_4lxml_9objectify__find_object_path(__pyx_v_root, __pyx_v_self->_c_path, __pyx_v_self->_path_len, __pyx_v_default); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
@@ -29217,6 +30915,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_6__call__(struct __pyx_o
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_default);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29251,6 +30950,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_9hasattr(PyObject *__pyx
 
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self, struct LxmlElement *__pyx_v_root) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
@@ -29259,7 +30959,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
   PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
   PyObject *__pyx_t_7 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__59)
   __Pyx_RefNannySetupContext("hasattr", 0);
+  __Pyx_TraceCall("hasattr", __pyx_f[1], 57, 0, __PYX_ERR(1, 57, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":59
  *     def hasattr(self, _Element root not None):
@@ -29268,6 +30970,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
  *             _find_object_path(root, self._c_path, self._path_len, _NO_DEFAULT)
  *         except AttributeError:
  */
+  __Pyx_TraceLine(59,0,__PYX_ERR(1, 59, __pyx_L3_error))
   {
     __Pyx_PyThreadState_declare
     __Pyx_PyThreadState_assign
@@ -29284,6 +30987,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
  *         except AttributeError:
  *             return False
  */
+      __Pyx_TraceLine(60,0,__PYX_ERR(1, 60, __pyx_L3_error))
       __pyx_t_4 = __pyx_v_4lxml_9objectify__NO_DEFAULT;
       __Pyx_INCREF(__pyx_t_4);
       __pyx_t_5 = __pyx_f_4lxml_9objectify__find_object_path(__pyx_v_root, __pyx_v_self->_c_path, __pyx_v_self->_path_len, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 60, __pyx_L3_error)
@@ -29314,6 +31018,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
  *             return False
  *         return True
  */
+    __Pyx_TraceLine(61,0,__PYX_ERR(1, 61, __pyx_L5_except_error))
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.objectify.ObjectPath.hasattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -29329,6 +31034,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
  *         return True
  * 
  */
+      __Pyx_TraceLine(62,0,__PYX_ERR(1, 62, __pyx_L5_except_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(Py_False);
       __pyx_r = Py_False;
@@ -29368,6 +31074,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
  * 
  *     def setattr(self, _Element root not None, value):
  */
+  __Pyx_TraceLine(63,0,__PYX_ERR(1, 63, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(Py_True);
   __pyx_r = Py_True;
@@ -29390,6 +31097,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_8hasattr(struct __pyx_ob
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29472,9 +31180,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_11setattr(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_10setattr(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self, struct LxmlElement *__pyx_v_root, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__60)
   __Pyx_RefNannySetupContext("setattr", 0);
+  __Pyx_TraceCall("setattr", __pyx_f[1], 65, 0, __PYX_ERR(1, 65, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":72
  *         If any of the children on the path does not exist, it is created.
@@ -29483,6 +31194,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_10setattr(struct __pyx_o
  * 
  *     def addattr(self, _Element root not None, value):
  */
+  __Pyx_TraceLine(72,0,__PYX_ERR(1, 72, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__create_object_path(__pyx_v_root, __pyx_v_self->_c_path, __pyx_v_self->_path_len, 1, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 72, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -29504,6 +31216,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_10setattr(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29586,9 +31299,12 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_13addattr(PyObject *__py
 
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_12addattr(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self, struct LxmlElement *__pyx_v_root, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
+  __Pyx_TraceFrameInit(__pyx_codeobj__61)
   __Pyx_RefNannySetupContext("addattr", 0);
+  __Pyx_TraceCall("addattr", __pyx_f[1], 74, 0, __PYX_ERR(1, 74, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":81
  *         If any of the children on the path does not exist, it is created.
@@ -29597,6 +31313,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_12addattr(struct __pyx_o
  * 
  * 
  */
+  __Pyx_TraceLine(81,0,__PYX_ERR(1, 81, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__create_object_path(__pyx_v_root, __pyx_v_self->_c_path, __pyx_v_self->_path_len, 0, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -29618,6 +31335,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_12addattr(struct __pyx_o
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29645,16 +31363,22 @@ static PyObject *__pyx_pw_4lxml_9objectify_10ObjectPath_4find_1__get__(PyObject
 
 static PyObject *__pyx_pf_4lxml_9objectify_10ObjectPath_4find___get__(struct __pyx_obj_4lxml_9objectify_ObjectPath *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_TraceCall("__get__", __pyx_f[1], 19, 0, __PYX_ERR(1, 19, __pyx_L1_error));
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->find);
   __pyx_r = __pyx_v_self->find;
   goto __pyx_L0;
 
   /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("lxml.objectify.ObjectPath.find.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -29678,6 +31402,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_index = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -29693,6 +31418,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
   int __pyx_t_12;
   Py_ssize_t __pyx_t_13;
   __Pyx_RefNannySetupContext("_parse_object_path_string", 0);
+  __Pyx_TraceCall("_parse_object_path_string", __pyx_f[1], 91, 0, __PYX_ERR(1, 91, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":96
  *     cdef bint has_dot
@@ -29701,6 +31427,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     if isinstance(_path, bytes):
  *         path = (<bytes>_path).decode('ascii')
  */
+  __Pyx_TraceLine(96,0,__PYX_ERR(1, 96, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 96, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_new_path = ((PyObject*)__pyx_t_1);
@@ -29713,6 +31440,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         path = (<bytes>_path).decode('ascii')
  *     elif type(_path) is not unicode:
  */
+  __Pyx_TraceLine(97,0,__PYX_ERR(1, 97, __pyx_L1_error))
   __pyx_t_2 = PyBytes_Check(__pyx_v__path); 
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
@@ -29724,6 +31452,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     elif type(_path) is not unicode:
  *         path = unicode(_path)
  */
+    __Pyx_TraceLine(98,0,__PYX_ERR(1, 98, __pyx_L1_error))
     if (unlikely(__pyx_v__path == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
       __PYX_ERR(1, 98, __pyx_L1_error)
@@ -29750,6 +31479,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         path = unicode(_path)
  *     else:
  */
+  __Pyx_TraceLine(99,0,__PYX_ERR(1, 99, __pyx_L1_error))
   __pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v__path)) != ((PyObject *)(&PyUnicode_Type)));
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
@@ -29761,6 +31491,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     else:
  *         path = _path
  */
+    __Pyx_TraceLine(100,0,__PYX_ERR(1, 100, __pyx_L1_error))
     __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v__path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 100, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_path = ((PyObject*)__pyx_t_1);
@@ -29783,6 +31514,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     path = path.strip()
  *     if path == u'.':
  */
+  __Pyx_TraceLine(102,0,__PYX_ERR(1, 102, __pyx_L1_error))
   /*else*/ {
     if (!(likely(PyUnicode_CheckExact(__pyx_v__path))||((__pyx_v__path) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v__path)->tp_name), 0))) __PYX_ERR(1, 102, __pyx_L1_error)
     __pyx_t_1 = __pyx_v__path;
@@ -29799,6 +31531,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     if path == u'.':
  *         return [_RELATIVE_PATH_SEGMENT]
  */
+  __Pyx_TraceLine(103,0,__PYX_ERR(1, 103, __pyx_L1_error))
   __pyx_t_1 = __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyUnicode_Type_strip, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 103, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(1, 103, __pyx_L1_error)
@@ -29812,7 +31545,8 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         return [_RELATIVE_PATH_SEGMENT]
  *     path_pos = 0
  */
-  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_path, __pyx_kp_u__3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 104, __pyx_L1_error)
+  __Pyx_TraceLine(104,0,__PYX_ERR(1, 104, __pyx_L1_error))
+  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_path, __pyx_kp_u__9, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 104, __pyx_L1_error)
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
@@ -29823,6 +31557,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     path_pos = 0
  *     while path:
  */
+    __Pyx_TraceLine(105,0,__PYX_ERR(1, 105, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 105, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
@@ -29849,6 +31584,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     while path:
  *         match = __MATCH_PATH_SEGMENT(path, path_pos)
  */
+  __Pyx_TraceLine(106,0,__PYX_ERR(1, 106, __pyx_L1_error))
   __Pyx_INCREF(__pyx_int_0);
   __pyx_v_path_pos = __pyx_int_0;
 
@@ -29859,6 +31595,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         match = __MATCH_PATH_SEGMENT(path, path_pos)
  *         if match is None:
  */
+  __Pyx_TraceLine(107,0,__PYX_ERR(1, 107, __pyx_L1_error))
   while (1) {
     __pyx_t_3 = (__pyx_v_path != Py_None)&&(__Pyx_PyUnicode_IS_TRUE(__pyx_v_path) != 0);
     if (!__pyx_t_3) break;
@@ -29870,6 +31607,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         if match is None:
  *             break
  */
+    __Pyx_TraceLine(108,0,__PYX_ERR(1, 108, __pyx_L1_error))
     __Pyx_INCREF(__pyx_v_4lxml_9objectify___MATCH_PATH_SEGMENT);
     __pyx_t_4 = __pyx_v_4lxml_9objectify___MATCH_PATH_SEGMENT; __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -29926,6 +31664,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *             break
  * 
  */
+    __Pyx_TraceLine(109,0,__PYX_ERR(1, 109, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_match == Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -29937,6 +31676,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  * 
  *         dot, ns, name, index = match.groups()
  */
+      __Pyx_TraceLine(110,0,__PYX_ERR(1, 110, __pyx_L1_error))
       goto __pyx_L6_break;
 
       /* "src/lxml/objectpath.pxi":109
@@ -29955,6 +31695,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         index = int(index) if index else 0
  *         has_dot = dot == u'.'
  */
+    __Pyx_TraceLine(112,0,__PYX_ERR(1, 112, __pyx_L1_error))
     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_groups); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_7 = NULL;
@@ -30050,6 +31791,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         has_dot = dot == u'.'
  *         if not new_path:
  */
+    __Pyx_TraceLine(113,0,__PYX_ERR(1, 113, __pyx_L1_error))
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_index); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 113, __pyx_L1_error)
     if (__pyx_t_2) {
       __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_index); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 113, __pyx_L1_error)
@@ -30070,7 +31812,8 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         if not new_path:
  *             if has_dot:
  */
-    __pyx_t_1 = PyObject_RichCompare(__pyx_v_dot, __pyx_kp_u__3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 114, __pyx_L1_error)
+    __Pyx_TraceLine(114,0,__PYX_ERR(1, 114, __pyx_L1_error))
+    __pyx_t_1 = PyObject_RichCompare(__pyx_v_dot, __pyx_kp_u__9, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 114, __pyx_L1_error)
     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 114, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_v_has_dot = __pyx_t_2;
@@ -30082,6 +31825,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *             if has_dot:
  *                 # path '.child' => ignore root
  */
+    __Pyx_TraceLine(115,0,__PYX_ERR(1, 115, __pyx_L1_error))
     __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_new_path) != 0);
     __pyx_t_3 = ((!__pyx_t_2) != 0);
     if (__pyx_t_3) {
@@ -30093,6 +31837,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *                 # path '.child' => ignore root
  *                 new_path.append(_RELATIVE_PATH_SEGMENT)
  */
+      __Pyx_TraceLine(116,0,__PYX_ERR(1, 116, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_has_dot != 0);
       if (__pyx_t_3) {
 
@@ -30103,6 +31848,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *             elif index:
  *                 raise ValueError, u"index not allowed on root node"
  */
+        __Pyx_TraceLine(118,0,__PYX_ERR(1, 118, __pyx_L1_error))
         __pyx_t_1 = __pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT;
         __Pyx_INCREF(__pyx_t_1);
         __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_new_path, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 118, __pyx_L1_error)
@@ -30125,6 +31871,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *                 raise ValueError, u"index not allowed on root node"
  *         elif not has_dot:
  */
+      __Pyx_TraceLine(119,0,__PYX_ERR(1, 119, __pyx_L1_error))
       __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_index); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 119, __pyx_L1_error)
       if (unlikely(__pyx_t_3)) {
 
@@ -30135,6 +31882,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         elif not has_dot:
  *             raise ValueError, u"invalid path"
  */
+        __Pyx_TraceLine(120,0,__PYX_ERR(1, 120, __pyx_L1_error))
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_index_not_allowed_on_root_node, 0, 0);
         __PYX_ERR(1, 120, __pyx_L1_error)
 
@@ -30165,6 +31913,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *             raise ValueError, u"invalid path"
  *         if ns is not None:
  */
+    __Pyx_TraceLine(121,0,__PYX_ERR(1, 121, __pyx_L1_error))
     __pyx_t_3 = ((!(__pyx_v_has_dot != 0)) != 0);
     if (unlikely(__pyx_t_3)) {
 
@@ -30175,6 +31924,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         if ns is not None:
  *             ns = python.PyUnicode_AsUTF8String(ns)
  */
+      __Pyx_TraceLine(122,0,__PYX_ERR(1, 122, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_invalid_path, 0, 0);
       __PYX_ERR(1, 122, __pyx_L1_error)
 
@@ -30195,6 +31945,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *             ns = python.PyUnicode_AsUTF8String(ns)
  *         name = python.PyUnicode_AsUTF8String(name)
  */
+    __Pyx_TraceLine(123,0,__PYX_ERR(1, 123, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_ns != Py_None);
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
@@ -30206,6 +31957,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         name = python.PyUnicode_AsUTF8String(name)
  *         new_path.append( (ns, name, index) )
  */
+      __Pyx_TraceLine(124,0,__PYX_ERR(1, 124, __pyx_L1_error))
       __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 124, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_ns, __pyx_t_1);
@@ -30227,6 +31979,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         new_path.append( (ns, name, index) )
  * 
  */
+    __Pyx_TraceLine(125,0,__PYX_ERR(1, 125, __pyx_L1_error))
     __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 125, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_1);
@@ -30239,6 +31992,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  * 
  *         path_pos = match.end()
  */
+    __Pyx_TraceLine(126,0,__PYX_ERR(1, 126, __pyx_L1_error))
     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_ns);
@@ -30260,6 +32014,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     if not new_path or len(path) > path_pos:
  *         raise ValueError, u"invalid path"
  */
+    __Pyx_TraceLine(128,0,__PYX_ERR(1, 128, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_end); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 128, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_5 = NULL;
@@ -30292,6 +32047,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *         raise ValueError, u"invalid path"
  *     return new_path
  */
+  __Pyx_TraceLine(129,0,__PYX_ERR(1, 129, __pyx_L1_error))
   __pyx_t_3 = (PyList_GET_SIZE(__pyx_v_new_path) != 0);
   __pyx_t_12 = ((!__pyx_t_3) != 0);
   if (!__pyx_t_12) {
@@ -30321,6 +32077,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  *     return new_path
  * 
  */
+    __Pyx_TraceLine(130,0,__PYX_ERR(1, 130, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_invalid_path, 0, 0);
     __PYX_ERR(1, 130, __pyx_L1_error)
 
@@ -30340,6 +32097,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
  * 
  * 
  */
+  __Pyx_TraceLine(131,0,__PYX_ERR(1, 131, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_new_path);
   __pyx_r = __pyx_v_new_path;
@@ -30373,6 +32131,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_string(PyObject *__
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -30395,6 +32154,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
   const xmlChar *__pyx_v_index_pos;
   const xmlChar *__pyx_v_index_end;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   Py_ssize_t __pyx_t_2;
@@ -30407,6 +32167,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
   int __pyx_t_9;
   int __pyx_t_10;
   __Pyx_RefNannySetupContext("_parse_object_path_list", 0);
+  __Pyx_TraceCall("_parse_object_path_list", __pyx_f[1], 134, 0, __PYX_ERR(1, 134, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":137
  *     u"""Parse object path sequence into a (ns, name, index) list.
@@ -30415,6 +32176,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *     for item in path:
  *         item = item.strip()
  */
+  __Pyx_TraceLine(137,0,__PYX_ERR(1, 137, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 137, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_new_path = ((PyObject*)__pyx_t_1);
@@ -30427,6 +32189,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         item = item.strip()
  *         if not new_path and item == u'':
  */
+  __Pyx_TraceLine(138,0,__PYX_ERR(1, 138, __pyx_L1_error))
   if (likely(PyList_CheckExact(__pyx_v_path)) || PyTuple_CheckExact(__pyx_v_path)) {
     __pyx_t_1 = __pyx_v_path; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
@@ -30476,6 +32239,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         if not new_path and item == u'':
  *             # path '.child' => ignore root
  */
+    __Pyx_TraceLine(139,0,__PYX_ERR(1, 139, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_item, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
@@ -30506,6 +32270,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             # path '.child' => ignore root
  *             ns = name = None
  */
+    __Pyx_TraceLine(140,0,__PYX_ERR(1, 140, __pyx_L1_error))
     __pyx_t_8 = (PyList_GET_SIZE(__pyx_v_new_path) != 0);
     __pyx_t_9 = ((!__pyx_t_8) != 0);
     if (__pyx_t_9) {
@@ -30513,7 +32278,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
       __pyx_t_7 = __pyx_t_9;
       goto __pyx_L6_bool_binop_done;
     }
-    __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_item, __pyx_kp_u__2, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 140, __pyx_L1_error)
+    __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_item, __pyx_kp_u__3, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 140, __pyx_L1_error)
     __pyx_t_7 = __pyx_t_9;
     __pyx_L6_bool_binop_done:;
     if (__pyx_t_7) {
@@ -30525,6 +32290,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             index = 0
  *         else:
  */
+      __Pyx_TraceLine(142,0,__PYX_ERR(1, 142, __pyx_L1_error))
       __Pyx_INCREF(Py_None);
       __Pyx_XDECREF_SET(__pyx_v_ns, Py_None);
       __Pyx_INCREF(Py_None);
@@ -30537,6 +32303,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         else:
  *             ns, name = cetree.getNsTag(item)
  */
+      __Pyx_TraceLine(143,0,__PYX_ERR(1, 143, __pyx_L1_error))
       __Pyx_INCREF(__pyx_int_0);
       __Pyx_XDECREF_SET(__pyx_v_index, __pyx_int_0);
 
@@ -30557,6 +32324,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             c_name = _xcstr(name)
  *             index_pos = tree.xmlStrchr(c_name, c'[')
  */
+    __Pyx_TraceLine(145,0,__PYX_ERR(1, 145, __pyx_L1_error))
     /*else*/ {
       __pyx_t_4 = getNsTag(__pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
@@ -30595,6 +32363,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             index_pos = tree.xmlStrchr(c_name, c'[')
  *             if index_pos is NULL:
  */
+      __Pyx_TraceLine(146,0,__PYX_ERR(1, 146, __pyx_L1_error))
       __pyx_v_c_name = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name);
 
       /* "src/lxml/objectpath.pxi":147
@@ -30604,6 +32373,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             if index_pos is NULL:
  *                 index = 0
  */
+      __Pyx_TraceLine(147,0,__PYX_ERR(1, 147, __pyx_L1_error))
       __pyx_v_index_pos = xmlStrchr(__pyx_v_c_name, '[');
 
       /* "src/lxml/objectpath.pxi":148
@@ -30613,6 +32383,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                 index = 0
  *             else:
  */
+      __Pyx_TraceLine(148,0,__PYX_ERR(1, 148, __pyx_L1_error))
       __pyx_t_7 = ((__pyx_v_index_pos == NULL) != 0);
       if (__pyx_t_7) {
 
@@ -30623,6 +32394,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *             else:
  *                 index_end = tree.xmlStrchr(index_pos + 1, c']')
  */
+        __Pyx_TraceLine(149,0,__PYX_ERR(1, 149, __pyx_L1_error))
         __Pyx_INCREF(__pyx_int_0);
         __Pyx_XDECREF_SET(__pyx_v_index, __pyx_int_0);
 
@@ -30643,6 +32415,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                 if index_end is NULL:
  *                     raise ValueError, u"index must be enclosed in []"
  */
+      __Pyx_TraceLine(151,0,__PYX_ERR(1, 151, __pyx_L1_error))
       /*else*/ {
         __pyx_v_index_end = xmlStrchr((__pyx_v_index_pos + 1), ']');
 
@@ -30653,6 +32426,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                     raise ValueError, u"index must be enclosed in []"
  *                 index = int(index_pos[1:index_end - index_pos])
  */
+        __Pyx_TraceLine(152,0,__PYX_ERR(1, 152, __pyx_L1_error))
         __pyx_t_7 = ((__pyx_v_index_end == NULL) != 0);
         if (unlikely(__pyx_t_7)) {
 
@@ -30663,6 +32437,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                 index = int(index_pos[1:index_end - index_pos])
  *                 if not new_path and index != 0:
  */
+          __Pyx_TraceLine(153,0,__PYX_ERR(1, 153, __pyx_L1_error))
           __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_index_must_be_enclosed_in, 0, 0);
           __PYX_ERR(1, 153, __pyx_L1_error)
 
@@ -30682,6 +32457,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                 if not new_path and index != 0:
  *                     raise ValueError, u"index not allowed on root node"
  */
+        __Pyx_TraceLine(154,0,__PYX_ERR(1, 154, __pyx_L1_error))
         __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_index_pos) + 1, (__pyx_v_index_end - __pyx_v_index_pos) - 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 154, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 154, __pyx_L1_error)
@@ -30697,6 +32473,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                     raise ValueError, u"index not allowed on root node"
  *                 name = <bytes>c_name[:index_pos - c_name]
  */
+        __Pyx_TraceLine(155,0,__PYX_ERR(1, 155, __pyx_L1_error))
         __pyx_t_9 = (PyList_GET_SIZE(__pyx_v_new_path) != 0);
         __pyx_t_8 = ((!__pyx_t_9) != 0);
         if (__pyx_t_8) {
@@ -30718,6 +32495,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *                 name = <bytes>c_name[:index_pos - c_name]
  *         new_path.append( (ns, name, index) )
  */
+          __Pyx_TraceLine(156,0,__PYX_ERR(1, 156, __pyx_L1_error))
           __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_index_not_allowed_on_root_node, 0, 0);
           __PYX_ERR(1, 156, __pyx_L1_error)
 
@@ -30737,6 +32515,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         new_path.append( (ns, name, index) )
  *     if not new_path:
  */
+        __Pyx_TraceLine(157,0,__PYX_ERR(1, 157, __pyx_L1_error))
         __pyx_t_6 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_c_name) + 0, (__pyx_v_index_pos - __pyx_v_c_name) - 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 157, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_4 = __pyx_t_6;
@@ -30756,6 +32535,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *     if not new_path:
  *         raise ValueError, u"invalid path"
  */
+    __Pyx_TraceLine(158,0,__PYX_ERR(1, 158, __pyx_L1_error))
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 158, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_ns);
@@ -30777,6 +32557,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         item = item.strip()
  *         if not new_path and item == u'':
  */
+    __Pyx_TraceLine(138,0,__PYX_ERR(1, 138, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -30787,6 +32568,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *         raise ValueError, u"invalid path"
  *     return new_path
  */
+  __Pyx_TraceLine(159,0,__PYX_ERR(1, 159, __pyx_L1_error))
   __pyx_t_7 = (PyList_GET_SIZE(__pyx_v_new_path) != 0);
   __pyx_t_8 = ((!__pyx_t_7) != 0);
   if (unlikely(__pyx_t_8)) {
@@ -30798,6 +32580,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  *     return new_path
  * 
  */
+    __Pyx_TraceLine(160,0,__PYX_ERR(1, 160, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_invalid_path, 0, 0);
     __PYX_ERR(1, 160, __pyx_L1_error)
 
@@ -30817,6 +32600,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
  * 
  * 
  */
+  __Pyx_TraceLine(161,0,__PYX_ERR(1, 161, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_new_path);
   __pyx_r = __pyx_v_new_path;
@@ -30845,6 +32629,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parse_object_path_list(PyObject *__py
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_index);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -30864,6 +32649,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
   PyObject *__pyx_v_name = NULL;
   PyObject *__pyx_v_index = NULL;
   __pyx_t_4lxml_9objectify__ObjectPath *__pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   Py_ssize_t __pyx_t_1;
   int __pyx_t_2;
@@ -30877,6 +32663,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
   const xmlChar *__pyx_t_10;
   Py_ssize_t __pyx_t_11;
   __Pyx_RefNannySetupContext("_build_object_path_segments", 0);
+  __Pyx_TraceCall("_build_object_path_segments", __pyx_f[1], 164, 0, __PYX_ERR(1, 164, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":167
  *     cdef _ObjectPath* c_path
@@ -30885,6 +32672,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *     if c_path_segments is NULL:
  *         raise MemoryError()
  */
+  __Pyx_TraceLine(167,0,__PYX_ERR(1, 167, __pyx_L1_error))
   if (unlikely(__pyx_v_path_list == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
     __PYX_ERR(1, 167, __pyx_L1_error)
@@ -30899,6 +32687,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         raise MemoryError()
  *     c_path = c_path_segments
  */
+  __Pyx_TraceLine(168,0,__PYX_ERR(1, 168, __pyx_L1_error))
   __pyx_t_2 = ((__pyx_v_c_path_segments == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
@@ -30909,6 +32698,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *     c_path = c_path_segments
  *     for href, name, index in path_list:
  */
+    __Pyx_TraceLine(169,0,__PYX_ERR(1, 169, __pyx_L1_error))
     PyErr_NoMemory(); __PYX_ERR(1, 169, __pyx_L1_error)
 
     /* "src/lxml/objectpath.pxi":168
@@ -30927,6 +32717,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *     for href, name, index in path_list:
  *         c_path[0].href = _xcstr(href) if href is not None else NULL
  */
+  __Pyx_TraceLine(170,0,__PYX_ERR(1, 170, __pyx_L1_error))
   __pyx_v_c_path = __pyx_v_c_path_segments;
 
   /* "src/lxml/objectpath.pxi":171
@@ -30936,6 +32727,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         c_path[0].href = _xcstr(href) if href is not None else NULL
  *         c_path[0].name = _xcstr(name) if name is not None else NULL
  */
+  __Pyx_TraceLine(171,0,__PYX_ERR(1, 171, __pyx_L1_error))
   if (unlikely(__pyx_v_path_list == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
     __PYX_ERR(1, 171, __pyx_L1_error)
@@ -31016,6 +32808,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         c_path[0].name = _xcstr(name) if name is not None else NULL
  *         c_path[0].index = index
  */
+    __Pyx_TraceLine(172,0,__PYX_ERR(1, 172, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_href != Py_None);
     if ((__pyx_t_2 != 0)) {
       __pyx_t_10 = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_href);
@@ -31031,6 +32824,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         c_path[0].index = index
  *         c_path += 1
  */
+    __Pyx_TraceLine(173,0,__PYX_ERR(1, 173, __pyx_L1_error))
     __pyx_t_2 = (__pyx_v_name != Py_None);
     if ((__pyx_t_2 != 0)) {
       __pyx_t_10 = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name);
@@ -31046,6 +32840,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         c_path += 1
  *     return c_path_segments
  */
+    __Pyx_TraceLine(174,0,__PYX_ERR(1, 174, __pyx_L1_error))
     __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 174, __pyx_L1_error)
     (__pyx_v_c_path[0]).index = __pyx_t_11;
 
@@ -31056,6 +32851,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *     return c_path_segments
  * 
  */
+    __Pyx_TraceLine(175,0,__PYX_ERR(1, 175, __pyx_L1_error))
     __pyx_v_c_path = (__pyx_v_c_path + 1);
 
     /* "src/lxml/objectpath.pxi":171
@@ -31065,6 +32861,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  *         c_path[0].href = _xcstr(href) if href is not None else NULL
  *         c_path[0].name = _xcstr(name) if name is not None else NULL
  */
+    __Pyx_TraceLine(171,0,__PYX_ERR(1, 171, __pyx_L1_error))
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
@@ -31075,6 +32872,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
  * 
  * 
  */
+  __Pyx_TraceLine(176,0,__PYX_ERR(1, 176, __pyx_L1_error))
   __pyx_r = __pyx_v_c_path_segments;
   goto __pyx_L0;
 
@@ -31100,6 +32898,7 @@ static __pyx_t_4lxml_9objectify__ObjectPath *__pyx_f_4lxml_9objectify__build_obj
   __Pyx_XDECREF(__pyx_v_href);
   __Pyx_XDECREF(__pyx_v_name);
   __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31119,6 +32918,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
   const xmlChar *__pyx_v_c_href;
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   xmlNode *__pyx_t_1;
   const xmlChar *__pyx_t_2;
@@ -31130,6 +32930,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_find_object_path", 0);
+  __Pyx_TraceCall("_find_object_path", __pyx_f[1], 179, 0, __PYX_ERR(1, 179, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":184
  *     cdef tree.xmlNode* c_node
@@ -31138,6 +32939,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     c_name = c_path[0].name
  *     c_href = c_path[0].href
  */
+  __Pyx_TraceLine(184,0,__PYX_ERR(1, 184, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_root->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
@@ -31148,6 +32950,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     c_href = c_path[0].href
  *     if c_href is NULL or c_href[0] == c'\0':
  */
+  __Pyx_TraceLine(185,0,__PYX_ERR(1, 185, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_path[0]).name;
   __pyx_v_c_name = __pyx_t_2;
 
@@ -31158,6 +32961,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     if c_href is NULL or c_href[0] == c'\0':
  *         c_href = tree._getNs(c_node)
  */
+  __Pyx_TraceLine(186,0,__PYX_ERR(1, 186, __pyx_L1_error))
   __pyx_t_2 = (__pyx_v_c_path[0]).href;
   __pyx_v_c_href = __pyx_t_2;
 
@@ -31168,6 +32972,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_href = tree._getNs(c_node)
  *     if not cetree.tagMatches(c_node, c_href, c_name):
  */
+  __Pyx_TraceLine(187,0,__PYX_ERR(1, 187, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_href == NULL) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -31186,6 +32991,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     if not cetree.tagMatches(c_node, c_href, c_name):
  *         if default_value is not _NO_DEFAULT:
  */
+    __Pyx_TraceLine(188,0,__PYX_ERR(1, 188, __pyx_L1_error))
     __pyx_v_c_href = _getNs(__pyx_v_c_node);
 
     /* "src/lxml/objectpath.pxi":187
@@ -31204,6 +33010,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         if default_value is not _NO_DEFAULT:
  *             return default_value
  */
+  __Pyx_TraceLine(189,0,__PYX_ERR(1, 189, __pyx_L1_error))
   __pyx_t_3 = ((!(tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name) != 0)) != 0);
   if (__pyx_t_3) {
 
@@ -31214,6 +33021,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             return default_value
  *         else:
  */
+    __Pyx_TraceLine(190,0,__PYX_ERR(1, 190, __pyx_L1_error))
     __pyx_t_3 = (__pyx_v_default_value != __pyx_v_4lxml_9objectify__NO_DEFAULT);
     __pyx_t_4 = (__pyx_t_3 != 0);
     if (likely(__pyx_t_4)) {
@@ -31225,6 +33033,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         else:
  *             raise ValueError(
  */
+      __Pyx_TraceLine(191,0,__PYX_ERR(1, 191, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_v_default_value);
       __pyx_r = __pyx_v_default_value;
@@ -31246,6 +33055,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *                 f"root element does not match: need {cetree.namespacedNameFromNsName(c_href, c_name)}, got {root.tag}")
  * 
  */
+    __Pyx_TraceLine(193,0,__PYX_ERR(1, 193, __pyx_L1_error))
     /*else*/ {
 
       /* "src/lxml/objectpath.pxi":194
@@ -31255,6 +33065,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  * 
  *     while c_node is not NULL:
  */
+      __Pyx_TraceLine(194,0,__PYX_ERR(1, 194, __pyx_L1_error))
       __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 194, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = 0;
@@ -31298,6 +33109,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *                 f"root element does not match: need {cetree.namespacedNameFromNsName(c_href, c_name)}, got {root.tag}")
  * 
  */
+      __Pyx_TraceLine(193,0,__PYX_ERR(1, 193, __pyx_L1_error))
       __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 193, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -31322,6 +33134,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_path_len -= 1
  *         if c_path_len <= 0:
  */
+  __Pyx_TraceLine(196,0,__PYX_ERR(1, 196, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -31333,6 +33146,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         if c_path_len <= 0:
  *             break
  */
+    __Pyx_TraceLine(197,0,__PYX_ERR(1, 197, __pyx_L1_error))
     __pyx_v_c_path_len = (__pyx_v_c_path_len - 1);
 
     /* "src/lxml/objectpath.pxi":198
@@ -31342,6 +33156,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             break
  * 
  */
+    __Pyx_TraceLine(198,0,__PYX_ERR(1, 198, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_path_len <= 0) != 0);
     if (__pyx_t_4) {
 
@@ -31352,6 +33167,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  * 
  *         c_path += 1
  */
+      __Pyx_TraceLine(199,0,__PYX_ERR(1, 199, __pyx_L1_error))
       goto __pyx_L9_break;
 
       /* "src/lxml/objectpath.pxi":198
@@ -31370,6 +33186,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         if c_path[0].href is not NULL:
  *             c_href = c_path[0].href # otherwise: keep parent namespace
  */
+    __Pyx_TraceLine(201,0,__PYX_ERR(1, 201, __pyx_L1_error))
     __pyx_v_c_path = (__pyx_v_c_path + 1);
 
     /* "src/lxml/objectpath.pxi":202
@@ -31379,6 +33196,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             c_href = c_path[0].href # otherwise: keep parent namespace
  *         c_name = tree.xmlDictExists(c_node.doc.dict, c_path[0].name, -1)
  */
+    __Pyx_TraceLine(202,0,__PYX_ERR(1, 202, __pyx_L1_error))
     __pyx_t_4 = (((__pyx_v_c_path[0]).href != NULL) != 0);
     if (__pyx_t_4) {
 
@@ -31389,6 +33207,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_name = tree.xmlDictExists(c_node.doc.dict, c_path[0].name, -1)
  *         if c_name is NULL:
  */
+      __Pyx_TraceLine(203,0,__PYX_ERR(1, 203, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_c_path[0]).href;
       __pyx_v_c_href = __pyx_t_2;
 
@@ -31408,6 +33227,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         if c_name is NULL:
  *             c_name = c_path[0].name
  */
+    __Pyx_TraceLine(204,0,__PYX_ERR(1, 204, __pyx_L1_error))
     __pyx_v_c_name = xmlDictExists(__pyx_v_c_node->doc->dict, (__pyx_v_c_path[0]).name, -1);
 
     /* "src/lxml/objectpath.pxi":205
@@ -31417,6 +33237,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             c_name = c_path[0].name
  *             c_node = NULL
  */
+    __Pyx_TraceLine(205,0,__PYX_ERR(1, 205, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_name == NULL) != 0);
     if (__pyx_t_4) {
 
@@ -31427,6 +33248,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             c_node = NULL
  *             break
  */
+      __Pyx_TraceLine(206,0,__PYX_ERR(1, 206, __pyx_L1_error))
       __pyx_t_2 = (__pyx_v_c_path[0]).name;
       __pyx_v_c_name = __pyx_t_2;
 
@@ -31437,6 +33259,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *             break
  *         c_index = c_path[0].index
  */
+      __Pyx_TraceLine(207,0,__PYX_ERR(1, 207, __pyx_L1_error))
       __pyx_v_c_node = NULL;
 
       /* "src/lxml/objectpath.pxi":208
@@ -31446,6 +33269,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_index = c_path[0].index
  *         c_node = c_node.last if c_index < 0 else c_node.children
  */
+      __Pyx_TraceLine(208,0,__PYX_ERR(1, 208, __pyx_L1_error))
       goto __pyx_L9_break;
 
       /* "src/lxml/objectpath.pxi":205
@@ -31464,6 +33288,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_node = c_node.last if c_index < 0 else c_node.children
  *         c_node = _findFollowingSibling(c_node, c_href, c_name, c_index)
  */
+    __Pyx_TraceLine(209,0,__PYX_ERR(1, 209, __pyx_L1_error))
     __pyx_t_6 = (__pyx_v_c_path[0]).index;
     __pyx_v_c_index = __pyx_t_6;
 
@@ -31474,6 +33299,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         c_node = _findFollowingSibling(c_node, c_href, c_name, c_index)
  * 
  */
+    __Pyx_TraceLine(210,0,__PYX_ERR(1, 210, __pyx_L1_error))
     if (((__pyx_v_c_index < 0) != 0)) {
       __pyx_t_1 = __pyx_v_c_node->last;
     } else {
@@ -31488,6 +33314,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  * 
  *     if c_node is not NULL:
  */
+    __Pyx_TraceLine(211,0,__PYX_ERR(1, 211, __pyx_L1_error))
     __pyx_v_c_node = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name, __pyx_v_c_index);
   }
   __pyx_L9_break:;
@@ -31499,6 +33326,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         return cetree.elementFactory(root._doc, c_node)
  *     elif default_value is not _NO_DEFAULT:
  */
+  __Pyx_TraceLine(213,0,__PYX_ERR(1, 213, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_node != NULL) != 0);
   if (__pyx_t_4) {
 
@@ -31509,6 +33337,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     elif default_value is not _NO_DEFAULT:
  *         return default_value
  */
+    __Pyx_TraceLine(214,0,__PYX_ERR(1, 214, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_5 = ((PyObject *)__pyx_v_root->_doc);
     __Pyx_INCREF(__pyx_t_5);
@@ -31535,6 +33364,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         return default_value
  *     else:
  */
+  __Pyx_TraceLine(215,0,__PYX_ERR(1, 215, __pyx_L1_error))
   __pyx_t_4 = (__pyx_v_default_value != __pyx_v_4lxml_9objectify__NO_DEFAULT);
   __pyx_t_3 = (__pyx_t_4 != 0);
   if (likely(__pyx_t_3)) {
@@ -31546,6 +33376,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *     else:
  *         tag = cetree.namespacedNameFromNsName(c_href, c_name)
  */
+    __Pyx_TraceLine(216,0,__PYX_ERR(1, 216, __pyx_L1_error))
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_default_value);
     __pyx_r = __pyx_v_default_value;
@@ -31567,6 +33398,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  *         raise AttributeError, f"no such child: {tag}"
  * 
  */
+  __Pyx_TraceLine(218,0,__PYX_ERR(1, 218, __pyx_L1_error))
   /*else*/ {
     __pyx_t_8 = namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 218, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
@@ -31580,6 +33412,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
  * 
  * 
  */
+    __Pyx_TraceLine(219,0,__PYX_ERR(1, 219, __pyx_L1_error))
     __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 219, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_no_such_child, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 219, __pyx_L1_error)
@@ -31608,6 +33441,7 @@ static PyObject *__pyx_f_4lxml_9objectify__find_object_path(struct LxmlElement *
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -31629,6 +33463,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
   const xmlChar *__pyx_v_c_href;
   struct LxmlElement *__pyx_v_element = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
@@ -31640,6 +33475,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_create_object_path", 0);
+  __Pyx_TraceCall("_create_object_path", __pyx_f[1], 222, 0, __PYX_ERR(1, 222, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":232
  *     cdef tree.xmlNode* c_child
@@ -31648,6 +33484,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         raise TypeError, u"cannot update root node"
  * 
  */
+  __Pyx_TraceLine(232,0,__PYX_ERR(1, 232, __pyx_L1_error))
   __pyx_t_1 = ((__pyx_v_c_path_len == 1) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -31658,6 +33495,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  * 
  *     c_node = root._c_node
  */
+    __Pyx_TraceLine(233,0,__PYX_ERR(1, 233, __pyx_L1_error))
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_cannot_update_root_node, 0, 0);
     __PYX_ERR(1, 233, __pyx_L1_error)
 
@@ -31677,6 +33515,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *     c_name = c_path[0].name
  *     c_href = c_path[0].href
  */
+  __Pyx_TraceLine(235,0,__PYX_ERR(1, 235, __pyx_L1_error))
   __pyx_t_2 = __pyx_v_root->_c_node;
   __pyx_v_c_node = __pyx_t_2;
 
@@ -31687,6 +33526,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *     c_href = c_path[0].href
  *     if c_href is NULL or c_href[0] == c'\0':
  */
+  __Pyx_TraceLine(236,0,__PYX_ERR(1, 236, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c_path[0]).name;
   __pyx_v_c_name = __pyx_t_3;
 
@@ -31697,6 +33537,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *     if c_href is NULL or c_href[0] == c'\0':
  *         c_href = tree._getNs(c_node)
  */
+  __Pyx_TraceLine(237,0,__PYX_ERR(1, 237, __pyx_L1_error))
   __pyx_t_3 = (__pyx_v_c_path[0]).href;
   __pyx_v_c_href = __pyx_t_3;
 
@@ -31707,6 +33548,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         c_href = tree._getNs(c_node)
  *     if not cetree.tagMatches(c_node, c_href, c_name):
  */
+  __Pyx_TraceLine(238,0,__PYX_ERR(1, 238, __pyx_L1_error))
   __pyx_t_4 = ((__pyx_v_c_href == NULL) != 0);
   if (!__pyx_t_4) {
   } else {
@@ -31725,6 +33567,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *     if not cetree.tagMatches(c_node, c_href, c_name):
  *         raise ValueError(
  */
+    __Pyx_TraceLine(239,0,__PYX_ERR(1, 239, __pyx_L1_error))
     __pyx_v_c_href = _getNs(__pyx_v_c_node);
 
     /* "src/lxml/objectpath.pxi":238
@@ -31743,6 +33586,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         raise ValueError(
  *             f"root element does not match: need {cetree.namespacedNameFromNsName(c_href, c_name)}, got {root.tag}")
  */
+  __Pyx_TraceLine(240,0,__PYX_ERR(1, 240, __pyx_L1_error))
   __pyx_t_1 = ((!(tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
@@ -31753,6 +33597,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  * 
  *     while c_path_len > 1:
  */
+    __Pyx_TraceLine(242,0,__PYX_ERR(1, 242, __pyx_L1_error))
     __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 242, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = 0;
@@ -31796,6 +33641,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             f"root element does not match: need {cetree.namespacedNameFromNsName(c_href, c_name)}, got {root.tag}")
  * 
  */
+    __Pyx_TraceLine(241,0,__PYX_ERR(1, 241, __pyx_L1_error))
     __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -31819,6 +33665,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         c_path_len -= 1
  *         c_path += 1
  */
+  __Pyx_TraceLine(244,0,__PYX_ERR(1, 244, __pyx_L1_error))
   while (1) {
     __pyx_t_1 = ((__pyx_v_c_path_len > 1) != 0);
     if (!__pyx_t_1) break;
@@ -31830,6 +33677,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         c_path += 1
  *         if c_path[0].href is not NULL:
  */
+    __Pyx_TraceLine(245,0,__PYX_ERR(1, 245, __pyx_L1_error))
     __pyx_v_c_path_len = (__pyx_v_c_path_len - 1);
 
     /* "src/lxml/objectpath.pxi":246
@@ -31839,6 +33687,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         if c_path[0].href is not NULL:
  *             c_href = c_path[0].href # otherwise: keep parent namespace
  */
+    __Pyx_TraceLine(246,0,__PYX_ERR(1, 246, __pyx_L1_error))
     __pyx_v_c_path = (__pyx_v_c_path + 1);
 
     /* "src/lxml/objectpath.pxi":247
@@ -31848,6 +33697,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             c_href = c_path[0].href # otherwise: keep parent namespace
  *         c_index = c_path[0].index
  */
+    __Pyx_TraceLine(247,0,__PYX_ERR(1, 247, __pyx_L1_error))
     __pyx_t_1 = (((__pyx_v_c_path[0]).href != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -31858,6 +33708,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         c_index = c_path[0].index
  *         c_name = tree.xmlDictExists(c_node.doc.dict, c_path[0].name, -1)
  */
+      __Pyx_TraceLine(248,0,__PYX_ERR(1, 248, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_c_path[0]).href;
       __pyx_v_c_href = __pyx_t_3;
 
@@ -31877,6 +33728,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         c_name = tree.xmlDictExists(c_node.doc.dict, c_path[0].name, -1)
  *         if c_name is NULL:
  */
+    __Pyx_TraceLine(249,0,__PYX_ERR(1, 249, __pyx_L1_error))
     __pyx_t_6 = (__pyx_v_c_path[0]).index;
     __pyx_v_c_index = __pyx_t_6;
 
@@ -31887,6 +33739,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         if c_name is NULL:
  *             c_name = c_path[0].name
  */
+    __Pyx_TraceLine(250,0,__PYX_ERR(1, 250, __pyx_L1_error))
     __pyx_v_c_name = xmlDictExists(__pyx_v_c_node->doc->dict, (__pyx_v_c_path[0]).name, -1);
 
     /* "src/lxml/objectpath.pxi":251
@@ -31896,6 +33749,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             c_name = c_path[0].name
  *             c_child = NULL
  */
+    __Pyx_TraceLine(251,0,__PYX_ERR(1, 251, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_name == NULL) != 0);
     if (__pyx_t_1) {
 
@@ -31906,6 +33760,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             c_child = NULL
  *         else:
  */
+      __Pyx_TraceLine(252,0,__PYX_ERR(1, 252, __pyx_L1_error))
       __pyx_t_3 = (__pyx_v_c_path[0]).name;
       __pyx_v_c_name = __pyx_t_3;
 
@@ -31916,6 +33771,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         else:
  *             c_child = c_node.last if c_index < 0 else c_node.children
  */
+      __Pyx_TraceLine(253,0,__PYX_ERR(1, 253, __pyx_L1_error))
       __pyx_v_c_child = NULL;
 
       /* "src/lxml/objectpath.pxi":251
@@ -31935,6 +33791,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             c_child = _findFollowingSibling(c_child, c_href, c_name, c_index)
  * 
  */
+    __Pyx_TraceLine(255,0,__PYX_ERR(1, 255, __pyx_L1_error))
     /*else*/ {
       if (((__pyx_v_c_index < 0) != 0)) {
         __pyx_t_2 = __pyx_v_c_node->last;
@@ -31950,6 +33807,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  * 
  *         if c_child is not NULL:
  */
+      __Pyx_TraceLine(256,0,__PYX_ERR(1, 256, __pyx_L1_error))
       __pyx_v_c_child = __pyx_f_4lxml_9objectify__findFollowingSibling(__pyx_v_c_child, __pyx_v_c_href, __pyx_v_c_name, __pyx_v_c_index);
     }
     __pyx_L11:;
@@ -31961,6 +33819,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             c_node = c_child
  *         elif c_index != 0:
  */
+    __Pyx_TraceLine(258,0,__PYX_ERR(1, 258, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
     if (__pyx_t_1) {
 
@@ -31971,6 +33830,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         elif c_index != 0:
  *             raise TypeError, u"creating indexed path attributes is not supported"
  */
+      __Pyx_TraceLine(259,0,__PYX_ERR(1, 259, __pyx_L1_error))
       __pyx_v_c_node = __pyx_v_c_child;
 
       /* "src/lxml/objectpath.pxi":258
@@ -31990,6 +33850,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             raise TypeError, u"creating indexed path attributes is not supported"
  *         elif c_path_len == 1:
  */
+    __Pyx_TraceLine(260,0,__PYX_ERR(1, 260, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_index != 0) != 0);
     if (unlikely(__pyx_t_1)) {
 
@@ -32000,6 +33861,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         elif c_path_len == 1:
  *             _appendValue(cetree.elementFactory(root._doc, c_node),
  */
+      __Pyx_TraceLine(261,0,__PYX_ERR(1, 261, __pyx_L1_error))
       __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_creating_indexed_path_attributes, 0, 0);
       __PYX_ERR(1, 261, __pyx_L1_error)
 
@@ -32019,6 +33881,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *             _appendValue(cetree.elementFactory(root._doc, c_node),
  *                          cetree.namespacedNameFromNsName(c_href, c_name),
  */
+    __Pyx_TraceLine(262,0,__PYX_ERR(1, 262, __pyx_L1_error))
     __pyx_t_1 = ((__pyx_v_c_path_len == 1) != 0);
     if (__pyx_t_1) {
 
@@ -32029,6 +33892,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                          cetree.namespacedNameFromNsName(c_href, c_name),
  *                          value)
  */
+      __Pyx_TraceLine(263,0,__PYX_ERR(1, 263, __pyx_L1_error))
       __pyx_t_5 = ((PyObject *)__pyx_v_root->_doc);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_t_8 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 263, __pyx_L1_error)
@@ -32042,6 +33906,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                          value)
  *             return
  */
+      __Pyx_TraceLine(264,0,__PYX_ERR(1, 264, __pyx_L1_error))
       __pyx_t_5 = namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 264, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
 
@@ -32052,6 +33917,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                          cetree.namespacedNameFromNsName(c_href, c_name),
  *                          value)
  */
+      __Pyx_TraceLine(263,0,__PYX_ERR(1, 263, __pyx_L1_error))
       __pyx_t_9 = __pyx_f_4lxml_9objectify__appendValue(((struct LxmlElement *)__pyx_t_8), __pyx_t_5, __pyx_v_value); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 263, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -32065,6 +33931,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         else:
  *             child = cetree.makeSubElement(
  */
+      __Pyx_TraceLine(266,0,__PYX_ERR(1, 266, __pyx_L1_error))
       __Pyx_XDECREF(__pyx_r);
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
@@ -32085,6 +33952,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                 cetree.elementFactory(root._doc, c_node),
  *                 cetree.namespacedNameFromNsName(c_href, c_name),
  */
+    __Pyx_TraceLine(268,0,__PYX_ERR(1, 268, __pyx_L1_error))
     /*else*/ {
 
       /* "src/lxml/objectpath.pxi":269
@@ -32094,6 +33962,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                 cetree.namespacedNameFromNsName(c_href, c_name),
  *                 None, None, None, None)
  */
+      __Pyx_TraceLine(269,0,__PYX_ERR(1, 269, __pyx_L1_error))
       __pyx_t_9 = ((PyObject *)__pyx_v_root->_doc);
       __Pyx_INCREF(__pyx_t_9);
       __pyx_t_5 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_9), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 269, __pyx_L1_error)
@@ -32107,6 +33976,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                 None, None, None, None)
  *             c_node = child._c_node
  */
+      __Pyx_TraceLine(270,0,__PYX_ERR(1, 270, __pyx_L1_error))
       __pyx_t_9 = namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 270, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
 
@@ -32117,6 +33987,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                 cetree.elementFactory(root._doc, c_node),
  *                 cetree.namespacedNameFromNsName(c_href, c_name),
  */
+      __Pyx_TraceLine(268,0,__PYX_ERR(1, 268, __pyx_L1_error))
       __pyx_t_8 = ((PyObject *)makeSubElement(((struct LxmlElement *)__pyx_t_5), __pyx_t_9, Py_None, Py_None, Py_None, Py_None)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 268, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -32131,6 +34002,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  * 
  *     # if we get here, the entire path was already there
  */
+      __Pyx_TraceLine(272,0,__PYX_ERR(1, 272, __pyx_L1_error))
       __pyx_t_2 = __pyx_v_child->_c_node;
       __pyx_v_c_node = __pyx_t_2;
     }
@@ -32144,6 +34016,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         element = cetree.elementFactory(root._doc, c_node)
  *         _replaceElement(element, value)
  */
+  __Pyx_TraceLine(275,0,__PYX_ERR(1, 275, __pyx_L1_error))
   __pyx_t_1 = (__pyx_v_replace != 0);
   if (__pyx_t_1) {
 
@@ -32154,6 +34027,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *         _replaceElement(element, value)
  *     else:
  */
+    __Pyx_TraceLine(276,0,__PYX_ERR(1, 276, __pyx_L1_error))
     __pyx_t_8 = ((PyObject *)__pyx_v_root->_doc);
     __Pyx_INCREF(__pyx_t_8);
     __pyx_t_9 = ((PyObject *)elementFactory(((struct LxmlDocument *)__pyx_t_8), __pyx_v_c_node)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 276, __pyx_L1_error)
@@ -32169,6 +34043,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *     else:
  *         _appendValue(cetree.elementFactory(root._doc, c_node.parent),
  */
+    __Pyx_TraceLine(277,0,__PYX_ERR(1, 277, __pyx_L1_error))
     __pyx_t_9 = __pyx_f_4lxml_9objectify__replaceElement(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 277, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -32190,6 +34065,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                      cetree.namespacedName(c_node), value)
  * 
  */
+  __Pyx_TraceLine(279,0,__PYX_ERR(1, 279, __pyx_L1_error))
   /*else*/ {
     __pyx_t_9 = ((PyObject *)__pyx_v_root->_doc);
     __Pyx_INCREF(__pyx_t_9);
@@ -32204,6 +34080,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  * 
  * 
  */
+    __Pyx_TraceLine(280,0,__PYX_ERR(1, 280, __pyx_L1_error))
     __pyx_t_9 = namespacedName(__pyx_v_c_node); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 280, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
 
@@ -32214,6 +34091,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
  *                      cetree.namespacedName(c_node), value)
  * 
  */
+    __Pyx_TraceLine(279,0,__PYX_ERR(1, 279, __pyx_L1_error))
     __pyx_t_5 = __pyx_f_4lxml_9objectify__appendValue(((struct LxmlElement *)__pyx_t_8), __pyx_t_9, __pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 279, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -32243,6 +34121,7 @@ static PyObject *__pyx_f_4lxml_9objectify__create_object_path(struct LxmlElement
   __Pyx_XDECREF((PyObject *)__pyx_v_child);
   __Pyx_XDECREF((PyObject *)__pyx_v_element);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32260,11 +34139,13 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
   PyObject *__pyx_v_path_list = 0;
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_r = NULL;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_build_descendant_paths", 0);
+  __Pyx_TraceCall("_build_descendant_paths", __pyx_f[1], 283, 0, __PYX_ERR(1, 283, __pyx_L1_error));
   __Pyx_INCREF(__pyx_v_prefix_string);
 
   /* "src/lxml/objectpath.pxi":287
@@ -32274,6 +34155,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     if prefix_string:
  *         if prefix_string[-1] != u'.':
  */
+  __Pyx_TraceLine(287,0,__PYX_ERR(1, 287, __pyx_L1_error))
   __pyx_t_1 = namespacedName(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tag = __pyx_t_1;
@@ -32286,6 +34168,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *         if prefix_string[-1] != u'.':
  *             prefix_string += u'.'
  */
+  __Pyx_TraceLine(288,0,__PYX_ERR(1, 288, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_prefix_string); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 288, __pyx_L1_error)
   if (__pyx_t_2) {
 
@@ -32296,9 +34179,10 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *             prefix_string += u'.'
  *         prefix_string = prefix_string + tag
  */
+    __Pyx_TraceLine(289,0,__PYX_ERR(1, 289, __pyx_L1_error))
     __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_prefix_string, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 289, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__3, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 289, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 289, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_2) {
 
@@ -32309,7 +34193,8 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *         prefix_string = prefix_string + tag
  *     else:
  */
-      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_prefix_string, __pyx_kp_u__3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
+      __Pyx_TraceLine(290,0,__PYX_ERR(1, 290, __pyx_L1_error))
+      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_prefix_string, __pyx_kp_u__9); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_prefix_string, __pyx_t_1);
       __pyx_t_1 = 0;
@@ -32330,6 +34215,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     else:
  *         prefix_string = tag
  */
+    __Pyx_TraceLine(291,0,__PYX_ERR(1, 291, __pyx_L1_error))
     __pyx_t_1 = PyNumber_Add(__pyx_v_prefix_string, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_prefix_string, __pyx_t_1);
@@ -32352,6 +34238,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     path = [prefix_string]
  *     path_list = []
  */
+  __Pyx_TraceLine(293,0,__PYX_ERR(1, 293, __pyx_L1_error))
   /*else*/ {
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_DECREF_SET(__pyx_v_prefix_string, __pyx_v_tag);
@@ -32365,6 +34252,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     path_list = []
  *     _recursive_build_descendant_paths(c_node, path, path_list)
  */
+  __Pyx_TraceLine(294,0,__PYX_ERR(1, 294, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 294, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_prefix_string);
@@ -32380,6 +34268,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     _recursive_build_descendant_paths(c_node, path, path_list)
  *     return path_list
  */
+  __Pyx_TraceLine(295,0,__PYX_ERR(1, 295, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 295, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_path_list = ((PyObject*)__pyx_t_1);
@@ -32392,6 +34281,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  *     return path_list
  * 
  */
+  __Pyx_TraceLine(296,0,__PYX_ERR(1, 296, __pyx_L1_error))
   __pyx_t_3 = __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(__pyx_v_c_node, __pyx_v_path, __pyx_v_path_list); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 296, __pyx_L1_error)
 
   /* "src/lxml/objectpath.pxi":297
@@ -32401,6 +34291,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
  * 
  * 
  */
+  __Pyx_TraceLine(297,0,__PYX_ERR(1, 297, __pyx_L1_error))
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_path_list);
   __pyx_r = __pyx_v_path_list;
@@ -32425,6 +34316,7 @@ static PyObject *__pyx_f_4lxml_9objectify__build_descendant_paths(xmlNode *__pyx
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_prefix_string);
   __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_TraceReturn(__pyx_r, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -32444,6 +34336,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
   PyObject *__pyx_v_tag = NULL;
   PyObject *__pyx_v_count = NULL;
   int __pyx_r;
+  __Pyx_TraceDeclarations
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   int __pyx_t_2;
@@ -32455,6 +34348,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
   Py_UCS4 __pyx_t_8;
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_recursive_build_descendant_paths", 0);
+  __Pyx_TraceCall("_recursive_build_descendant_paths", __pyx_f[1], 300, 0, __PYX_ERR(1, 300, __pyx_L1_error));
 
   /* "src/lxml/objectpath.pxi":306
  *     """
@@ -32463,6 +34357,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *     path_list.append(u'.'.join(path))
  *     c_href = tree._getNs(c_node)
  */
+  __Pyx_TraceLine(306,0,__PYX_ERR(1, 306, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_tags = ((PyObject*)__pyx_t_1);
@@ -32475,11 +34370,12 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *     c_href = tree._getNs(c_node)
  *     c_child = c_node.children
  */
+  __Pyx_TraceLine(307,0,__PYX_ERR(1, 307, __pyx_L1_error))
   if (unlikely(__pyx_v_path_list == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
     __PYX_ERR(1, 307, __pyx_L1_error)
   }
-  __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__3, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 307, __pyx_L1_error)
+  __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__9, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 307, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_path_list, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 307, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -32491,6 +34387,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *     c_child = c_node.children
  *     while c_child is not NULL:
  */
+  __Pyx_TraceLine(308,0,__PYX_ERR(1, 308, __pyx_L1_error))
   __pyx_v_c_href = _getNs(__pyx_v_c_node);
 
   /* "src/lxml/objectpath.pxi":309
@@ -32500,6 +34397,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *     while c_child is not NULL:
  *         while c_child.type != tree.XML_ELEMENT_NODE:
  */
+  __Pyx_TraceLine(309,0,__PYX_ERR(1, 309, __pyx_L1_error))
   __pyx_t_3 = __pyx_v_c_node->children;
   __pyx_v_c_child = __pyx_t_3;
 
@@ -32510,6 +34408,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         while c_child.type != tree.XML_ELEMENT_NODE:
  *             c_child = c_child.next
  */
+  __Pyx_TraceLine(310,0,__PYX_ERR(1, 310, __pyx_L1_error))
   while (1) {
     __pyx_t_4 = ((__pyx_v_c_child != NULL) != 0);
     if (!__pyx_t_4) break;
@@ -32521,6 +34420,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             c_child = c_child.next
  *             if c_child is NULL:
  */
+    __Pyx_TraceLine(311,0,__PYX_ERR(1, 311, __pyx_L1_error))
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_child->type != XML_ELEMENT_NODE) != 0);
       if (!__pyx_t_4) break;
@@ -32532,6 +34432,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             if c_child is NULL:
  *                 return 0
  */
+      __Pyx_TraceLine(312,0,__PYX_ERR(1, 312, __pyx_L1_error))
       __pyx_t_3 = __pyx_v_c_child->next;
       __pyx_v_c_child = __pyx_t_3;
 
@@ -32542,6 +34443,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *                 return 0
  *         if c_href is tree._getNs(c_child):
  */
+      __Pyx_TraceLine(313,0,__PYX_ERR(1, 313, __pyx_L1_error))
       __pyx_t_4 = ((__pyx_v_c_child == NULL) != 0);
       if (__pyx_t_4) {
 
@@ -32552,6 +34454,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         if c_href is tree._getNs(c_child):
  *             tag = pyunicode(c_child.name)
  */
+        __Pyx_TraceLine(314,0,__PYX_ERR(1, 314, __pyx_L1_error))
         __pyx_r = 0;
         goto __pyx_L0;
 
@@ -32572,6 +34475,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             tag = pyunicode(c_child.name)
  *         elif c_href is not NULL and tree._getNs(c_child) is NULL:
  */
+    __Pyx_TraceLine(315,0,__PYX_ERR(1, 315, __pyx_L1_error))
     __pyx_t_4 = ((__pyx_v_c_href == _getNs(__pyx_v_c_child)) != 0);
     if (__pyx_t_4) {
 
@@ -32582,6 +34486,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         elif c_href is not NULL and tree._getNs(c_child) is NULL:
  *             # special case: parent has namespace, child does not
  */
+      __Pyx_TraceLine(316,0,__PYX_ERR(1, 316, __pyx_L1_error))
       __pyx_t_1 = pyunicode(__pyx_v_c_child->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 316, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_1);
@@ -32604,6 +34509,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             # special case: parent has namespace, child does not
  *             tag = u'{}' + pyunicode(c_child.name)
  */
+    __Pyx_TraceLine(317,0,__PYX_ERR(1, 317, __pyx_L1_error))
     __pyx_t_5 = ((__pyx_v_c_href != NULL) != 0);
     if (__pyx_t_5) {
     } else {
@@ -32622,9 +34528,10 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         else:
  *             tag = cetree.namespacedName(c_child)
  */
+      __Pyx_TraceLine(319,0,__PYX_ERR(1, 319, __pyx_L1_error))
       __pyx_t_1 = pyunicode(__pyx_v_c_child->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 319, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyNumber_Add(__pyx_kp_u__22, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 319, __pyx_L1_error)
+      __pyx_t_6 = PyNumber_Add(__pyx_kp_u__62, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 319, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_6);
@@ -32647,6 +34554,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         count = tags.get(tag)
  *         if count is None:
  */
+    __Pyx_TraceLine(321,0,__PYX_ERR(1, 321, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = namespacedName(__pyx_v_c_child); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 321, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -32662,6 +34570,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         if count is None:
  *             tags[tag] = 1
  */
+    __Pyx_TraceLine(322,0,__PYX_ERR(1, 322, __pyx_L1_error))
     __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_tags, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 322, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_XDECREF_SET(__pyx_v_count, __pyx_t_6);
@@ -32674,6 +34583,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             tags[tag] = 1
  *         else:
  */
+    __Pyx_TraceLine(323,0,__PYX_ERR(1, 323, __pyx_L1_error))
     __pyx_t_4 = (__pyx_v_count == Py_None);
     __pyx_t_5 = (__pyx_t_4 != 0);
     if (__pyx_t_5) {
@@ -32685,6 +34595,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         else:
  *             tags[tag] = count + 1
  */
+      __Pyx_TraceLine(324,0,__PYX_ERR(1, 324, __pyx_L1_error))
       if (unlikely(PyDict_SetItem(__pyx_v_tags, __pyx_v_tag, __pyx_int_1) < 0)) __PYX_ERR(1, 324, __pyx_L1_error)
 
       /* "src/lxml/objectpath.pxi":323
@@ -32704,6 +34615,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *             tag += f'[{count}]'
  *         path.append(tag)
  */
+    __Pyx_TraceLine(326,0,__PYX_ERR(1, 326, __pyx_L1_error))
     /*else*/ {
       __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 326, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
@@ -32717,14 +34629,15 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         path.append(tag)
  *         _recursive_build_descendant_paths(c_child, path, path_list)
  */
+      __Pyx_TraceLine(327,0,__PYX_ERR(1, 327, __pyx_L1_error))
       __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 327, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = 0;
       __pyx_t_8 = 127;
-      __Pyx_INCREF(__pyx_kp_u__23);
+      __Pyx_INCREF(__pyx_kp_u__63);
       __pyx_t_7 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__23);
-      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u__23);
+      __Pyx_GIVEREF(__pyx_kp_u__63);
+      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u__63);
       __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_count, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 327, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_8;
@@ -32732,10 +34645,10 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
       __pyx_t_1 = 0;
-      __Pyx_INCREF(__pyx_kp_u__24);
+      __Pyx_INCREF(__pyx_kp_u__64);
       __pyx_t_7 += 1;
-      __Pyx_GIVEREF(__pyx_kp_u__24);
-      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__24);
+      __Pyx_GIVEREF(__pyx_kp_u__64);
+      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u__64);
       __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 327, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -32754,6 +34667,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         _recursive_build_descendant_paths(c_child, path, path_list)
  *         del path[-1]
  */
+    __Pyx_TraceLine(328,0,__PYX_ERR(1, 328, __pyx_L1_error))
     if (unlikely(__pyx_v_path == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
       __PYX_ERR(1, 328, __pyx_L1_error)
@@ -32767,6 +34681,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         del path[-1]
  *         c_child = c_child.next
  */
+    __Pyx_TraceLine(329,0,__PYX_ERR(1, 329, __pyx_L1_error))
     __pyx_t_9 = __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(__pyx_v_c_child, __pyx_v_path, __pyx_v_path_list); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 329, __pyx_L1_error)
 
     /* "src/lxml/objectpath.pxi":330
@@ -32776,6 +34691,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         c_child = c_child.next
  *     return 0
  */
+    __Pyx_TraceLine(330,0,__PYX_ERR(1, 330, __pyx_L1_error))
     if (unlikely(__pyx_v_path == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
       __PYX_ERR(1, 330, __pyx_L1_error)
@@ -32788,6 +34704,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         c_child = c_child.next             # <<<<<<<<<<<<<<
  *     return 0
  */
+    __Pyx_TraceLine(331,0,__PYX_ERR(1, 331, __pyx_L1_error))
     __pyx_t_3 = __pyx_v_c_child->next;
     __pyx_v_c_child = __pyx_t_3;
   }
@@ -32797,6 +34714,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
  *         c_child = c_child.next
  *     return 0             # <<<<<<<<<<<<<<
  */
+  __Pyx_TraceLine(332,0,__PYX_ERR(1, 332, __pyx_L1_error))
   __pyx_r = 0;
   goto __pyx_L0;
 
@@ -32818,6 +34736,7 @@ static int __pyx_f_4lxml_9objectify__recursive_build_descendant_paths(xmlNode *_
   __Pyx_XDECREF(__pyx_v_tags);
   __Pyx_XDECREF(__pyx_v_tag);
   __Pyx_XDECREF(__pyx_v_count);
+  __Pyx_TraceReturn(Py_None, 0);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
@@ -34767,23 +36686,23 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_u_XML, __pyx_k_XML, sizeof(__pyx_k_XML), 0, 1, 0, 1},
   {&__pyx_n_s_XMLParser, __pyx_k_XMLParser, sizeof(__pyx_k_XMLParser), 0, 0, 1, 1},
   {&__pyx_kp_u_XSD_types_require_the_XSD_namesp, __pyx_k_XSD_types_require_the_XSD_namesp, sizeof(__pyx_k_XSD_types_require_the_XSD_namesp), 0, 1, 0, 0},
-  {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0},
-  {&__pyx_kp_u__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0, 0},
-  {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0},
-  {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0},
-  {&__pyx_kp_u__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0, 0},
-  {&__pyx_kp_u__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0, 0},
-  {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0},
-  {&__pyx_kp_b__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 0, 0, 0},
-  {&__pyx_kp_u__18, __pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0, 0},
-  {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
-  {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0},
   {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0},
-  {&__pyx_kp_u__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0, 0},
-  {&__pyx_kp_u__24, __pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0, 0},
-  {&__pyx_kp_u__26, __pyx_k__26, sizeof(__pyx_k__26), 0, 1, 0, 0},
+  {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
   {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
-  {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0},
+  {&__pyx_kp_u__32, __pyx_k__32, sizeof(__pyx_k__32), 0, 1, 0, 0},
+  {&__pyx_kp_u__35, __pyx_k__35, sizeof(__pyx_k__35), 0, 1, 0, 0},
+  {&__pyx_kp_u__36, __pyx_k__36, sizeof(__pyx_k__36), 0, 1, 0, 0},
+  {&__pyx_kp_u__37, __pyx_k__37, sizeof(__pyx_k__37), 0, 1, 0, 0},
+  {&__pyx_kp_u__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 1, 0, 0},
+  {&__pyx_kp_u__39, __pyx_k__39, sizeof(__pyx_k__39), 0, 1, 0, 0},
+  {&__pyx_kp_u__40, __pyx_k__40, sizeof(__pyx_k__40), 0, 1, 0, 0},
+  {&__pyx_kp_b__44, __pyx_k__44, sizeof(__pyx_k__44), 0, 0, 0, 0},
+  {&__pyx_kp_u__44, __pyx_k__44, sizeof(__pyx_k__44), 0, 1, 0, 0},
+  {&__pyx_kp_u__62, __pyx_k__62, sizeof(__pyx_k__62), 0, 1, 0, 0},
+  {&__pyx_kp_u__63, __pyx_k__63, sizeof(__pyx_k__63), 0, 1, 0, 0},
+  {&__pyx_kp_u__64, __pyx_k__64, sizeof(__pyx_k__64), 0, 1, 0, 0},
+  {&__pyx_kp_u__66, __pyx_k__66, sizeof(__pyx_k__66), 0, 1, 0, 0},
+  {&__pyx_kp_u__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0, 0},
   {&__pyx_n_s_addattr, __pyx_k_addattr, sizeof(__pyx_k_addattr), 0, 0, 1, 1},
   {&__pyx_n_s_addnext, __pyx_k_addnext, sizeof(__pyx_k_addnext), 0, 0, 1, 1},
   {&__pyx_n_s_after, __pyx_k_after, sizeof(__pyx_k_after), 0, 0, 1, 1},
@@ -35056,9 +36975,9 @@ static int __Pyx_InitCachedConstants(void) {
  *         return
  *     else:
  */
-  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 467, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__4);
-  __Pyx_GIVEREF(__pyx_slice__4);
+  __pyx_slice__10 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) __PYX_ERR(0, 467, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__10);
+  __Pyx_GIVEREF(__pyx_slice__10);
 
   /* "lxml/objectify.pyx":1026
  * cdef _registerPyTypes():
@@ -35067,9 +36986,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  __pyx_tuple__6 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1026, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
+  __pyx_tuple__27 = PyTuple_Pack(13, __pyx_n_u_integer, __pyx_n_u_int, __pyx_n_u_short, __pyx_n_u_byte, __pyx_n_u_unsignedShort, __pyx_n_u_unsignedByte, __pyx_n_u_nonPositiveInteger, __pyx_n_u_negativeInteger, __pyx_n_u_long, __pyx_n_u_nonNegativeInteger, __pyx_n_u_unsignedLong, __pyx_n_u_unsignedInt, __pyx_n_u_positiveInteger); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 1026, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
 
   /* "lxml/objectify.pyx":1037
  * 
@@ -35078,9 +36997,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     pytype.register()
  * 
  */
-  __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1037, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
+  __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1037, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
 
   /* "lxml/objectify.pyx":1041
  * 
@@ -35089,9 +37008,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     pytype.register()
  * 
  */
-  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1041, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__8);
-  __Pyx_GIVEREF(__pyx_tuple__8);
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
 
   /* "lxml/objectify.pyx":1045
  * 
@@ -35100,9 +37019,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  */
-  __pyx_tuple__9 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1045, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
+  __pyx_tuple__30 = PyTuple_Pack(10, __pyx_n_u_string, __pyx_n_u_normalizedString, __pyx_n_u_token, __pyx_n_u_language, __pyx_n_u_Name, __pyx_n_u_NCName, __pyx_n_u_ID, __pyx_n_u_IDREF, __pyx_n_u_ENTITY, __pyx_n_u_NMTOKEN); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1045, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
+  __Pyx_GIVEREF(__pyx_tuple__30);
 
   /* "lxml/objectify.pyx":1342
  *         result += _dump(child, indent)
@@ -35111,9 +37030,9 @@ static int __Pyx_InitCachedConstants(void) {
  *     else:
  *         return result
  */
-  __pyx_slice__17 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(0, 1342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__17);
-  __Pyx_GIVEREF(__pyx_slice__17);
+  __pyx_slice__41 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__41);
+  __Pyx_GIVEREF(__pyx_slice__41);
 
   /* "lxml/objectify.pyx":1423
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
@@ -35122,9 +37041,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
-  __pyx_tuple__19 = PyTuple_Pack(2, __pyx_kp_u__18, __pyx_int_1); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_tuple__45 = PyTuple_Pack(2, __pyx_kp_u__44, __pyx_int_1); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
 
   /* "lxml/objectify.pyx":1600
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
@@ -35133,9 +37052,9 @@ static int __Pyx_InitCachedConstants(void) {
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:
  */
-  __pyx_tuple__20 = PyTuple_Pack(2, __pyx_kp_u__18, __pyx_int_1); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1600, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__49 = PyTuple_Pack(2, __pyx_kp_u__44, __pyx_int_1); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 1600, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__49);
+  __Pyx_GIVEREF(__pyx_tuple__49);
 
   /* "lxml/objectify.pyx":1913
  *     if _xsi is not None:
@@ -35144,9 +37063,9 @@ static int __Pyx_InitCachedConstants(void) {
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  */
-  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_kp_u__18, __pyx_int_1); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__21);
-  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_tuple__58 = PyTuple_Pack(2, __pyx_kp_u__44, __pyx_int_1); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 1913, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__58);
+  __Pyx_GIVEREF(__pyx_tuple__58);
 
   /* "lxml/objectify.pyx":43
  * import re
@@ -35155,9 +37074,9 @@ static int __Pyx_InitCachedConstants(void) {
  * cdef object is_special_method = re.compile(u'__.*__$').match
  * 
  */
-  __pyx_tuple__25 = PyTuple_Pack(2, __pyx_builtin_ValueError, __pyx_builtin_TypeError); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 43, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
+  __pyx_tuple__65 = PyTuple_Pack(2, __pyx_builtin_ValueError, __pyx_builtin_TypeError); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
 
   /* "lxml/objectify.pyx":44
  * 
@@ -35166,9 +37085,9 @@ static int __Pyx_InitCachedConstants(void) {
  * 
  * 
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u__26); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 44, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__27);
-  __Pyx_GIVEREF(__pyx_tuple__27);
+  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_u__66); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__67);
+  __Pyx_GIVEREF(__pyx_tuple__67);
 
   /* "lxml/objectify.pyx":81
  *     return (s, python.PyUnicode_AsUTF8String(s))
@@ -35177,13 +37096,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""set_pytype_attribute_tag(attribute_tag=None)
  *     Change name and namespace of the XML attribute that holds Python type
  */
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_attribute_tag); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 81, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
-  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_pytype_attribute_tag, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 81, __pyx_L1_error)
-  __pyx_tuple__30 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 81, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_n_s_attribute_tag); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__68);
+  __Pyx_GIVEREF(__pyx_tuple__68);
+  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_pytype_attribute_tag, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 81, __pyx_L1_error)
+  __pyx_tuple__69 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__69);
+  __Pyx_GIVEREF(__pyx_tuple__69);
 
   /* "lxml/objectify.pyx":161
  * 
@@ -35192,10 +37111,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return (fromstring, (etree.tostring(self),))
  * 
  */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
-  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_reduce, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
+  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_reduce, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 161, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":192
  *         return _countSiblings(self._c_node)
@@ -35204,10 +37123,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""countchildren(self)
  * 
  */
-  __pyx_tuple__33 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 192, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
-  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_countchildren, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __pyx_tuple__71 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
+  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_countchildren, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 192, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":209
  *         return c
@@ -35216,10 +37135,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""getchildren(self)
  * 
  */
-  __pyx_tuple__35 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_result); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 209, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__35);
-  __Pyx_GIVEREF(__pyx_tuple__35);
-  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getchildren, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 209, __pyx_L1_error)
+  __pyx_tuple__72 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_node, __pyx_n_s_result); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 209, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
+  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getchildren, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 209, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":262
  *         self.remove(child)
@@ -35228,10 +37147,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""addattr(self, tag, value)
  * 
  */
-  __pyx_tuple__37 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_value); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 262, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__37);
-  __Pyx_GIVEREF(__pyx_tuple__37);
-  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_addattr, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __pyx_tuple__73 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_value); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_addattr, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 262, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":369
  *             parent.remove(sibling)
@@ -35240,10 +37159,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""descendantpaths(self, prefix=None)
  * 
  */
-  __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 369, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__39);
-  __Pyx_GIVEREF(__pyx_tuple__39);
-  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_descendantpaths, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_tuple__74 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_prefix); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_descendantpaths, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 369, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":606
  *         return strrepr(textOf(self._c_node) or '')
@@ -35252,10 +37171,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""For use in subclasses only. Don't use unless you know what you are
  *         doing.
  */
-  __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 606, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__41);
-  __Pyx_GIVEREF(__pyx_tuple__41);
-  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setText, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_tuple__75 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setText, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 606, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":614
  * cdef class NumberElement(ObjectifiedDataElement):
@@ -35264,10 +37183,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""Set the function that parses the Python value from a string.
  * 
  */
-  __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_function); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 614, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
-  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setValueParser, 614, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 614, __pyx_L1_error)
+  __pyx_tuple__76 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_function); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 614, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
+  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_setValueParser, 614, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 614, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":634
  *         return float(_parseNumber(self))
@@ -35276,10 +37195,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return complex(_parseNumber(self))
  * 
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 634, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
-  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 634, __pyx_L1_error)
+  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 634, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __Pyx_GIVEREF(__pyx_tuple__77);
+  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 634, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":710
  * 
@@ -35288,10 +37207,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._parse_value = int
  * 
  */
-  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 710, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
-  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__78);
+  __Pyx_GIVEREF(__pyx_tuple__78);
+  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 710, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":714
  * 
@@ -35300,10 +37219,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._parse_value = long
  * 
  */
-  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 714, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__49);
-  __Pyx_GIVEREF(__pyx_tuple__49);
-  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
+  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 714, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":718
  * 
@@ -35312,10 +37231,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._parse_value = float
  * 
  */
-  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 718, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__51);
-  __Pyx_GIVEREF(__pyx_tuple__51);
-  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 718, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__80);
+  __Pyx_GIVEREF(__pyx_tuple__80);
+  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 718, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 718, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":735
  *         return repr(textOf(self._c_node) or u'')
@@ -35324,10 +37243,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         text = textOf(self._c_node)
  *         if text is None:
  */
-  __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 735, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__53);
-  __Pyx_GIVEREF(__pyx_tuple__53);
-  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_strlen, 735, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 735, __pyx_L1_error)
+  __pyx_tuple__81 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_text); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 735, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__81);
+  __Pyx_GIVEREF(__pyx_tuple__81);
+  __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_strlen, 735, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 735, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":780
  *         return float(textOf(self._c_node))
@@ -35336,10 +37255,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         return complex(textOf(self._c_node))
  * 
  */
-  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 780, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__55);
-  __Pyx_GIVEREF(__pyx_tuple__55);
-  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 780, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 780, __pyx_L1_error)
+  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 780, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__82);
+  __Pyx_GIVEREF(__pyx_tuple__82);
+  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_complex, 780, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 780, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":814
  *     Python's bool type.
@@ -35348,10 +37267,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         self._parse_value = __parseBool
  * 
  */
-  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 814, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__57);
-  __Pyx_GIVEREF(__pyx_tuple__57);
-  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 814, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 814, __pyx_L1_error)
+  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 814, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__83);
+  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 814, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 814, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":836
  *             return __parseBool(textOf(self._c_node))
@@ -35360,10 +37279,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     cdef int value = -1
  *     if s is not None:
  */
-  __pyx_tuple__59 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 836, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__59);
-  __Pyx_GIVEREF(__pyx_tuple__59);
-  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_checkBool, 836, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 836, __pyx_L1_error)
+  __pyx_tuple__84 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 836, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__84);
+  __Pyx_GIVEREF(__pyx_tuple__84);
+  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_checkBool, 836, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 836, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":843
  *         raise ValueError
@@ -35372,10 +37291,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     cdef int value
  *     if s is None:
  */
-  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 843, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__61);
-  __Pyx_GIVEREF(__pyx_tuple__61);
-  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parseBool, 843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__85);
+  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parseBool, 843, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 843, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":941
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
@@ -35384,10 +37303,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""register(self, before=None, after=None)
  * 
  */
-  __pyx_tuple__63 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_before, __pyx_n_s_after, __pyx_n_s_item, __pyx_n_s_entry, __pyx_n_s_first_pos, __pyx_n_s_last_pos, __pyx_n_s_i, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_xs_type); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 941, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__63);
-  __Pyx_GIVEREF(__pyx_tuple__63);
-  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_register, 941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 941, __pyx_L1_error)
+  __pyx_tuple__86 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_before, __pyx_n_s_after, __pyx_n_s_item, __pyx_n_s_entry, __pyx_n_s_first_pos, __pyx_n_s_last_pos, __pyx_n_s_i, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_xs_type); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 941, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__86);
+  __Pyx_GIVEREF(__pyx_tuple__86);
+  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_register, 941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 941, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":982
  *             _SCHEMA_TYPE_DICT[xs_type] = self
@@ -35396,10 +37315,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:
  */
-  __pyx_tuple__65 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 982, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__65);
-  __Pyx_GIVEREF(__pyx_tuple__65);
-  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unregister, 982, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 982, __pyx_L1_error)
+  __pyx_tuple__87 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 982, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__87);
+  __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unregister, 982, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 982, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1011
  * cdef list _TYPE_CHECKS = []
@@ -35408,10 +37327,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return u"true" if b else u"false"
  * 
  */
-  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 1011, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__67);
-  __Pyx_GIVEREF(__pyx_tuple__67);
-  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1011, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 1011, __pyx_L1_error)
+  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 1011, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__88);
+  __Pyx_GIVEREF(__pyx_tuple__88);
+  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1011, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 1011, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1017
  *     return u"str" if python._isString(obj) else _typename(obj)
@@ -35420,10 +37339,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""pytypename(obj)
  * 
  */
-  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 1017, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__69);
-  __Pyx_GIVEREF(__pyx_tuple__69);
-  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pytypename, 1017, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 1017, __pyx_L1_error)
+  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 1017, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__89);
+  __Pyx_GIVEREF(__pyx_tuple__89);
+  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pytypename, 1017, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 1017, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1063
  * _registerPyTypes()
@@ -35432,10 +37351,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""getRegisteredTypes()
  * 
  */
-  __pyx_tuple__71 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 1063, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
-  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getRegisteredTypes, 1063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 1063, __pyx_L1_error)
+  __pyx_tuple__90 = PyTuple_Pack(5, __pyx_n_s_types, __pyx_n_s_known, __pyx_n_s_check, __pyx_n_s_pytype, __pyx_n_s_name); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 1063, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__90);
+  __Pyx_GIVEREF(__pyx_tuple__90);
+  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_getRegisteredTypes, 1063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 1063, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1298
  * cdef bint __RECURSIVE_STR = 0 # default: off
@@ -35444,13 +37363,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""enable_recursive_str(on=True)
  * 
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1298, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__73);
-  __Pyx_GIVEREF(__pyx_tuple__73);
-  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_enable_recursive_str, 1298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1298, __pyx_L1_error)
-  __pyx_tuple__75 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1298, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__75);
-  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 1298, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__91);
+  __Pyx_GIVEREF(__pyx_tuple__91);
+  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_enable_recursive_str, 1298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 1298, __pyx_L1_error)
+  __pyx_tuple__92 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1298, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__92);
+  __Pyx_GIVEREF(__pyx_tuple__92);
 
   /* "lxml/objectify.pyx":1307
  *     __RECURSIVE_STR = on
@@ -35459,10 +37378,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""dump(_Element element not None)
  * 
  */
-  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 1307, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__76);
-  __Pyx_GIVEREF(__pyx_tuple__76);
-  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_dump, 1307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 1307, __pyx_L1_error)
+  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 1307, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__93);
+  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_dump, 1307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 1307, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1350
  * # Pickle support for objectified ElementTree
@@ -35471,10 +37390,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return etree.ElementTree(fromstring(data))
  * 
  */
-  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 1350, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__78);
-  __Pyx_GIVEREF(__pyx_tuple__78);
-  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unpickleElementTree, 1350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__94);
+  __Pyx_GIVEREF(__pyx_tuple__94);
+  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_unpickleElementTree, 1350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 1350, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1361
  *                    elementTreeReduceFunction, __unpickleElementTree)
@@ -35483,10 +37402,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     return (__unpickleElementTree, (etree.tostring(obj),))
  * 
  */
-  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 1361, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__80);
-  __Pyx_GIVEREF(__pyx_tuple__80);
-  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 1361, __pyx_L1_error)
+  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 1361, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__95);
+  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1361, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1455
  *     return None
@@ -35495,10 +37414,10 @@ static int __Pyx_InitCachedConstants(void) {
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
-  __pyx_tuple__82 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 1455, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__82);
-  __Pyx_GIVEREF(__pyx_tuple__82);
-  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pyannotate, 1455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 1455, __pyx_L1_error)
+  __pyx_tuple__96 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(0, 1455, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__96);
+  __Pyx_GIVEREF(__pyx_tuple__96);
+  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__96, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_pyannotate, 1455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 1455, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1478
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
@@ -35507,10 +37426,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
-  __pyx_tuple__84 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 1478, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__84);
-  __Pyx_GIVEREF(__pyx_tuple__84);
-  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_xsiannotate, 1478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 1478, __pyx_L1_error)
+  __pyx_tuple__97 = PyTuple_Pack(5, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_pytype, __pyx_n_s_empty_type, __pyx_n_s_element); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 1478, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__97);
+  __Pyx_GIVEREF(__pyx_tuple__97);
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_xsiannotate, 1478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 1478, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1506
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
@@ -35519,10 +37438,10 @@ static int __Pyx_InitCachedConstants(void) {
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
-  __pyx_tuple__86 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 1506, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__86);
-  __Pyx_GIVEREF(__pyx_tuple__86);
-  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_annotate, 1506, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 1506, __pyx_L1_error)
+  __pyx_tuple__98 = PyTuple_Pack(8, __pyx_n_s_element_or_tree, __pyx_n_s_ignore_old, __pyx_n_s_ignore_xsi, __pyx_n_s_empty_pytype, __pyx_n_s_empty_type, __pyx_n_s_annotate_xsi, __pyx_n_s_annotate_pytype, __pyx_n_s_element); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1506, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__98);
+  __Pyx_GIVEREF(__pyx_tuple__98);
+  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_annotate, 1506, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 1506, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1702
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
@@ -35531,10 +37450,10 @@ static int __Pyx_InitCachedConstants(void) {
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
-  __pyx_tuple__88 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 1702, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__88);
-  __Pyx_GIVEREF(__pyx_tuple__88);
-  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_deannotate, 1702, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 1702, __pyx_L1_error)
+  __pyx_tuple__99 = PyTuple_Pack(6, __pyx_n_s_element_or_tree, __pyx_n_s_pytype, __pyx_n_s_xsi_2, __pyx_n_s_xsi_nil, __pyx_n_s_cleanup_namespaces, __pyx_n_s_attribute_names); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 1702, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__99);
+  __Pyx_GIVEREF(__pyx_tuple__99);
+  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_deannotate, 1702, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 1702, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1742
  * objectify_parser = __DEFAULT_PARSER
@@ -35543,13 +37462,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""set_default_parser(new_parser = None)
  * 
  */
-  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 1742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__90);
-  __Pyx_GIVEREF(__pyx_tuple__90);
-  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_default_parser, 1742, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1742, __pyx_L1_error)
-  __pyx_tuple__92 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__92);
-  __Pyx_GIVEREF(__pyx_tuple__92);
+  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__100);
+  __Pyx_GIVEREF(__pyx_tuple__100);
+  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_set_default_parser, 1742, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 1742, __pyx_L1_error)
+  __pyx_tuple__101 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 1742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__101);
+  __Pyx_GIVEREF(__pyx_tuple__101);
 
   /* "lxml/objectify.pyx":1760
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
@@ -35558,10 +37477,10 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""makeparser(remove_blank_text=True, **kw)
  * 
  */
-  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 1760, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__93);
-  __Pyx_GIVEREF(__pyx_tuple__93);
-  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1760, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 1760, __pyx_L1_error)
+  __pyx_tuple__102 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(0, 1760, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__102);
+  __Pyx_GIVEREF(__pyx_tuple__102);
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1760, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 1760, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1787
  * SubElement = etree.SubElement
@@ -35570,13 +37489,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__95 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 1787, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__95);
-  __Pyx_GIVEREF(__pyx_tuple__95);
-  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_fromstring, 1787, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1787, __pyx_L1_error)
-  __pyx_tuple__97 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 1787, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__97);
-  __Pyx_GIVEREF(__pyx_tuple__97);
+  __pyx_tuple__103 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 1787, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__103);
+  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__103, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_fromstring, 1787, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 1787, __pyx_L1_error)
+  __pyx_tuple__104 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 1787, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__104);
+  __Pyx_GIVEREF(__pyx_tuple__104);
 
   /* "lxml/objectify.pyx":1803
  *     return _fromstring(xml, parser, base_url=base_url)
@@ -35585,13 +37504,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""XML(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__98 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1803, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__98);
-  __Pyx_GIVEREF(__pyx_tuple__98);
-  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_XML, 1803, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1803, __pyx_L1_error)
-  __pyx_tuple__100 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1803, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__100);
-  __Pyx_GIVEREF(__pyx_tuple__100);
+  __pyx_tuple__105 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 1803, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__105);
+  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_XML, 1803, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 1803, __pyx_L1_error)
+  __pyx_tuple__106 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 1803, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__106);
+  __Pyx_GIVEREF(__pyx_tuple__106);
 
   /* "lxml/objectify.pyx":1822
  * _parse = etree.parse
@@ -35600,13 +37519,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__101 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 1822, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__101);
-  __Pyx_GIVEREF(__pyx_tuple__101);
-  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parse, 1822, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1822, __pyx_L1_error)
-  __pyx_tuple__103 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 1822, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__103);
-  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_tuple__107 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 1822, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__107);
+  __Pyx_GIVEREF(__pyx_tuple__107);
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_parse, 1822, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1822, __pyx_L1_error)
+  __pyx_tuple__108 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 1822, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__108);
+  __Pyx_GIVEREF(__pyx_tuple__108);
 
   /* "lxml/objectify.pyx":1845
  * E = ElementMaker()
@@ -35615,13 +37534,13 @@ static int __Pyx_InitCachedConstants(void) {
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
-  __pyx_tuple__104 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 1845, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__104);
-  __Pyx_GIVEREF(__pyx_tuple__104);
-  __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1845, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 1845, __pyx_L1_error)
-  __pyx_tuple__106 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 1845, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__106);
-  __Pyx_GIVEREF(__pyx_tuple__106);
+  __pyx_tuple__109 = PyTuple_Pack(5, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_attributes); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 1845, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__109);
+  __Pyx_GIVEREF(__pyx_tuple__109);
+  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1845, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 1845, __pyx_L1_error)
+  __pyx_tuple__110 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 1845, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__110);
+  __Pyx_GIVEREF(__pyx_tuple__110);
 
   /* "lxml/objectify.pyx":1865
  *     return _makeElement(_tag, None, _attributes, nsmap)
@@ -35630,13 +37549,13 @@ static int __Pyx_InitCachedConstants(void) {
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
-  __pyx_tuple__107 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__107);
-  __Pyx_GIVEREF(__pyx_tuple__107);
-  __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __pyx_tuple__109 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__109);
-  __Pyx_GIVEREF(__pyx_tuple__109);
+  __pyx_tuple__111 = PyTuple_Pack(13, __pyx_n_s_value_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_pytype_2, __pyx_n_s_xsi_3, __pyx_n_s_attributes, __pyx_n_s_temp, __pyx_n_s_prefix, __pyx_n_s_name, __pyx_n_s_ns, __pyx_n_s_py_type, __pyx_n_s_strval, __pyx_n_s_stringify); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 1865, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__111);
+  __Pyx_GIVEREF(__pyx_tuple__111);
+  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(3, 2, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 1865, __pyx_L1_error)
+  __pyx_tuple__112 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(0, 1865, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__112);
+  __Pyx_GIVEREF(__pyx_tuple__112);
 
   /* "src/lxml/objectpath.pxi":57
  *         return _find_object_path(root, self._c_path, self._path_len, default)
@@ -35645,10 +37564,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"hasattr(self, root)"
  *         try:
  */
-  __pyx_tuple__110 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(1, 57, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__110);
-  __Pyx_GIVEREF(__pyx_tuple__110);
-  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_hasattr, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(1, 57, __pyx_L1_error)
+  __pyx_tuple__113 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(1, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__113);
+  __Pyx_GIVEREF(__pyx_tuple__113);
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__113, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_hasattr, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(1, 57, __pyx_L1_error)
 
   /* "src/lxml/objectpath.pxi":65
  *         return True
@@ -35657,10 +37576,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""setattr(self, root, value)
  * 
  */
-  __pyx_tuple__112 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(1, 65, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__112);
-  __Pyx_GIVEREF(__pyx_tuple__112);
-  __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_setattr, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(1, 65, __pyx_L1_error)
+  __pyx_tuple__114 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(1, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__114);
+  __Pyx_GIVEREF(__pyx_tuple__114);
+  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_setattr, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(1, 65, __pyx_L1_error)
 
   /* "src/lxml/objectpath.pxi":74
  *         _create_object_path(root, self._c_path, self._path_len, 1, value)
@@ -35669,10 +37588,10 @@ static int __Pyx_InitCachedConstants(void) {
  *         u"""addattr(self, root, value)
  * 
  */
-  __pyx_tuple__114 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(1, 74, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__114);
-  __Pyx_GIVEREF(__pyx_tuple__114);
-  __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectpath_pxi, __pyx_n_s_addattr, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(1, 74, __pyx_L1_error)
+  __pyx_tuple__115 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_root, __pyx_n_s_value); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(1, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__115);
+  __Pyx_GIVEREF(__pyx_tuple__115);
+  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_objectpath_pxi, __pyx_n_s_addattr, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(1, 74, __pyx_L1_error)
 
   /* "src/lxml/objectpath.pxi":88
  *     re.U).match
@@ -36025,7 +37944,7 @@ static int __Pyx_modinit_function_import_code(void) {
 #ifndef CYTHON_SMALL_CODE
 #if defined(__clang__)
     #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
     #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
 #else
     #define CYTHON_SMALL_CODE
@@ -36082,6 +38001,7 @@ static int __pyx_pymod_exec_objectify(PyObject *__pyx_pyinit_module)
 #endif
 #endif
 {
+  __Pyx_TraceDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
@@ -36183,6 +38103,7 @@ if (!__Pyx_RefNanny) {
   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   #endif
+  __Pyx_TraceCall("__Pyx_PyMODINIT_FUNC PyInit_objectify(void)", __pyx_f[0], 1, 0, __PYX_ERR(0, 1, __pyx_L1_error));
 
   /* "lxml/objectify.pyx":23
  * from libc.string cimport const_char
@@ -36191,6 +38112,7 @@ if (!__Pyx_RefNanny) {
  *            u'FloatElement', u'IntElement', u'LongElement', u'NoneElement',
  *            u'NumberElement', u'ObjectPath', u'ObjectifiedDataElement',
  */
+  __Pyx_TraceLine(23,0,__PYX_ERR(0, 23, __pyx_L1_error))
   __pyx_t_1 = PyList_New(32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_u_BoolElement);
@@ -36299,6 +38221,7 @@ if (!__Pyx_RefNanny) {
  * # initialize C-API of lxml.etree
  * import_lxml__etree()
  */
+  __Pyx_TraceLine(34,0,__PYX_ERR(0, 34, __pyx_L1_error))
   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_etree);
@@ -36323,6 +38246,7 @@ if (!__Pyx_RefNanny) {
  * 
  * __version__ = etree.__version__
  */
+  __Pyx_TraceLine(36,0,__PYX_ERR(0, 36, __pyx_L1_error))
   __pyx_t_3 = import_lxml__etree(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 36, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":38
@@ -36332,6 +38256,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object re
  */
+  __Pyx_TraceLine(38,0,__PYX_ERR(0, 38, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_t_2) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
@@ -36344,6 +38269,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef tuple IGNORABLE_ERRORS = (ValueError, TypeError)
  */
+  __Pyx_TraceLine(41,0,__PYX_ERR(0, 41, __pyx_L1_error))
   __pyx_t_2 = __Pyx_Import(__pyx_n_s_re, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_re);
@@ -36358,10 +38284,11 @@ if (!__Pyx_RefNanny) {
  * cdef object is_special_method = re.compile(u'__.*__$').match
  * 
  */
-  __Pyx_INCREF(__pyx_tuple__25);
+  __Pyx_TraceLine(43,0,__PYX_ERR(0, 43, __pyx_L1_error))
+  __Pyx_INCREF(__pyx_tuple__65);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS);
-  __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS, __pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
+  __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_IGNORABLE_ERRORS, __pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
 
   /* "lxml/objectify.pyx":44
  * 
@@ -36370,9 +38297,10 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(44,0,__PYX_ERR(0, 44, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_match); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error)
@@ -36390,6 +38318,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef unicode TREE_PYTYPE_NAME = u"TREE"
  */
+  __Pyx_TraceLine(74,0,__PYX_ERR(0, 74, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYTYPE_ATTRIBUTE, Py_None) < 0) __PYX_ERR(0, 74, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":76
@@ -36399,6 +38328,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef tuple _unicodeAndUtf8(s):
  */
+  __Pyx_TraceLine(76,0,__PYX_ERR(0, 76, __pyx_L1_error))
   __Pyx_INCREF(__pyx_n_u_TREE);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME, __pyx_n_u_TREE);
@@ -36411,9 +38341,10 @@ if (!__Pyx_RefNanny) {
  *     u"""set_pytype_attribute_tag(attribute_tag=None)
  *     Change name and namespace of the XML attribute that holds Python type
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_1set_pytype_attribute_tag, 0, __pyx_n_s_set_pytype_attribute_tag, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
+  __Pyx_TraceLine(81,0,__PYX_ERR(0, 81, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_1set_pytype_attribute_tag, 0, __pyx_n_s_set_pytype_attribute_tag, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__30);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__69);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_pytype_attribute_tag, __pyx_t_2) < 0) __PYX_ERR(0, 81, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -36424,6 +38355,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(111,0,__PYX_ERR(0, 111, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_pytype_attribute_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
@@ -36438,6 +38370,7 @@ if (!__Pyx_RefNanny) {
  * cdef const_xmlChar* _XML_SCHEMA_NS = _xcstr(XML_SCHEMA_NS_UTF8)
  * 
  */
+  __Pyx_TraceLine(117,0,__PYX_ERR(0, 117, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__unicodeAndUtf8(__pyx_kp_u_http_www_w3_org_2001_XMLSchema); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -36471,6 +38404,7 @@ if (!__Pyx_RefNanny) {
  *     _unicodeAndUtf8(u"http://www.w3.org/2001/XMLSchema")
  * cdef const_xmlChar* _XML_SCHEMA_NS = _xcstr(XML_SCHEMA_NS_UTF8)
  */
+  __Pyx_TraceLine(116,0,__PYX_ERR(0, 116, __pyx_L1_error))
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_NS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_XML_SCHEMA_NS, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -36487,6 +38421,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object XML_SCHEMA_INSTANCE_NS, XML_SCHEMA_INSTANCE_NS_UTF8
  */
+  __Pyx_TraceLine(118,0,__PYX_ERR(0, 118, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_NS_UTF8;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_4lxml_9objectify__XML_SCHEMA_NS = (const xmlChar*)PyBytes_AS_STRING(__pyx_t_1);
@@ -36499,6 +38434,7 @@ if (!__Pyx_RefNanny) {
  * cdef const_xmlChar* _XML_SCHEMA_INSTANCE_NS = _xcstr(XML_SCHEMA_INSTANCE_NS_UTF8)
  * 
  */
+  __Pyx_TraceLine(122,0,__PYX_ERR(0, 122, __pyx_L1_error))
   __pyx_t_1 = __pyx_f_4lxml_9objectify__unicodeAndUtf8(__pyx_kp_u_http_www_w3_org_2001_XMLSchema_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
@@ -36532,6 +38468,7 @@ if (!__Pyx_RefNanny) {
  *     _unicodeAndUtf8(u"http://www.w3.org/2001/XMLSchema-instance")
  * cdef const_xmlChar* _XML_SCHEMA_INSTANCE_NS = _xcstr(XML_SCHEMA_INSTANCE_NS_UTF8)
  */
+  __Pyx_TraceLine(121,0,__PYX_ERR(0, 121, __pyx_L1_error))
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
@@ -36548,6 +38485,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object XML_SCHEMA_INSTANCE_NIL_ATTR = u"{%s}nil" % XML_SCHEMA_INSTANCE_NS
  */
+  __Pyx_TraceLine(123,0,__PYX_ERR(0, 123, __pyx_L1_error))
   __pyx_t_1 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS_UTF8;
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS = (const xmlChar*)PyBytes_AS_STRING(__pyx_t_1);
@@ -36560,6 +38498,7 @@ if (!__Pyx_RefNanny) {
  * cdef object XML_SCHEMA_INSTANCE_TYPE_ATTR = u"{%s}type" % XML_SCHEMA_INSTANCE_NS
  * 
  */
+  __Pyx_TraceLine(125,0,__PYX_ERR(0, 125, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_nil, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR);
@@ -36574,6 +38513,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(126,0,__PYX_ERR(0, 126, __pyx_L1_error))
   __pyx_t_1 = PyUnicode_Format(__pyx_kp_u_s_type, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
@@ -36588,7 +38528,8 @@ if (!__Pyx_RefNanny) {
  *         return (fromstring, (etree.tostring(self),))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_5__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement___reduce, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __Pyx_TraceLine(161,0,__PYX_ERR(0, 161, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_5__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement___reduce, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement->tp_dict, __pyx_n_s_reduce, __pyx_t_1) < 0) __PYX_ERR(0, 161, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36601,7 +38542,8 @@ if (!__Pyx_RefNanny) {
  *         u"""countchildren(self)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_9countchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_countchildren, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __Pyx_TraceLine(192,0,__PYX_ERR(0, 192, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_9countchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_countchildren, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement->tp_dict, __pyx_n_s_countchildren, __pyx_t_1) < 0) __PYX_ERR(0, 192, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36614,7 +38556,8 @@ if (!__Pyx_RefNanny) {
  *         u"""getchildren(self)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_11getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_getchildren, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
+  __Pyx_TraceLine(209,0,__PYX_ERR(0, 209, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_11getchildren, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_getchildren, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement->tp_dict, __pyx_n_s_getchildren, __pyx_t_1) < 0) __PYX_ERR(0, 209, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36627,7 +38570,8 @@ if (!__Pyx_RefNanny) {
  *         u"""addattr(self, tag, value)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_19addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
+  __Pyx_TraceLine(262,0,__PYX_ERR(0, 262, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_19addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement->tp_dict, __pyx_n_s_addattr, __pyx_t_1) < 0) __PYX_ERR(0, 262, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36640,7 +38584,8 @@ if (!__Pyx_RefNanny) {
  *         u"""descendantpaths(self, prefix=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_27descendantpaths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_descendantpat, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __Pyx_TraceLine(369,0,__PYX_ERR(0, 369, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_18ObjectifiedElement_27descendantpaths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedElement_descendantpat, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement->tp_dict, __pyx_n_s_descendantpaths, __pyx_t_1) < 0) __PYX_ERR(0, 369, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36653,7 +38598,8 @@ if (!__Pyx_RefNanny) {
  *         u"""For use in subclasses only. Don't use unless you know what you are
  *         doing.
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_22ObjectifiedDataElement_5_setText, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedDataElement__setText, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __Pyx_TraceLine(606,0,__PYX_ERR(0, 606, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_22ObjectifiedDataElement_5_setText, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectifiedDataElement__setText, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedDataElement->tp_dict, __pyx_n_s_setText, __pyx_t_1) < 0) __PYX_ERR(0, 606, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36666,7 +38612,8 @@ if (!__Pyx_RefNanny) {
  *         u"""Set the function that parses the Python value from a string.
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13NumberElement_1_setValueParser, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement__setValueParser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
+  __Pyx_TraceLine(614,0,__PYX_ERR(0, 614, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13NumberElement_1_setValueParser, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement__setValueParser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_setValueParser, __pyx_t_1) < 0) __PYX_ERR(0, 614, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36679,7 +38626,8 @@ if (!__Pyx_RefNanny) {
  *         return complex(_parseNumber(self))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13NumberElement_9__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
+  __Pyx_TraceLine(634,0,__PYX_ERR(0, 634, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13NumberElement_9__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NumberElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_NumberElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 634, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36692,7 +38640,8 @@ if (!__Pyx_RefNanny) {
  *         self._parse_value = int
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10IntElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error)
+  __Pyx_TraceLine(710,0,__PYX_ERR(0, 710, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10IntElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 710, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36705,7 +38654,8 @@ if (!__Pyx_RefNanny) {
  *         self._parse_value = long
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11LongElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LongElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error)
+  __Pyx_TraceLine(714,0,__PYX_ERR(0, 714, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11LongElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LongElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_LongElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 714, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36718,7 +38668,8 @@ if (!__Pyx_RefNanny) {
  *         self._parse_value = float
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_12FloatElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FloatElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __Pyx_TraceLine(718,0,__PYX_ERR(0, 718, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_12FloatElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FloatElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_FloatElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 718, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36731,7 +38682,8 @@ if (!__Pyx_RefNanny) {
  *         text = textOf(self._c_node)
  *         if text is None:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13StringElement_3strlen, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement_strlen, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L1_error)
+  __Pyx_TraceLine(735,0,__PYX_ERR(0, 735, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13StringElement_3strlen, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement_strlen, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_strlen, __pyx_t_1) < 0) __PYX_ERR(0, 735, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36744,7 +38696,8 @@ if (!__Pyx_RefNanny) {
  *         return complex(textOf(self._c_node))
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13StringElement_23__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 780, __pyx_L1_error)
+  __Pyx_TraceLine(780,0,__PYX_ERR(0, 780, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13StringElement_23__complex__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_StringElement___complex, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 780, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement->tp_dict, __pyx_n_s_complex, __pyx_t_1) < 0) __PYX_ERR(0, 780, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36757,7 +38710,8 @@ if (!__Pyx_RefNanny) {
  *         self._parse_value = __parseBool
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11BoolElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoolElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error)
+  __Pyx_TraceLine(814,0,__PYX_ERR(0, 814, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11BoolElement_1_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoolElement__init, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 814, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36770,7 +38724,8 @@ if (!__Pyx_RefNanny) {
  *     cdef int value = -1
  *     if s is not None:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_3__checkBool, 0, __pyx_n_s_checkBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
+  __Pyx_TraceLine(836,0,__PYX_ERR(0, 836, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_3__checkBool, 0, __pyx_n_s_checkBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_1) < 0) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36782,7 +38737,8 @@ if (!__Pyx_RefNanny) {
  *     cdef int value
  *     if s is None:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_5__parseBool, 0, __pyx_n_s_parseBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __Pyx_TraceLine(843,0,__PYX_ERR(0, 843, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_5__parseBool, 0, __pyx_n_s_parseBool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseBool, __pyx_t_1) < 0) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36794,7 +38750,8 @@ if (!__Pyx_RefNanny) {
  *         u"""register(self, before=None, after=None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_6PyType_5register, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_register, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error)
+  __Pyx_TraceLine(941,0,__PYX_ERR(0, 941, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_6PyType_5register, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_register, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_register, __pyx_t_1) < 0) __PYX_ERR(0, 941, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36807,7 +38764,8 @@ if (!__Pyx_RefNanny) {
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_6PyType_7unregister, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_unregister, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
+  __Pyx_TraceLine(982,0,__PYX_ERR(0, 982, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_6PyType_7unregister, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyType_unregister, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_unregister, __pyx_t_1) < 0) __PYX_ERR(0, 982, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36820,6 +38778,7 @@ if (!__Pyx_RefNanny) {
  * cdef dict _SCHEMA_TYPE_DICT = {}
  * cdef list _TYPE_CHECKS = []
  */
+  __Pyx_TraceLine(1007,0,__PYX_ERR(0, 1007, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1007, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__PYTYPE_DICT);
@@ -36834,6 +38793,7 @@ if (!__Pyx_RefNanny) {
  * cdef list _TYPE_CHECKS = []
  * 
  */
+  __Pyx_TraceLine(1008,0,__PYX_ERR(0, 1008, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1008, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT);
@@ -36848,6 +38808,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def __lower_bool(b):
  */
+  __Pyx_TraceLine(1009,0,__PYX_ERR(0, 1009, __pyx_L1_error))
   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__TYPE_CHECKS);
@@ -36862,7 +38823,8 @@ if (!__Pyx_RefNanny) {
  *     return u"true" if b else u"false"
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
+  __Pyx_TraceLine(1011,0,__PYX_ERR(0, 1011, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_7__lower_bool, 0, __pyx_n_s_lower_bool, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_1) < 0) __PYX_ERR(0, 1011, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36874,7 +38836,8 @@ if (!__Pyx_RefNanny) {
  *     u"""pytypename(obj)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error)
+  __Pyx_TraceLine(1017,0,__PYX_ERR(0, 1017, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_9pytypename, 0, __pyx_n_s_pytypename, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_1) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -36886,6 +38849,7 @@ if (!__Pyx_RefNanny) {
  * 
  * _registerPyTypes()
  */
+  __Pyx_TraceLine(1059,0,__PYX_ERR(0, 1059, __pyx_L1_error))
   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1059, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
@@ -36912,6 +38876,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def getRegisteredTypes():
  */
+  __Pyx_TraceLine(1061,0,__PYX_ERR(0, 1061, __pyx_L1_error))
   __pyx_t_2 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -36923,7 +38888,8 @@ if (!__Pyx_RefNanny) {
  *     u"""getRegisteredTypes()
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1063, __pyx_L1_error)
+  __Pyx_TraceLine(1063,0,__PYX_ERR(0, 1063, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_11getRegisteredTypes, 0, __pyx_n_s_getRegisteredTypes, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1063, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_2) < 0) __PYX_ERR(0, 1063, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -36935,6 +38901,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def enable_recursive_str(on=True):
  */
+  __Pyx_TraceLine(1296,0,__PYX_ERR(0, 1296, __pyx_L1_error))
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = 0;
 
   /* "lxml/objectify.pyx":1298
@@ -36944,9 +38911,10 @@ if (!__Pyx_RefNanny) {
  *     u"""enable_recursive_str(on=True)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
+  __Pyx_TraceLine(1298,0,__PYX_ERR(0, 1298, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_13enable_recursive_str, 0, __pyx_n_s_enable_recursive_str, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__75);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__92);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_2) < 0) __PYX_ERR(0, 1298, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
@@ -36957,7 +38925,8 @@ if (!__Pyx_RefNanny) {
  *     u"""dump(_Element element not None)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error)
+  __Pyx_TraceLine(1307,0,__PYX_ERR(0, 1307, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_15dump, 0, __pyx_n_s_dump, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 1307, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -36969,7 +38938,8 @@ if (!__Pyx_RefNanny) {
  *     return etree.ElementTree(fromstring(data))
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __Pyx_TraceLine(1350,0,__PYX_ERR(0, 1350, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_17__unpickleElementTree, 0, __pyx_n_s_unpickleElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1350, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1350, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -36981,7 +38951,8 @@ if (!__Pyx_RefNanny) {
  *     return (__unpickleElementTree, (etree.tostring(obj),))
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error)
+  __Pyx_TraceLine(1361,0,__PYX_ERR(0, 1361, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_19pickleReduceElementTree, 0, __pyx_n_s_pickleReduceElementTree, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1361, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -36993,6 +38964,7 @@ if (!__Pyx_RefNanny) {
  * del pickleReduceElementTree
  * 
  */
+  __Pyx_TraceLine(1364,0,__PYX_ERR(0, 1364, __pyx_L1_error))
   __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1364, __pyx_L1_error)
@@ -37007,6 +38979,7 @@ if (!__Pyx_RefNanny) {
  * 
  * ################################################################################
  */
+  __Pyx_TraceLine(1365,0,__PYX_ERR(0, 1365, __pyx_L1_error))
   if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) __PYX_ERR(0, 1365, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1455
@@ -37016,12 +38989,13 @@ if (!__Pyx_RefNanny) {
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
+  __Pyx_TraceLine(1455,0,__PYX_ERR(0, 1455, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1455, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1455, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1455, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_21pyannotate, 0, __pyx_n_s_pyannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37035,12 +39009,13 @@ if (!__Pyx_RefNanny) {
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
+  __Pyx_TraceLine(1478,0,__PYX_ERR(0, 1478, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1478, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1478, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1478, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1478, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_23xsiannotate, 0, __pyx_n_s_xsiannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37054,6 +39029,7 @@ if (!__Pyx_RefNanny) {
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
+  __Pyx_TraceLine(1506,0,__PYX_ERR(0, 1506, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 1506, __pyx_L1_error)
@@ -37062,7 +39038,7 @@ if (!__Pyx_RefNanny) {
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1506, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) __PYX_ERR(0, 1506, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) __PYX_ERR(0, 1506, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1506, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_25annotate, 0, __pyx_n_s_annotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37076,6 +39052,7 @@ if (!__Pyx_RefNanny) {
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  */
+  __Pyx_TraceLine(1699,0,__PYX_ERR(0, 1699, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__strip_attributes);
@@ -37090,6 +39067,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  */
+  __Pyx_TraceLine(1700,0,__PYX_ERR(0, 1700, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1700, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__cleanup_namespaces);
@@ -37104,6 +39082,7 @@ if (!__Pyx_RefNanny) {
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
+  __Pyx_TraceLine(1702,0,__PYX_ERR(0, 1702, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1702, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error)
@@ -37122,6 +39101,7 @@ if (!__Pyx_RefNanny) {
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  * 
  */
+  __Pyx_TraceLine(1703,0,__PYX_ERR(0, 1703, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_nil, __pyx_t_1) < 0) __PYX_ERR(0, 1702, __pyx_L1_error)
@@ -37138,7 +39118,8 @@ if (!__Pyx_RefNanny) {
  *                bint xsi_nil=False, bint cleanup_namespaces=False):
  *     u"""deannotate(element_or_tree, pytype=True, xsi=True, xsi_nil=False, cleanup_namespaces=False)
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error)
+  __Pyx_TraceLine(1702,0,__PYX_ERR(0, 1702, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_27deannotate, 0, __pyx_n_s_deannotate, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37152,6 +39133,7 @@ if (!__Pyx_RefNanny) {
  * __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )
  * 
  */
+  __Pyx_TraceLine(1736,0,__PYX_ERR(0, 1736, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
@@ -37173,6 +39155,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef object objectify_parser
  */
+  __Pyx_TraceLine(1737,0,__PYX_ERR(0, 1737, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify___DEFAULT_PARSER, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1737, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1737, __pyx_L1_error)
@@ -37190,6 +39173,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def set_default_parser(new_parser = None):
  */
+  __Pyx_TraceLine(1740,0,__PYX_ERR(0, 1740, __pyx_L1_error))
   __Pyx_INCREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify_objectify_parser);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
@@ -37202,9 +39186,10 @@ if (!__Pyx_RefNanny) {
  *     u"""set_default_parser(new_parser = None)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1742, __pyx_L1_error)
+  __Pyx_TraceLine(1742,0,__PYX_ERR(0, 1742, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_29set_default_parser, 0, __pyx_n_s_set_default_parser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1742, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__92);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__101);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) __PYX_ERR(0, 1742, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
@@ -37215,7 +39200,8 @@ if (!__Pyx_RefNanny) {
  *     u"""makeparser(remove_blank_text=True, **kw)
  * 
  */
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L1_error)
+  __Pyx_TraceLine(1760,0,__PYX_ERR(0, 1760, __pyx_L1_error))
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_31makeparser, 0, __pyx_n_s_makeparser, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1760, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_1) < 0) __PYX_ERR(0, 1760, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37227,6 +39213,7 @@ if (!__Pyx_RefNanny) {
  * 
  * SubElement = etree.SubElement
  */
+  __Pyx_TraceLine(1783,0,__PYX_ERR(0, 1783, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__fromstring);
@@ -37241,6 +39228,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def fromstring(xml, parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(1785,0,__PYX_ERR(0, 1785, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 1785, __pyx_L1_error)
@@ -37253,12 +39241,13 @@ if (!__Pyx_RefNanny) {
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(1787,0,__PYX_ERR(0, 1787, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1787, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_33fromstring, 0, __pyx_n_s_fromstring, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__97);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__104);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_2) < 0) __PYX_ERR(0, 1787, __pyx_L1_error)
@@ -37271,12 +39260,13 @@ if (!__Pyx_RefNanny) {
  *     u"""XML(xml, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(1803,0,__PYX_ERR(0, 1803, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1803, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1803, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_35XML, 0, __pyx_n_s_XML, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1803, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__100);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__106);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_1) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
@@ -37289,6 +39279,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def parse(f, parser=None, *, base_url=None):
  */
+  __Pyx_TraceLine(1820,0,__PYX_ERR(0, 1820, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__parse);
@@ -37303,12 +39294,13 @@ if (!__Pyx_RefNanny) {
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
+  __Pyx_TraceLine(1822,0,__PYX_ERR(0, 1822, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1822, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_37parse, 0, __pyx_n_s_parse, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__103);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__108);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_2) < 0) __PYX_ERR(0, 1822, __pyx_L1_error)
@@ -37321,6 +39313,7 @@ if (!__Pyx_RefNanny) {
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,
  *     "xsd" : XML_SCHEMA_NS
  */
+  __Pyx_TraceLine(1838,0,__PYX_ERR(0, 1838, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) __PYX_ERR(0, 1838, __pyx_L1_error)
@@ -37332,6 +39325,7 @@ if (!__Pyx_RefNanny) {
  *     "xsd" : XML_SCHEMA_NS
  * }
  */
+  __Pyx_TraceLine(1839,0,__PYX_ERR(0, 1839, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 0) __PYX_ERR(0, 1838, __pyx_L1_error)
 
   /* "lxml/objectify.pyx":1840
@@ -37341,6 +39335,7 @@ if (!__Pyx_RefNanny) {
  * }
  * 
  */
+  __Pyx_TraceLine(1840,0,__PYX_ERR(0, 1840, __pyx_L1_error))
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsd_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) __PYX_ERR(0, 1838, __pyx_L1_error)
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP, ((PyObject*)__pyx_t_2));
@@ -37354,6 +39349,7 @@ if (!__Pyx_RefNanny) {
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):
  */
+  __Pyx_TraceLine(1843,0,__PYX_ERR(0, 1843, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_2) < 0) __PYX_ERR(0, 1843, __pyx_L1_error)
@@ -37366,12 +39362,13 @@ if (!__Pyx_RefNanny) {
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
+  __Pyx_TraceLine(1845,0,__PYX_ERR(0, 1845, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_39Element, 0, __pyx_n_s_Element, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__106);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__110);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_1, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
@@ -37384,13 +39381,14 @@ if (!__Pyx_RefNanny) {
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
+  __Pyx_TraceLine(1865,0,__PYX_ERR(0, 1865, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1865, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_41DataElement, 0, __pyx_n_s_DataElement, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__109);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__112);
   __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_2, __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_2) < 0) __PYX_ERR(0, 1865, __pyx_L1_error)
@@ -37403,6 +39401,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(10,0,__PYX_ERR(1, 10, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 10, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__NO_DEFAULT);
@@ -37417,7 +39416,8 @@ if (!__Pyx_RefNanny) {
  *         u"hasattr(self, root)"
  *         try:
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_9hasattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_hasattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error)
+  __Pyx_TraceLine(57,0,__PYX_ERR(1, 57, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_9hasattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_hasattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_hasattr, __pyx_t_2) < 0) __PYX_ERR(1, 57, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37430,7 +39430,8 @@ if (!__Pyx_RefNanny) {
  *         u"""setattr(self, root, value)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_11setattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_setattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
+  __Pyx_TraceLine(65,0,__PYX_ERR(1, 65, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_11setattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_setattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_setattr, __pyx_t_2) < 0) __PYX_ERR(1, 65, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37443,7 +39444,8 @@ if (!__Pyx_RefNanny) {
  *         u"""addattr(self, root, value)
  * 
  */
-  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_13addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 74, __pyx_L1_error)
+  __Pyx_TraceLine(74,0,__PYX_ERR(1, 74, __pyx_L1_error))
+  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4lxml_9objectify_10ObjectPath_13addattr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ObjectPath_addattr, NULL, __pyx_n_s_lxml_objectify, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 74, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectPath->tp_dict, __pyx_n_s_addattr, __pyx_t_2) < 0) __PYX_ERR(1, 74, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -37456,6 +39458,7 @@ if (!__Pyx_RefNanny) {
  *     ur"(\.?)\s*(?:\{([^}]*)\})?\s*([^.{}\[\]\s]+)\s*(?:\[\s*([-0-9]+)\s*\])?",
  *     re.U).match
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(1, 84, __pyx_L1_error))
   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 84, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
@@ -37466,6 +39469,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef tuple _RELATIVE_PATH_SEGMENT = (None, None, 0)
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(1, 86, __pyx_L1_error))
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_re, __pyx_n_s_U); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 86, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
@@ -37476,6 +39480,7 @@ if (!__Pyx_RefNanny) {
  *     ur"(\.?)\s*(?:\{([^}]*)\})?\s*([^.{}\[\]\s]+)\s*(?:\[\s*([-0-9]+)\s*\])?",
  *     re.U).match
  */
+  __Pyx_TraceLine(84,0,__PYX_ERR(1, 84, __pyx_L1_error))
   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 84, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_kp_u_s_s_s_s_s_0_9_s);
@@ -37496,6 +39501,7 @@ if (!__Pyx_RefNanny) {
  * 
  * cdef tuple _RELATIVE_PATH_SEGMENT = (None, None, 0)
  */
+  __Pyx_TraceLine(86,0,__PYX_ERR(1, 86, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_match); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 86, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37511,6 +39517,7 @@ if (!__Pyx_RefNanny) {
  * 
  * 
  */
+  __Pyx_TraceLine(88,0,__PYX_ERR(1, 88, __pyx_L1_error))
   __Pyx_INCREF(__pyx_tuple__116);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__RELATIVE_PATH_SEGMENT, __pyx_tuple__116);
@@ -37521,10 +39528,12 @@ if (!__Pyx_RefNanny) {
  * # cython: auto_pickle=False
  * 
  */
+  __Pyx_TraceLine(1,0,__PYX_ERR(0, 1, __pyx_L1_error))
   __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_TraceReturn(Py_None, 0);
 
   /*--- Wrapped vars code ---*/
 
@@ -37555,105 +39564,105 @@ if (!__Pyx_RefNanny) {
 
 static void __Pyx_CleanupGlobals(void) {
   Py_CLEAR(__pyx_tuple_);
-  Py_CLEAR(__pyx_slice__4);
-  Py_CLEAR(__pyx_tuple__6);
-  Py_CLEAR(__pyx_tuple__7);
-  Py_CLEAR(__pyx_tuple__8);
-  Py_CLEAR(__pyx_tuple__9);
-  Py_CLEAR(__pyx_slice__17);
-  Py_CLEAR(__pyx_tuple__19);
-  Py_CLEAR(__pyx_tuple__20);
-  Py_CLEAR(__pyx_tuple__21);
-  Py_CLEAR(__pyx_tuple__25);
+  Py_CLEAR(__pyx_codeobj__2);
+  Py_CLEAR(__pyx_codeobj__4);
+  Py_CLEAR(__pyx_codeobj__5);
+  Py_CLEAR(__pyx_codeobj__6);
+  Py_CLEAR(__pyx_codeobj__7);
+  Py_CLEAR(__pyx_codeobj__8);
+  Py_CLEAR(__pyx_slice__10);
+  Py_CLEAR(__pyx_codeobj__11);
+  Py_CLEAR(__pyx_codeobj__12);
+  Py_CLEAR(__pyx_codeobj__13);
+  Py_CLEAR(__pyx_codeobj__14);
+  Py_CLEAR(__pyx_codeobj__15);
+  Py_CLEAR(__pyx_codeobj__16);
+  Py_CLEAR(__pyx_codeobj__17);
+  Py_CLEAR(__pyx_codeobj__18);
+  Py_CLEAR(__pyx_codeobj__19);
+  Py_CLEAR(__pyx_codeobj__20);
+  Py_CLEAR(__pyx_codeobj__21);
+  Py_CLEAR(__pyx_codeobj__23);
+  Py_CLEAR(__pyx_codeobj__24);
+  Py_CLEAR(__pyx_codeobj__25);
+  Py_CLEAR(__pyx_codeobj__26);
   Py_CLEAR(__pyx_tuple__27);
   Py_CLEAR(__pyx_tuple__28);
-  Py_CLEAR(__pyx_codeobj__29);
+  Py_CLEAR(__pyx_tuple__29);
   Py_CLEAR(__pyx_tuple__30);
-  Py_CLEAR(__pyx_tuple__31);
-  Py_CLEAR(__pyx_codeobj__32);
-  Py_CLEAR(__pyx_tuple__33);
+  Py_CLEAR(__pyx_codeobj__31);
+  Py_CLEAR(__pyx_codeobj__33);
   Py_CLEAR(__pyx_codeobj__34);
-  Py_CLEAR(__pyx_tuple__35);
-  Py_CLEAR(__pyx_codeobj__36);
-  Py_CLEAR(__pyx_tuple__37);
-  Py_CLEAR(__pyx_codeobj__38);
-  Py_CLEAR(__pyx_tuple__39);
-  Py_CLEAR(__pyx_codeobj__40);
-  Py_CLEAR(__pyx_tuple__41);
+  Py_CLEAR(__pyx_slice__41);
   Py_CLEAR(__pyx_codeobj__42);
-  Py_CLEAR(__pyx_tuple__43);
-  Py_CLEAR(__pyx_codeobj__44);
+  Py_CLEAR(__pyx_codeobj__43);
   Py_CLEAR(__pyx_tuple__45);
   Py_CLEAR(__pyx_codeobj__46);
-  Py_CLEAR(__pyx_tuple__47);
+  Py_CLEAR(__pyx_codeobj__47);
   Py_CLEAR(__pyx_codeobj__48);
   Py_CLEAR(__pyx_tuple__49);
   Py_CLEAR(__pyx_codeobj__50);
-  Py_CLEAR(__pyx_tuple__51);
+  Py_CLEAR(__pyx_codeobj__51);
   Py_CLEAR(__pyx_codeobj__52);
-  Py_CLEAR(__pyx_tuple__53);
+  Py_CLEAR(__pyx_codeobj__53);
   Py_CLEAR(__pyx_codeobj__54);
-  Py_CLEAR(__pyx_tuple__55);
+  Py_CLEAR(__pyx_codeobj__55);
   Py_CLEAR(__pyx_codeobj__56);
-  Py_CLEAR(__pyx_tuple__57);
-  Py_CLEAR(__pyx_codeobj__58);
-  Py_CLEAR(__pyx_tuple__59);
+  Py_CLEAR(__pyx_codeobj__57);
+  Py_CLEAR(__pyx_tuple__58);
+  Py_CLEAR(__pyx_codeobj__59);
   Py_CLEAR(__pyx_codeobj__60);
-  Py_CLEAR(__pyx_tuple__61);
-  Py_CLEAR(__pyx_codeobj__62);
-  Py_CLEAR(__pyx_tuple__63);
-  Py_CLEAR(__pyx_codeobj__64);
+  Py_CLEAR(__pyx_codeobj__61);
   Py_CLEAR(__pyx_tuple__65);
-  Py_CLEAR(__pyx_codeobj__66);
   Py_CLEAR(__pyx_tuple__67);
-  Py_CLEAR(__pyx_codeobj__68);
+  Py_CLEAR(__pyx_tuple__68);
   Py_CLEAR(__pyx_tuple__69);
-  Py_CLEAR(__pyx_codeobj__70);
+  Py_CLEAR(__pyx_tuple__70);
   Py_CLEAR(__pyx_tuple__71);
-  Py_CLEAR(__pyx_codeobj__72);
+  Py_CLEAR(__pyx_tuple__72);
   Py_CLEAR(__pyx_tuple__73);
-  Py_CLEAR(__pyx_codeobj__74);
+  Py_CLEAR(__pyx_tuple__74);
   Py_CLEAR(__pyx_tuple__75);
   Py_CLEAR(__pyx_tuple__76);
-  Py_CLEAR(__pyx_codeobj__77);
+  Py_CLEAR(__pyx_tuple__77);
   Py_CLEAR(__pyx_tuple__78);
-  Py_CLEAR(__pyx_codeobj__79);
+  Py_CLEAR(__pyx_tuple__79);
   Py_CLEAR(__pyx_tuple__80);
-  Py_CLEAR(__pyx_codeobj__81);
+  Py_CLEAR(__pyx_tuple__81);
   Py_CLEAR(__pyx_tuple__82);
-  Py_CLEAR(__pyx_codeobj__83);
+  Py_CLEAR(__pyx_tuple__83);
   Py_CLEAR(__pyx_tuple__84);
-  Py_CLEAR(__pyx_codeobj__85);
+  Py_CLEAR(__pyx_tuple__85);
   Py_CLEAR(__pyx_tuple__86);
-  Py_CLEAR(__pyx_codeobj__87);
+  Py_CLEAR(__pyx_tuple__87);
   Py_CLEAR(__pyx_tuple__88);
-  Py_CLEAR(__pyx_codeobj__89);
+  Py_CLEAR(__pyx_tuple__89);
   Py_CLEAR(__pyx_tuple__90);
-  Py_CLEAR(__pyx_codeobj__91);
+  Py_CLEAR(__pyx_tuple__91);
   Py_CLEAR(__pyx_tuple__92);
   Py_CLEAR(__pyx_tuple__93);
-  Py_CLEAR(__pyx_codeobj__94);
+  Py_CLEAR(__pyx_tuple__94);
   Py_CLEAR(__pyx_tuple__95);
-  Py_CLEAR(__pyx_codeobj__96);
+  Py_CLEAR(__pyx_tuple__96);
   Py_CLEAR(__pyx_tuple__97);
   Py_CLEAR(__pyx_tuple__98);
-  Py_CLEAR(__pyx_codeobj__99);
+  Py_CLEAR(__pyx_tuple__99);
   Py_CLEAR(__pyx_tuple__100);
   Py_CLEAR(__pyx_tuple__101);
-  Py_CLEAR(__pyx_codeobj__102);
+  Py_CLEAR(__pyx_tuple__102);
   Py_CLEAR(__pyx_tuple__103);
   Py_CLEAR(__pyx_tuple__104);
-  Py_CLEAR(__pyx_codeobj__105);
+  Py_CLEAR(__pyx_tuple__105);
   Py_CLEAR(__pyx_tuple__106);
   Py_CLEAR(__pyx_tuple__107);
-  Py_CLEAR(__pyx_codeobj__108);
+  Py_CLEAR(__pyx_tuple__108);
   Py_CLEAR(__pyx_tuple__109);
   Py_CLEAR(__pyx_tuple__110);
-  Py_CLEAR(__pyx_codeobj__111);
+  Py_CLEAR(__pyx_tuple__111);
   Py_CLEAR(__pyx_tuple__112);
-  Py_CLEAR(__pyx_codeobj__113);
+  Py_CLEAR(__pyx_tuple__113);
   Py_CLEAR(__pyx_tuple__114);
-  Py_CLEAR(__pyx_codeobj__115);
+  Py_CLEAR(__pyx_tuple__115);
   Py_CLEAR(__pyx_tuple__116);
   /* CodeObjectCache.cleanup */
   if (__pyx_code_cache.entries) {
@@ -37781,6 +39790,123 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
     return result;
 }
 
+/* PyErrFetchRestore */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+}
+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+}
+#endif
+
+/* Profile */
+#if CYTHON_PROFILE
+static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+                                   PyFrameObject** frame,
+                                   PyThreadState* tstate,
+                                   const char *funcname,
+                                   const char *srcfile,
+                                   int firstlineno) {
+    PyObject *type, *value, *traceback;
+    int retval;
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
+        if (*code == NULL) {
+            *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
+            if (*code == NULL) return 0;
+        }
+        *frame = PyFrame_New(
+            tstate,                          /*PyThreadState *tstate*/
+            *code,                           /*PyCodeObject *code*/
+            __pyx_d,                  /*PyObject *globals*/
+            0                                /*PyObject *locals*/
+        );
+        if (*frame == NULL) return 0;
+        if (CYTHON_TRACE && (*frame)->f_trace == NULL) {
+            Py_INCREF(Py_None);
+            (*frame)->f_trace = Py_None;
+        }
+#if PY_VERSION_HEX < 0x030400B1
+    } else {
+        (*frame)->f_tstate = tstate;
+#endif
+    }
+      __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
+    retval = 1;
+    tstate->tracing++;
+    tstate->use_tracing = 0;
+    __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+    #if CYTHON_TRACE
+    if (tstate->c_tracefunc)
+        retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+    if (retval && tstate->c_profilefunc)
+    #endif
+        retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+    tstate->use_tracing = (tstate->c_profilefunc ||
+                           (CYTHON_TRACE && tstate->c_tracefunc));
+    tstate->tracing--;
+    if (retval) {
+        __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+        return tstate->use_tracing && retval;
+    } else {
+        Py_XDECREF(type);
+        Py_XDECREF(value);
+        Py_XDECREF(traceback);
+        return -1;
+    }
+}
+static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyCodeObject *py_code = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_funcname = PyString_FromString(funcname);
+    py_srcfile = PyString_FromString(srcfile);
+    #else
+    py_funcname = PyUnicode_FromString(funcname);
+    py_srcfile = PyUnicode_FromString(srcfile);
+    #endif
+    if (!py_funcname | !py_srcfile) goto bad;
+    py_code = PyCode_New(
+        0,
+        #if PY_MAJOR_VERSION >= 3
+        0,
+        #endif
+        0,
+        0,
+        CO_OPTIMIZED | CO_NEWLOCALS,
+        __pyx_empty_bytes,     /*PyObject *code,*/
+        __pyx_empty_tuple,     /*PyObject *consts,*/
+        __pyx_empty_tuple,     /*PyObject *names,*/
+        __pyx_empty_tuple,     /*PyObject *varnames,*/
+        __pyx_empty_tuple,     /*PyObject *freevars,*/
+        __pyx_empty_tuple,     /*PyObject *cellvars,*/
+        py_srcfile,       /*PyObject *filename,*/
+        py_funcname,      /*PyObject *name,*/
+        firstlineno,
+        __pyx_empty_bytes      /*PyObject *lnotab*/
+    );
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return py_code;
+}
+#endif
+
 /* PyObjectCall */
 #if CYTHON_COMPILING_IN_CPYTHON
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
@@ -38433,7 +40559,7 @@ return_ne:
         ukind = __Pyx_PyUnicode_KIND(uval);
         udata = __Pyx_PyUnicode_DATA(uval);
         if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
-            memcpy((char *)result_udata + char_pos * result_ukind, udata, ulength * result_ukind);
+            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
         } else {
             #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
             _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
@@ -38460,30 +40586,6 @@ bad:
 #endif
 }
 
-/* PyErrFetchRestore */
-      #if CYTHON_FAST_THREAD_STATE
-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-#endif
-
 /* RaiseException */
       #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
@@ -38759,6 +40861,48 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
 }
 #endif
 
+/* WriteUnraisableException */
+      static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
+                                  int full_traceback, CYTHON_UNUSED int nogil) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_PyThreadState_declare
+#ifdef WITH_THREAD
+    PyGILState_STATE state;
+    if (nogil)
+        state = PyGILState_Ensure();
+#ifdef _MSC_VER
+    else state = (PyGILState_STATE)-1;
+#endif
+#endif
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    if (full_traceback) {
+        Py_XINCREF(old_exc);
+        Py_XINCREF(old_val);
+        Py_XINCREF(old_tb);
+        __Pyx_ErrRestore(old_exc, old_val, old_tb);
+        PyErr_PrintEx(1);
+    }
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+#ifdef WITH_THREAD
+    if (nogil)
+        PyGILState_Release(state);
+#endif
+}
+
 /* PyObjectSetAttrStr */
       #if CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
@@ -39147,8 +41291,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     char digits[sizeof(Py_ssize_t)*3+2];
     char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
     const char *hex_digits = DIGITS_HEX;
-    Py_ssize_t ulength;
-    int length, prepend_sign, last_one_off;
+    Py_ssize_t length, ulength;
+    int prepend_sign, last_one_off;
     Py_ssize_t remaining;
     const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
     const int is_unsigned = neg_one > const_zero;
@@ -39207,7 +41351,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     if (ulength == 1) {
         return PyUnicode_FromOrdinal(*dpos);
     }
-    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, length, prepend_sign, padding_char);
+    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
 }
 
 /* PyIntBinop */
@@ -39332,6 +41476,26 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U
 }
 #endif
 
+/* py_abs */
+      #if CYTHON_USE_PYLONG_INTERNALS
+static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) {
+    if (likely(Py_SIZE(n) == -1)) {
+        return PyLong_FromLong(((PyLongObject*)n)->ob_digit[0]);
+    }
+#if CYTHON_COMPILING_IN_CPYTHON
+    {
+        PyObject *copy = _PyLong_Copy((PyLongObject*)n);
+        if (likely(copy)) {
+            Py_SIZE(copy) = -(Py_SIZE(copy));
+        }
+        return copy;
+    }
+#else
+    return PyNumber_Negative(n);
+#endif
+}
+#endif
+
 /* SaveResetException */
       #if CYTHON_FAST_THREAD_STATE
 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
@@ -40967,6 +43131,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
 #if CYTHON_COMPILING_IN_CPYTHON
     PyObject **cython_runtime_dict;
 #endif
+    if (unlikely(!__pyx_cython_runtime)) {
+        return c_line;
+    }
     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
 #if CYTHON_COMPILING_IN_CPYTHON
     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
@@ -42017,6 +44184,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_DECREF(x);
   return ival;
 }
+static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+}
 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
     return PyInt_FromSize_t(ival);
 }
index 30a8f18..bcf4da6 100644 (file)
@@ -508,6 +508,7 @@ xmlparser.xmlSetExternalEntityLoader(<xmlparser.xmlExternalEntityLoader>_local_r
 ## Parsers
 ############################################################
 
+@cython.no_gc_clear  # May have to call "self._validator.disconnect()" on dealloc.
 @cython.internal
 cdef class _ParserContext(_ResolverContext):
     cdef _ErrorLog _error_log
@@ -531,7 +532,7 @@ cdef class _ParserContext(_ResolverContext):
             python.PyThread_free_lock(self._lock)
             self._lock = NULL
         if self._c_ctxt is not NULL:
-            if self._validator is not None:
+            if <void*>self._validator is not NULL and self._validator is not None:
                 # If the parser was not closed correctly (e.g. interrupted iterparse()),
                 # and the schema validator wasn't freed and cleaned up yet, the libxml2 SAX
                 # validator plug might still be in place, which will make xmlFreeParserCtxt()
@@ -1438,7 +1439,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, 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=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
 
     The XML parser.
 
index b374f26..2522c58 100644 (file)
@@ -99,6 +99,7 @@ cdef class _PythonSaxParserTarget(_SaxParserTarget):
 
 @cython.final
 @cython.internal
+@cython.no_gc_clear  # Required because parent class uses it - Cython bug.
 cdef class _TargetParserContext(_SaxParserContext):
     u"""This class maps SAX2 events to the ET parser target interface.
     """
index 7c13171..6e5a951 100644 (file)
@@ -59,6 +59,7 @@ cdef class _SaxParserTarget:
 
 #@cython.final
 @cython.internal
+@cython.no_gc_clear  # Required because parent class uses it - Cython bug.
 cdef class _SaxParserContext(_ParserContext):
     u"""This class maps SAX2 events to parser target events.
     """
index fae6e3d..af8c8ec 100644 (file)
@@ -1 +1 @@
-4.2.1
+4.2.2